서버 커스터마이징 가능

This commit is contained in:
2020-06-21 17:03:32 +09:00
parent 929d2db5a5
commit 0ec99d8ba1
16 changed files with 2815 additions and 2792 deletions
+9 -1
View File
@@ -204,7 +204,15 @@ $result = Util::generateFileUsingSimpleTemplate(
'sharedIconPath' => $sharedIconPath, 'sharedIconPath' => $sharedIconPath,
'gameImagePath' => $gameImagePath, 'gameImagePath' => $gameImagePath,
'imageRequestPath' => $imageRequestPath, 'imageRequestPath' => $imageRequestPath,
'imageRequestKey' => $imageRequestKey 'imageRequestKey' => $imageRequestKey,
'serverList' => [
['che', '체', 'white'],
['kwe', '퀘', 'yellow'],
['pwe', '풰', 'orange'],
['twe', '퉤', 'magenta'],
['nya', '냐', '#e67e22'],
['pya', '퍄', '#9b59b6']
]
], ],
true true
); );
+19
View File
@@ -13,6 +13,7 @@ class ServConfig
public static $gameImagePath = "_tK_gameImagePath_"; public static $gameImagePath = "_tK_gameImagePath_";
public static $imageRequestPath = "_tK_imageRequestPath_"; public static $imageRequestPath = "_tK_imageRequestPath_";
public static $imageRequestKey = '_tK_imageRequestKey_'; public static $imageRequestKey = '_tK_imageRequestKey_';
private static $serverList = null;
public static function getSharedIconPath(string $filepath = ''): string public static function getSharedIconPath(string $filepath = ''): string
{ {
@@ -42,6 +43,24 @@ class ServConfig
return static::$imageRequestPath . "?req={$req_hash}&time={$now}"; return static::$imageRequestPath . "?req={$req_hash}&time={$now}";
} }
/**
* 서버 설정 반환
*
* @return \sammo\Setting[]
*/
public static function getServerList(): array{
$servKeyList = [/*_tK_serverList_*/];
$servKeyList[] = ['hwe', '훼', 'red'];
if (self::$serverList === null) {
self::$serverList = [];
foreach($servKeyList as [$servKey, $servNick, $servColor]){
self::$serverList[] = new Setting(ROOT.'/'.$servKey, $servNick, $servColor);
}
}
return self::$serverList;
}
/** /**
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함 * 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
+4 -4
View File
@@ -52,7 +52,7 @@ else if(
$now->getTimestamp() - $lastTurn->getTimestamp() > $reservedDate->getTimestamp() - $now->getTimestamp() $now->getTimestamp() - $lastTurn->getTimestamp() > $reservedDate->getTimestamp() - $now->getTimestamp()
){ ){
//정지 상태 & 중간 넘음 //정지 상태 & 중간 넘음
AppConf::getList()[DB::prefix()]->closeServer(); ServConfig::getServerList()[DB::prefix()]->closeServer();
$status = 'closed'; $status = 'closed';
} }
else if( else if(
@@ -60,12 +60,12 @@ else if(
$now->getTimestamp() - $lastTurn->getTimestamp() > ($reservedDate->getTimestamp() - $now->getTimestamp()) * 2 $now->getTimestamp() - $lastTurn->getTimestamp() > ($reservedDate->getTimestamp() - $now->getTimestamp()) * 2
){ ){
//천통 & 비정지 상태 & 2/3 넘음 //천통 & 비정지 상태 & 2/3 넘음
AppConf::getList()[DB::prefix()]->closeServer(); ServConfig::getServerList()[DB::prefix()]->closeServer();
$status = 'closed'; $status = 'closed';
} }
else if($reservedDate->getTimestamp() - $now->getTimestamp() <= 60*10){ else if($reservedDate->getTimestamp() - $now->getTimestamp() <= 60*10){
//어쨌든 간에 10분 남았다면. //어쨌든 간에 10분 남았다면.
AppConf::getList()[DB::prefix()]->closeServer(); ServConfig::getServerList()[DB::prefix()]->closeServer();
$status = 'closed'; $status = 'closed';
} }
@@ -96,6 +96,6 @@ $result = ResetHelper::buildScenario(
$result['affected']=1; $result['affected']=1;
$prefix = DB::prefix(); $prefix = DB::prefix();
AppConf::getList()[$prefix]->openServer(); ServConfig::getServerList()[$prefix]->openServer();
Json::die($result); Json::die($result);
+1 -1
View File
@@ -187,7 +187,7 @@ if($reserve_open){
'options'=>Json::encode($reserveInfo), 'options'=>Json::encode($reserveInfo),
'date'=>$open_date 'date'=>$open_date
]); ]);
AppConf::getList()[DB::prefix()]->closeServer(); ServConfig::getServerList()[DB::prefix()]->closeServer();
Json::die([ Json::die([
'result'=>true, 'result'=>true,
'reason'=>'예약' 'reason'=>'예약'
+1 -1
View File
@@ -95,7 +95,7 @@ if($result !== true){
ResetHelper::clearDB(); ResetHelper::clearDB();
AppConf::getList()[$prefix]->closeServer(); ServConfig::getServerList()[$prefix]->closeServer();
Json::die([ Json::die([
'result'=>true, 'result'=>true,
+3 -3
View File
@@ -71,7 +71,7 @@ class ResetHelper{
} }
$prefix = DB::prefix(); $prefix = DB::prefix();
AppConf::getList()[$prefix]->closeServer(); ServConfig::getServerList()[$prefix]->closeServer();
$db = DB::db(); $db = DB::db();
$mysqli_obj = $db->get(); $mysqli_obj = $db->get();
@@ -95,7 +95,7 @@ class ResetHelper{
$servRoot.'/d_setting/UniqueConst.orig.php', $servRoot.'/d_setting/UniqueConst.orig.php',
$servRoot.'/d_setting/UniqueConst.php',[ $servRoot.'/d_setting/UniqueConst.php',[
'serverID'=>$serverID, 'serverID'=>$serverID,
'serverName'=>AppConf::getList()[$prefix]->getKorName(), 'serverName'=>ServConfig::getServerList()[$prefix]->getKorName(),
'seasonIdx'=>$seasonIdx, 'seasonIdx'=>$seasonIdx,
], true ], true
); );
@@ -348,7 +348,7 @@ class ResetHelper{
LogHistory(1); LogHistory(1);
$prefix = DB::prefix(); $prefix = DB::prefix();
AppConf::getList()[$prefix]->closeServer(); ServConfig::getServerList()[$prefix]->closeServer();
opcache_reset(); opcache_reset();
return [ return [
+1 -1
View File
@@ -47,7 +47,7 @@ if($member['grade'] == 6) {
$acl = []; $acl = [];
//TODO: Acl을 관리하기 위한 별도의 객체 필요 //TODO: Acl을 관리하기 위한 별도의 객체 필요
foreach(Json::decode($member['acl']??'{}') as $serverName=>$aclList){ foreach(Json::decode($member['acl']??'{}') as $serverName=>$aclList){
$serverKorName = AppConf::getList()[$serverName]->getKorName(); $serverKorName = ServConfig::getServerList()[$serverName]->getKorName();
$aclTextList = array_map(function($aclName){ $aclTextList = array_map(function($aclName){
$aclText = "알수없음[{$aclName}]"; $aclText = "알수없음[{$aclName}]";
switch($aclName){ switch($aclName){
+1 -1
View File
@@ -41,7 +41,7 @@ foreach($db->query('SELECT member.*, max(member_log.date) as loginDate from memb
} }
$serverList = []; $serverList = [];
foreach(AppConf::getList() as $serverName => $setting){ foreach(ServConfig::getServerList() as $serverName => $setting){
if($setting->isRunning()){ if($setting->isRunning()){
$serverList[] = $serverName; $serverList[] = $serverName;
} }
+1 -1
View File
@@ -90,7 +90,7 @@ if(!is_uploaded_file($image['tmp_name'])) {
$servers = []; $servers = [];
foreach(AppConf::getList() as $key=>$setting){ foreach(ServConfig::getServerList() as $key=>$setting){
if($setting->isRunning()){ if($setting->isRunning()){
$servers[] = [$key, $setting->getKorName()]; $servers[] = [$key, $setting->getKorName()];
} }
+1 -1
View File
@@ -41,7 +41,7 @@ if($dt == $rf) {
$servers = []; $servers = [];
foreach(AppConf::getList() as $key=>$setting){ foreach(ServConfig::getServerList() as $key=>$setting){
if($setting->isRunning()){ if($setting->isRunning()){
$servers[] = [$key, $setting->getKorName()]; $servers[] = [$key, $setting->getKorName()];
+1 -1
View File
@@ -32,7 +32,7 @@ if($userGrade < 5 && !$acl) {
function doServerModeSet($server, $action, &$response, $session){ function doServerModeSet($server, $action, &$response, $session){
$serverList = AppConf::getList(); $serverList = ServConfig::getServerList();
$settingObj = $serverList[$server]; $settingObj = $serverList[$server];
$serverAcl = $session->acl[$server]??[]; $serverAcl = $session->acl[$server]??[];
$userGrade = $session->userGrade; $userGrade = $session->userGrade;
+2 -2
View File
@@ -20,9 +20,9 @@ $server = [];
$storage = new \sammo\KVStorage(RootDB::db(), 'git_path'); $storage = new \sammo\KVStorage(RootDB::db(), 'git_path');
$serverGitPath = $storage->getAll(); $serverGitPath = $storage->getAll();
$rootServer = Util::array_last(AppConf::getList())->getShortName(); $rootServer = Util::array_last(ServConfig::getServerList())->getShortName();
foreach (AppConf::getList() as $setting) { foreach (ServConfig::getServerList() as $setting) {
$serverColor = $setting->getColor(); $serverColor = $setting->getColor();
$serverKorName = $setting->getKorName(); $serverKorName = $setting->getKorName();
+1 -1
View File
@@ -6,7 +6,7 @@ require(__DIR__.'/../vendor/autoload.php');
// 외부 파라미터 // 외부 파라미터
$response['server'] = []; $response['server'] = [];
foreach(AppConf::getList() as $setting){ foreach(ServConfig::getServerList() as $setting){
$serverObj = [ $serverObj = [
'color'=>$setting->getColor(), 'color'=>$setting->getColor(),
+3 -3
View File
@@ -71,7 +71,7 @@ if (!$allowFullUpdate || !$target) {
$target = $request['target']; $target = $request['target'];
} }
$baseServerName = Util::array_last_key(AppConf::getList()); $baseServerName = Util::array_last_key(ServConfig::getServerList());
if (!$target && $server != $baseServerName) { if (!$target && $server != $baseServerName) {
Json::die([ Json::die([
@@ -83,7 +83,7 @@ if (!$target && $server != $baseServerName) {
$targetDir = $target . ':' . $baseServerName; $targetDir = $target . ':' . $baseServerName;
if (!key_exists($server, AppConf::getList())) { if (!key_exists($server, ServConfig::getServerList())) {
Json::die([ Json::die([
'result' => false, 'result' => false,
'reason' => '불가능한 서버 이름입니다.' 'reason' => '불가능한 서버 이름입니다.'
@@ -230,7 +230,7 @@ $result = Util::generateFileUsingSimpleTemplate(
); );
$storage->$server = [$target, $version]; $storage->$server = [$target, $version];
//AppConf::getList()[$server]->closeServer(); //ServConfig::getServerList()[$server]->closeServer();
opcache_reset(); opcache_reset();
Json::die([ Json::die([
+2 -12
View File
@@ -11,22 +11,12 @@ class AppConf
/** /**
* 서버 설정 반환 * 서버 설정 반환
* *
* @deprecated
* @return \sammo\Setting[] * @return \sammo\Setting[]
*/ */
public static function getList() public static function getList()
{ {
if (self::$serverList === null) { return ServConfig::getServerList();
self::$serverList = [
'che'=>new Setting(ROOT.'/che', '체', 'white'),
'kwe'=>new Setting(ROOT.'/kwe', '퀘', 'yellow'),
'pwe'=>new Setting(ROOT.'/pwe', '풰', 'orange'),
'twe'=>new Setting(ROOT.'/twe', '퉤', 'magenta'),
'nya'=>new Setting(ROOT.'/nya', '냐', '#e67e22'),
'pya'=>new Setting(ROOT.'/pya', '퍄', '#9b59b6'),
'hwe'=>new Setting(ROOT.'/hwe', '훼', 'red')
];
}
return self::$serverList;
} }
/** /**
+6
View File
@@ -150,8 +150,14 @@ class Util extends \utilphp\util
$text = file_get_contents($srcFilePath); $text = file_get_contents($srcFilePath);
foreach ($params as $key => $value) { foreach ($params as $key => $value) {
if(is_array($value)){
$text = str_replace("[/*_tK_{$key}_*/]", var_export($value, true), $text);
}
else{
$text = str_replace("_tK_{$key}_", $value, $text); $text = str_replace("_tK_{$key}_", $value, $text);
} }
}
file_put_contents($destFilePath, $text); file_put_contents($destFilePath, $text);
return true; return true;