세부 서버 install_db 구현
This commit is contained in:
+3
-1
@@ -72,9 +72,10 @@ if(Session::getUserGrade(true) == 5){
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label for="db_id" class="col-sm-3 col-form-label">DB계정명</label>
|
<label for="db_id" class="col-sm-3 col-form-label">DB계정</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="db_id" id="db_id" placeholder="DB계정"/>
|
<input type="text" class="form-control" name="db_id" id="db_id" placeholder="DB계정"/>
|
||||||
|
<small>관리 DB의 계정과는 다른 계정을 권장합니다.</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -90,6 +91,7 @@ if(Session::getUserGrade(true) == 5){
|
|||||||
<label for="db_name" class="col-sm-3 col-form-label">DB명</label>
|
<label for="db_name" class="col-sm-3 col-form-label">DB명</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<input type="text" class="form-control" name="db_name" id="db_name" placeholder="DB명(예:sammo_che)"/>
|
<input type="text" class="form-control" name="db_name" id="db_name" placeholder="DB명(예:sammo_che)"/>
|
||||||
|
<small>관리 DB와는 다른 DB를 사용해야합니다.</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+66
-27
@@ -6,38 +6,77 @@ include "func.php";
|
|||||||
|
|
||||||
$session = Session::Instance()->setReadOnly();
|
$session = Session::Instance()->setReadOnly();
|
||||||
if($session->userGrade < 6){
|
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");
|
|
||||||
|
|
||||||
// 삭제
|
$mysqli_obj = $db->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨.
|
||||||
unlink(__DIR__."/d_setting/DB.php");
|
|
||||||
|
|
||||||
FileUtil::delInDir("logs");
|
$prefix = basename(__DIR__);
|
||||||
FileUtil::delInDir("data/session");
|
|
||||||
@unlink("data/connected.php");
|
|
||||||
|
|
||||||
|
$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'
|
||||||
|
]);
|
||||||
+5
-104
@@ -34,15 +34,15 @@ $(document).ready( function () {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
cache:false,
|
cache:false,
|
||||||
type:'post',
|
type:'post',
|
||||||
url:'j_setup_db.php',
|
url:'j_install_db.php',
|
||||||
dataType:'json',
|
dataType:'json',
|
||||||
data:{
|
data:{
|
||||||
|
full_reset:$('#full_reset').val(),
|
||||||
db_host:$('#db_host').val(),
|
db_host:$('#db_host').val(),
|
||||||
db_port:$('#db_port').val(),
|
db_port:$('#db_port').val(),
|
||||||
db_id:$('#db_id').val(),
|
db_id:$('#db_id').val(),
|
||||||
db_pw:$('#db_pw').val(),
|
db_pw:$('#db_pw').val(),
|
||||||
db_name:$('#db_name').val(),
|
db_name:$('#db_name').val()
|
||||||
serv_host:$('#serv_host').val()
|
|
||||||
}
|
}
|
||||||
}).then(function(result){
|
}).then(function(result){
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
@@ -52,112 +52,13 @@ $(document).ready( function () {
|
|||||||
deferred.reject('fail');
|
deferred.reject('fail');
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
alert('RootDB.php가 생성되었습니다. 관리자 계정 생성을 진행합니다.');
|
alert('DB.php가 생성되었습니다.');
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}).then(function(){
|
}).then(function(){
|
||||||
changeInstallMode();
|
location.href = 'install.php';
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$( "#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();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user