1
0
mirror of https://github.com/ZeroDream-CN/PHPMC7 synced 2024-11-30 17:52:52 +08:00

增加多语言支持,修复 utf8mb4 乱码问题

更新版本到 7.3.3325
This commit is contained in:
Akkariin Meiko 2018-10-19 18:39:25 +08:00
parent 0794b18efc
commit d5d5962746
21 changed files with 392 additions and 171 deletions

File diff suppressed because one or more lines are too long

View File

@ -124,10 +124,12 @@ function selectServer(id, element) {
function serverStatus() { function serverStatus() {
var htmlobjs = $.ajax({url:"?action=status&id=" + server, async:true, timeout:10000, success: function(){ var htmlobjs = $.ajax({url:"?action=status&id=" + server, async:true, timeout:10000, success: function(){
var rpt = htmlobjs.responseText; if(server != undefined) {
var fallback = rpt.split("\/"); var rpt = htmlobjs.responseText;
$("#online").html(fallback[0]); var fallback = rpt.split("\/");
$("#max").html(fallback[1]); $("#online").html(fallback[0]);
$("#max").html(fallback[1]);
}
setTimeout(serverStatus, 10000); setTimeout(serverStatus, 10000);
}}); }});
}; };

View File

@ -33,44 +33,44 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>服务器控制台</h5> <h5>{{ $Lang->str('服务器控制台'); }}</h5>
</div> </div>
<div class="ibox-content" style=""> <div class="ibox-content" style="">
<div id="debug" class="console" style="overflow: unset;overflow-y: scroll;"></div> <div id="debug" class="console" style="overflow: unset;overflow-y: scroll;"></div>
<input id="command" style="background: none;top: 0px;outline: none;" placeholder="在此处输入命令Enter 提交"> <input id="command" style="background: none;top: 0px;outline: none;" placeholder="{{ $Lang->str('在此处输入命令Enter 提交'); }}">
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>服务器控制台</h5></div> <h5>{{ $Lang->str('服务器控制台'); }}</h5></div>
<div class="ibox-content"> <div class="ibox-content">
<h1 class="no-margins"> <h1 class="no-margins">
<span class="text-info" id="online"></span> / <span class="text-info" id="online"></span> /
<span class="text-danger" id="max"></span></h1> <span class="text-danger" id="max"></span></h1>
<small>在线玩家 / 最大在线</small> <small>{{ $Lang->str('在线玩家'); }} / {{ $Lang->str('最大在线'); }}</small>
<br> <br>
<span>当前延迟:<span id="ping">Pinging ...</span></span> <span>{{ $Lang->str('当前延迟:'); }}<span id="ping">Pinging ...</span></span>
<br><br> <br><br>
<button class="btn btn-primary" id="btn1" onclick="startServer()"><i class="fa fa-play"></i> 开启</button> <button class="btn btn-primary" id="btn1" onclick="startServer()"><i class="fa fa-play"></i> {{ $Lang->str('开启'); }}</button>
<div class="s8px"></div> <div class="s8px"></div>
<button class="btn btn-danger" id="btn2" onclick="stopServer()"><i class="fa fa-stop"></i> 关闭</button> <button class="btn btn-danger" id="btn2" onclick="stopServer()"><i class="fa fa-stop"></i> {{ $Lang->str('关闭'); }}</button>
<div class="s8px"></div> <div class="s8px"></div>
<button class="btn btn-warning" id="btn3" onclick="restartServer()"><i class="fa fa-refresh"></i> 重启</button> <button class="btn btn-warning" id="btn3" onclick="restartServer()"><i class="fa fa-refresh"></i> {{ $Lang->str('重启'); }}</button>
<p style="margin-top: 8px;"> <p style="margin-top: 8px;">
<input type="checkbox" checked="true" id="autoflush"> <span style="position: relative;top: -2px;">保持输出滚动</span></input> <input type="checkbox" checked="true" id="autoflush"> <span style="position: relative;top: -2px;">{{ $Lang->str('保持输出滚动'); }}</span></input>
</p> </p>
<p>游戏地址:<code id="gamehost"></code></p> <p>{{ $Lang->str('游戏地址:'); }}<code id="gamehost"></code></p>
<p>FTP 账号:<code id="ftpuser"></code></p> <p>{{ $Lang->str('FTP 账号:'); }}<code id="ftpuser"></code></p>
<p>FTP 密码:<code id="ftppass"></code></p> <p>{{ $Lang->str('FTP 密码:'); }}<code id="ftppass"></code></p>
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>选择服务器</h5> <h5>{{ $Lang->str('选择服务器'); }}</h5>
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
{{ PHPMC::Server()->getServerList() }} {{ PHPMC::Server()->getServerList() }}

View File

@ -33,7 +33,7 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>Daemon 列表</h5> <h5>{{ $Lang->str('Daemon 列表'); }}</h5>
</div> </div>
<div class="ibox-content" style=""> <div class="ibox-content" style="">
{{ PHPMC::Daemon()->getDaemonListAdmin() }} {{ PHPMC::Daemon()->getDaemonListAdmin() }}
@ -43,27 +43,27 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>修改 Daemon</h5></div> <h5>{{ $Lang->str('修改 Daemon'); }}</h5></div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>从上面选择一个 Daemon 来修改设置</p> <p>{{ $Lang->str('从上面选择一个 Daemon 来修改设置'); }}</p>
<div id="changedaemon" style="display: none;"> <div id="changedaemon" style="display: none;">
<p>请注意,当 Daemon 中还有服务器时无法删除。</p> <p>{{ $Lang->str('请注意,当 Daemon 中还有服务器时无法删除。'); }}</p>
<p>Daemon 名称</p> <p>{{ $Lang->str('Daemon 名称'); }}</p>
<input type="text" id="modify_name" class="form-control" /> <input type="text" id="modify_name" class="form-control" />
<p>AJAX 请求地址</p> <p>{{ $Lang->str('AJAX 请求地址'); }}</p>
<input type="text" id="modify_host" class="form-control" /> <input type="text" id="modify_host" class="form-control" />
<p>连接密码</p> <p>{{ $Lang->str('连接密码'); }}</p>
<input type="text" id="modify_pass" class="form-control" /> <input type="text" id="modify_pass" class="form-control" />
<p>域名或 IP 地址</p> <p>{{ $Lang->str('域名或 IP 地址'); }}</p>
<input type="text" id="modify_fqdn" class="form-control" /> <input type="text" id="modify_fqdn" class="form-control" />
<p>服务器系统类型</p> <p>{{ $Lang->str('服务器系统类型'); }}</p>
<select id="modify_type" class="form-control"> <select id="modify_type" class="form-control">
<option value="linux" id="Type_linux">Linux x86/x64</option> <option value="linux" id="Type_linux">Linux x86/x64</option>
<option value="windows" id="Type_windows">Windows x86/x64</option> <option value="windows" id="Type_windows">Windows x86/x64</option>
</select> </select>
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-danger" onclick="deleteDaemon()">删除 Daemon</button> <button class="btn btn-danger" onclick="deleteDaemon()">{{ $Lang->str('删除 Daemon'); }}</button>
<button class="btn btn-primary" onclick="updateDaemon()">保存修改</button> <button class="btn btn-primary" onclick="updateDaemon()">{{ $Lang->str('保存修改'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -72,24 +72,24 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>添加服务器</h5> <h5>{{ $Lang->str('添加 Daemon'); }}</h5>
</div> </div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>Daemon 名称</p> <p>{{ $Lang->str('Daemon 名称'); }}</p>
<input type="text" id="name" class="form-control" /> <input type="text" id="name" class="form-control" />
<p>AJAX 请求地址</p> <p>{{ $Lang->str('AJAX 请求地址'); }}</p>
<input type="text" id="host" class="form-control" /> <input type="text" id="host" class="form-control" />
<p>连接密码</p> <p>{{ $Lang->str('连接密码'); }}</p>
<input type="text" id="pass" class="form-control" /> <input type="text" id="pass" class="form-control" />
<p>域名或 IP 地址</p> <p>{{ $Lang->str('域名或 IP 地址'); }}</p>
<input type="text" id="fqdn" class="form-control" /> <input type="text" id="fqdn" class="form-control" />
<p>服务器系统类型</p> <p>{{ $Lang->str('服务器系统类型'); }}</p>
<select id="type" class="form-control"> <select id="type" class="form-control">
<option value="linux">Linux x86/x64</option> <option value="linux">Linux x86/x64</option>
<option value="windows">Windows x86/x64</option> <option value="windows">Windows x86/x64</option>
</select> </select>
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-primary" onclick="createDaemon()">添加 Daemon</button> <button class="btn btn-primary" onclick="createDaemon()">{{ $Lang->str('添加 Daemon'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -99,7 +99,7 @@
<script type="text/javascript"> <script type="text/javascript">
var selected; var selected;
function selectDaemon(id, element) { function selectDaemon(id, element) {
window.parent.frames.progressshow("请稍后,正在加载..."); window.parent.frames.progressshow("{{ $Lang->str('请稍后,正在加载...'); }}");
$(".server-hover").attr("style", ""); $(".server-hover").attr("style", "");
element.style.border = "1px solid rgba(255,255,255,0.3)"; element.style.border = "1px solid rgba(255,255,255,0.3)";
var htmlobj = $.ajax({ var htmlobj = $.ajax({
@ -173,7 +173,7 @@
}); });
} }
function deleteDaemon() { function deleteDaemon() {
if(confirm("您确定要删除此 Daemon 吗?此操作不可恢复!")) { if(confirm("{{ $Lang->str('您确定要删除此 Daemon 吗?此操作不可恢复!'); }}")) {
var htmlobj = $.ajax({ var htmlobj = $.ajax({
url: "?action=deletedaemon", url: "?action=deletedaemon",
async:true, async:true,

View File

@ -30,35 +30,35 @@
<div class="col-sm-12"> <div class="col-sm-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>系统数据统计</h5> <h5>{{ $Lang->str('系统数据统计'); }}</h5>
</div> </div>
<div class="ibox-content"> <div class="ibox-content">
<div class="row"> <div class="row">
<div class="col-sm-3 box-hover"> <div class="col-sm-3 box-hover">
<center> <center>
<h1><i class="fa fa-cubes"></i></h1> <h1><i class="fa fa-cubes"></i></h1>
<h4>Daemon 数量</h4> <h4>{{ $Lang->str('Daemon 数量'); }}</h4>
<p>{Daemon:getCounts}</p> <p>{Daemon:getCounts}</p>
</center> </center>
</div> </div>
<div class="col-sm-3 box-hover"> <div class="col-sm-3 box-hover">
<center> <center>
<h1><i class="fa fa-cubes"></i></h1> <h1><i class="fa fa-cubes"></i></h1>
<h4>Minecraft 服务器数量</h4> <h4>{{ $Lang->str('Minecraft 服务器数量'); }}</h4>
<p>{Server:getCounts}</p> <p>{Server:getCounts}</p>
</center> </center>
</div> </div>
<div class="col-sm-3 box-hover"> <div class="col-sm-3 box-hover">
<center> <center>
<h1><i class="fa fa-key"></i></h1> <h1><i class="fa fa-key"></i></h1>
<h4>登录失败次数</h4> <h4>{{ $Lang->str('登录失败次数'); }}</h4>
<p>{Option:loginFailed}</p> <p>{Option:loginFailed}</p>
</center> </center>
</div> </div>
<div class="col-sm-3 box-hover"> <div class="col-sm-3 box-hover">
<center> <center>
<h1><i class="fa fa-users"></i></h1> <h1><i class="fa fa-users"></i></h1>
<h4>用户数量</h4> <h4>{{ $Lang->str('用户数量'); }}</h4>
<p>{User:getCounts}</p> <p>{User:getCounts}</p>
</center> </center>
</div> </div>
@ -69,25 +69,25 @@
<div class="col-lg-8"> <div class="col-lg-8">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>主页</h5></div> <h5>{{ $Lang->str('主页'); }}</h5></div>
<div class="ibox-content" id="debug"> <div class="ibox-content" id="debug">
<p>欢迎使用 PHPMC <span class="text-success">7</span> 管理面板系统</p> <p>{{ $Lang->str('欢迎使用 PHPMC'); }} <span class="text-success">7</span> {{ $Lang->str('管理面板系统'); }}</p>
<p>您正在使用的 PHPMC 版本为:{System:get_phpmc_version}</p> <p>{{ $Lang->str('您正在使用的 PHPMC 版本为:'); }}{System:get_phpmc_version}</p>
<p>如果您在使用中遇到任何问题请与我取得联系QQ204034。</p> <p>{{ $Lang->str('如果您在使用中遇到任何问题请与我取得联系QQ204034。'); }}</p>
<p>PHPMC 官方网站:<a href="https://www.phpmc.cn/" target="_blank">https://www.phpmc.cn/</a></p> <p>{{ $Lang->str('PHPMC 官方网站:'); }}<a href="https://www.phpmc.cn/" target="_blank">https://www.phpmc.cn/</a></p>
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>系统信息</h5> <h5>{{ $Lang->str('系统信息'); }}</h5>
</div> </div>
<div class="ibox-content" id="debug"> <div class="ibox-content" id="debug">
<p>PHP 版本:{System:get_PHP_Version}</p> <p>{{ $Lang->str('PHP 版本:'); }}{System:get_PHP_Version}</p>
<p>PHP 运行方式:{System:get_php_sapi_name}</p> <p>{{ $Lang->str('PHP 运行方式:'); }}{System:get_php_sapi_name}</p>
<p>服务器操作系统:{System:get_php_os}</p> <p>{{ $Lang->str('服务器操作系统:'); }}{System:get_php_os}</p>
<p>HTTP 服务器:{System:get_server_software}</p> <p>{{ $Lang->str('HTTP 服务器:'); }}{System:get_server_software}</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{Option:SiteName} 登陆</title> <title>{Option:SiteName} {{ $Lang->str('登陆'); }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="noindex" /> <meta name="robots" content="noindex" />
<link href="content/{Option:Theme}/css/sakura.css" type="text/css" rel="stylesheet" /> <link href="content/{Option:Theme}/css/sakura.css" type="text/css" rel="stylesheet" />
@ -15,7 +15,7 @@
<table> <table>
<tr> <tr>
<td> <td>
<h2>提示信息</h2> <h2>{{ $Lang->str('提示信息'); }}</h2>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -87,18 +87,18 @@
<table> <table>
<tr> <tr>
<td class="label"> <td class="label">
<span>账号</span> <span>{{ $Lang->str('账号'); }}</span>
</td> </td>
<td> <td>
<input id="login_username" placeholder="用户名" type="text" name="username" /> <input id="login_username" placeholder="{{ $Lang->str('用户名'); }}" type="text" name="username" />
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<span>密码</span> <span>{{ $Lang->str('密码'); }}</span>
</td> </td>
<td> <td>
<input id="login_passwd" placeholder="密码" type="password" name="password" /> <input id="login_passwd" placeholder="{{ $Lang->str('密码'); }}" type="password" name="password" />
</td> </td>
</tr> </tr>
<tr> <tr>
@ -108,12 +108,12 @@
<tr> <tr>
<td> <td>
<span class="pre-text"> <span class="pre-text">
<a href="?page=findpass">忘记密码</a> <a href="?page=findpass">{{ $Lang->str('忘记密码'); }}</a>
</span> </span>
</td> </td>
<td> <td>
<div class="btn-content"> <div class="btn-content">
<button class="btn-login" onclick="login()">Log In</button> <button class="btn-login" onclick="login()">{{ $Lang->str('Log In'); }}</button>
</div> </div>
</td> </td>
</tr> </tr>
@ -122,9 +122,9 @@
</div> </div>
<div class="right-tips"> <div class="right-tips">
<div class="tips-content"> <div class="tips-content">
<p>欢迎登录 <b>{Option:SiteName}</b> {Option:Description}</p> <p>{{ $Lang->str('欢迎登录'); }} <b>{Option:SiteName}</b> {Option:Description}</p>
<p>本平台由 Akkariin 开发。</p> <p>{{ $Lang->str('本平台由 Akkariin 开发。'); }}</p>
<p>作者QQ204034&nbsp;&nbsp;邮箱akkariin@akkariin.com</p> <p>{{ $Lang->str('作者QQ204034&nbsp;&nbsp;邮箱akkariin@akkariin.com'); }}</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -28,7 +28,7 @@
<table> <table>
<tr> <tr>
<td> <td>
<h2>提示信息</h2> <h2>{{ $Lang->str('提示信息'); }}</h2>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -95,7 +95,7 @@
<li> <li>
<a class="J_menuItem" href="?page=home" data-index="0"> <a class="J_menuItem" href="?page=home" data-index="0">
<i class="fa fa-home"></i> <i class="fa fa-home"></i>
<span class="nav-label">主页</span> <span class="nav-label">{{ $Lang->str('主页'); }}</span>
</a> </a>
</li> </li>
<!--<li class=""> <!--<li class="">
@ -111,31 +111,31 @@
<li> <li>
<a class="J_menuItem" href="?page=console" data-index="1"> <a class="J_menuItem" href="?page=console" data-index="1">
<i class="fa fa-terminal"></i> <i class="fa fa-terminal"></i>
<span>服务器控制台</span> <span>{{ $Lang->str('服务器控制台'); }}</span>
</a> </a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="?page=server-list" data-index="2"> <a class="J_menuItem" href="?page=server-list" data-index="2">
<i class="fa fa-server"></i> <i class="fa fa-server"></i>
<span>服务器管理</span> <span>{{ $Lang->str('服务器管理'); }}</span>
</a> </a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="?page=daemon-list" data-index="3"> <a class="J_menuItem" href="?page=daemon-list" data-index="3">
<i class="fa fa-cube"></i> <i class="fa fa-cube"></i>
<span>Daemon 管理</span> <span>{{ $Lang->str('Daemon 管理'); }}</span>
</a> </a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="?page=user-list" data-index="4"> <a class="J_menuItem" href="?page=user-list" data-index="4">
<i class="fa fa-user"></i> <i class="fa fa-user"></i>
<span class="nav-label">用户管理</span> <span class="nav-label">{{ $Lang->str('用户管理'); }}</span>
</a> </a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="?page=setting" data-index="5"> <a class="J_menuItem" href="?page=setting" data-index="5">
<i class="fa fa-cog"></i> <i class="fa fa-cog"></i>
<span class="nav-label">PHPMC 7 设置</span> <span class="nav-label">{{ $Lang->str('PHPMC 7 设置'); }}</span>
</a> </a>
</li> </li>
</ul> </ul>
@ -151,35 +151,35 @@
</button> </button>
<nav class="page-tabs J_menuTabs"> <nav class="page-tabs J_menuTabs">
<div class="page-tabs-content"> <div class="page-tabs-content">
<a href="javascript:;" class="active J_menuTab" data-id="?page=home">首页</a></div> <a href="javascript:;" class="active J_menuTab" data-id="?page=home">{{ $Lang->str('首页'); }}</a></div>
</nav> </nav>
<button class="roll-nav roll-right J_tabRight"> <button class="roll-nav roll-right J_tabRight">
<i class="fa fa-forward"></i> <i class="fa fa-forward"></i>
</button> </button>
<div class="btn-group roll-nav roll-right"> <div class="btn-group roll-nav roll-right">
<button class="dropdown J_tabClose" data-toggle="dropdown">关闭操作</button> <button class="dropdown J_tabClose" data-toggle="dropdown">{{ $Lang->str('关闭操作'); }}</button>
<ul role="menu" class="dropdown-menu dropdown-menu-right"> <ul role="menu" class="dropdown-menu dropdown-menu-right">
<li class="J_tabShowActive"> <li class="J_tabShowActive">
<a>定位当前选项卡</a> <a>{{ $Lang->str('定位当前选项卡'); }}</a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li class="J_tabCloseAll"> <li class="J_tabCloseAll">
<a>关闭全部选项卡</a> <a>{{ $Lang->str('关闭全部选项卡'); }}</a>
</li> </li>
<li class="J_tabCloseOther"> <li class="J_tabCloseOther">
<a>关闭其他选项卡</a> <a>{{ $Lang->str('关闭其他选项卡'); }}</a>
</li> </li>
</ul> </ul>
</div> </div>
<a href="?action=logout" class="roll-nav roll-right J_tabExit"> <a href="?action=logout" class="roll-nav roll-right J_tabExit">
<i class="fa fa fa-sign-out"></i>退出</a> <i class="fa fa fa-sign-out"></i>{{ $Lang->str('退出'); }}</a>
</div> </div>
<div class="row J_mainContent" id="content-main"> <div class="row J_mainContent" id="content-main">
<iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="?page=home" frameborder="0" data-id="?page=home" seamless=""></iframe> <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="?page=home" frameborder="0" data-id="?page=home" seamless=""></iframe>
</div> </div>
<div class="footer"> <div class="footer">
<div class="pull-right">© 2018 <div class="pull-right">© 2018
<a href="https://www.phpmc.cn/" target="_blank">PHPMC 提供技术支持</a></div> <a href="https://www.phpmc.cn/" target="_blank">{{ $Lang->str('PHPMC 提供技术支持'); }}</a></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -33,7 +33,7 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>服务器列表</h5> <h5>{{ $Lang->str('服务器列表'); }}</h5>
</div> </div>
<div class="ibox-content" style=""> <div class="ibox-content" style="">
{{ PHPMC::Server()->getServerListAdmin() }} {{ PHPMC::Server()->getServerListAdmin() }}
@ -43,32 +43,32 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>修改服务器</h5></div> <h5>{{ $Lang->str('修改服务器'); }}</h5></div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>从上面选择一个服务器来修改设置</p> <p>{{ $Lang->str('从上面选择一个服务器来修改设置'); }}</p>
<div id="changeserver" style="display: none;"> <div id="changeserver" style="display: none;">
<p>请注意,服务器创建后无法修改 Daemon。</p> <p>{{ $Lang->str('请注意,服务器创建后无法修改 Daemon。'); }}</p>
<p>服务器名称</p> <p>{{ $Lang->str('服务器名称'); }}</p>
<input type="text" id="modify_name" class="form-control" /> <input type="text" id="modify_name" class="form-control" />
<p>最大内存 (MB)</p> <p>{{ $Lang->str('最大内存 (MB)'); }}</p>
<input type="text" id="modify_maxram" class="form-control" /> <input type="text" id="modify_maxram" class="form-control" />
<p>核心文件名字</p> <p>{{ $Lang->str('核心文件名字'); }}</p>
<input type="text" id="modify_jar" class="form-control" /> <input type="text" id="modify_jar" class="form-control" />
<p>核心启动命令</p> <p>{{ $Lang->str('核心启动命令'); }}</p>
<input type="text" id="modify_startcommand" class="form-control" /> <input type="text" id="modify_startcommand" class="form-control" />
<p>停止命令</p> <p>{{ $Lang->str('停止命令'); }}</p>
<input type="text" id="modify_stopcommand" class="form-control" /> <input type="text" id="modify_stopcommand" class="form-control" />
<p>服务器端口</p> <p>{{ $Lang->str('服务器端口'); }}</p>
<input type="text" id="modify_port" class="form-control" /> <input type="text" id="modify_port" class="form-control" />
<p>服务器 FTP 密码</p> <p>{{ $Lang->str('服务器 FTP 密码'); }}</p>
<input type="text" id="modify_ftppass" class="form-control" /> <input type="text" id="modify_ftppass" class="form-control" />
<p>服务器所有者</p> <p>{{ $Lang->str('服务器所有者'); }}</p>
<select id="modify_owner" class="form-control"> <select id="modify_owner" class="form-control">
{{ PHPMC::User()->getOptionList(true) }} {{ PHPMC::User()->getOptionList(true) }}
</select> </select>
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-danger" onclick="deleteServer()">删除服务器</button> <button class="btn btn-danger" onclick="deleteServer()">{{ $Lang->str('删除服务器'); }}</button>
<button class="btn btn-primary" onclick="updateServer()">保存修改</button> <button class="btn btn-primary" onclick="updateServer()">{{ $Lang->str('保存修改'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -77,33 +77,33 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>添加服务器</h5> <h5>{{ $Lang->str('添加服务器'); }}</h5>
</div> </div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>选择 Daemon</p> <p>{{ $Lang->str('选择 Daemon'); }}</p>
<select id="daemon" class="form-control"> <select id="daemon" class="form-control">
{{ PHPMC::Daemon()->getOptionList() }} {{ PHPMC::Daemon()->getOptionList() }}
</select> </select>
<p>服务器名称</p> <p>{{ $Lang->str('服务器名称'); }}</p>
<input type="text" id="name" placeholder="MyServer" class="form-control" /> <input type="text" id="name" placeholder="MyServer" class="form-control" />
<p>最大内存 (MB)</p> <p>{{ $Lang->str('最大内存 (MB)'); }}</p>
<input type="text" id="maxram" placeholder="1024" class="form-control" /> <input type="text" id="maxram" placeholder="1024" class="form-control" />
<p>核心文件名字</p> <p>{{ $Lang->str('核心文件名字'); }}</p>
<input type="text" id="jar" placeholder="PaperSpigot.jar" class="form-control" /> <input type="text" id="jar" placeholder="PaperSpigot.jar" class="form-control" />
<p>核心启动命令</p> <p>{{ $Lang->str('核心启动命令'); }}</p>
<input type="text" id="startcommand" placeholder="java -Xmx{maxram}M -Xms128M -jar {jar}" value="java -Xmx{maxram}M -Xms128M -jar {jar}" class="form-control" /> <input type="text" id="startcommand" placeholder="java -Xmx{maxram}M -Xms128M -jar {jar}" value="java -Xmx{maxram}M -Xms128M -jar {jar}" class="form-control" />
<p>停止命令</p> <p>{{ $Lang->str('停止命令'); }}</p>
<input type="text" id="stopcommand" placeholder="stop" class="form-control" /> <input type="text" id="stopcommand" placeholder="stop" class="form-control" />
<p>服务器端口</p> <p>{{ $Lang->str('服务器端口'); }}</p>
<input type="text" id="port" placeholder="25565" class="form-control" /> <input type="text" id="port" placeholder="25565" class="form-control" />
<p>服务器 FTP 密码</p> <p>{{ $Lang->str('服务器 FTP 密码'); }}</p>
<input type="text" id="ftppass" placeholder="123456789" class="form-control" /> <input type="text" id="ftppass" placeholder="123456789" class="form-control" />
<p>服务器所有者</p> <p>{{ $Lang->str('服务器所有者'); }}</p>
<select id="owner" class="form-control"> <select id="owner" class="form-control">
{{ PHPMC::User()->getOptionList() }} {{ PHPMC::User()->getOptionList() }}
</select> </select>
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-success" onclick="createServer()">添加服务器</button> <button class="btn btn-success" onclick="createServer()">{{ $Lang->str('添加服务器'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -113,7 +113,7 @@
<script type="text/javascript"> <script type="text/javascript">
var selected; var selected;
function selectServer(id, element) { function selectServer(id, element) {
window.parent.frames.progressshow("请稍后,正在加载..."); window.parent.frames.progressshow("{{ $Lang->str('请稍后,正在加载...'); }}");
$(".server-hover").attr("style", ""); $(".server-hover").attr("style", "");
element.style.border = "1px solid rgba(255,255,255,0.3)"; element.style.border = "1px solid rgba(255,255,255,0.3)";
var htmlobj = $.ajax({ var htmlobj = $.ajax({
@ -199,7 +199,7 @@
}); });
} }
function deleteServer() { function deleteServer() {
if(confirm("您确定要删除此服务器吗?此操作不可恢复!")) { if(confirm("{{ $Lang->str('您确定要删除此服务器吗?此操作不可恢复!'); }}")) {
var htmlobj = $.ajax({ var htmlobj = $.ajax({
url: "?", url: "?",
async:true, async:true,

View File

@ -33,30 +33,32 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>PHPMC 7 设置</h5> <h5>{{ $Lang->str('PHPMC 7 设置'); }}</h5>
</div> </div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<h4>感谢您使用 PHPMC <span class="text-success">7</span></h4> <h4>{{ $Lang->str('感谢您使用 PHPMC'); }} <span class="text-success">7</span></h4>
<p>如果您在使用中遇到任何问题,请与我取得联系。</p> <p>{{ $Lang->str('如果您在使用中遇到任何问题,请与我取得联系。'); }}</p>
<p>QQ204034 | Emailakkariin@akkariin.com</p> <p>{{ $Lang->str('QQ204034 | Emailakkariin@akkariin.com'); }}</p>
<hr> <hr>
<p>站点名称</p> <p>{{ $Lang->str('站点名称'); }}</p>
<input type="text" class="form-control" id="SiteName" value="{Option:SiteName}" /> <input type="text" class="form-control" id="SiteName" value="{Option:SiteName}" />
<p>站点简介</p> <p>{{ $Lang->str('站点简介'); }}</p>
<input type="text" class="form-control" id="Description" value="{Option:Description}" /> <input type="text" class="form-control" id="Description" value="{Option:Description}" />
<p>系统主题</p> <p>{{ $Lang->str('系统主题'); }}</p>
<input type="text" class="form-control" id="Theme" value="{Option:Theme}" /> <input type="text" class="form-control" id="Theme" value="{Option:Theme}" />
<p>{{ $Lang->str('系统语言'); }}</p>
<input type="text" class="form-control" id="Lang" value="{Option:Lang}" />
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-primary" onclick="saveConfig()">保存设置</button> <button class="btn btn-primary" onclick="saveConfig()">{{ $Lang->str('保存设置'); }}</button>
</div> </div>
</div> </div>
</div> </div>
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>检查更新</h5> <h5>{{ $Lang->str('检查更新'); }}</h5>
</div> </div>
<div class="ibox-content addfrp" id="update"> <div class="ibox-content addfrp" id="update">
<p>请稍后,正在检查软件更新...</p> <p>{{ $Lang->str('请稍后,正在检查软件更新...'); }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -65,29 +67,51 @@
<script type="text/javascript"> <script type="text/javascript">
var version = "{{ PHPMC_VERSION; }}"; var version = "{{ PHPMC_VERSION; }}";
var newversion; var newversion;
function saveConfig() {
var htmlobj = $.ajax({
url: "/?action=saveconfig",
async:true,
timeout:5000,
data: {
SiteName: $("#SiteName").val(),
Description: $("#Description").val(),
Theme: $("#Theme").val(),
Lang: $("#Lang").val()
},
error: function() {
window.parent.frames.showmsg(htmlobj.responseText);
},
success: function() {
console.log(htmlobj.responseText);
window.parent.frames.showmsg(htmlobj.responseText);
location = '?page=setting';
return;
}
});
}
function checkUpdate() { function checkUpdate() {
var htmlobj = $.ajax({ var htmlobj = $.ajax({
url: "https://www.phpmc.cn/update.php?version={{ PHPMC_VERSION; }}", url: "https://www.phpmc.cn/update.php?version={{ PHPMC_VERSION; }}",
async: true, async: true,
timeout:5000, timeout:5000,
error: function(e) { error: function(e) {
window.parent.frames.showmsg("检查更新错误:" + htmlobj.responseText); window.parent.frames.showmsg("{{ $Lang->str('检查更新错误:'); }}" + htmlobj.responseText);
}, },
success: function() { success: function() {
console.log(htmlobj.responseText); console.log(htmlobj.responseText);
var data = JSON.parse(htmlobj.responseText); var data = JSON.parse(htmlobj.responseText);
newversion = data.version; newversion = data.version;
if(version == newversion) { if(version == newversion) {
$("#update").html("<p>本地版本:" + version + "</p><p>最新版本:" + newversion + "</p><p>您的 PHPMC 已经是最新版本,无需更新。</p>"); $("#update").html("<p>{{ $Lang->str('本地版本:'); }}" + version + "</p><p>{{ $Lang->str('最新版本:'); }}" + newversion + "</p><p>{{ $Lang->str('您的 PHPMC 已经是最新版本,无需更新。'); }}</p>");
return; return;
} }
$("#update").html("<p>本地版本:" + version + "</p><p>最新版本:" + newversion + "</p><p>更新内容:<br>" + data.feature + "</p><p><button class='btn btn-primary' onclick='update()'>立即更新</button></p>"); $("#update").html("<p>{{ $Lang->str('本地版本:'); }}" + version + "</p><p>{{ $Lang->str('最新版本:'); }}" + newversion + "</p><p>{{ $Lang->str('更新内容:'); }}<br>" + data.feature + "</p><p><button class='btn btn-primary' onclick='update()'>{{ $Lang->str('立即更新'); }}</button></p>");
return; return;
} }
}); });
} }
function update() { function update() {
window.parent.frames.showmsg("请稍后,正在执行系统更新..."); window.parent.frames.showmsg("{{ $Lang->str('请稍后,正在执行系统更新...'); }}");
var htmlobj = $.ajax({ var htmlobj = $.ajax({
url: "?action=update", url: "?action=update",
async:true, async:true,
@ -102,27 +126,6 @@
} }
}); });
} }
function saveConfig() {
var htmlobj = $.ajax({
url: "/?action=saveconfig",
async:true,
timeout:5000,
data: {
SiteName: $("#SiteName").val(),
Description: $("#Description").val(),
Theme: $("#Theme").val()
},
error: function() {
window.parent.frames.showmsg(htmlobj.responseText);
},
success: function() {
console.log(htmlobj.responseText);
window.parent.frames.showmsg(htmlobj.responseText);
location = '?page=setting'
return;
}
});
}
window.onload = function() { window.onload = function() {
checkUpdate(); checkUpdate();
} }

View File

@ -33,7 +33,7 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>用户列表</h5> <h5>{{ $Lang->str('用户列表'); }}</h5>
</div> </div>
<div class="ibox-content" style=""> <div class="ibox-content" style="">
{{ PHPMC::User()->getUserListAdmin() }} {{ PHPMC::User()->getUserListAdmin() }}
@ -43,22 +43,22 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>修改用户</h5></div> <h5>{{ $Lang->str('修改用户'); }}</h5></div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>从上面选择一个用户来修改设置</p> <p>{{ $Lang->str('从上面选择一个用户来修改设置'); }}</p>
<div id="changeuser" style="display: none;"> <div id="changeuser" style="display: none;">
<p>请注意,当用户还拥有服务器时无法删除。</p> <p>{{ $Lang->str('请注意,当用户还拥有服务器时无法删除。'); }}</p>
<p>用户名</p> <p>{{ $Lang->str('用户名'); }}</p>
<input type="text" id="modify_username" class="form-control" /> <input type="text" id="modify_username" class="form-control" />
<p>用户密码 (留空不修改)</p> <p>{{ $Lang->str('用户密码 (留空不修改)'); }}</p>
<input type="password" id="modify_password" class="form-control" /> <input type="password" id="modify_password" class="form-control" />
<p>用户邮箱</p> <p>{{ $Lang->str('用户邮箱'); }}</p>
<input type="text" id="modify_email" class="form-control" /> <input type="text" id="modify_email" class="form-control" />
<p>用户权限</p> <p>{{ $Lang->str('用户权限'); }}</p>
<input type="text" id="modify_permission" class="form-control" /> <input type="text" id="modify_permission" class="form-control" />
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-danger" onclick="deleteUser()">删除用户</button> <button class="btn btn-danger" onclick="deleteUser()">{{ $Lang->str('删除用户'); }}</button>
<button class="btn btn-primary" onclick="updateUser()">保存修改</button> <button class="btn btn-primary" onclick="updateUser()">{{ $Lang->str('保存修改'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -67,19 +67,19 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="ibox float-e-margins"> <div class="ibox float-e-margins">
<div class="ibox-title"> <div class="ibox-title">
<h5>添加用户</h5> <h5>{{ $Lang->str('添加用户'); }}</h5>
</div> </div>
<div class="ibox-content addfrp"> <div class="ibox-content addfrp">
<p>用户名</p> <p>{{ $Lang->str('用户名'); }}</p>
<input type="text" id="username" class="form-control" /> <input type="text" id="username" class="form-control" />
<p>用户密码</p> <p>{{ $Lang->str('用户密码'); }}</p>
<input type="password" id="password" class="form-control" /> <input type="password" id="password" class="form-control" />
<p>用户邮箱</p> <p>{{ $Lang->str('用户邮箱'); }}</p>
<input type="text" id="email" class="form-control" /> <input type="text" id="email" class="form-control" />
<p>用户权限</p> <p>{{ $Lang->str('用户权限'); }}</p>
<input type="text" id="permission" class="form-control" /> <input type="text" id="permission" class="form-control" />
<div class="text-right" style="margin-top: 16px;"> <div class="text-right" style="margin-top: 16px;">
<button class="btn btn-primary" onclick="createUser()">添加用户</button> <button class="btn btn-primary" onclick="createUser()">{{ $Lang->str('添加用户'); }}</button>
</div> </div>
</div> </div>
</div> </div>
@ -159,7 +159,7 @@
}); });
} }
function deleteUser() { function deleteUser() {
if(confirm("您确定要删除此用户吗?此操作不可恢复!")) { if(confirm("{{ $Lang->str('您确定要删除此用户吗?此操作不可恢复!'); }}")) {
var htmlobj = $.ajax({ var htmlobj = $.ajax({
url: "?", url: "?",
async:true, async:true,

View File

@ -20,6 +20,7 @@ class Daemon {
$this->daemon = $daemon; $this->daemon = $daemon;
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon` WHERE `id`='{$daemon}'")); $rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon` WHERE `id`='{$daemon}'"));
if($rs) { if($rs) {
$this->id = $rs['id']; $this->id = $rs['id'];
@ -59,6 +60,7 @@ class Daemon {
public function getCounts() { public function getCounts() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`");
$i = 0; $i = 0;
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -75,6 +77,7 @@ class Daemon {
public function getOptionList() { public function getOptionList() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`");
$data = ""; $data = "";
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -97,6 +100,7 @@ class Daemon {
$uuid = md5(md5(time() . rand(0, 999999))); $uuid = md5(md5(time() . rand(0, 999999)));
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "INSERT INTO `{$db['name']}`.`daemon` (`id`, `name`, `host`, `pass`, `fqdn`, `type`) " mysqli_query($conn, "INSERT INTO `{$db['name']}`.`daemon` (`id`, `name`, `host`, `pass`, `fqdn`, `type`) "
. "VALUES (NULL, '{$name}', '{$host}', '{$pass}', '{$fqdn}', '{$type}')"); . "VALUES (NULL, '{$name}', '{$host}', '{$pass}', '{$fqdn}', '{$type}')");
return true; return true;
@ -116,6 +120,7 @@ class Daemon {
public function updateDaemon($id, $name, $host, $pass, $fqdn, $type) { public function updateDaemon($id, $name, $host, $pass, $fqdn, $type) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`daemon` SET `name`='{$name}', `host`='{$host}', " mysqli_query($conn, "UPDATE `{$db['name']}`.`daemon` SET `name`='{$name}', `host`='{$host}', "
. "`pass`='{$pass}', `fqdn`='{$fqdn}', `type`='{$type}' WHERE `id`='{$id}'"); . "`pass`='{$pass}', `fqdn`='{$fqdn}', `type`='{$type}' WHERE `id`='{$id}'");
return true; return true;
@ -130,6 +135,7 @@ class Daemon {
public function deleteDaemon($id) { public function deleteDaemon($id) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "DELETE FROM `{$db['name']}`.`daemon` WHERE `id`='{$id}'"); mysqli_query($conn, "DELETE FROM `{$db['name']}`.`daemon` WHERE `id`='{$id}'");
return true; return true;
} }
@ -142,6 +148,7 @@ class Daemon {
public function getDaemonListAdmin() { public function getDaemonListAdmin() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`daemon`");
$data = ""; $data = "";
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {

View File

@ -273,7 +273,7 @@ class Event {
echo $sinfo['online'] . "/" . $sinfo['max'] . "/" . $Daemon->fqdn . ":" . $Server->port; echo $sinfo['online'] . "/" . $sinfo['max'] . "/" . $Daemon->fqdn . ":" . $Server->port;
exit; exit;
} else { } else {
echo "/"; echo "0/0/0";
exit; exit;
} }
} }
@ -540,7 +540,10 @@ class Event {
if(!preg_match("/^[a-zA-Z0-9\-\_]+$/", $data['Theme'])) { if(!preg_match("/^[a-zA-Z0-9\-\_]+$/", $data['Theme'])) {
PHPMC::Error()->Println("请填写字段:系统主题"); PHPMC::Error()->Println("请填写字段:系统主题");
} }
PHPMC::Option()->saveConfig($data['SiteName'], $data['Description'], $data['Theme']); if(!preg_match("/^[a-zA-Z0-9\-\_]+$/", $data['Lang'])) {
PHPMC::Error()->Println("请填写字段:系统语言");
}
PHPMC::Option()->saveConfig($data['SiteName'], $data['Description'], $data['Theme'], $data['Lang']);
echo "系统设置更改成功,您需要刷新网页后设置才会生效。"; echo "系统设置更改成功,您需要刷新网页后设置才会生效。";
exit; exit;
} }

View File

@ -0,0 +1,22 @@
<?php
class Lang {
public $lang;
public $data;
public function setLang($lang) {
$this->lang = $lang;
if(file_exists(ROOT . "/include/langs/{$lang}.php")) {
include(ROOT . "/include/langs/{$lang}.php");
$this->data = $langdata;
} else {
$this->data = Array();
}
}
public function str($text) {
$data = $this->data;
//file_put_contents(ROOT . "/lang.txt", "'{$text}' => '{$text}'", FILE_APPEND);
return isset($data[$text]) ? $data[$text] : $text;
}
}

View File

@ -1,7 +1,7 @@
<?php <?php
// PHPMC 7 Version define // PHPMC 7 Version define
// Don't change this, because it will interfere your update. // Don't change this, because it will interfere your update.
define("PHPMC_VERSION", "7.3.3233"); define("PHPMC_VERSION", "7.3.3325");
include(ROOT . "/include/core/PHPMC/Event.php"); include(ROOT . "/include/core/PHPMC/Event.php");
include(ROOT . "/include/core/PHPMC/User.php"); include(ROOT . "/include/core/PHPMC/User.php");
@ -17,7 +17,8 @@ include(ROOT . "/include/core/PHPMC/Permission.php");
include(ROOT . "/include/core/PHPMC/Update.php"); include(ROOT . "/include/core/PHPMC/Update.php");
include(ROOT . "/include/core/PHPMC/Csrf.php"); include(ROOT . "/include/core/PHPMC/Csrf.php");
include(ROOT . "/include/core/PHPMC/Plugin.php"); include(ROOT . "/include/core/PHPMC/Plugin.php");
include(ROOT . "/include/core/PHPMC/Lang.php");
class PHPMC { class PHPMC {
public static function Event() { public static function Event() {
@ -64,6 +65,10 @@ class PHPMC {
return new Plugin(); return new Plugin();
} }
public static function Lang() {
return new Lang();
}
public static function Error() { public static function Error() {
return new WebError(); return new WebError();
} }

View File

@ -6,6 +6,7 @@ class Option {
public function __construct() { public function __construct() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`option`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`option`");
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
$this->options[$rw[1]] = $rw[2]; $this->options[$rw[1]] = $rw[2];
@ -22,18 +23,21 @@ class Option {
} }
} }
public function saveConfig($SiteName, $Description, $Theme) { public function saveConfig($SiteName, $Description, $Theme, $Lang) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$SiteName}' WHERE `key`='SiteName'"); mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$SiteName}' WHERE `key`='SiteName'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$Description}' WHERE `key`='Description'"); mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$Description}' WHERE `key`='Description'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$Theme}' WHERE `key`='Theme'"); mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$Theme}' WHERE `key`='Theme'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$Lang}' WHERE `key`='Lang'");
return true; return true;
} }
public function updateOption($key, $value) { public function updateOption($key, $value) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$value}' WHERE `key`='{$key}'"); mysqli_query($conn, "UPDATE `{$db['name']}`.`option` SET `value`='{$value}' WHERE `key`='{$key}'");
return true; return true;
} }

View File

@ -40,8 +40,9 @@ class Permission {
public function checkSession($permission) { public function checkSession($permission) {
if(!$this->check($permission)) { if(!$this->check($permission)) {
$Option = new Option();
$Loader = new Loader(); $Loader = new Loader();
echo $Loader->loadPage("403.html", ROOT . "/content/" . Config::Theme() . "/error/"); echo $this->check($permission);//$Loader->loadPage("403.html", ROOT . "/content/" . $Option->getOption("Theme") . "/error/");
exit; exit;
} }
} }
@ -57,10 +58,24 @@ class Permission {
*/ */
public function serverControlPerm($permission, $server) { public function serverControlPerm($permission, $server) {
$gettag = explode(";", $permission); $gettag = explode(";", $permission);
for($i = 0;$i < count($gettag);$i++) { $s = 0;
$getkey = explode(":", $gettag[$i]); $User = new User();
if($getkey[0] == "server" && $getkey[1] == $server) { $Profile = $User->getLoginUser();
return true; $Server = new Server();
$Server->setServer($server);
if($Server->uuid == null) {
return false;
}
if($Server->owner == $Profile->id) {
return true;
} else {
for($i = 0;$i < count($gettag);$i++) {
$getkey = explode(":", $gettag[$i]);
if($getkey[0] == "server") {
if($getkey[1] == $server) {
return true;
}
}
} }
} }
return false; return false;

View File

@ -10,6 +10,7 @@ class Profile {
if(!empty($username) && preg_match("/^[A-Za-z0-9\-\_]+$/", $username)) { if(!empty($username) && preg_match("/^[A-Za-z0-9\-\_]+$/", $username)) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
// Method 1 通过用户名查找用户 // Method 1 通过用户名查找用户
$rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users` WHERE `username`='{$username}'")); $rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users` WHERE `username`='{$username}'"));
if($rs) { if($rs) {

View File

@ -25,6 +25,7 @@ class Server {
$this->server = $server; $this->server = $server;
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
// Method 1 通过服务器 ID 查找服务器 // Method 1 通过服务器 ID 查找服务器
$rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `id`='" . $this->server . "'")); $rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `id`='" . $this->server . "'"));
if($rs) { if($rs) {
@ -161,6 +162,7 @@ class Server {
$uuid = md5(uniqid(rand(0, 10000000), TRUE)); $uuid = md5(uniqid(rand(0, 10000000), TRUE));
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "INSERT INTO `{$db['name']}`.`servers` (`id`, `name`, `daemon`, `maxram`, `jar`, `startcommand`, `stopcommand`, `owner`, `status`, `port`, `uuid`, `ftppass`) " mysqli_query($conn, "INSERT INTO `{$db['name']}`.`servers` (`id`, `name`, `daemon`, `maxram`, `jar`, `startcommand`, `stopcommand`, `owner`, `status`, `port`, `uuid`, `ftppass`) "
. "VALUES (NULL, '{$name}', '{$daemon}', '{$maxram}', '{$jar}', '{$startcommand}', '{$stopcommand}', '{$owner}', '{$status}', '{$port}', '{$uuid}', '{$ftppass}')"); . "VALUES (NULL, '{$name}', '{$daemon}', '{$maxram}', '{$jar}', '{$startcommand}', '{$stopcommand}', '{$owner}', '{$status}', '{$port}', '{$uuid}', '{$ftppass}')");
$this->setServer($uuid); $this->setServer($uuid);
@ -186,6 +188,7 @@ class Server {
public function updateServer($id, $name, $maxram, $jar, $startcommand, $stopcommand, $owner, $status, $port, $ftppass) { public function updateServer($id, $name, $maxram, $jar, $startcommand, $stopcommand, $owner, $status, $port, $ftppass) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "UPDATE `{$db['name']}`.`servers` SET `name`='{$name}', `maxram`='{$maxram}', `jar`='{$jar}', `startcommand`='{$startcommand}', " mysqli_query($conn, "UPDATE `{$db['name']}`.`servers` SET `name`='{$name}', `maxram`='{$maxram}', `jar`='{$jar}', `startcommand`='{$startcommand}', "
."`stopcommand`='{$stopcommand}', `owner`='{$owner}', `status`='{$status}', `port`='{$port}', `ftppass`='{$ftppass}' WHERE `id`='{$id}'"); ."`stopcommand`='{$stopcommand}', `owner`='{$owner}', `status`='{$status}', `port`='{$port}', `ftppass`='{$ftppass}' WHERE `id`='{$id}'");
return true; return true;
@ -201,6 +204,7 @@ class Server {
$this->setServer($id); $this->setServer($id);
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$Daemon = new Daemon(); $Daemon = new Daemon();
if($Daemon->setDaemon($this->daemon) == null) { if($Daemon->setDaemon($this->daemon) == null) {
return false; return false;
@ -329,6 +333,7 @@ class Server {
public function getCounts() { public function getCounts() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers`");
$i = 0; $i = 0;
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -346,6 +351,7 @@ class Server {
public function getCountsByDaemon($id) { public function getCountsByDaemon($id) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `daemon`='{$id}'"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `daemon`='{$id}'");
$i = 0; $i = 0;
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -363,6 +369,7 @@ class Server {
public function getCountsByOwner($id) { public function getCountsByOwner($id) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `owner`='{$id}'"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers` WHERE `owner`='{$id}'");
$i = 0; $i = 0;
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -380,13 +387,14 @@ class Server {
public function getServerList() { public function getServerList() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$User = new User(); $User = new User();
$Profile = $User->getLoginUser(); $Profile = $User->getLoginUser();
$ownerid = $Profile->id; $ownerid = $Profile->id;
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`servers`");
$data = ""; $data = "";
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
if(PHPMC::Permission()->check("server:" . $rw[0])) { if(PHPMC::Permission()->check("server:" . $rw[0]) || $rw[7] == $ownerid) {
$Daemon = new Daemon(); $Daemon = new Daemon();
if($Daemon->setDaemon($rw[2]) == null) { if($Daemon->setDaemon($rw[2]) == null) {
PHPMC::Error()->Println("500 Server Internal Error"); PHPMC::Error()->Println("500 Server Internal Error");
@ -409,6 +417,7 @@ class Server {
public function getServerListAdmin() { public function getServerListAdmin() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$User = new User(); $User = new User();
$Profile = $User->getLoginUser(); $Profile = $User->getLoginUser();
$ownerid = $Profile->id; $ownerid = $Profile->id;
@ -421,7 +430,7 @@ class Server {
} }
$Profile = new Profile($rw[7]); $Profile = new Profile($rw[7]);
$data .= "<div class='server-hover' onclick='selectServer({$rw[0]}, this)'> $data .= "<div class='server-hover' onclick='selectServer({$rw[0]}, this)'>
<h5>{$rw[1]}</h5> <h5>ID{$rw[0]} 名称:{$rw[1]}</h5>
<p>" . $Daemon->fqdn . ":{$rw[9]} | 所有者:" . $Profile->username . "</p> <p>" . $Daemon->fqdn . ":{$rw[9]} | 所有者:" . $Profile->username . "</p>
</div>"; </div>";
} }

View File

@ -24,6 +24,7 @@ class User {
public function Login($username, $password) { public function Login($username, $password) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users` WHERE `username`='{$username}'")); $rs = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users` WHERE `username`='{$username}'"));
if($rs) { if($rs) {
return password_verify(md5($password), $rs['password']); return password_verify(md5($password), $rs['password']);
@ -35,6 +36,7 @@ class User {
public function getCounts() { public function getCounts() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`");
$i = 0; $i = 0;
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -51,6 +53,7 @@ class User {
public function getOptionList($isModifyList = false) { public function getOptionList($isModifyList = false) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`");
$data = ""; $data = "";
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -71,6 +74,7 @@ class User {
public function getUserListAdmin() { public function getUserListAdmin() {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
$rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`"); $rs = mysqli_query($conn, "SELECT * FROM `{$db['name']}`.`users`");
$data = ""; $data = "";
while($rw = mysqli_fetch_row($rs)) { while($rw = mysqli_fetch_row($rs)) {
@ -96,6 +100,7 @@ class User {
$uuid = md5(md5(time() . rand(0, 999999))); $uuid = md5(md5(time() . rand(0, 999999)));
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "INSERT INTO `{$db['name']}`.`users` (`id`, `username`, `password`, `email`, `permission`) " mysqli_query($conn, "INSERT INTO `{$db['name']}`.`users` (`id`, `username`, `password`, `email`, `permission`) "
. "VALUES (NULL, '{$username}', '{$password}', '{$email}', '{$permission}')"); . "VALUES (NULL, '{$username}', '{$password}', '{$email}', '{$permission}')");
return true; return true;
@ -114,6 +119,7 @@ class User {
public function updateUser($id, $username, $password = false, $email, $permission) { public function updateUser($id, $username, $password = false, $email, $permission) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
if($password) { if($password) {
mysqli_query($conn, "UPDATE `{$db['name']}`.`users` SET `username`='{$username}', `password`='{$password}', " mysqli_query($conn, "UPDATE `{$db['name']}`.`users` SET `username`='{$username}', `password`='{$password}', "
. "`email`='{$email}', `permission`='{$permission}' WHERE `id`='{$id}'"); . "`email`='{$email}', `permission`='{$permission}' WHERE `id`='{$id}'");
@ -133,6 +139,7 @@ class User {
public function deleteUser($id) { public function deleteUser($id) {
$db = Config::MySQL(); $db = Config::MySQL();
$conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']); $conn = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['name'], $db['port']);
mysqli_query($conn, "set names 'utf8mb4'");
mysqli_query($conn, "DELETE FROM `{$db['name']}`.`users` WHERE `id`='{$id}'"); mysqli_query($conn, "DELETE FROM `{$db['name']}`.`users` WHERE `id`='{$id}'");
return true; return true;
} }

131
include/langs/en_US.php Normal file
View File

@ -0,0 +1,131 @@
<?php
$langdata = Array(
'提示信息' => 'Info',
'主页' => 'Home',
'服务器控制台' => 'Console',
'服务器管理' => 'Servers',
'Daemon 管理' => 'Daemons',
'用户管理' => 'Users',
'PHPMC 7 设置' => 'Setting',
'首页' => 'Home',
'关闭操作' => 'Close',
'定位当前选项卡' => 'Close this',
'关闭全部选项卡' => 'Close all',
'关闭其他选项卡' => 'Close other',
'退出' => 'Logout',
'PHPMC 提供技术支持' => 'PHPMC Software',
'系统数据统计' => 'System statistics',
'Daemon 数量' => 'Daemons',
'Minecraft 服务器数量' => 'Minecraft Servers',
'登录失败次数' => 'Login failed',
'用户数量' => 'Users',
'主页' => 'Home',
'欢迎使用 PHPMC' => 'Welcome to PHPMC',
'管理面板系统' => 'Minecraft Server Manager',
'您正在使用的 PHPMC 版本为:' => 'You are using PHPMC ',
'如果您在使用中遇到任何问题请与我取得联系QQ204034。' => 'If you has any problems during use, please contact me. Emailakkariin@akkariin.com',
'PHPMC 官方网站:' => 'PHPMC Official website: ',
'系统信息' => 'System information',
'PHP 版本:' => 'PHP version: ',
'PHP 运行方式:' => 'PHP cgi mode: ',
'服务器操作系统:' => 'Server operating system: ',
'HTTP 服务器:' => 'HTTP Server: ',
'服务器控制台' => 'Server console',
'在此处输入命令Enter 提交' => 'Input your command here, use Enter to submit',
'服务器控制台' => 'Server console',
'在线玩家' => 'Online players',
'最大在线' => 'Max online',
'当前延迟:' => 'Network delay: ',
'开启' => 'Start',
'关闭' => 'Stop',
'重启' => 'Reboot',
'保持输出滚动' => 'Keep output refresh',
'游戏地址:' => 'Game IP: ',
'FTP 账号:' => 'FTP username: ',
'FTP 密码:' => 'FTP password: ',
'选择服务器' => 'Select server',
'服务器列表' => 'Server list',
'修改服务器' => 'Modify server',
'从上面选择一个服务器来修改设置' => 'Select a server to modify.',
'请注意,服务器创建后无法修改 Daemon。' => 'You can\'t modify daemon after server created.',
'服务器名称' => 'Server name',
'最大内存 (MB)' => 'Max memory (MB)',
'核心文件名字' => 'Core jar name',
'核心启动命令' => 'Core start command',
'停止命令' => 'Stop command',
'服务器端口' => 'Server port',
'服务器 FTP 密码' => 'Server FTP password',
'服务器所有者' => 'Server owner',
'删除服务器' => 'Delete Server',
'保存修改' => 'Save',
'添加服务器' => 'Add Server',
'选择 Daemon' => 'Select Daemon',
'服务器名称' => 'Server name',
'最大内存 (MB)' => 'Max memory (MB)',
'核心文件名字' => 'Core jar name',
'核心启动命令' => 'Core start command',
'停止命令' => 'Stop command',
'服务器端口' => 'Server port',
'服务器 FTP 密码' => 'Server FTP password',
'服务器所有者' => 'Server owner',
'添加服务器' => 'Add Server',
'请稍后,正在加载...' => 'Loading...',
'您确定要删除此服务器吗?此操作不可恢复!' => 'Are you sure to delete this server?',
'Daemon 列表' => 'Daemon list',
'修改 Daemon' => 'Modify Daemon',
'从上面选择一个 Daemon 来修改设置' => 'Select a daemon to modify',
'请注意,当 Daemon 中还有服务器时无法删除。' => 'The daemon can\'t be delete when there\'s some server in the daemon',
'Daemon 名称' => 'Daemon name',
'AJAX 请求地址' => 'AJAX request address',
'连接密码' => 'Connect password',
'域名或 IP 地址' => 'Domain or IP address',
'服务器系统类型' => 'Server operating system',
'删除 Daemon' => 'Delete Daemon',
'保存修改' => 'Save',
'添加 Daemon' => 'Add Daemon',
'Daemon 名称' => 'Daemon name',
'AJAX 请求地址' => 'AJAX request address',
'连接密码' => 'Connect password',
'域名或 IP 地址' => 'Domain or IP address',
'服务器系统类型' => 'Server operating system',
'添加 Daemon' => 'Add Daemon',
'请稍后,正在加载...' => 'Loading...',
'您确定要删除此 Daemon 吗?此操作不可恢复!' => 'Are you sure to delete this daemon?',
'用户列表' => 'User list',
'修改用户' => 'Modify user',
'从上面选择一个用户来修改设置' => 'Select a user to modify',
'请注意,当用户还拥有服务器时无法删除。' => 'The user can\'t be delete when the user have some server',
'用户名' => 'Username',
'用户密码 (留空不修改)' => 'Username (Leave blank to not modify)',
'用户邮箱' => 'Email',
'用户权限' => 'Permission',
'删除用户' => 'Delete user',
'保存修改' => 'Save',
'添加用户' => 'Add user',
'用户名' => 'Username',
'用户密码' => 'Password',
'用户邮箱' => 'Email',
'用户权限' => 'Permission',
'添加用户' => 'Add user',
'您确定要删除此用户吗?此操作不可恢复!' => 'Are you sure to delete this user?',
'PHPMC 7 设置' => 'PHPMC 7 Setting',
'感谢您使用 PHPMC' => 'Thank you for using PHPMC',
'如果您在使用中遇到任何问题,请与我取得联系。' => 'If you has any problems during use, please contact me.',
'QQ204034 | Emailakkariin@akkariin.com' => 'QQ204034 | Emailakkariin@akkariin.com',
'站点名称' => 'Site name',
'站点简介' => 'Site description',
'系统主题' => 'Site theme',
'系统语言' => 'Language',
'保存设置' => 'Save config',
'检查更新' => 'Check update',
'请稍后,正在检查软件更新...' => 'Checking update, please wait...',
'检查更新错误:' => 'Failed to check update: ',
'本地版本:' => 'Local version: ',
'最新版本:' => 'Remote version: ',
'您的 PHPMC 已经是最新版本,无需更新。' => 'Your PHPMC is newest version.',
'本地版本:' => 'Local version: ',
'最新版本:' => 'Remote version: ',
'更新内容:' => 'What\'s new',
'立即更新' => 'Update now',
'请稍后,正在执行系统更新...' => 'Updating system, please wait...'
);

View File

@ -1,11 +1,20 @@
<?php <?php
include(ROOT . "/include/core/PHPMC/Main.php"); include(ROOT . "/include/core/PHPMC/Main.php");
include(ROOT . "/include/data/config.php"); include(ROOT . "/include/data/config.php");
// 想来想去还是在这里加载语言设置比较合适
$Lang = new Lang();
$Option = new Option();
$result = $Option->getOption("Lang");
$result = $result == "" ? "zh-CN" : $result;
$Lang->setLang($result);
class Loader { class Loader {
public $Event; public $Event;
public function __construct() { public function __construct() {
global $Lang;
$this->Event = new Event(); $this->Event = new Event();
} }
@ -15,6 +24,7 @@ class Loader {
* *
**/ **/
public function frame() { public function frame() {
global $Lang;
echo $this->loadPage("panel.html", ROOT . "/content/" . Config::Theme() . "/"); echo $this->loadPage("panel.html", ROOT . "/content/" . Config::Theme() . "/");
} }
@ -28,6 +38,7 @@ class Loader {
* *
**/ **/
public function loadPage($pageName, $pagePath) { public function loadPage($pageName, $pagePath) {
global $Lang;
SESSION_START(); SESSION_START();
$Option = new Option(); $Option = new Option();
$Profile = new Profile($_SESSION["user"]); $Profile = new Profile($_SESSION["user"]);
@ -83,6 +94,7 @@ class Loader {
* *
**/ **/
public function router() { public function router() {
global $Lang;
if(PHPMC::Csrf()->isemptyCsrfToken()) { if(PHPMC::Csrf()->isemptyCsrfToken()) {
PHPMC::Csrf()->createCsrfToken(); PHPMC::Csrf()->createCsrfToken();
} }