2018-09-10 14:53:00 +08:00
|
|
|
|
<?php
|
|
|
|
|
class Event {
|
|
|
|
|
|
2018-09-16 01:49:48 +08:00
|
|
|
|
public $eventList;
|
|
|
|
|
|
|
|
|
|
public function registerClass($name, $class) {
|
|
|
|
|
$arr = $this->eventList;
|
|
|
|
|
$plug_one = @count($arr[$name]);
|
|
|
|
|
$arr[$name][$plug_one] = $class;
|
|
|
|
|
$this->eventList = $arr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function EventHandle($name, $args) {
|
|
|
|
|
try {
|
|
|
|
|
// 如果此事件已经注册
|
|
|
|
|
if(isset($this->eventList[$name])) {
|
|
|
|
|
$breaked = false;
|
|
|
|
|
// 遍历事件列表,将每个插件的事件处理函数执行一次
|
|
|
|
|
foreach($this->eventList[$name] as $class) {
|
|
|
|
|
$rs = call_user_func_array(array($class, $name), $args);
|
|
|
|
|
// 如果事件被取消
|
|
|
|
|
if($rs == true) {
|
|
|
|
|
$breaked = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 如果事件未被取消
|
|
|
|
|
if(!$breaked) {
|
|
|
|
|
@call_user_func_array(array($this, $name), $args);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果事件未注册
|
|
|
|
|
call_user_func_array(array($this, $name), $args);
|
|
|
|
|
}
|
|
|
|
|
} catch(Exception $ex) {
|
|
|
|
|
// 出错时
|
|
|
|
|
call_user_func_array(array($this, $name), $args);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function defaultActionEvent($data) {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("404.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function defaultPageEvent($data) {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("panel.html", ROOT . "/content/" . $Option->getOption("Theme") . "/");
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function viewPageEvent($data) {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage($data["page"] . ".html", ROOT . "/content/" . $Option->getOption("Theme") . "/");
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-10 14:53:00 +08:00
|
|
|
|
public function LoginEvent($Data) {
|
|
|
|
|
if(preg_match("/^[A-Za-z0-9\-\_]+$/", $Data['username'])) {
|
|
|
|
|
if(PHPMC::User()->Login($Data['username'], $Data['password'])) {
|
|
|
|
|
SESSION_START();
|
|
|
|
|
$_SESSION['user'] = $Data['username'];
|
|
|
|
|
echo "Successful";
|
2018-09-15 13:25:18 +08:00
|
|
|
|
PHPMC::Csrf()->createCsrfToken();
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
} else {
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
$newValue = Intval($Option->getOption('loginFailed')) + 1;
|
|
|
|
|
$Option->updateOption("loginFailed", $newValue);
|
|
|
|
|
PHPMC::Error()->Println("用户名或密码错误!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function LogoutEvent() {
|
|
|
|
|
if(PHPMC::User()->isLogin()) {
|
|
|
|
|
PHPMC::User()->Logout();
|
|
|
|
|
}
|
|
|
|
|
echo "<script>location='./';</script>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getServerEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
if($Daemon->setDaemon($Server->daemon) == null) {
|
|
|
|
|
PHPMC::Error()->Println("500 Server Internal Error");
|
|
|
|
|
}
|
|
|
|
|
$info = Array(
|
|
|
|
|
'id' => $Server->id,
|
|
|
|
|
'name' => $Server->name,
|
|
|
|
|
'uuid' => $Server->uuid,
|
|
|
|
|
'daemon' => $Server->daemon,
|
|
|
|
|
'host' => $Daemon->host,
|
|
|
|
|
'gamehost' => $Daemon->fqdn . ":" . $Server->port,
|
|
|
|
|
'ftpuser' => mb_substr($Server->uuid, 0, 8),
|
|
|
|
|
'ftppass' => $Server->ftppass,
|
|
|
|
|
'token' => $Server->getToken()
|
|
|
|
|
);
|
|
|
|
|
echo json_encode($info);
|
|
|
|
|
} else {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("404.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getServerInfoEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$info = Array(
|
|
|
|
|
'id' => $Server->id,
|
|
|
|
|
'name' => $Server->name,
|
|
|
|
|
'maxram' => $Server->maxram,
|
|
|
|
|
'jar' => $Server->jar,
|
|
|
|
|
'startcommand' => $Server->startcommand,
|
|
|
|
|
'stopcommand' => $Server->stopcommand,
|
|
|
|
|
'port' => $Server->port,
|
|
|
|
|
'ftppass' => $Server->ftppass,
|
|
|
|
|
'owner' => $Server->owner
|
|
|
|
|
);
|
|
|
|
|
echo json_encode($info);
|
|
|
|
|
} else {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("404.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getDaemonInfoEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
$Daemon->setDaemon($data['id']);
|
|
|
|
|
if(empty($Daemon->name)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$info = Array(
|
|
|
|
|
'id' => $Daemon->id,
|
|
|
|
|
'name' => $Daemon->name,
|
|
|
|
|
'host' => $Daemon->host,
|
|
|
|
|
'pass' => $Daemon->pass,
|
|
|
|
|
'fqdn' => $Daemon->fqdn,
|
|
|
|
|
'type' => $Daemon->type
|
|
|
|
|
);
|
|
|
|
|
echo json_encode($info);
|
|
|
|
|
} else {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("404.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getUserInfoEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Profile = new Profile($data['id']);
|
|
|
|
|
if(empty($Profile->username)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$info = Array(
|
|
|
|
|
'id' => $Profile->id,
|
|
|
|
|
'username' => $Profile->username,
|
|
|
|
|
'email' => $Profile->email,
|
|
|
|
|
'permission' => $Profile->permission
|
|
|
|
|
);
|
|
|
|
|
echo json_encode($info);
|
|
|
|
|
} else {
|
|
|
|
|
$Loader = new Loader();
|
|
|
|
|
$Option = new Option();
|
|
|
|
|
echo $Loader->loadPage("404.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function startServerEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$Server->Init();
|
|
|
|
|
$startCommand = $Server->startcommand;
|
|
|
|
|
$startCommand = str_replace("{maxram}", $Server->maxram, $startCommand);
|
|
|
|
|
$startCommand = str_replace("{jar}", $Server->jar, $startCommand);
|
|
|
|
|
$Server->sendCommand($startCommand);
|
|
|
|
|
echo "Successful";
|
|
|
|
|
} else {
|
|
|
|
|
echo "Not Found";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function stopServerEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$stopcommand = $Server->stopcommand;
|
|
|
|
|
$Server->sendCommand($stopcommand);
|
|
|
|
|
echo "Successful";
|
|
|
|
|
} else {
|
|
|
|
|
echo "Not Found";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function restartServerEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$stopcommand = $Server->stopcommand;
|
|
|
|
|
$Server->sendCommand($stopcommand);
|
|
|
|
|
sleep(5);
|
|
|
|
|
$startCommand = $Server->startcommand;
|
|
|
|
|
$startCommand = str_replace("{maxram}", $Server->maxram, $startCommand);
|
|
|
|
|
$startCommand = str_replace("{jar}", $Server->jar, $startCommand);
|
|
|
|
|
$Server->sendCommand($startCommand);
|
|
|
|
|
echo "Successful";
|
|
|
|
|
} else {
|
|
|
|
|
echo "Not Found";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function onCommandEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
if(empty($data['cmd'])) {
|
|
|
|
|
PHPMC::Error()->Println("命令内容不能为空。");
|
|
|
|
|
}
|
|
|
|
|
$Server->Init();
|
|
|
|
|
$Server->sendCommand($data['cmd']);
|
|
|
|
|
echo "Successful";
|
|
|
|
|
} else {
|
|
|
|
|
echo "Not Found";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getStatusEvent($data) {
|
|
|
|
|
if(isset($data['id']) && preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if(empty($Server->uuid)) {
|
|
|
|
|
PHPMC::Error()->Println("404 Not Found");
|
|
|
|
|
}
|
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
if($Daemon->setDaemon($Server->daemon) == null) {
|
|
|
|
|
PHPMC::Error()->Println("500 Server Internal Error");
|
|
|
|
|
}
|
|
|
|
|
$Utils = new Utils();
|
|
|
|
|
$sinfo = $Utils->Query($Daemon->fqdn, $Server->port);
|
|
|
|
|
echo $sinfo['online'] . "/" . $sinfo['max'] . "/" . $Daemon->fqdn . ":" . $Server->port;
|
|
|
|
|
exit;
|
|
|
|
|
} else {
|
2018-10-19 18:39:25 +08:00
|
|
|
|
echo "0/0/0";
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createServerEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['daemon'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['name'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器名称,只能包含英文大小写、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['maxram'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:最大内存");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $data['jar'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:核心文件名字,只能包含英文大小写、数字、_、. 和 -");
|
|
|
|
|
}
|
2018-10-20 17:26:14 +08:00
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.\{\}\:\/\\\=\+ ]+$/", $data['startcommand'])) {
|
2018-09-10 14:53:00 +08:00
|
|
|
|
PHPMC::Error()->Println("请填写字段:核心启动命令");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.\{\} ]+$/", $data['stopcommand'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:停止命令");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['port'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器端口");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['ftppass'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器 FTP 密码,只能包含英文大小写、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['owner'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器所有者");
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server->setServer($data['name']);
|
|
|
|
|
if($Server->uuid !== null) {
|
|
|
|
|
PHPMC::Error()->Println("相同名字的服务器已经存在。");
|
|
|
|
|
}
|
|
|
|
|
$Server->unselectServer();
|
|
|
|
|
$Server->setServer($data['port'], $data['daemon']);
|
|
|
|
|
if($Server->uuid !== null) {
|
|
|
|
|
PHPMC::Error()->Println("相同端口、相同 Daemon 的服务器已经存在。");
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
if($Daemon->setDaemon($data['daemon']) == null) {
|
|
|
|
|
PHPMC::Error()->Println("Daemon 不存在,请检查参数是否正确。");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::Server()->createServer($data['name'], $data['daemon'], $data['maxram'],
|
|
|
|
|
$data['jar'], $data['startcommand'], $data['stopcommand'], $data['owner'], "normal", $data['port'], $data['ftppass']);
|
|
|
|
|
echo "服务器创建成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updateServerEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器 ID");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['name'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器名称,只能包含英文大小写、空格、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['maxram'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:最大内存");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $data['jar'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:核心文件名字,只能包含英文大小写、数字、_、. 和 -");
|
|
|
|
|
}
|
2018-10-20 17:26:14 +08:00
|
|
|
|
// 改为黑名单机制 charBlackList
|
|
|
|
|
// preg_match("/^[A-Za-z0-9\-\_\.\{\}\:\/\\\=\+ ]+$/", $data['startcommand'])
|
|
|
|
|
if(!$this->charBlackList($data['startcommand'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:核心启动命令: {$data['startcommand']}");
|
2018-09-10 14:53:00 +08:00
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.\{\} ]+$/", $data['stopcommand'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:停止命令");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['port'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器端口");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['ftppass'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器 FTP 密码,只能包含英文大小写、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['owner'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器所有者");
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
$Server = new Server();
|
|
|
|
|
$Server2 = new Server();
|
|
|
|
|
$Server->setServer($data['id']);
|
|
|
|
|
if($Server->uuid == null) {
|
|
|
|
|
PHPMC::Error()->Println("Server Not Found");
|
|
|
|
|
}
|
|
|
|
|
$Server2->setServer($data['name']);
|
2018-09-16 20:08:39 +08:00
|
|
|
|
if($Server2->uuid !== null && $Server2->id !== $data['id']) {
|
2018-09-15 13:25:18 +08:00
|
|
|
|
PHPMC::Error()->Println("相同名字的服务器已经存在。");
|
|
|
|
|
}
|
|
|
|
|
$Server2->unselectServer();
|
|
|
|
|
$Server2->setServer($data['port'], $Server->daemon);
|
2018-09-16 20:08:39 +08:00
|
|
|
|
if($Server2->uuid !== null && $Server2->id !== $data['id']) {
|
2018-09-15 13:25:18 +08:00
|
|
|
|
PHPMC::Error()->Println("相同端口、相同 Daemon 的服务器已经存在。");
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
PHPMC::Server()->updateServer($data['id'], $data['name'], $data['maxram'], $data['jar'], $data['startcommand'],
|
|
|
|
|
$data['stopcommand'], $data['owner'], "normal", $data['port'], $data['ftppass']);
|
2018-09-15 13:25:18 +08:00
|
|
|
|
echo "服务器设置更改成功,您需要刷新网页后设置才会生效。";
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
2018-10-20 17:26:14 +08:00
|
|
|
|
public function charBlackList($str) {
|
|
|
|
|
$list = Array("'", ">", "<", "&", "|");
|
|
|
|
|
foreach($list as $char) {
|
|
|
|
|
if(mb_stristr($str, $chat)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-10 14:53:00 +08:00
|
|
|
|
public function deleteServerEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器 ID");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::Server()->deleteServer($data['id']);
|
|
|
|
|
echo "服务器删除成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createDaemonEvent($data) {
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['name'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon 名称");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match('/^^((https|http)?:\/\/)[^\s]+$/', $data['host'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:AJAX 请求地址");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['pass'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon 密码,只能包含英文大小写、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $data['fqdn'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:域名或 IP 地址");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[a-z]+$/", $data['type'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器操作系统类型");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::Daemon()->createDaemon($data['name'], $data['host'], $data['pass'], $data['fqdn'], $data['type']);
|
|
|
|
|
echo "Daemon 创建成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updateDaemonEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon ID");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['name'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon 名称");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match('/^^((https|http)?:\/\/)[^\s]+$/', $data['host'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:AJAX 请求地址");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_ ]+$/", $data['pass'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon 密码,只能包含英文大小写、数字、下划线和 -");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_\.]+$/", $data['fqdn'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:域名或 IP 地址");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[a-z]+$/", $data['type'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:服务器操作系统类型");
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
if($Daemon->setDaemon($data['id']) == null) {
|
|
|
|
|
PHPMC::Error()->Println("Daemon Not Found");
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
PHPMC::Daemon()->updateDaemon($data['id'], $data['name'], $data['host'], $data['pass'], $data['fqdn'], $data['type']);
|
2018-09-15 13:25:18 +08:00
|
|
|
|
echo "Daemon 设置更改成功,您需要刷新网页后设置才会生效。";
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deleteDaemonEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:Daemon ID");
|
|
|
|
|
}
|
|
|
|
|
$Daemon = new Daemon();
|
|
|
|
|
if($Daemon->setDaemon($data['id']) == null) {
|
|
|
|
|
PHPMC::Error()->Println("Daemon Not Found");
|
|
|
|
|
}
|
|
|
|
|
if(PHPMC::Server()->getCountsByDaemon($data['id']) > 0) {
|
|
|
|
|
PHPMC::Error()->Println("当前 Daemon 中有服务器,请删除服务器后再删除 Daemon。");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::Daemon()->deleteDaemon($data['id']);
|
|
|
|
|
echo "Daemon 删除成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createUserEvent($data) {
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_]+$/", $data['username'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户名");
|
|
|
|
|
}
|
|
|
|
|
if(empty($data['password'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户密码");
|
|
|
|
|
}
|
|
|
|
|
if(!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户邮箱");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\_\-\;\:]+$/", $data['permission'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户权限");
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
$Profile = new Profile($data['username']);
|
|
|
|
|
if($Profile->username == $data['username'] && $Profile->id !== $data['id']) {
|
|
|
|
|
PHPMC::Error()->Println("此用户名已经存在。");
|
|
|
|
|
}
|
|
|
|
|
$Profile = new Profile($data['email']);
|
|
|
|
|
if($Profile->email == $data['email'] && $Profile->id !== $data['id']) {
|
|
|
|
|
PHPMC::Error()->Println("此邮箱已经存在。");
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
$password = password_hash(md5($data['password']), PASSWORD_BCRYPT);
|
|
|
|
|
PHPMC::User()->createUser($data['username'], $password, $data['email'], $data['permission']);
|
|
|
|
|
echo "用户创建成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updateUserEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户 ID");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\-\_]+$/", $data['username'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户名");
|
|
|
|
|
}
|
|
|
|
|
if(!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户邮箱");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[A-Za-z0-9\_\-\;\:]+$/", $data['permission'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户权限");
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
$Profile = new Profile($data['id']);
|
|
|
|
|
if($Profile->username == null) {
|
|
|
|
|
PHPMC::Error()->Println("User Not Found");
|
|
|
|
|
}
|
|
|
|
|
$Profile = new Profile($data['username']);
|
|
|
|
|
if($Profile->username == $data['username'] && $Profile->id !== $data['id']) {
|
|
|
|
|
PHPMC::Error()->Println("此用户名已经存在。");
|
|
|
|
|
}
|
|
|
|
|
$Profile = new Profile($data['email']);
|
|
|
|
|
if($Profile->email == $data['email'] && $Profile->id !== $data['id']) {
|
|
|
|
|
PHPMC::Error()->Println("此邮箱已经存在。");
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
if(empty($data['password'])) {
|
|
|
|
|
PHPMC::User()->updateUser($data['id'], $data['username'], false, $data['email'], $data['permission']);
|
|
|
|
|
} else {
|
|
|
|
|
$password = password_hash(md5($data['password']), PASSWORD_BCRYPT);
|
|
|
|
|
PHPMC::User()->updateUser($data['id'], $data['username'], $password, $data['email'], $data['permission']);
|
|
|
|
|
}
|
2018-09-15 13:25:18 +08:00
|
|
|
|
echo "用户设置更改成功,您需要刷新网页后设置才会生效。";
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deleteUserEvent($data) {
|
|
|
|
|
if(!preg_match("/^[0-9]+$/", $data['id'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:用户 ID");
|
|
|
|
|
}
|
|
|
|
|
$Profile = new Profile($data['id']);
|
2018-09-15 13:25:18 +08:00
|
|
|
|
if($Profile->username == null) {
|
2018-09-10 14:53:00 +08:00
|
|
|
|
PHPMC::Error()->Println("User Not Found");
|
|
|
|
|
}
|
|
|
|
|
if(PHPMC::Server()->getCountsByOwner($data['id']) > 0) {
|
|
|
|
|
PHPMC::Error()->Println("当前用户还拥有服务器,请删除服务器后再删除用户。");
|
|
|
|
|
}
|
|
|
|
|
if($data['id'] == "1") {
|
|
|
|
|
PHPMC::Error()->Println("此用户为超级管理员用户,无法删除。");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::User()->deleteUser($data['id']);
|
|
|
|
|
echo "用户删除成功!";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function saveConfigEvent($data) {
|
|
|
|
|
if(!preg_match("/^[a-zA-Z0-9_\x7f-\xff ]+$/", $data['SiteName'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:站点名称");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[a-zA-Z0-9_\x7f-\xff ]+$/", $data['Description'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:站点简介");
|
|
|
|
|
}
|
|
|
|
|
if(!preg_match("/^[a-zA-Z0-9\-\_]+$/", $data['Theme'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:系统主题");
|
|
|
|
|
}
|
2018-10-19 18:39:25 +08:00
|
|
|
|
if(!preg_match("/^[a-zA-Z0-9\-\_]+$/", $data['Lang'])) {
|
|
|
|
|
PHPMC::Error()->Println("请填写字段:系统语言");
|
|
|
|
|
}
|
|
|
|
|
PHPMC::Option()->saveConfig($data['SiteName'], $data['Description'], $data['Theme'], $data['Lang']);
|
2018-09-15 13:25:18 +08:00
|
|
|
|
echo "系统设置更改成功,您需要刷新网页后设置才会生效。";
|
2018-09-10 14:53:00 +08:00
|
|
|
|
exit;
|
|
|
|
|
}
|
2018-09-15 05:31:23 +08:00
|
|
|
|
|
|
|
|
|
public function updateEvent() {
|
|
|
|
|
if(PHPMC::Update()->checkUpdate()) {
|
|
|
|
|
PHPMC::Update()->updateExecute();
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-09-10 14:53:00 +08:00
|
|
|
|
}
|