서버 커스터마이징 가능
This commit is contained in:
@@ -1,90 +1,90 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
|
||||
$db = RootDB::db();
|
||||
$member = $db->queryFirstRow('SELECT `id`, `name`, `grade`, `picture`, reg_date, third_use, acl, oauth_type, token_valid_until FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
if(!$member['picture']){
|
||||
$picture = ServConfig::getSharedIconPath().'/default.jpg';
|
||||
}
|
||||
else{
|
||||
$picture = $member['picture'];
|
||||
if(strlen($picture) > 11){
|
||||
$picture = substr($picture, 0, -10);
|
||||
}
|
||||
|
||||
$pictureFSPath = AppConf::getUserIconPathFS().'/'.$picture;
|
||||
|
||||
if(file_exists($pictureFSPath)){
|
||||
$picture = AppConf::getUserIconPathWeb().'/'.$picture;
|
||||
}
|
||||
else{
|
||||
$picture = ServConfig::getSharedIconPath().'/'.$picture;
|
||||
}
|
||||
}
|
||||
|
||||
$tokenValidUntil = $member['token_valid_until'];
|
||||
|
||||
if($member['grade'] == 6) {
|
||||
$grade = '운영자';
|
||||
} elseif($member['grade'] == 5) {
|
||||
$grade = '부운영자';
|
||||
} elseif($member['grade'] > 1) {
|
||||
$grade = '특별회원';
|
||||
} elseif($member['grade'] == 1) {
|
||||
$grade = '일반회원';
|
||||
} elseif($member['grade'] == 0) {
|
||||
$grade = '블럭회원';
|
||||
}
|
||||
|
||||
$acl = [];
|
||||
//TODO: Acl을 관리하기 위한 별도의 객체 필요
|
||||
foreach(Json::decode($member['acl']??'{}') as $serverName=>$aclList){
|
||||
$serverKorName = AppConf::getList()[$serverName]->getKorName();
|
||||
$aclTextList = array_map(function($aclName){
|
||||
$aclText = "알수없음[{$aclName}]";
|
||||
switch($aclName){
|
||||
case 'openClose':$aclText='서버여닫기';break;
|
||||
case 'reset':$aclText='서버리셋';break;
|
||||
case 'update':$aclText='업데이트';break;
|
||||
case 'fullUpdate':$aclText='임의업데이트';break;
|
||||
case 'vote':$aclText='설문조사';break;
|
||||
case 'globalNotice':$aclText='전역공지';break;
|
||||
case 'notice':$aclText='공지';break;
|
||||
case 'blockGeneral':$aclText='장수징계';break;
|
||||
}
|
||||
return $aclText;
|
||||
}, $aclList);
|
||||
|
||||
$acl[] = sprintf("%s(%s)", $serverKorName, join(",", $aclTextList));
|
||||
}
|
||||
|
||||
if($acl){
|
||||
$acl = join(",<br>", $acl);
|
||||
}
|
||||
else{
|
||||
$acl = "-";
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'id'=>$member['id'],
|
||||
'name'=>$member['name'],
|
||||
'grade'=>$grade,
|
||||
'picture'=>$picture,
|
||||
'global_salt'=>RootDB::getGlobalSalt(),
|
||||
'join_date'=>$member['reg_date'],
|
||||
'third_use'=>($member['third_use']!=0),
|
||||
'acl'=>$acl,
|
||||
'oauth_type'=>$member['oauth_type'],
|
||||
'token_valid_until'=>$tokenValidUntil
|
||||
|
||||
]);
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
|
||||
$db = RootDB::db();
|
||||
$member = $db->queryFirstRow('SELECT `id`, `name`, `grade`, `picture`, reg_date, third_use, acl, oauth_type, token_valid_until FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
if(!$member['picture']){
|
||||
$picture = ServConfig::getSharedIconPath().'/default.jpg';
|
||||
}
|
||||
else{
|
||||
$picture = $member['picture'];
|
||||
if(strlen($picture) > 11){
|
||||
$picture = substr($picture, 0, -10);
|
||||
}
|
||||
|
||||
$pictureFSPath = AppConf::getUserIconPathFS().'/'.$picture;
|
||||
|
||||
if(file_exists($pictureFSPath)){
|
||||
$picture = AppConf::getUserIconPathWeb().'/'.$picture;
|
||||
}
|
||||
else{
|
||||
$picture = ServConfig::getSharedIconPath().'/'.$picture;
|
||||
}
|
||||
}
|
||||
|
||||
$tokenValidUntil = $member['token_valid_until'];
|
||||
|
||||
if($member['grade'] == 6) {
|
||||
$grade = '운영자';
|
||||
} elseif($member['grade'] == 5) {
|
||||
$grade = '부운영자';
|
||||
} elseif($member['grade'] > 1) {
|
||||
$grade = '특별회원';
|
||||
} elseif($member['grade'] == 1) {
|
||||
$grade = '일반회원';
|
||||
} elseif($member['grade'] == 0) {
|
||||
$grade = '블럭회원';
|
||||
}
|
||||
|
||||
$acl = [];
|
||||
//TODO: Acl을 관리하기 위한 별도의 객체 필요
|
||||
foreach(Json::decode($member['acl']??'{}') as $serverName=>$aclList){
|
||||
$serverKorName = ServConfig::getServerList()[$serverName]->getKorName();
|
||||
$aclTextList = array_map(function($aclName){
|
||||
$aclText = "알수없음[{$aclName}]";
|
||||
switch($aclName){
|
||||
case 'openClose':$aclText='서버여닫기';break;
|
||||
case 'reset':$aclText='서버리셋';break;
|
||||
case 'update':$aclText='업데이트';break;
|
||||
case 'fullUpdate':$aclText='임의업데이트';break;
|
||||
case 'vote':$aclText='설문조사';break;
|
||||
case 'globalNotice':$aclText='전역공지';break;
|
||||
case 'notice':$aclText='공지';break;
|
||||
case 'blockGeneral':$aclText='장수징계';break;
|
||||
}
|
||||
return $aclText;
|
||||
}, $aclList);
|
||||
|
||||
$acl[] = sprintf("%s(%s)", $serverKorName, join(",", $aclTextList));
|
||||
}
|
||||
|
||||
if($acl){
|
||||
$acl = join(",<br>", $acl);
|
||||
}
|
||||
else{
|
||||
$acl = "-";
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'id'=>$member['id'],
|
||||
'name'=>$member['name'],
|
||||
'grade'=>$grade,
|
||||
'picture'=>$picture,
|
||||
'global_salt'=>RootDB::getGlobalSalt(),
|
||||
'join_date'=>$member['reg_date'],
|
||||
'third_use'=>($member['third_use']!=0),
|
||||
'acl'=>$acl,
|
||||
'oauth_type'=>$member['oauth_type'],
|
||||
'token_valid_until'=>$tokenValidUntil
|
||||
|
||||
]);
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$db = RootDB::db();
|
||||
|
||||
if($session->userGrade < 5){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'권한이 부족합니다'
|
||||
]);
|
||||
}
|
||||
|
||||
$userList = [];
|
||||
foreach($db->query('SELECT member.*, max(member_log.date) as loginDate from member
|
||||
left join member_log on member.`NO` = member_log.member_no and member_log.action_type="login"
|
||||
group by member.no order by member.no asc') as $member){
|
||||
|
||||
if($member['IMGSVR']){
|
||||
$icon = AppConf::getUserIconPathWeb().'/'.$member['PICTURE'];
|
||||
}
|
||||
else{
|
||||
$icon = ServConfig::getSharedIconPath().'/'.$member['PICTURE'];
|
||||
}
|
||||
|
||||
$userList[] = [
|
||||
'userID'=>$member['NO'],
|
||||
'userName'=>$member['ID'],
|
||||
'email'=>$member['EMAIL'],
|
||||
'authType'=>$member['oauth_type'],
|
||||
'userGrade'=>$member['GRADE'],
|
||||
'blockUntil'=>$member['BLOCK_DATE'],
|
||||
'nickname'=>$member['NAME'],
|
||||
'icon'=>$icon,
|
||||
'joinDate'=>$member['REG_DATE'],
|
||||
'loginDate'=>$member['loginDate'],
|
||||
'deleteAfter'=>$member['delete_after']
|
||||
];
|
||||
}
|
||||
|
||||
$serverList = [];
|
||||
foreach(AppConf::getList() as $serverName => $setting){
|
||||
if($setting->isRunning()){
|
||||
$serverList[] = $serverName;
|
||||
}
|
||||
}
|
||||
|
||||
$system = $db->queryFirstRow('SELECT `REG`, `LOGIN` FROM `system` limit 1');
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'users'=>$userList,
|
||||
'servers'=>$serverList,
|
||||
'allowJoin'=>$system['REG']=='Y',
|
||||
'allowLogin'=>$system['LOGIN']=='Y'
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$db = RootDB::db();
|
||||
|
||||
if($session->userGrade < 5){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'권한이 부족합니다'
|
||||
]);
|
||||
}
|
||||
|
||||
$userList = [];
|
||||
foreach($db->query('SELECT member.*, max(member_log.date) as loginDate from member
|
||||
left join member_log on member.`NO` = member_log.member_no and member_log.action_type="login"
|
||||
group by member.no order by member.no asc') as $member){
|
||||
|
||||
if($member['IMGSVR']){
|
||||
$icon = AppConf::getUserIconPathWeb().'/'.$member['PICTURE'];
|
||||
}
|
||||
else{
|
||||
$icon = ServConfig::getSharedIconPath().'/'.$member['PICTURE'];
|
||||
}
|
||||
|
||||
$userList[] = [
|
||||
'userID'=>$member['NO'],
|
||||
'userName'=>$member['ID'],
|
||||
'email'=>$member['EMAIL'],
|
||||
'authType'=>$member['oauth_type'],
|
||||
'userGrade'=>$member['GRADE'],
|
||||
'blockUntil'=>$member['BLOCK_DATE'],
|
||||
'nickname'=>$member['NAME'],
|
||||
'icon'=>$icon,
|
||||
'joinDate'=>$member['REG_DATE'],
|
||||
'loginDate'=>$member['loginDate'],
|
||||
'deleteAfter'=>$member['delete_after']
|
||||
];
|
||||
}
|
||||
|
||||
$serverList = [];
|
||||
foreach(ServConfig::getServerList() as $serverName => $setting){
|
||||
if($setting->isRunning()){
|
||||
$serverList[] = $serverName;
|
||||
}
|
||||
}
|
||||
|
||||
$system = $db->queryFirstRow('SELECT `REG`, `LOGIN` FROM `system` limit 1');
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'users'=>$userList,
|
||||
'servers'=>$serverList,
|
||||
'allowJoin'=>$system['REG']=='Y',
|
||||
'allowLogin'=>$system['LOGIN']=='Y'
|
||||
]);
|
||||
+106
-106
@@ -1,107 +1,107 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
// $_FILES['image_upload'] : 사진파일
|
||||
|
||||
$defaultImg = 'default.jpg';
|
||||
|
||||
$image = $_FILES['image_upload'];
|
||||
$ext = strrchr($image['name'], ".");
|
||||
$size = getImageSize($image['tmp_name']);
|
||||
|
||||
|
||||
|
||||
$imageType = $size[2];
|
||||
|
||||
$availableImageType = array('.jpg'=>IMAGETYPE_JPEG, '.png'=>IMAGETYPE_PNG, '.gif'=>IMAGETYPE_GIF);
|
||||
|
||||
$db = RootDB::db();
|
||||
$member = $db->queryFirstRow('SELECT `ID`, `PICTURE` FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
|
||||
$picName = $member['PICTURE'];
|
||||
$newExt = array_search($imageType, $availableImageType, true);
|
||||
|
||||
if($picName && strlen($picName) > 11){
|
||||
$dt = substr($picName, -8);
|
||||
$picName = substr($picName, 0, -10);
|
||||
}
|
||||
else{
|
||||
$dt = '00000000';
|
||||
}
|
||||
|
||||
$rf = date('Ymd');
|
||||
|
||||
$response['result'] = false;
|
||||
$response['reason'] = '요청이 올바르지 않습니다!';
|
||||
if(!is_uploaded_file($image['tmp_name'])) {
|
||||
//진짜 전송된 파일인지 검증
|
||||
$response['reason'] = '업로드가 되지 않았습니다!';
|
||||
$response['result'] = false;
|
||||
} elseif(!$newExt) {
|
||||
//확장자 검사
|
||||
$response['reason'] = 'jpg, gif, png 파일이 아닙니다!';
|
||||
$response['result'] = false;
|
||||
} elseif($image['size'] > 30720) {
|
||||
//파일크기 검사
|
||||
$response['reason'] = '30kb 이하로 올려주세요!';
|
||||
$response['result'] = false;
|
||||
} elseif($size[0] < 64 || 128 < $size[0]) {
|
||||
//이미지크기 검사
|
||||
$response['reason'] = '64x64 ~ 128x128 사이여야 합니다.';
|
||||
$response['result'] = false;
|
||||
} elseif($size[0] != $size[1]) {
|
||||
//이미지크기 검사
|
||||
$response['reason'] = '1:1 비율 이미지여야 합니다.';
|
||||
$response['result'] = false;
|
||||
}elseif($dt == $rf) {
|
||||
//갱신날짜 검사
|
||||
$response['reason'] = '1일 1회 변경 가능합니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
//이미지 저장
|
||||
|
||||
while(true){
|
||||
$newPicName = dechex(rand(0x000000f,0xfffffff)).$newExt;
|
||||
$dest = AppConf::getUserIconPathFS().'/'.$newPicName;
|
||||
if(file_exists($dest)){
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(!move_uploaded_file($image['tmp_name'], $dest)) {
|
||||
$response['reason'] = '업로드에 실패했습니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
$pic = "{$newPicName}?={$rf}";
|
||||
RootDB::db()->update('member',[
|
||||
'PICTURE' => $pic,
|
||||
'IMGSVR' => 1
|
||||
], 'NO=%i', $userID);
|
||||
|
||||
$servers = [];
|
||||
|
||||
foreach(AppConf::getList() as $key=>$setting){
|
||||
if($setting->isRunning()){
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
$response['servers'] = $servers;
|
||||
|
||||
$response['reason'] = '업로드에 성공했습니다!';
|
||||
$response['result'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
// $_FILES['image_upload'] : 사진파일
|
||||
|
||||
$defaultImg = 'default.jpg';
|
||||
|
||||
$image = $_FILES['image_upload'];
|
||||
$ext = strrchr($image['name'], ".");
|
||||
$size = getImageSize($image['tmp_name']);
|
||||
|
||||
|
||||
|
||||
$imageType = $size[2];
|
||||
|
||||
$availableImageType = array('.jpg'=>IMAGETYPE_JPEG, '.png'=>IMAGETYPE_PNG, '.gif'=>IMAGETYPE_GIF);
|
||||
|
||||
$db = RootDB::db();
|
||||
$member = $db->queryFirstRow('SELECT `ID`, `PICTURE` FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
|
||||
$picName = $member['PICTURE'];
|
||||
$newExt = array_search($imageType, $availableImageType, true);
|
||||
|
||||
if($picName && strlen($picName) > 11){
|
||||
$dt = substr($picName, -8);
|
||||
$picName = substr($picName, 0, -10);
|
||||
}
|
||||
else{
|
||||
$dt = '00000000';
|
||||
}
|
||||
|
||||
$rf = date('Ymd');
|
||||
|
||||
$response['result'] = false;
|
||||
$response['reason'] = '요청이 올바르지 않습니다!';
|
||||
if(!is_uploaded_file($image['tmp_name'])) {
|
||||
//진짜 전송된 파일인지 검증
|
||||
$response['reason'] = '업로드가 되지 않았습니다!';
|
||||
$response['result'] = false;
|
||||
} elseif(!$newExt) {
|
||||
//확장자 검사
|
||||
$response['reason'] = 'jpg, gif, png 파일이 아닙니다!';
|
||||
$response['result'] = false;
|
||||
} elseif($image['size'] > 30720) {
|
||||
//파일크기 검사
|
||||
$response['reason'] = '30kb 이하로 올려주세요!';
|
||||
$response['result'] = false;
|
||||
} elseif($size[0] < 64 || 128 < $size[0]) {
|
||||
//이미지크기 검사
|
||||
$response['reason'] = '64x64 ~ 128x128 사이여야 합니다.';
|
||||
$response['result'] = false;
|
||||
} elseif($size[0] != $size[1]) {
|
||||
//이미지크기 검사
|
||||
$response['reason'] = '1:1 비율 이미지여야 합니다.';
|
||||
$response['result'] = false;
|
||||
}elseif($dt == $rf) {
|
||||
//갱신날짜 검사
|
||||
$response['reason'] = '1일 1회 변경 가능합니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
//이미지 저장
|
||||
|
||||
while(true){
|
||||
$newPicName = dechex(rand(0x000000f,0xfffffff)).$newExt;
|
||||
$dest = AppConf::getUserIconPathFS().'/'.$newPicName;
|
||||
if(file_exists($dest)){
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(!move_uploaded_file($image['tmp_name'], $dest)) {
|
||||
$response['reason'] = '업로드에 실패했습니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
$pic = "{$newPicName}?={$rf}";
|
||||
RootDB::db()->update('member',[
|
||||
'PICTURE' => $pic,
|
||||
'IMGSVR' => 1
|
||||
], 'NO=%i', $userID);
|
||||
|
||||
$servers = [];
|
||||
|
||||
foreach(ServConfig::getServerList() as $key=>$setting){
|
||||
if($setting->isRunning()){
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
$response['servers'] = $servers;
|
||||
|
||||
$response['reason'] = '업로드에 성공했습니다!';
|
||||
$response['result'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Json::die($response);
|
||||
@@ -1,56 +1,56 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
|
||||
$respone = [];
|
||||
$db = RootDB::db();
|
||||
$picName = $db->queryFirstField('SELECT picture FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
if($picName && strlen($picName) > 11){
|
||||
$dt = substr($picName, -8);
|
||||
$picName = substr($picName, 0, -10);
|
||||
}
|
||||
else{
|
||||
$dt = '00000000';
|
||||
}
|
||||
|
||||
$dest = AppConf::getUserIconPathFS().'/'.$picName;
|
||||
|
||||
$rf = date('Ymd');
|
||||
|
||||
$response['result'] = false;
|
||||
$response['reason'] = '요청이 올바르지 않습니다!';
|
||||
|
||||
if($dt == $rf) {
|
||||
//갱신날짜 검사
|
||||
$response['reason'] = '1일 1회 변경 가능합니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
$db->update('member', [
|
||||
'PICTURE'=>'default.jpg',
|
||||
'IMGSVR'=>0,
|
||||
], 'NO=%i', $userID);
|
||||
|
||||
$servers = [];
|
||||
|
||||
foreach(AppConf::getList() as $key=>$setting){
|
||||
|
||||
if($setting->isRunning()){
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
$response['servers'] = $servers;
|
||||
$response['reason'] = '제거에 성공했습니다!';
|
||||
$response['result'] = true;
|
||||
}
|
||||
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
// 외부 파라미터
|
||||
|
||||
$respone = [];
|
||||
$db = RootDB::db();
|
||||
$picName = $db->queryFirstField('SELECT picture FROM `member` WHERE `NO` = %i', $userID);
|
||||
|
||||
if($picName && strlen($picName) > 11){
|
||||
$dt = substr($picName, -8);
|
||||
$picName = substr($picName, 0, -10);
|
||||
}
|
||||
else{
|
||||
$dt = '00000000';
|
||||
}
|
||||
|
||||
$dest = AppConf::getUserIconPathFS().'/'.$picName;
|
||||
|
||||
$rf = date('Ymd');
|
||||
|
||||
$response['result'] = false;
|
||||
$response['reason'] = '요청이 올바르지 않습니다!';
|
||||
|
||||
if($dt == $rf) {
|
||||
//갱신날짜 검사
|
||||
$response['reason'] = '1일 1회 변경 가능합니다!';
|
||||
$response['result'] = false;
|
||||
} else {
|
||||
$db->update('member', [
|
||||
'PICTURE'=>'default.jpg',
|
||||
'IMGSVR'=>0,
|
||||
], 'NO=%i', $userID);
|
||||
|
||||
$servers = [];
|
||||
|
||||
foreach(ServConfig::getServerList() as $key=>$setting){
|
||||
|
||||
if($setting->isRunning()){
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
$response['servers'] = $servers;
|
||||
$response['reason'] = '제거에 성공했습니다!';
|
||||
$response['result'] = true;
|
||||
}
|
||||
|
||||
Json::die($response);
|
||||
@@ -1,117 +1,117 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin(null);
|
||||
|
||||
|
||||
|
||||
// 외부 파라미터
|
||||
// $_POST['action'] : 'notice', 'open', 'close', 'reset', 'reset_full'
|
||||
// $_POST['notice'] : 공지
|
||||
// $_POST['server'] : 서버 인덱스
|
||||
|
||||
$action = Util::getPost('action', 'string', '');
|
||||
$notice = Util::getPost('notice', 'string', '');
|
||||
$server = Util::getPost('server', 'string', '');
|
||||
|
||||
$db = RootDB::db();
|
||||
$userGrade = $session->userGrade;
|
||||
$acl = $session->acl;
|
||||
$session->setReadOnly();
|
||||
|
||||
if($userGrade < 5 && !$acl) {
|
||||
Json::die([
|
||||
'result'=>'FAIL',
|
||||
'msg'=>'운영자 권한이 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
function doServerModeSet($server, $action, &$response, $session){
|
||||
|
||||
$serverList = AppConf::getList();
|
||||
$settingObj = $serverList[$server];
|
||||
$serverAcl = $session->acl[$server]??[];
|
||||
$userGrade = $session->userGrade;
|
||||
|
||||
$serverDir = $settingObj->getShortName();
|
||||
$serverPath = $settingObj->getBasePath();
|
||||
$realServerPath = realpath(dirname(__FILE__)).'/'.$serverPath;
|
||||
|
||||
if($action == 'close') { //폐쇄
|
||||
$doClose = false;
|
||||
if($userGrade >= 5){
|
||||
$doClose = true;
|
||||
}
|
||||
else if(in_array('openClose', $serverAcl)){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
if(!$doClose && in_array('reset', $serverAcl) && file_exists($serverPath.'/d_setting/DB.php')){
|
||||
require($serverPath.'/lib.php');
|
||||
$localGameStorage = KVStorage::getStorage(DB::db(), 'game_env');
|
||||
//천통 이후, 오픈 직후는 닫을 수 있음
|
||||
$localGameStorage->cacheValues(['isunited', 'startyear', 'year']);
|
||||
|
||||
if($localGameStorage->isunited){
|
||||
$doClose = true;
|
||||
}
|
||||
else if($localGameStorage->year < $localGameStorage->startyear + 2){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!$doClose){
|
||||
if(in_array('reset', $serverAcl)){
|
||||
$response['msg'] = '서버 시작 직후, 또는 천하통일 이후에만 닫을 수 있습니다.';
|
||||
}
|
||||
else{
|
||||
$response['msg'] = '서버 닫기 권한이 부족합니다.';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return $settingObj->closeServer();
|
||||
} elseif($action == 'reset' && $userGrade >= 6) {//리셋
|
||||
//FIXME: reset, reset_full 구현
|
||||
if(file_exists($serverPath.'/d_setting/DB.php')){
|
||||
@unlink($serverPath.'/d_setting/DB.php');
|
||||
}
|
||||
|
||||
$response['installURL'] = $serverDir."/install.php";
|
||||
} elseif($action == 'open' && ($userGrade >= 5 || in_array('openClose', $serverAcl))) {//오픈
|
||||
return $settingObj->openServer();
|
||||
} else{
|
||||
$response['msg'] = '올바르지 않은 요청입니다';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function doAdminPost($action, $notice, $server, $session){
|
||||
$response = ['result' => 'FAIL'];
|
||||
|
||||
$globalAcl = $session->acl['global']??[];
|
||||
$userGrade = $session->userGrade;
|
||||
|
||||
if($action == 'notice' && ($userGrade >= 5 || in_array('notice', $globalAcl))) {
|
||||
RootDB::db()->update('system', ['NOTICE'=>$notice], true);
|
||||
$response['result'] = 'SUCCESS';
|
||||
return $response;
|
||||
}
|
||||
|
||||
if(doServerModeSet($server, $action, $response, $session)){
|
||||
$response['result'] = 'SUCCESS';
|
||||
return $response;
|
||||
}
|
||||
|
||||
return $response;
|
||||
|
||||
}
|
||||
|
||||
$response = doAdminPost($action, $notice, $server, $session);
|
||||
|
||||
Json::die($response);
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin(null);
|
||||
|
||||
|
||||
|
||||
// 외부 파라미터
|
||||
// $_POST['action'] : 'notice', 'open', 'close', 'reset', 'reset_full'
|
||||
// $_POST['notice'] : 공지
|
||||
// $_POST['server'] : 서버 인덱스
|
||||
|
||||
$action = Util::getPost('action', 'string', '');
|
||||
$notice = Util::getPost('notice', 'string', '');
|
||||
$server = Util::getPost('server', 'string', '');
|
||||
|
||||
$db = RootDB::db();
|
||||
$userGrade = $session->userGrade;
|
||||
$acl = $session->acl;
|
||||
$session->setReadOnly();
|
||||
|
||||
if($userGrade < 5 && !$acl) {
|
||||
Json::die([
|
||||
'result'=>'FAIL',
|
||||
'msg'=>'운영자 권한이 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
function doServerModeSet($server, $action, &$response, $session){
|
||||
|
||||
$serverList = ServConfig::getServerList();
|
||||
$settingObj = $serverList[$server];
|
||||
$serverAcl = $session->acl[$server]??[];
|
||||
$userGrade = $session->userGrade;
|
||||
|
||||
$serverDir = $settingObj->getShortName();
|
||||
$serverPath = $settingObj->getBasePath();
|
||||
$realServerPath = realpath(dirname(__FILE__)).'/'.$serverPath;
|
||||
|
||||
if($action == 'close') { //폐쇄
|
||||
$doClose = false;
|
||||
if($userGrade >= 5){
|
||||
$doClose = true;
|
||||
}
|
||||
else if(in_array('openClose', $serverAcl)){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
if(!$doClose && in_array('reset', $serverAcl) && file_exists($serverPath.'/d_setting/DB.php')){
|
||||
require($serverPath.'/lib.php');
|
||||
$localGameStorage = KVStorage::getStorage(DB::db(), 'game_env');
|
||||
//천통 이후, 오픈 직후는 닫을 수 있음
|
||||
$localGameStorage->cacheValues(['isunited', 'startyear', 'year']);
|
||||
|
||||
if($localGameStorage->isunited){
|
||||
$doClose = true;
|
||||
}
|
||||
else if($localGameStorage->year < $localGameStorage->startyear + 2){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!$doClose){
|
||||
if(in_array('reset', $serverAcl)){
|
||||
$response['msg'] = '서버 시작 직후, 또는 천하통일 이후에만 닫을 수 있습니다.';
|
||||
}
|
||||
else{
|
||||
$response['msg'] = '서버 닫기 권한이 부족합니다.';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return $settingObj->closeServer();
|
||||
} elseif($action == 'reset' && $userGrade >= 6) {//리셋
|
||||
//FIXME: reset, reset_full 구현
|
||||
if(file_exists($serverPath.'/d_setting/DB.php')){
|
||||
@unlink($serverPath.'/d_setting/DB.php');
|
||||
}
|
||||
|
||||
$response['installURL'] = $serverDir."/install.php";
|
||||
} elseif($action == 'open' && ($userGrade >= 5 || in_array('openClose', $serverAcl))) {//오픈
|
||||
return $settingObj->openServer();
|
||||
} else{
|
||||
$response['msg'] = '올바르지 않은 요청입니다';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function doAdminPost($action, $notice, $server, $session){
|
||||
$response = ['result' => 'FAIL'];
|
||||
|
||||
$globalAcl = $session->acl['global']??[];
|
||||
$userGrade = $session->userGrade;
|
||||
|
||||
if($action == 'notice' && ($userGrade >= 5 || in_array('notice', $globalAcl))) {
|
||||
RootDB::db()->update('system', ['NOTICE'=>$notice], true);
|
||||
$response['result'] = 'SUCCESS';
|
||||
return $response;
|
||||
}
|
||||
|
||||
if(doServerModeSet($server, $action, $response, $session)){
|
||||
$response['result'] = 'SUCCESS';
|
||||
return $response;
|
||||
}
|
||||
|
||||
return $response;
|
||||
|
||||
}
|
||||
|
||||
$response = doAdminPost($action, $notice, $server, $session);
|
||||
|
||||
Json::die($response);
|
||||
|
||||
@@ -1,90 +1,90 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
if($session->userGrade < 5 && !$session->acl){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'권한이 부족합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$result = [];
|
||||
|
||||
$server = [];
|
||||
|
||||
$storage = new \sammo\KVStorage(RootDB::db(), 'git_path');
|
||||
$serverGitPath = $storage->getAll();
|
||||
|
||||
$rootServer = Util::array_last(AppConf::getList())->getShortName();
|
||||
|
||||
foreach (AppConf::getList() as $setting) {
|
||||
$serverColor = $setting->getColor();
|
||||
$serverKorName = $setting->getKorName();
|
||||
|
||||
$serverPath = $setting->getBasePath();
|
||||
$serverDir = $setting->getShortName();
|
||||
//TODO: .htaccess가 서버 오픈에도 사용될 수 있으니 별도의 방법이 필요함
|
||||
if (!is_dir($serverPath)) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>false,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'디렉토리 없음'
|
||||
];
|
||||
} elseif (!file_exists($serverPath.'/index.php')) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>false,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'index.php 없음'
|
||||
];
|
||||
} elseif (!$setting->isExists()) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'설정 파일 없음'
|
||||
];
|
||||
} elseif (!$setting->isRunning()) {
|
||||
// 폐쇄중
|
||||
$state = [
|
||||
'valid'=>true,
|
||||
'run'=>false,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'폐쇄됨'
|
||||
];
|
||||
} else {
|
||||
// 오픈중
|
||||
$state = [
|
||||
'valid'=>true,
|
||||
'run'=>true,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'운영중'
|
||||
];
|
||||
}
|
||||
|
||||
$state += [
|
||||
'name' => $serverDir,
|
||||
'korName' => $serverKorName,
|
||||
'color' => $serverColor,
|
||||
'isRoot' => $serverDir == $rootServer,
|
||||
'lastGitPath' => ($serverGitPath[$serverDir][0])??($serverDir == $rootServer?'devel':'origin/devel')
|
||||
];
|
||||
$server[] = $state;
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'acl' => $session->acl,
|
||||
'server' => $server,
|
||||
'grade' => $session->userGrade
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
WebUtil::requireAJAX();
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
if($session->userGrade < 5 && !$session->acl){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'권한이 부족합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$result = [];
|
||||
|
||||
$server = [];
|
||||
|
||||
$storage = new \sammo\KVStorage(RootDB::db(), 'git_path');
|
||||
$serverGitPath = $storage->getAll();
|
||||
|
||||
$rootServer = Util::array_last(ServConfig::getServerList())->getShortName();
|
||||
|
||||
foreach (ServConfig::getServerList() as $setting) {
|
||||
$serverColor = $setting->getColor();
|
||||
$serverKorName = $setting->getKorName();
|
||||
|
||||
$serverPath = $setting->getBasePath();
|
||||
$serverDir = $setting->getShortName();
|
||||
//TODO: .htaccess가 서버 오픈에도 사용될 수 있으니 별도의 방법이 필요함
|
||||
if (!is_dir($serverPath)) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>false,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'디렉토리 없음'
|
||||
];
|
||||
} elseif (!file_exists($serverPath.'/index.php')) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>false,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'index.php 없음'
|
||||
];
|
||||
} elseif (!$setting->isExists()) {
|
||||
$state = [
|
||||
'valid'=>false,
|
||||
'run'=>false,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'설정 파일 없음'
|
||||
];
|
||||
} elseif (!$setting->isRunning()) {
|
||||
// 폐쇄중
|
||||
$state = [
|
||||
'valid'=>true,
|
||||
'run'=>false,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'폐쇄됨'
|
||||
];
|
||||
} else {
|
||||
// 오픈중
|
||||
$state = [
|
||||
'valid'=>true,
|
||||
'run'=>true,
|
||||
'installed'=>true,
|
||||
'version'=>$setting->getVersion(),
|
||||
'reason'=>'운영중'
|
||||
];
|
||||
}
|
||||
|
||||
$state += [
|
||||
'name' => $serverDir,
|
||||
'korName' => $serverKorName,
|
||||
'color' => $serverColor,
|
||||
'isRoot' => $serverDir == $rootServer,
|
||||
'lastGitPath' => ($serverGitPath[$serverDir][0])??($serverDir == $rootServer?'devel':'origin/devel')
|
||||
];
|
||||
$server[] = $state;
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'acl' => $session->acl,
|
||||
'server' => $server,
|
||||
'grade' => $session->userGrade
|
||||
]);
|
||||
@@ -1,25 +1,25 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
// 외부 파라미터
|
||||
$response['server'] = [];
|
||||
|
||||
foreach(AppConf::getList() as $setting){
|
||||
|
||||
$serverObj = [
|
||||
'color'=>$setting->getColor(),
|
||||
'korName'=>$setting->getKorName(),
|
||||
'name'=>$setting->getShortName(),
|
||||
'exists'=>$setting->isExists(),
|
||||
'enable'=>$setting->isRunning()
|
||||
];
|
||||
|
||||
$response['server'][] = $serverObj;
|
||||
}
|
||||
|
||||
$response['result'] = 'SUCCESS';
|
||||
Json::die($response);
|
||||
|
||||
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
// 외부 파라미터
|
||||
$response['server'] = [];
|
||||
|
||||
foreach(ServConfig::getServerList() as $setting){
|
||||
|
||||
$serverObj = [
|
||||
'color'=>$setting->getColor(),
|
||||
'korName'=>$setting->getKorName(),
|
||||
'name'=>$setting->getShortName(),
|
||||
'exists'=>$setting->isExists(),
|
||||
'enable'=>$setting->isRunning()
|
||||
];
|
||||
|
||||
$response['server'][] = $serverObj;
|
||||
}
|
||||
|
||||
$response['result'] = 'SUCCESS';
|
||||
Json::die($response);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user