서버 예약 오픈을 UI에 통합

This commit is contained in:
2018-04-25 02:56:11 +09:00
parent 6253b757ec
commit 23fb1194ee
7 changed files with 96 additions and 6 deletions
+4 -1
View File
@@ -51,14 +51,17 @@ $reserve_open = Util::getReq('reserve_open');
if($reserve_open){
$reserve_open = new \DateTime($reserve_open);
$db = DB::db();
ResetHelper::clearDB();
$scenarioObj = new Scenario($scenario, true);
$db->delete('reserved_open', true);
$db->insert('reserved_open', [
'options'=>Json::encode([
'turnterm'=>$turnterm,
'sync'=>$sync,
'scenario'=>$scenario,
'scenarioName'=>$scenarioObj->getTitle(),
'fiction'=>$fiction,
'extend'=>$extend,
'npcmode'=>$npcmode,
+35 -1
View File
@@ -4,15 +4,49 @@ namespace sammo;
include "lib.php";
$session = Session::requireLogin([
'game'=>'x',
'game'=>null,
'me'=>null
])->setReadOnly();
$userID = Session::getUserID();
if(!class_exists('\\sammo\\DB')){
Json::die([
'game'=>null,
'me'=>null
]);
}
$db = DB::db();
$game = $db->queryFirstRow('SELECT isUnited, npcMode, year, month, scenario, scenario_text, maxgeneral as maxUserCnt, turnTerm from game where `no`=1');
if(!$game){
$reserved = $db->queryFirstRow(
'SELECT * FROM reserved_open ORDER BY `date` ASC LIMIT 1'
);
if(!$reserved){
Json::die([
'game'=>null,
'me'=>null
]);
}
$options = Json::decode($reserved['options']);
Json::die([
'reserved'=>[
'scenarioName'=>$options['scenarioName'],
'turnterm'=>$options['turnterm'],
'fictionMode'=>($options['fiction']?'연의':'가상'),
'npcMode'=>($options['npcmode']?'가능':'불가'),
'openDatetime'=>$reserved['date']
],
'game'=>null,
'me'=>null
]);
}
$nationCnt = $db->queryFirstField('SELECT count(`nation`) from nation where `level` > 0');
$genCnt = $db->queryFirstField('SELECT count(`no`) from general where `npc` < 2');
$npcCnt = $db->queryFirstField('SELECT count(`no`) from general where `npc` >= 2');
+13 -1
View File
@@ -643,4 +643,16 @@ CREATE TABLE `general_public_record` (
)
DEFAULT CHARSET=utf8mb4
ENGINE=InnoDB
;
;
######
#
CREATE TABLE `reserved_open` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`options` TEXT NULL DEFAULT NULL,
`date` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `date` (`date`)
)
DEFAULT CHARSET=utf8mb4
ENGINE=MyISAM;
+1
View File
@@ -12,6 +12,7 @@ foreach(AppConf::getList() as $setting){
'color'=>$setting->getColor(),
'korName'=>$setting->getKorName(),
'name'=>$setting->getShortName(),
'exists'=>$setting->isExists(),
'enable'=>$setting->isRunning()
];
+17 -1
View File
@@ -42,6 +42,14 @@ var serverLoginTemplate = "\
</td>\
";
var serverReservedTemplate = "\
<td colspan='4' class='server_reserved'>\
- 오픈 일시 : <%openDatetime%> - <br>\
<span style='color:orange;'><%scenarioName%></span> <span style='color:limegreen;'><%turnterm%>분 턴 서버</span><br>\
(연의 모드:<%fictionMode%>), (빙의 여부:<%npcMode%>)</td>\
";
$(function(){
$("#btn_logout").click(Entrance_Logout);
Entrance_UpdateServer();
@@ -64,7 +72,7 @@ function Entrance_drawServerList(serverInfos){
$.each(serverInfos, function(idx, serverInfo){
var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));
$serverList.append($serverHtml);
if(!serverInfo.enable){
if(!serverInfo.exists){
return true;
}
@@ -72,6 +80,14 @@ function Entrance_drawServerList(serverInfos){
$.getJSON("../"+serverInfo.name+'/j_server_basic_info.php',{}, function(result){
if(result.reserved){
$serverHtml.find('.server_down').detach();
$serverHtml.append(
TemplateEngine(serverReservedTemplate, result.reserved)
);
return;
}
if(!result.game){
return;
}
+12 -1
View File
@@ -27,17 +27,28 @@ def main():
break
servList = []
autoResetList = []
for path in glob.glob(basepath+'/*/d_setting/DB.php'):
servPath = os.path.dirname(os.path.dirname(path))
servRelPath = os.path.relpath(servPath, basepath)
resetAbsPath = servPath + '/j_autoreset.php'
resetPath = webBase + '/' + servRelPath + '/j_autoreset.php'
if os.path.exists(resetAbsPath):
autoResetList.append(resetPath)
if servPath in hiddenList:
continue
servRelPath = os.path.relpath(servPath, basepath)
webPath = webBase + '/' + servRelPath + '/proc.php'
servList.append(webPath)
with concurrent.futures.ThreadPoolExecutor(max_workers=len(servList)) as executor:
waiters=[]
for resetPath in autoResetList:
future = executor.submit(run, resetPath)
waiters.append(future)
for _ in range(4):
for webPath in servList:
future = executor.submit(run, webPath)
+14 -1
View File
@@ -7,4 +7,17 @@ Deny from all
SetEnvIf X-Forwarded-For ^<?=str_replace('.', '\\.', $allow_ip)?> env_allow_1
Allow from env=env_allow_1
Allow from <?=$allow_ip?>
<?php endif; ?>
<?php endif; ?>
<Files j_install.php>
Allow from all
</Files>
<Files install.php>
Allow from all
</Files>
<Files j_server_basic_info.php>
Allow from all
</Files>
<Files ~ "\.(xml|css|jpe?g|png|gif|js|pdf)$">
Allow from all
</Files>