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){
@@ -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';
});
});