- DB 불러오는 방식을 기존의 set.php에서 conf.php의 getRootDB()를 이용하도록 변경 - ADODB 에 기반한 _DB 클래스 폐기 - DBS.php 폐기 - _Setting 클래스 용도 변경 - 서버 목록 정의 방식을 하나로 모음 - 로그인시 세션에 사용자 등급을 추가 - "참여"(donation) 관련 코드 전면 제거 - 서버 리셋시 부운영자 비밀번호 문제 수정 - 서버 오픈,닫힘 여부를 새 서버 목록 정의 방식에 따르도록 수정 - DBS.php가 폐기 되었으므로 서버 오픈시 기본 정보를 json으로 받아오도록 하기 위하여 기본 준비 - 기존에 남아있던 세부 서버 로그인 처리 파일을 제거(enterPost.php) - DBS.php 삭제로 전콘 변경시에도 각 서버로 json 호출을 하도록 하는 방식으로 준비 - 전콘을 수동으로 서버에 올린뒤 처리할 수 있도록 하던 legacy 코드 제거 - general 테이블에서 userlevel 컬럼을 삭제하고, 세션에 기록된 userGrade를 이용하도록 변경 - 벌점 제한을 모든 유저 공통으로 하도록 수정 - 세부 서버 리셋을 json ajax로 처리하도록 준비
98 lines
3.0 KiB
PHP
98 lines
3.0 KiB
PHP
<?php
|
|
require_once('_common.php');
|
|
require_once(ROOT.W.F_FUNC.W.'class._JSON.php');
|
|
require_once(ROOT.W.F_CONFIG.W.DB.PHP);
|
|
require_once(ROOT.W.F_CONFIG.W.SESSION.PHP);
|
|
|
|
use utilphp\util as util;
|
|
|
|
// 외부 파라미터
|
|
// $_POST['action'] : 0: 공지, 1: 서버
|
|
// $_POST['notice'] : 공지
|
|
// $_POST['server'] : 서버 인덱스
|
|
// $_POST['select'] : 0: 폐쇄, 1: 리셋, 2: 오픈
|
|
|
|
function escapeIPv4($ip){
|
|
return str_replace('.', '\\.', $ip);
|
|
}
|
|
|
|
$action = util::array_get($_POST['action'], '');
|
|
$notice = util::array_get($_POST['notice'], '');
|
|
$server = util::array_get($_POST['server'], '');
|
|
$select = util::array_get($_POST['select'], '');
|
|
|
|
$db = getRootDB();
|
|
|
|
$member = $db->queryFirstRow('SELECT `GRADE` FROM `MEMBER` WHERE `NO` = %i', $SESSION->NoMember());
|
|
|
|
function doServerModeSet($server, $select, &$response){
|
|
global $serverList;
|
|
$settingObj = $serverList[$server][2];
|
|
|
|
$serverDir = $settingObj->getShortName();
|
|
$serverPath = $settingObj->getBasePath();
|
|
$realServerPath = realpath(dirname(__FILE__)).W.$serverPath;
|
|
|
|
if($select == 0) { //폐쇄
|
|
$templates = new League\Plates\Engine('templates');
|
|
|
|
//TODO: .htaccess가 서버 오픈에도 사용될 수 있으니 별도의 방법이 필요함
|
|
$allow_ip = util::get_client_ip(false);
|
|
if(util::starts_with($allow_ip, '192.168.') ||
|
|
util::starts_with($allow_ip, '10.'))
|
|
{
|
|
//172.16~172.31은 코딩하기 귀찮으니까 안할거다
|
|
$allow_ip = util::get_client_ip(true);
|
|
}
|
|
|
|
$xforward_allow_ip = escapeIPv4($allow_ip);
|
|
|
|
$htaccess = $templates->render('block_htaccess',
|
|
['allow_ip' => $allow_ip, 'xforward_allow_ip' => $xforward_allow_ip]);
|
|
file_put_contents($serverPath.'/.htaccess', $htaccess);
|
|
} elseif($select == 1) {//리셋
|
|
if(file_exists($serverPath.W.D_SETTING.W.'conf.php')){
|
|
@unlink($serverPath.W.D_SETTING.W.'conf.php');
|
|
}
|
|
|
|
$response['installURL'] = $serverDir.W."install.php";
|
|
} elseif($select == 2) {//오픈
|
|
if(file_exists($serverPath.'.htaccess')){
|
|
@unlink($serverPath.'.htaccess');
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function doAdminPost($member, $action, $notice, $server, $select){
|
|
$response['result'] = 'FAIL';
|
|
if($member['GRADE'] < 6) {
|
|
$response['result'] = 'FAIL';
|
|
$response['msg'] = '운영자 권한이 없습니다.';
|
|
return $response;
|
|
}
|
|
|
|
if($action == 0) {
|
|
$db->update('SYSTEM', ['NOTICE'=>$notice], 'NO=1');
|
|
$response['result'] = 'SUCCESS';
|
|
return $response;
|
|
}
|
|
|
|
if($action == 1) {
|
|
if(doServerModeSet($server, $select, $response)){
|
|
$response['result'] = 'SUCCESS';
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
|
|
$response['result'] = 'FAIL';
|
|
$response['msg'] = '알 수 없는 명령입니다.';
|
|
return $response;
|
|
|
|
}
|
|
|
|
$response = doAdminPost($member, $action, $notice, $server, $select);
|
|
|
|
echo json_encode($response);
|