From 622ba5945abc35305dc3ca16ac5944f474df5dc2 Mon Sep 17 00:00:00 2001 From: hide_d Date: Thu, 29 Mar 2018 02:24:20 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=B8=EB=B6=80=20=EC=84=9C=EB=B2=84=20insta?= =?UTF-8?q?ll=5Fdb=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- twe/install_db.php | 4 +- twe/j_install_db.php | 93 +++++++++++++++++++++++++----------- twe/js/install_db.js | 109 ++----------------------------------------- 3 files changed, 74 insertions(+), 132 deletions(-) diff --git a/twe/install_db.php b/twe/install_db.php index 4ee24a10..3ed2c813 100644 --- a/twe/install_db.php +++ b/twe/install_db.php @@ -72,9 +72,10 @@ if(Session::getUserGrade(true) == 5){
- +
+ 관리 DB의 계정과는 다른 계정을 권장합니다.
@@ -90,6 +91,7 @@ if(Session::getUserGrade(true) == 5){
+ 관리 DB와는 다른 DB를 사용해야합니다.
diff --git a/twe/j_install_db.php b/twe/j_install_db.php index 4fa0becc..69256a6f 100644 --- a/twe/j_install_db.php +++ b/twe/j_install_db.php @@ -6,38 +6,77 @@ include "func.php"; $session = Session::Instance()->setReadOnly(); if($session->userGrade < 6){ - die('관리자 아님'); + Json::die([ + 'result'=>false, + 'reason'=>'관리자 아님' + ]); +} + +$fullReset = Util::array_get($_POST['full_reset'], false); +$host = Util::array_get($_POST['db_host']); +$port = Util::array_get($_POST['db_port']); +$username = Util::array_get($_POST['db_id']); +$password = Util::array_get($_POST['db_pw']); +$dbName = Util::array_get($_POST['db_name']); + +if(!$host || !$port || !$username || !$password || !$dbName){ + Json::die([ + 'result'=>false, + 'reason'=>'입력 값이 올바르지 않습니다' + ]); +} + +if($fullReset && class_exists('\\sammo\\DB')){ + $mysqli_obj = DB::db()->get(); + + if($mysqli_obj->multi_query(file_get_contents(__dir__.'/sql/reset.sql'))){ + do{ + $mysqli_obj->store_result(); + } while($mysqli_obj->next_result()); + } +} + +function dbConnFail($params){ + Json::die([ + 'result'=>false, + 'reason'=>'DB 접속에 실패했습니다.' + ]); } +$db = new \MeekroDB($host,$username,$password,$dbName,$port,'utf8'); +$db->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true; -$db = DB::db(); +$db->throw_exception_on_nonsql_error = false; +$db->nonsql_error_handler = 'dbConnFail'; -// 관리자 테이블 삭제 -$db->query("DROP TABLE IF EXISTS game"); -// 장수 테이블 삭제 -$db->query("DROP TABLE IF EXISTS general"); -// 국가 테이블 삭제 -$db->query("DROP TABLE IF EXISTS nation"); -// 도시 테이블 삭제 -$db->query("DROP TABLE IF EXISTS city"); -// 부대 테이블 삭제 -$db->query("DROP TABLE IF EXISTS troop"); -// 외교 테이블 삭제 -$db->query("DROP TABLE IF EXISTS diplomacy"); -// 토너먼트 테이블 삭제 -$db->query("DROP TABLE IF EXISTS tournament"); -// 거래 테이블 삭제 -$db->query("DROP TABLE IF EXISTS auction"); -// 통계 테이블 삭제 -$db->query("DROP TABLE IF EXISTS statistic"); -// 연감 테이블 삭제 -$db->query("DROP TABLE IF EXISTS history"); -// 삭제 -unlink(__DIR__."/d_setting/DB.php"); +$mysqli_obj = $db->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨. -FileUtil::delInDir("logs"); -FileUtil::delInDir("data/session"); -@unlink("data/connected.php"); +$prefix = basename(__DIR__); +$result = Util::generateFileUsingSimpleTemplate( + __DIR__.'/d_setting/DB.orig.php', + __DIR__.'/d_setting/DB.php',[ + 'host'=>$host, + 'user'=>$username, + 'password'=>$password, + 'dbName'=>$dbName, + 'port'=>$port, + 'prefix'=>$prefix + ], true +); + + + +if($result !== true){ + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); +} + +Json::die([ + 'result'=>true, + 'reason'=>'success' +]); \ No newline at end of file diff --git a/twe/js/install_db.js b/twe/js/install_db.js index 8e0dcd23..bd62e222 100644 --- a/twe/js/install_db.js +++ b/twe/js/install_db.js @@ -34,15 +34,15 @@ $(document).ready( function () { $.ajax({ cache:false, type:'post', - url:'j_setup_db.php', + url:'j_install_db.php', dataType:'json', data:{ + full_reset:$('#full_reset').val(), db_host:$('#db_host').val(), db_port:$('#db_port').val(), db_id:$('#db_id').val(), db_pw:$('#db_pw').val(), - db_name:$('#db_name').val(), - serv_host:$('#serv_host').val() + db_name:$('#db_name').val() } }).then(function(result){ var deferred = $.Deferred(); @@ -52,112 +52,13 @@ $(document).ready( function () { deferred.reject('fail'); } else{ - alert('RootDB.php가 생성되었습니다. 관리자 계정 생성을 진행합니다.'); + alert('DB.php가 생성되었습니다.'); deferred.resolve(); } return deferred.promise(); }).then(function(){ - changeInstallMode(); - }); - - }); - - $( "#admin_form" ).validate( { - rules: { - username: { - required: true, - minlength: 4, - maxlength: 64, - }, - password: { - required: true, - minlength: 6 - }, - confirm_password: { - required: true, - minlength: 6, - equalTo: "#password" - }, - nickname:{ - required: true, - maxlength: 6, - } - }, - messages: { - username: { - required: "유저명을 입력해주세요", - minlength: "{0}글자 이상 입력하셔야 합니다", - maxlength: '{0}자를 넘을 수 없습니다' - }, - password: { - required: "비밀번호를 입력해주세요", - minlength: "비밀번호는 적어도 {0}글자 이상이어야 합니다" - }, - confirm_password: { - required: "비밀번호를 입력해주세요", - minlength: "비밀번호는 적어도 {0}글자 이상이어야 합니다", - equalTo: "비밀번호가 일치하지 않습니다" - }, - nickname: { - required: "닉네임을 입력해주세요", - maxlength: '닉네임은 {0}자를 넘을 수 없습니다' - } - }, - errorElement: "div", - errorPlacement: function ( error, element ) { - // Add the `help-block` class to the error element - error.addClass( "invalid-feedback" ); - - if ( element.prop( "type" ) === "checkbox" ) { - error.insertAfter( element.parent( "label" ) ); - } else { - error.insertAfter( element ); - } - }, - highlight: function ( element, errorClass, validClass ) { - $( element ).addClass( "is-invalid" ).removeClass( "is-valid" ); - }, - unhighlight: function (element, errorClass, validClass) { - $( element ).addClass( "is-valid" ).removeClass( "is-invalid" ); - } - }); - - $('#admin_form').submit(function(e){ - e.preventDefault(); - if(!$("#admin_form").valid()){ - return; - } - - var raw_password = $('#password').val(); - var salt = $('#global_salt').val(); - console.log(salt + raw_password + salt); - var hash_pw = sha512(salt + raw_password + salt); - - $.ajax({ - cache:false, - type:'post', - url:'j_create_admin.php', - dataType:'json', - data:{ - username:$('#username').val(), - password:hash_pw, - nickname:$('#nickname').val() - } - }).then(function(result){ - var deferred = $.Deferred(); - - if(!result.result){ - alert(result.reason); - deferred.reject('fail'); - } - else{ - deferred.resolve(); - } - - return deferred.promise(); - }).then(function(){ - changeInstallMode(); + location.href = 'install.php'; }); });