//软件管理
function phpSoftMain(name, key) {
if (!isNaN(name)) {
var nametext = "php" + name;
name = name.replace(".", "");
}
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/plugins?action=getPluginInfo&name=php', function(rdata) {
layer.close(loadT);
nameA = rdata.versions[key];
bodys = [
'
' + lan.soft.php_main1 + '
',
'' + lan.soft.php_main5 + '
',
'' + lan.soft.config_edit + '
',
'' + lan.soft.php_main2 + '
',
'' + lan.soft.php_main3 + '
',
'' + lan.soft.php_main4 + '
',
'' + lan.soft.php_main6 + '
',
'' + lan.soft.php_main7 + '
',
'' + lan.soft.php_main8 + '
',
'FPM日志
',
'慢日志
',
'phpinfo
'
]
var sdata = '';
if (rdata.phpSort == false) {
rdata.phpSort = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
} else {
rdata.phpSort = rdata.phpSort.split('|');
}
for (var i = 0; i < rdata.phpSort.length; i++) {
sdata += bodys[rdata.phpSort[i]];
}
layer.open({
type: 1,
area: '640px',
title: nametext + lan.soft.admin,
closeBtn: 2,
shift: 0,
content: ''
});
if (name == "52") {
$(".phphide").hide();
}
if (rdata.versions.length < 5) {
$(".phphide").hide();
$(".pstate").hide();
SetPHPConfig(name, nameA.pathinfo);
$("p[data-id='4']").addClass('bgw');
} else {
service(name, nameA.run);
}
$(".bt-w-menu p a").click(function() {
var txt = $(this).text();
$(this).parent().addClass("bgw").siblings().removeClass("bgw");
if (txt != lan.soft.php_menu_ext) $(".soft-man-con").removeAttr("style");
});
$(".soft-man-menu").dragsort({ dragSelector: ".spanmove", dragEnd: MenusaveOrder });
});
}
//FPM日志
function GetFpmLogs(phpversion) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/ajax?action=GetFpmLogs&version=' + phpversion, function(logs) {
layer.close(loadT);
if (logs.status !== true) {
logs.msg = '';
}
if (logs.msg == '') logs.msg = '当前没有fpm日志.';
var phpCon = '';
$(".soft-man-con").html(phpCon);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
}
//FPM-Slow日志
function GetFpmSlowLogs(phpversion) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/ajax?action=GetFpmSlowLogs&version=' + phpversion, function(logs) {
layer.close(loadT);
if (logs.status !== true) {
logs.msg = '';
}
if (logs.msg == '') logs.msg = '当前没有慢日志.';
var phpCon = '';
$(".soft-man-con").html(phpCon);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
}
//配置修改
function SetPHPConf(version) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=GetPHPConf', 'version=' + version, function(rdata) {
layer.close(loadT);
var mlist = '';
for (var i = 0; i < rdata.length; i++) {
var w = '70'
if (rdata[i].name == 'error_reporting') w = '250';
var ibody = ' ';
switch (rdata[i].type) {
case 0:
var selected_1 = (rdata[i].value == 1) ? 'selected' : '';
var selected_0 = (rdata[i].value == 0) ? 'selected' : '';
ibody = '开启 关闭 '
break;
case 1:
var selected_1 = (rdata[i].value == 'On') ? 'selected' : '';
var selected_0 = (rdata[i].value == 'Off') ? 'selected' : '';
ibody = '开启 关闭 '
break;
}
mlist += '' + rdata[i].name + ' ' + ibody + ', ' + rdata[i].ps + '
'
}
var phpCon = '\
' + mlist + '\
' + lan.public.fresh + ' ' + lan.public.save + '
\
'
$(".soft-man-con").html(phpCon);
});
}
//提交PHP配置
function SubmitPHPConf(version) {
var data = {
version: version,
display_errors: $("select[name='display_errors']").val(),
'cgi.fix_pathinfo': $("select[name='cgi.fix_pathinfo']").val(),
'date.timezone': $("input[name='date.timezone']").val(),
short_open_tag: $("select[name='short_open_tag']").val(),
asp_tags: $("select[name='asp_tags']").val() || 'On',
safe_mode: $("select[name='safe_mode']").val(),
max_execution_time: $("input[name='max_execution_time']").val(),
max_input_time: $("input[name='max_input_time']").val(),
memory_limit: $("input[name='memory_limit']").val(),
post_max_size: $("input[name='post_max_size']").val(),
file_uploads: $("select[name='file_uploads']").val(),
upload_max_filesize: $("input[name='upload_max_filesize']").val(),
max_file_uploads: $("input[name='max_file_uploads']").val(),
default_socket_timeout: $("input[name='default_socket_timeout']").val(),
error_reporting: $("input[name='error_reporting']").val() || 'On'
}
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=SetPHPConf', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
function MenusaveOrder() {
var data = $(".soft-man-menu > p").map(function() { return $(this).attr("data-id"); }).get();
var ssort = data.join("|");
$("input[name=softMenuSortOrder]").val(ssort);
$.post('/ajax?action=phpSort', 'ssort=' + ssort, function() {});
};
//服务
function service(name, status) {
if (status == 'false') status = false;
if (status == 'true') status = true;
var serviceCon = '' + lan.soft.status + ':' + (status ? lan.soft.on : lan.soft.off) + '
\
\
' + (status ? lan.soft.stop : lan.soft.start) + ' \
' + lan.soft.restart + ' \
' + lan.soft.reload + ' \
';
$(".soft-man-con").html(serviceCon);
var help = '' + lan.soft.mysql_mem_err + ' ';
if (name == 'mysqld') {
$(".soft-man-con").append(help);
}
}
//php上传限制
function phpUploadLimit(version, max) {
var LimitCon = ' MB' + lan.public.save + '
';
$(".soft-man-con").html(LimitCon);
}
//php超时限制
function phpTimeLimit(version, max) {
var LimitCon = ' ' + lan.bt.s + '' + lan.public.save + '
';
$(".soft-man-con").html(LimitCon);
}
//设置超时限制
function SetPHPMaxTime(version) {
var max = $(".phpTimeLimit").val();
var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=setPHPMaxTime', 'version=' + version + '&time=' + max, function(rdata) {
$(".bt-w-menu .active").attr('onclick', "phpTimeLimit('" + version + "'," + max + ")");
$(".bt-w-menu .active a").attr('href', "javascript:phpTimeLimit('" + version + "'," + max + ");");
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//设置PHP上传限制
function SetPHPMaxSize(version) {
max = $(".phpUploadLimit").val();
if (max < 2) {
alert(max);
layer.msg(lan.soft.php_upload_size, { icon: 2 });
return;
}
var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=setPHPMaxSize', '&version=' + version + '&max=' + max, function(rdata) {
$(".bt-w-menu .active").attr('onclick', "phpUploadLimit('" + version + "'," + max + ")");
$(".bt-w-menu .active a").attr('href', "javascript:phpUploadLimit('" + version + "'," + max + ");");
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
})
}
//配置修改
function configChange(type) {
var con = '' + lan.bt.edit_ps + '
\
' + lan.public.save + ' \
\
' + lan.get('config_edit_ps', [type]) + ' \
';
$(".soft-man-con").html(con);
var fileName = '';
switch (type) {
case 'mysqld':
fileName = '/etc/my.cnf';
break;
case 'nginx':
fileName = '/www/server/nginx/conf/nginx.conf';
break;
case 'pure-ftpd':
fileName = '/www/server/pure-ftpd/etc/pure-ftpd.conf';
break;
case 'apache':
fileName = '/www/server/apache/conf/httpd.conf';
break;
case 'tomcat':
fileName = '/www/server/tomcat/conf/server.xml';
break;
case 'memcached':
fileName = '/etc/init.d/memcached';
break;
case 'redis':
fileName = '/www/server/redis/redis.conf';
break;
default:
fileName = '/www/server/php/' + type + '/etc/php.ini';
break;
}
var loadT = layer.msg(lan.soft.get, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=GetFileBody', 'path=' + fileName, function(rdata) {
layer.close(loadT);
$("#textBody").empty().text(rdata.data);
$(".CodeMirror").remove();
var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), {
extraKeys: { "Ctrl-Space": "autocomplete" },
lineNumbers: true,
matchBrackets: true,
});
editor.focus();
$(".CodeMirror-scroll").css({ "height": "300px", "margin": 0, "padding": 0 });
$("#OnlineEditFileBtn").click(function() {
$("#textBody").text(editor.getValue());
confSafe(fileName);
});
});
}
//配置保存
function confSafe(fileName) {
var data = encodeURIComponent($("#textBody").val());
var encoding = 'utf-8';
var loadT = layer.msg(lan.soft.the_save, {
icon: 16,
time: 0
});
$.post('/files?action=SaveFileBody', 'data=' + data + '&path=' + fileName + '&encoding=' + encoding, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, {
icon: rdata.status ? 1 : 2
});
});
}
//设置PATHINFO
function SetPathInfo(version, type) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=setPathInfo', 'version=' + version + '&type=' + type, function(rdata) {
var pathinfo = (type == 'on') ? true : false;
var pathinfoOpt = '' + lan.public.off + ' '
if (!pathinfo) {
pathinfoOpt = '' + lan.public.on + ' '
}
var pathinfo1 = 'PATH_INFO ' + lan.soft.php_menu_ext + ' ' + lan.soft.mvc_ps + ' ' + pathinfoOpt + ' ';
$("#pathInfo").html(pathinfo1);
$(".bt-w-menu .bgw").attr('onclick', "SetPHPConfig('" + version + "'," + pathinfo + ",1)");
$(".bt-w-menu .bgw a").attr('href', "javascript:SetPHPConfig('" + version + "'," + pathinfo + ",1);");
layer.msg(rdata.msg, { icon: 1 });
});
}
//PHP扩展配置
function SetPHPConfig(version, pathinfo, go) {
$.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
var body = ""
var opt = ""
for (var i = 0; i < rdata.libs.length; i++) {
if (rdata.libs[i].versions.indexOf(version) == -1) continue;
if (rdata.libs[i]['task'] == '-1' && rdata.libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.the_install + ' '
} else if (rdata.libs[i]['task'] == '0' && rdata.libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.sleep_install + ' '
} else if (rdata.libs[i].status) {
opt = '' + lan.soft.uninstall + ' '
} else {
opt = '' + lan.soft.install + ' '
}
body += '' +
'' + rdata.libs[i].name + ' ' +
'' + rdata.libs[i].type + ' ' +
'' + rdata.libs[i].msg + ' ' +
' ' +
'' + opt + ' ' +
' '
}
var pathinfoOpt = '' + lan.soft.off + ' '
if (!rdata.pathinfo) {
pathinfoOpt = '' + lan.soft.on + ' '
}
var pathinfo1 = 'PATH_INFO ' + lan.soft.php_menu_ext + ' ' + lan.soft.mvc_ps + ' ' + pathinfoOpt + ' ';
var con = '' +
'
' +
'' +
'' +
'' + lan.soft.php_ext_name + ' ' +
'' + lan.soft.php_ext_type + ' ' +
'' + lan.soft.php_ext_ps + ' ' +
'' + lan.soft.php_ext_status + ' ' +
'' + lan.public.action + ' ' +
' ' +
' ' +
'' + pathinfo1 + body + ' ' +
'
' +
'
' +
'请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常 Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常 ';
var divObj = document.getElementById('phpextdiv');
var scrollTopNum = 0;
if (divObj) scrollTopNum = divObj.scrollTop;
$(".soft-man-con").html(con);
document.getElementById('phpextdiv').scrollTop = scrollTopNum;
});
if (go == undefined) {
setTimeout(function() {
if ($(".bgw #phpext").html() != '安装扩展') {
return;
}
SetPHPConfig(version, pathinfo);
}, 3000);
}
}
//安装扩展
function InstallPHPLib(version, name, title, pathinfo) {
layer.confirm(lan.soft.php_ext_install_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
name = name.toLowerCase();
var data = "name=" + name + "&version=" + version + "&type=1";
var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=InstallSoft', data, function(rdata) {
setTimeout(function() {
layer.close(loadT);
SetPHPConfig(version, pathinfo, true);
setTimeout(function() {
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
}, 1000);
}, 1000);
});
fly("bi-btn");
InstallTips();
GetTaskCount();
});
}
//卸载扩展
function UninstallPHPLib(version, name, title, pathinfo) {
layer.confirm(lan.soft.php_ext_uninstall_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
name = name.toLowerCase();
var data = 'name=' + name + '&version=' + version;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=UninstallSoft', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
SetPHPConfig(version, pathinfo, true);
});
});
}
//禁用函数
function disFun(version) {
$.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
var disable_functions = rdata.disable_functions.split(',');
var dbody = ''
for (var i = 0; i < disable_functions.length; i++) {
if (disable_functions[i] == '') continue;
dbody += "" + disable_functions[i] + " " + lan.public.del + " ";
}
var con = "" +
" " +
"" + lan.public.add + " " +
"
" +
"" +
"" + lan.soft.php_ext_name + " " + lan.public.action + " " +
"" + dbody + " " +
"
";
con += '\
\
' + lan.soft.fun_ps2 + ' \
' + lan.soft.fun_ps3 + ' \
';
$(".soft-man-con").html(con);
});
}
//设置禁用函数
function disable_functions(version, act, fs) {
var fsArr = fs.split(',');
if (act == 1) {
var functions = $("#disable_function_val").val();
for (var i = 0; i < fsArr.length; i++) {
if (functions == fsArr[i]) {
layer.msg(lan.soft.fun_msg, { icon: 5 });
return;
}
}
fs += ',' + functions;
msg = lan.public.add_success;
} else {
fs = '';
for (var i = 0; i < fsArr.length; i++) {
if (act == fsArr[i]) continue;
fs += fsArr[i] + ','
}
msg = lan.public.del_success;
fs = fs.substr(0, fs.length - 1);
}
var data = 'version=' + version + '&disable_functions=' + fs;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=setPHPDisable', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.status ? msg : rdata.msg, { icon: rdata.status ? 1 : 2 });
disFun(version);
});
}
//性能调整
function SetFpmConfig(version, action) {
if (action == 1) {
$.post('/system?action=GetMemInfo', '', function(memInfo) {
var limit_children = parseInt(memInfo['memTotal'] / 8);
var max_children = Number($("input[name='max_children']").val());
var start_servers = Number($("input[name='start_servers']").val());
var min_spare_servers = Number($("input[name='min_spare_servers']").val());
var max_spare_servers = Number($("input[name='max_spare_servers']").val());
var pm = $("select[name='pm']").val();
if (limit_children < max_children) {
layer.msg('当前服务器内存不足,最大允许[' + limit_children + ']个子进程!', { icon: 2 });
$("input[name='max_children']").focus();
return;
}
if (max_children < max_spare_servers) {
layer.msg(lan.soft.php_fpm_err1, { icon: 2 });
return;
}
if (min_spare_servers > start_servers) {
layer.msg(lan.soft.php_fpm_err2, { icon: 2 });
return;
}
if (max_spare_servers < min_spare_servers) {
layer.msg(lan.soft.php_fpm_err3, { icon: 2 });
return;
}
if (max_children < start_servers) {
layer.msg(lan.soft.php_fpm_err4, { icon: 2 });
return;
}
if (max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1) {
layer.msg(lan.soft.php_fpm_err5, { icon: 2 });
return;
}
var data = 'version=' + version + '&max_children=' + max_children + '&start_servers=' + start_servers + '&min_spare_servers=' + min_spare_servers + '&max_spare_servers=' + max_spare_servers + '&pm=' + pm;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/config?action=setFpmConfig', data, function(rdata) {
layer.close(loadT);
var loadT = layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
}).error(function() {
layer.close(loadT);
layer.msg(lan.public.config_ok, { icon: 1 });
});
});
return;
}
$.post('/config?action=getFpmConfig', 'version=' + version, function(rdata) {
var limitList = "" + lan.soft.concurrency_m + " " +
"30" + lan.soft.concurrency + " " +
"50" + lan.soft.concurrency + " " +
"100" + lan.soft.concurrency + " " +
"200" + lan.soft.concurrency + " " +
"300" + lan.soft.concurrency + " " +
"500" + lan.soft.concurrency + " "
var pms = [{ 'name': 'static', 'title': lan.bt.static }, { 'name': 'dynamic', 'title': lan.bt.dynamic }];
var pmList = '';
for (var i = 0; i < pms.length; i++) {
pmList += '' + pms[i].title + ' ';
}
var body = "" +
"
" + lan.soft.concurrency_type + ": " + limitList + "
" +
"
" + lan.soft.php_fpm_model + ": " + pmList + " *" + lan.soft.php_fpm_ps1 + "
" +
"
max_children: *" + lan.soft.php_fpm_ps2 + "
" +
"
start_servers: *" + lan.soft.php_fpm_ps3 + "
" +
"
min_spare_servers: *" + lan.soft.php_fpm_ps4 + "
" +
"
max_spare_servers: *" + lan.soft.php_fpm_ps5 + "
" +
"
" + lan.public.save + "
" +
"
"
$(".soft-man-con").html(body);
$("select[name='limit']").change(function() {
var type = $(this).val();
var max_children = rdata.max_children;
var start_servers = rdata.start_servers;
var min_spare_servers = rdata.min_spare_servers;
var max_spare_servers = rdata.max_spare_servers;
switch (type) {
case '1':
max_children = 30;
start_servers = 5;
min_spare_servers = 5;
max_spare_servers = 20;
break;
case '2':
max_children = 50;
start_servers = 15;
min_spare_servers = 15;
max_spare_servers = 35;
break;
case '3':
max_children = 100;
start_servers = 20;
min_spare_servers = 20;
max_spare_servers = 70;
break;
case '4':
max_children = 200;
start_servers = 25;
min_spare_servers = 25;
max_spare_servers = 150;
break;
case '5':
max_children = 300;
start_servers = 30;
min_spare_servers = 30;
max_spare_servers = 180;
break;
case '6':
max_children = 500;
start_servers = 35;
min_spare_servers = 35;
max_spare_servers = 250;
break;
}
$("input[name='max_children']").val(max_children);
$("input[name='start_servers']").val(start_servers);
$("input[name='min_spare_servers']").val(min_spare_servers);
$("input[name='max_spare_servers']").val(max_spare_servers);
});
});
}
//phpinfo
function BtPhpinfo(version) {
var con = '' + lan.soft.phpinfo + ' ';
$(".soft-man-con").html(con);
}
//获取PHPInfo
function GetPHPInfo(version) {
var loadT = layer.msg(lan.soft.get, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/ajax?action=GetPHPInfo&version=' + version, function(rdata) {
layer.close(loadT);
layer.open({
type: 1,
title: "PHP-" + version + "-PHPINFO",
area: ['70%', '90%'],
closeBtn: 2,
shadeClose: true,
content: rdata.replace('a:link {color: #009; text-decoration: none; background-color: #fff;}', '').replace('a:link {color: #000099; text-decoration: none; background-color: #ffffff;}', '')
});
});
}
//nginx
function nginxSoftMain(name, version) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/system?action=GetConcifInfo', function(rdata) {
layer.close(loadT);
nameA = rdata['web'];
var status = name == 'nginx' ? '' + lan.soft.nginx_status + '
' : '';
var menu = '';
if (version != undefined || version != '') {
var menu = '' + lan.soft.nginx_version + '
';
}
var waf = ''
if (name == 'nginx') {
waf = '' + lan.soft.waf_title + '
'
}
var logsPath = (name == 'nginx') ? '/www/wwwlogs/nginx_error.log' : '/www/wwwlogs/error_log';
layer.open({
type: 1,
area: '640px',
title: name + lan.soft.admin,
closeBtn: 2,
shift: 0,
content: ''
});
service(name, nameA.status);
$(".bt-w-menu p").click(function() {
//var i = $(this).index();
$(this).addClass("bgw").siblings().removeClass("bgw");
});
});
}
//显示指定日志
function showLogs(logPath) {
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=GetOpeLogs', { path: logPath }, function(rdata) {
layer.close(loadT);
if (rdata.msg == '') rdata.msg = '当前没有日志!';
var ebody = '
';
$(".soft-man-con").html(ebody);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
}
//WAF防火墙
function waf() {
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get("/waf?action=GetConfig", function(rdata) {
layer.close(loadT);
if (rdata.status == -1) {
layer.msg(lan.soft.waf_not, { icon: 5, time: 5000 });
return;
}
var whiteList = ""
for (var i = 0; i < rdata.ipWhitelist.length; i++) {
if (rdata.ipWhitelist[i] == "") continue;
whiteList += "" + rdata.ipWhitelist[i] + " " + lan.public.del + " ";
}
var blackList = ""
for (var i = 0; i < rdata.ipBlocklist.length; i++) {
if (rdata.ipBlocklist[i] == "") continue;
blackList += "" + rdata.ipBlocklist[i] + " " + lan.public.del + " ";
}
var cc = rdata.CCrate.split('/')
var con = ""
$(".soft-man-con").html(con);
});
}
//上传限制
function upLimit() {
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get("/waf?action=GetConfig", function(rdata) {
layer.close(loadT);
var black_fileExt = ''
for (var i = 0; i < rdata.black_fileExt.length; i++) {
black_fileExt += "" + rdata.black_fileExt[i] + " " + lan.public.del + " ";
}
if ($("#blacktable").html() != undefined) {
$("#blacktable").html(black_fileExt);
$("#black_fileExt_val").val('');
return;
}
layer.open({
type: 1,
area: '300px',
title: lan.soft.waf_up_title,
closeBtn: 2,
shift: 0,
content: "" +
" " +
"" + lan.public.add + " " +
"
" +
"" +
"" + lan.soft.waf_up_from2 + " " + lan.public.action + " " +
"" + black_fileExt + " " +
"
"
});
});
}
//设置waf状态
function CloseWaf() {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/waf?action=SetStatus', '', function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
if (rdata.status) waf();
});
}
//取规则文件
function GetWafFile(name) {
OnlineEditFile(0, '/www/server/panel/vhost/wafconf/' + name);
}
//规则编辑
function gzEdit() {
layer.open({
type: 1,
area: '360px',
title: lan.soft.waf_edit,
closeBtn: 2,
shift: 0,
content: "Cookie \
POST \
URL \
User-Agent \
Args \
" + lan.soft.waf_url_white + " \
" + lan.soft.waf_index + " \
" + lan.soft.waf_cloud + "
"
});
}
//更新WAF规则
function updateWaf() {
var loadT = layer.msg(lan.soft.waf_update, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/waf?action=updateWaf', '', function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
});
}
//设置WAF配置值
function SetWafConfig(name, value) {
if (name == 'CCrate') {
var CCrate_1 = $("#CCrate_1").val();
var CCrate_2 = $("#CCrate_2").val();
if (CCrate_1 < 1 || CCrate_1 > 3000 || CCrate_2 < 1 || CCrate_2 > 1800) {
layer.msg(lan.soft.waf_cc_err, { icon: 5 });
return;
}
value = CCrate_1 + '/' + CCrate_2;
}
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/waf?action=SetConfigString', 'name=' + name + '&value=' + value, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
if (rdata.status) waf();
});
}
//删除WAF指定值
function deleteWafKey(name, value) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/waf?action=SetConfigList&act=del', 'name=' + name + '&value=' + value, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
if (rdata.status) waf();
if (name == 'black_fileExt') upLimit();
});
}
//删除WAF指定值
function addWafKey(name) {
var value = $('#' + name + '_val').val();
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/waf?action=SetConfigList&act=add', 'name=' + name + '&value=' + value, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
if (rdata.status) waf();
if (name == 'black_fileExt') upLimit();
});
}
//查看Nginx负载状态
function GetNginxStatus() {
$.post('/ajax?action=GetNginxStatus', '', function(rdata) {
var con = "\
" + lan.bt.nginx_active + " " + rdata.active + " \
" + lan.bt.nginx_accepts + " " + rdata.accepts + " \
" + lan.bt.nginx_handled + " " + rdata.handled + " \
" + lan.bt.nginx_requests + " " + rdata.requests + " \
" + lan.bt.nginx_reading + " " + rdata.Reading + " \
" + lan.bt.nginx_writing + " " + rdata.Writing + " \
" + lan.bt.nginx_waiting + " " + rdata.Waiting + " \
";
$(".soft-man-con").html(con);
})
}
//查看PHP负载状态
function GetPHPStatus(version) {
$.post('/ajax?action=GetPHPStatus', 'version=' + version, function(rdata) {
var con = "\
" + lan.bt.php_pool + " " + rdata.pool + " \
" + lan.bt.php_manager + " " + ((rdata['process manager'] == 'dynamic') ? lan.bt.dynamic : lan.bt.static) + " \
" + lan.bt.php_start + " " + rdata['start time'] + " \
" + lan.bt.php_accepted + " " + rdata['accepted conn'] + " \
" + lan.bt.php_queue + " " + rdata['listen queue'] + " \
" + lan.bt.php_max_queue + " " + rdata['max listen queue'] + " \
" + lan.bt.php_len_queue + " " + rdata['listen queue len'] + " \
" + lan.bt.php_idle + " " + rdata['idle processes'] + " \
" + lan.bt.php_active + " " + rdata['active processes'] + " \
" + lan.bt.php_total + " " + rdata['total processes'] + " \
" + lan.bt.php_max_active + " " + rdata['max active processes'] + " \
" + lan.bt.php_max_children + " " + rdata['max children reached'] + " \
" + lan.bt.php_slow + " " + rdata['slow requests'] + " \
";
$(".soft-man-con").html(con);
$(".GetPHPStatus td,.GetPHPStatus th").css("padding", "7px");
})
}
//软件管理窗口
function SoftMan(name, version) {
switch (name) {
case 'nginx':
nginxSoftMain(name, version);
return;
break;
case 'apache':
nginxSoftMain(name, version);
return;
break;
case 'mysql':
name = 'mysqld';
break;
}
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/system?action=GetConcifInfo', function(rdata) {
layer.close(loadT);
var nameA = rdata[name.replace('mysqld', 'mysql')];
var menu = '' + lan.soft.config_edit + '
' + lan.soft.nginx_version + '
';
if (name == "phpmyadmin") {
menu = '' + lan.soft.php_version + '
' + lan.soft.safe + '
';
}
if (version == undefined || version == '') {
var menu = '' + lan.soft.config_edit + '
';
}
if (name == 'mysqld') {
menu += '' + lan.soft.save_path + '
' + lan.site.port + '
' + lan.soft.status + '
' + lan.soft.php_main7 + '
' + lan.soft.log + '
慢日志
';
} else if (name == 'memcached') {
menu += '负载状态
性能调整
';
} else if (name == 'redis') {
menu += '负载状态
';
} else if (name == 'tomcat') {
menu += '运行日志
';
}
layer.open({
type: 1,
area: '640px',
title: name + lan.soft.admin,
closeBtn: 2,
shift: 0,
content: ''
});
service(name, nameA.status);
$(".bt-w-menu p").click(function() {
//var i = $(this).index();
$(this).addClass("bgw").siblings().removeClass("bgw");
});
});
}
//redis负载状态
function RedisStatus() {
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.get('/ajax?action=GetRedisStatus', function(rdata) {
layer.close(loadT);
hit = (parseInt(rdata.keyspace_hits) / (parseInt(rdata.keyspace_hits) + parseInt(rdata.keyspace_misses)) * 100).toFixed(2);
var Con = '\
\
字段 当前值 说明 \
\
uptime_in_days ' + rdata.uptime_in_days + ' 已运行天数 \
tcp_port ' + rdata.tcp_port + ' 当前监听端口 \
connected_clients ' + rdata.connected_clients + ' 连接的客户端数量 \
used_memory_rss ' + ToSize(rdata.used_memory_rss) + ' Redis当前占用的系统内存总量 \
used_memory ' + ToSize(rdata.used_memory) + ' Redis当前已分配的内存总量 \
used_memory_peak ' + ToSize(rdata.used_memory_peak) + ' Redis历史分配内存的峰值 \
mem_fragmentation_ratio ' + rdata.mem_fragmentation_ratio + '% 内存碎片比率 \
total_connections_received ' + rdata.total_connections_received + ' 运行以来连接过的客户端的总数量 \
total_commands_processed ' + rdata.total_commands_processed + ' 运行以来执行过的命令的总数量 \
instantaneous_ops_per_sec ' + rdata.instantaneous_ops_per_sec + ' 服务器每秒钟执行的命令数量 \
keyspace_hits ' + rdata.keyspace_hits + ' 查找数据库键成功的次数 \
keyspace_misses ' + rdata.keyspace_misses + ' 查找数据库键失败的次数 \
hit ' + hit + '% 查找数据库键命中率 \
latest_fork_usec ' + rdata.latest_fork_usec + ' 最近一次 fork() 操作耗费的微秒数 \
\
'
$(".soft-man-con").html(Con);
});
}
//memcached负载状态
function MemcachedStatus() {
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.get('/ajax?action=GetMemcachedStatus', function(rdata) {
layer.close(loadT);
var Con = '\
\
字段 当前值 说明 \
\
BindIP ' + rdata.bind + ' 监听IP \
PORT ' + rdata.port + ' 监听端口 \
CACHESIZE ' + rdata.cachesize + ' MB 最大缓存容量 \
MAXCONN ' + rdata.maxconn + ' 最大连接数限制 \
curr_connections ' + rdata.curr_connections + ' 当前打开的连接数 \
cmd_get ' + rdata.cmd_get + ' GET请求数 \
get_hits ' + rdata.get_hits + ' GET命中次数 \
get_misses ' + rdata.get_misses + ' GET失败次数 \
hit ' + rdata.hit.toFixed(2) + '% GET命中率 \
curr_items ' + rdata.curr_items + ' 当前被缓存的数据行数 \
evictions ' + rdata.evictions + ' 因内存不足而被清理的缓存行数 \
bytes ' + ToSize(rdata.bytes) + ' 当前已使用内存 \
bytes_read ' + ToSize(rdata.bytes_read) + ' 请求总大小 \
bytes_written ' + ToSize(rdata.bytes_written) + ' 发送总大小 \
\
'
$(".soft-man-con").html(Con);
});
}
//memcached性能调整
function MemcachedCache() {
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.get('/ajax?action=GetMemcachedStatus', function(rdata) {
layer.close(loadT);
var memCon = ''
$(".soft-man-con").html(memCon);
});
}
//memcached提交配置
function SetMemcachedConf() {
var data = {
ip: $("input[name='membind']").val(),
port: $("input[name='memport']").val(),
cachesize: $("input[name='memcachesize']").val(),
maxconn: $("input[name='memmaxconn']").val()
}
if (data.ip.split('.').length < 4) {
layer.msg('IP地址格式不正确!', { icon: 2 });
return;
}
if (data.port < 1 || data.port > 65535) {
layer.msg('端口范围不正确!', { icon: 2 });
return;
}
if (data.cachesize < 8) {
layer.msg('缓存值过小', { icon: 2 });
return;
}
if (data.maxconn < 4) {
layer.msg('最大连接数过小', { icon: 2 });
return;
}
var loadT = layer.msg('正在保存...', { icon: 16, time: 0, shade: 0.3 });
$.post('/ajax?action=SetMemcachedCache', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//数据库存储信置
function changeMySQLDataPath(act) {
if (act != undefined) {
layer.confirm(lan.soft.mysql_to_msg, { closeBtn: 2, icon: 3 }, function() {
var datadir = $("#datadir").val();
var data = 'datadir=' + datadir;
var loadT = layer.msg(lan.soft.mysql_to_msg1, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/database?action=SetDataDir', data, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
});
});
return;
}
$.post('/database?action=GetMySQLInfo', '', function(rdata) {
var LimitCon = '\
\
' + lan.soft.mysql_to + ' \
';
$(".soft-man-con").html(LimitCon);
});
}
//MySQL-Slow日志
function mysqlSlowLog() {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/database?action=GetSlowLogs', {}, function(logs) {
layer.close(loadT);
if (logs.status !== true) {
logs.msg = '';
}
if (logs.msg == '') logs.msg = '当前没有慢日志.';
var phpCon = '';
$(".soft-man-con").html(phpCon);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
}
//数据库日志
function mysqlLog(act) {
//获取二进制日志相关信息
$.post('/database?action=BinLog', "status=1", function(rdata) {
var limitCon = '\
' + lan.soft.mysql_log_bin + ' ' + ToSize(rdata.msg) + ' \
' + (rdata.status ? lan.soft.off : lan.soft.on) + ' \
' + lan.soft.mysql_log_err + '' + lan.soft.mysql_log_close + '
\
\
'
$(".soft-man-con").html(limitCon);
//获取错误日志
$.post('/database?action=GetErrorLog', "", function(error_body) {
if (error_body.status === false) {
layer.msg(error_body.msg, { icon: 5 });
error_body = lan.soft.mysql_log_ps1;
}
if (error_body == "") error_body = lan.soft.mysql_log_ps1;
$("#error_log").text(error_body);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
});
}
//取数据库运行状态
function mysqlRunStatus() {
$.post('/database?action=GetRunStatus', "", function(rdata) {
var cache_size = ((parseInt(rdata.Qcache_hits) / (parseInt(rdata.Qcache_hits) + parseInt(rdata.Qcache_inserts))) * 100).toFixed(2) + '%';
if (cache_size == 'NaN%') cache_size = 'OFF';
var Con = '\
\
' + lan.soft.mysql_status_title1 + ' ' + getLocalTime(rdata.Run) + ' ' + lan.soft.mysql_status_title5 + ' ' + parseInt(rdata.Questions / rdata.Uptime) + ' \
' + lan.soft.mysql_status_title2 + ' ' + rdata.Connections + ' ' + lan.soft.mysql_status_title6 + ' ' + parseInt((parseInt(rdata.Com_commit) + parseInt(rdata.Com_rollback)) / rdata.Uptime) + ' \
' + lan.soft.mysql_status_title3 + ' ' + ToSize(rdata.Bytes_sent) + ' ' + lan.soft.mysql_status_title7 + ' ' + rdata.File + ' \
' + lan.soft.mysql_status_title4 + ' ' + ToSize(rdata.Bytes_received) + ' ' + lan.soft.mysql_status_title8 + ' ' + rdata.Position + ' \
\
\
\
\
\
' + lan.soft.mysql_status_title9 + ' ' + rdata.Threads_running + '/' + rdata.Max_used_connections + ' ' + lan.soft.mysql_status_ps1 + ' \
' + lan.soft.mysql_status_title10 + ' ' + ((1 - rdata.Threads_created / rdata.Connections) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps2 + ' \
' + lan.soft.mysql_status_title11 + ' ' + ((1 - rdata.Key_reads / rdata.Key_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps3 + ' \
' + lan.soft.mysql_status_title12 + ' ' + ((1 - rdata.Innodb_buffer_pool_reads / rdata.Innodb_buffer_pool_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps4 + ' \
' + lan.soft.mysql_status_title13 + ' ' + cache_size + ' ' + lan.soft.mysql_status_ps5 + ' \
' + lan.soft.mysql_status_title14 + ' ' + ((rdata.Created_tmp_disk_tables / rdata.Created_tmp_tables) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps6 + ' \
' + lan.soft.mysql_status_title15 + ' ' + rdata.Open_tables + ' ' + lan.soft.mysql_status_ps7 + ' \
' + lan.soft.mysql_status_title16 + ' ' + rdata.Select_full_join + ' ' + lan.soft.mysql_status_ps8 + ' \
' + lan.soft.mysql_status_title17 + ' ' + rdata.Select_range_check + ' ' + lan.soft.mysql_status_ps9 + ' \
' + lan.soft.mysql_status_title18 + ' ' + rdata.Sort_merge_passes + ' ' + lan.soft.mysql_status_ps10 + ' \
' + lan.soft.mysql_status_title19 + ' ' + rdata.Table_locks_waited + ' ' + lan.soft.mysql_status_ps11 + ' \
\
'
$(".soft-man-con").html(Con);
});
}
//数据库配置状态
function mysqlStatus() {
//获取MySQL配置
$.post('/database?action=GetDbStatus', "", function(rdata) {
var key_buffer_size = ToSizeM(rdata.mem.key_buffer_size)
var query_cache_size = ToSizeM(rdata.mem.query_cache_size)
var tmp_table_size = ToSizeM(rdata.mem.tmp_table_size)
var innodb_buffer_pool_size = ToSizeM(rdata.mem.innodb_buffer_pool_size)
var innodb_additional_mem_pool_size = ToSizeM(rdata.mem.innodb_additional_mem_pool_size)
var innodb_log_buffer_size = ToSizeM(rdata.mem.innodb_log_buffer_size)
var sort_buffer_size = ToSizeM(rdata.mem.sort_buffer_size)
var read_buffer_size = ToSizeM(rdata.mem.read_buffer_size)
var read_rnd_buffer_size = ToSizeM(rdata.mem.read_rnd_buffer_size)
var join_buffer_size = ToSizeM(rdata.mem.join_buffer_size)
var thread_stack = ToSizeM(rdata.mem.thread_stack)
var binlog_cache_size = ToSizeM(rdata.mem.binlog_cache_size)
var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size
var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size
var memSize = a + rdata.mem.max_connections * b
var memCon = '\
' + lan.soft.mysql_set_msg + ' \
\
' + lan.soft.mysql_set_select + ' \
1-2GB \
2-4GB \
4-8GB \
8-16GB \
16-32GB \
\
' + lan.soft.mysql_set_maxmem + ': MB\
\
key_buffer_size MB, ' + lan.soft.mysql_set_key_buffer_size + '
\
query_cache_size MB, ' + lan.soft.mysql_set_query_cache_size + '
\
tmp_table_size MB, ' + lan.soft.mysql_set_tmp_table_size + '
\
innodb_buffer_pool_size MB, ' + lan.soft.mysql_set_innodb_buffer_pool_size + '
\
innodb_log_buffer_size MB, ' + lan.soft.mysql_set_innodb_log_buffer_size + '
\
innodb_additional_mem_pool_size MB
\
sort_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_sort_buffer_size + '
\
read_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_buffer_size + '
\
read_rnd_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_rnd_buffer_size + '
\
join_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_join_buffer_size + '
\
thread_stack KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_thread_stack + '
\
binlog_cache_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_binlog_cache_size + '
\
thread_cache_size ' + lan.soft.mysql_set_thread_cache_size + '
\
table_open_cache ' + lan.soft.mysql_set_table_open_cache + '
\
max_connections ' + lan.soft.mysql_set_max_connections + '
\
' + lan.soft.mysql_set_restart + ' ' + lan.public.save + '
\
'
$(".soft-man-con").html(memCon);
$(".conf_p input[name*='size'],.conf_p input[name='max_connections'],.conf_p input[name='thread_stack']").change(function() {
ComMySqlMem();
});
$(".conf_p select[name='mysql_set']").change(function() {
MySQLMemOpt($(this).val());
ComMySqlMem();
});
});
}
//重启MySQL
function ReBootMySqld() {
var loadT = layer.msg(lan.get('service_the', [lan.bt.restart, 'MySQLd']), { icon: 16, time: 0, shade: 0.3 });
$.post('/system?action=ServiceAdmin', 'name=mysqld&type=restart', function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//计算MySQL内存开销
function ComMySqlMem() {
var key_buffer_size = parseInt($("input[name='key_buffer_size']").val());
var query_cache_size = parseInt($("input[name='query_cache_size']").val());
var tmp_table_size = parseInt($("input[name='tmp_table_size']").val());
var innodb_buffer_pool_size = parseInt($("input[name='innodb_buffer_pool_size']").val());
var innodb_additional_mem_pool_size = parseInt($("input[name='innodb_additional_mem_pool_size']").val());
var innodb_log_buffer_size = parseInt($("input[name='innodb_log_buffer_size']").val());
var sort_buffer_size = $("input[name='sort_buffer_size']").val() / 1024;
var read_buffer_size = $("input[name='read_buffer_size']").val() / 1024;
var read_rnd_buffer_size = $("input[name='read_rnd_buffer_size']").val() / 1024;
var join_buffer_size = $("input[name='join_buffer_size']").val() / 1024;
var thread_stack = $("input[name='thread_stack']").val() / 1024;
var binlog_cache_size = $("input[name='binlog_cache_size']").val() / 1024;
var max_connections = $("input[name='max_connections']").val();
var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size
var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size
var memSize = a + max_connections * b
$("input[name='memSize']").val(memSize.toFixed(2));
}
//MySQL内存优化方案
function MySQLMemOpt(opt) {
var query_size = parseInt($("input[name='query_cache_size']").val());
switch (opt) {
case '1':
$("input[name='key_buffer_size']").val(128);
if (query_size) $("input[name='query_cache_size']").val(64);
$("input[name='tmp_table_size']").val(64);
$("input[name='innodb_buffer_pool_size']").val(256);
$("input[name='sort_buffer_size']").val(768);
$("input[name='read_buffer_size']").val(768);
$("input[name='read_rnd_buffer_size']").val(512);
$("input[name='join_buffer_size']").val(1024);
$("input[name='thread_stack']").val(256);
$("input[name='binlog_cache_size']").val(64);
$("input[name='thread_cache_size']").val(64);
$("input[name='table_open_cache']").val(128);
$("input[name='max_connections']").val(100);
break;
case '2':
$("input[name='key_buffer_size']").val(256);
if (query_size) $("input[name='query_cache_size']").val(128);
$("input[name='tmp_table_size']").val(384);
$("input[name='innodb_buffer_pool_size']").val(384);
$("input[name='sort_buffer_size']").val(768);
$("input[name='read_buffer_size']").val(768);
$("input[name='read_rnd_buffer_size']").val(512);
$("input[name='join_buffer_size']").val(2048);
$("input[name='thread_stack']").val(256);
$("input[name='binlog_cache_size']").val(64);
$("input[name='thread_cache_size']").val(96);
$("input[name='table_open_cache']").val(192);
$("input[name='max_connections']").val(200);
break;
case '3':
$("input[name='key_buffer_size']").val(384);
if (query_size) $("input[name='query_cache_size']").val(192);
$("input[name='tmp_table_size']").val(512);
$("input[name='innodb_buffer_pool_size']").val(512);
$("input[name='sort_buffer_size']").val(1024);
$("input[name='read_buffer_size']").val(1024);
$("input[name='read_rnd_buffer_size']").val(768);
$("input[name='join_buffer_size']").val(2048);
$("input[name='thread_stack']").val(256);
$("input[name='binlog_cache_size']").val(128);
$("input[name='thread_cache_size']").val(128);
$("input[name='table_open_cache']").val(384);
$("input[name='max_connections']").val(300);
break;
case '4':
$("input[name='key_buffer_size']").val(512);
if (query_size) $("input[name='query_cache_size']").val(256);
$("input[name='tmp_table_size']").val(1024);
$("input[name='innodb_buffer_pool_size']").val(1024);
$("input[name='sort_buffer_size']").val(2048);
$("input[name='read_buffer_size']").val(2048);
$("input[name='read_rnd_buffer_size']").val(1024);
$("input[name='join_buffer_size']").val(4096);
$("input[name='thread_stack']").val(384);
$("input[name='binlog_cache_size']").val(192);
$("input[name='thread_cache_size']").val(192);
$("input[name='table_open_cache']").val(1024);
$("input[name='max_connections']").val(400);
break;
case '5':
$("input[name='key_buffer_size']").val(1024);
if (query_size) $("input[name='query_cache_size']").val(384);
$("input[name='tmp_table_size']").val(2048);
$("input[name='innodb_buffer_pool_size']").val(4096);
$("input[name='sort_buffer_size']").val(4096);
$("input[name='read_buffer_size']").val(4096);
$("input[name='read_rnd_buffer_size']").val(2048);
$("input[name='join_buffer_size']").val(8192);
$("input[name='thread_stack']").val(512);
$("input[name='binlog_cache_size']").val(256);
$("input[name='thread_cache_size']").val(256);
$("input[name='table_open_cache']").val(2048);
$("input[name='max_connections']").val(500);
break;
}
}
//设置MySQL配置参数
function SetMySQLConf() {
$.post('/system?action=GetMemInfo', '', function(memInfo) {
//var memSize = memInfo['memTotal'];
//var setSize = parseInt($("input[name='memSize']").val());
//if(memSize < setSize){
// var msg = lan.soft.mysql_set_err.replace('{1}',memSize).replace('{2}',setSize);
// layer.msg(msg,{icon:2,time:5000});
// return;
//}
var query_cache_size = parseInt($("input[name='query_cache_size']").val());
var query_cache_type = 0;
if (query_cache_size > 0) {
query_cache_type = 1;
}
var data = {
key_buffer_size: parseInt($("input[name='key_buffer_size']").val()),
query_cache_size: query_cache_size,
query_cache_type: query_cache_type,
tmp_table_size: parseInt($("input[name='tmp_table_size']").val()),
max_heap_table_size: parseInt($("input[name='tmp_table_size']").val()),
innodb_buffer_pool_size: parseInt($("input[name='innodb_buffer_pool_size']").val()),
innodb_log_buffer_size: parseInt($("input[name='innodb_log_buffer_size']").val()),
sort_buffer_size: parseInt($("input[name='sort_buffer_size']").val()),
read_buffer_size: parseInt($("input[name='read_buffer_size']").val()),
read_rnd_buffer_size: parseInt($("input[name='read_rnd_buffer_size']").val()),
join_buffer_size: parseInt($("input[name='join_buffer_size']").val()),
thread_stack: parseInt($("input[name='thread_stack']").val()),
binlog_cache_size: parseInt($("input[name='binlog_cache_size']").val()),
thread_cache_size: parseInt($("input[name='thread_cache_size']").val()),
table_open_cache: parseInt($("input[name='table_open_cache']").val()),
max_connections: parseInt($("input[name='max_connections']").val())
};
$.post('/database?action=SetDbConf', data, function(rdata) {
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
})
}
//转换单们到MB
function ToSizeM(byteLen) {
var a = parseInt(byteLen) / 1024 / 1024;
return a || 0;
}
//设置二进制日志
function SetBinLog() {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3 });
$.post('/database?action=BinLog', "", function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
mysqlLog();
});
}
//清空日志
function closeMySqlLog() {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3 });
$.post('/database?action=GetErrorLog', "close=1", function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
mysqlLog();
});
}
//数据库端口
function changeMySQLPort(act) {
if (act != undefined) {
layer.confirm(lan.soft.mysql_port_title, { closeBtn: 2, icon: 3 }, function() {
var port = $("#dataport").val();
var data = 'port=' + port;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/database?action=SetMySQLPort', data, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
});
});
return;
}
$.post('/database?action=GetMySQLInfo', '', function(rdata) {
var LimitCon = '\
\
' + lan.public.edit + ' \
';
$(".soft-man-con").html(LimitCon);
});
}
//软件切换版本
function softChangeVer(name, version) {
if (name == "mysqld") name = "mysql";
var veropt = version.split("|");
var SelectVersion = '';
for (var i = 0; i < veropt.length; i++) {
SelectVersion += '' + name + ' ' + veropt[i] + ' ';
}
var body = "" + lan.soft.select_version + " ";
body += SelectVersion + ' ' + lan.soft.version_to + '
';
if (name == 'mysql') {
body += ""
}
$(".soft-man-con").html(body);
$(".btn-success").click(function() {
var ver = $("#selectVer").val();
oneInstall(name, ver.split(" ")[1]);
});
selectChange();
}
//phpmyadmin切换php版本
function phpVer(name, version) {
$.post('/site?action=GetPHPVersion', function(rdata) {
var body = "" + lan.soft.php_version + " ";
var optionSelect = '';
for (var i = 0; i < rdata.length; i++) {
optionSelect = rdata[i].version == version ? 'selected' : '';
body += "" + rdata[i].name + " "
}
body += ' ' + lan.public.save + '
';
$(".soft-man-con").html(body);
})
}
function phpVerChange(type, msg) {
var data = type + '=' + $("#" + msg).val();
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
layer.closeAll();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
if (rdata.status) {
setTimeout(function() {
window.location.reload();
}, 3000);
}
})
}
//phpmyadmin安全设置
function safeConf(name, port, auth) {
var con = '\
' + lan.soft.pma_port + ' \
\
' + lan.public.save + ' \
\
\
' + lan.soft.pma_pass + ' \
\
\
\
\
\
' + lan.soft.pma_user + '
\
' + lan.soft.pma_pass1 + '
\
' + lan.soft.pma_pass2 + '
\
' + lan.public.save + '
\
\
';
$(".soft-man-con").html(con);
if (auth) {
$(".user_pw").show();
}
}
//修改phpmyadmin端口
function phpmyadminport() {
var pmport = $("#pmport").val();
if (pmport < 80 || pmport > 65535) {
layer.msg(lan.firewall.port_err, { icon: 2 });
return;
}
var data = 'port=' + pmport;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//phpmyadmin二级密码
function phpmyadminSafe() {
var stat = $("#phpmyadminsafe").prop("checked");
if (stat) {
$(".user_pw").hide();
phpmyadmin('close');
} else {
$(".user_pw").show();
}
}
//设置phpmyadmin二级密码
function phpmyadmin(msg) {
type = 'password';
if (msg == 'close') {
password_1 = msg;
username = msg;
layer.confirm(lan.soft.pma_pass_close, { closeBtn: 2, icon: 3 }, function() {
var data = type + '=' + msg + '&siteName=phpmyadmin';
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
});
return;
} else {
username = $("#username_get").val()
password_1 = $("#password_get_1").val()
password_2 = $("#password_get_2").val()
if (username.length < 1 || password_1.length < 1) {
layer.msg(lan.soft.pma_pass_empty, { icon: 2 });
return;
}
if (password_1 != password_2) {
layer.msg(lan.bt.pass_err_re, { icon: 2 });
return;
}
}
msg = password_1 + '&username=' + username + '&siteName=phpmyadmin';
var data = type + '=' + msg;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//首页软件列表
// function indexsoft() {
// var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] });
// $.post('/plugin?action=getPluginList', 'display=1', function(rdata) {
// layer.close(loadT);
// var con = '';
// for (var i = 0; i < rdata['data'].length - 1; i++) {
// var len = rdata.data[i].versions.length;
// var version_info = '';
// for (var j = 0; j < len; j++) {
// if (rdata.data[i].versions[j].status) continue;
// version_info += rdata.data[i].versions[j].version + '|';
// }
// if (version_info != '') {
// version_info = version_info.substring(0, version_info.length - 1);
// }
// if (rdata.data[i].display) {
// var isDisplay = false;
// if (rdata.data[i].name != 'php') {
// for (var n = 0; n < len; n++) {
// if (rdata.data[i].versions[n].status == true) {
// isDisplay = true;
// var version = rdata.data[i].versions[n].version;
// if (rdata.data[i].versions[n].run == true) {
// state = ' '
// } else {
// state = ' '
// }
// }
// }
// if (isDisplay) {
// var clickName = 'SoftMan';
// if (rdata.data[i].tip == 'lib') {
// clickName = 'PluginMan';
// version_info = rdata.data[i].title;
// }
// con += '\
//
\
//
\
//
\
//
' + rdata.data[i].title + ' ' + version + state + '
\
//
\
//
'
// }
// } else {
// for (var n = 0; n < len; n++) {
// if (rdata.data[i].versions[n].status == true) {
// var version = rdata.data[i].versions[n].version;
// if (rdata.data[i].versions[n].run == true) {
// state = ' '
// } else {
// state = ' '
// }
// }
// if (rdata.data[i].versions[n].display == true) {
// con += '\
//
\
//
\
//
\
//
' + rdata.data[i].title + ' ' + rdata.data[i].versions[n].version + state + '
\
//
\
//
'
// }
// }
// }
// }
// }
// $("#indexsoft").html(con);
// //软件位置移动
// var softboxlen = $("#indexsoft > div").length;
// var softboxsum = 12;
// var softboxcon = '';
// var softboxn = softboxlen;
// if (softboxlen <= softboxsum) {
// for (var i = 0; i < softboxsum - softboxlen; i++) {
// softboxn += 1000;
// softboxcon += '
'
// }
// $("#indexsoft").append(softboxcon);
// }
// $("#indexsoft").dragsort({ dragSelector: ".spanmove", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "
" });
// function saveOrder() {
// var data = $("#indexsoft > div").map(function() { return $(this).attr("data-id"); }).get();
// var ssort = data.join("|");
// $("input[name=list1SortOrder]").val(ssort);
// $.post("/plugin?action=savePluginSort", 'ssort=' + ssort, function(rdata) {});
// };
// });
// }
//插件设置菜单
function PluginMan(name, title) {
loadT = layer.msg(lan.soft.menu_temp, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/plugin?action=getConfigHtml&name=' + name, function(rhtml) {
layer.close(loadT);
if (rhtml.status === false) {
if (name == "phpguard") {
layer.msg(lan.soft.menu_phpsafe, { icon: 1 })
} else {
layer.msg(rhtml.msg, { icon: 2 });
}
return;
}
layer.open({
type: 1,
shift: 5,
offset: '20%',
closeBtn: 2,
area: '700px',
title: '' + title,
content: rhtml
});
rcode = rhtml.split('', '');
setTimeout(function() {
if (!!(window.attachEvent && !window.opera)) {
execScript(rcode);
} else {
window.eval(rcode);
}
}, 200)
});
}
//设置插件
function SetPluginConfig(name, param, def) {
if (def == undefined) def = 'SetConfig';
loadT = layer.msg(lan.config.config_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/plugin?action=a&name=' + name + '&s=' + def, param, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//取软件列表
function GetSList(isdisplay) {
if (isdisplay !== true) {
var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] })
}
if (!isdisplay || isdisplay === true)
isdisplay = getCookie('p' + getCookie('softType'));
if (isdisplay == true || isdisplay == 'true') isdisplay = 1;
var search = $("#SearchValue").val();
if (search != '') {
search = '&search=' + search;
}
var type = '';
var istype = getCookie('softType');
if (istype == 'undefined' || istype == 'null' || !istype) {
istype = '0';
}
type = '&type=' + istype;
var page = '';
if (isdisplay) {
page = '&p=' + isdisplay;
setCookie('p' + getCookie('softType'), isdisplay);
}
var condition = (search + type + page).slice(1);
$.post('/plugins/list?' + condition, '', function(rdata) {
layer.close(loadT);
var tBody = '';
var sBody = '';
var pBody = '';
for (var i = 0; i < rdata.type.length; i++) {
var c = '';
if (istype == rdata.type[i].type) {
c = 'class="on"';
}
tBody += '' + rdata.type[i].title + ' ';
}
$(".softtype").html(tBody);
$("#softPage").html(rdata.list);
$("#softPage .Pcount").css({ "position": "absolute", "left": "0" })
$(".task").text(rdata.data[rdata.length - 1]);
for (var i = 0; i < rdata.data.length; i++) {
var len = rdata.data[i].versions.length;
var version_info = '';
var version = '';
var softPath = '';
var titleClick = '';
var state = '';
var indexshow = '';
var checked = '';
checked = rdata.data[i].display ? 'checked' : '';
if (typeof rdata.data[i].versions == "string"){
version_info += rdata.data[i].versions + '|';
} else {
for (var j = 0; j < len; j++) {
version_info += rdata.data[i].versions[j] + '|';
}
}
if (version_info != '') {
version_info = version_info.substring(0, version_info.length - 1);
}
var handle = '' + lan.soft.install + ' ';
var isSetup = false;
if (rdata.data[i].name != 'php') {
for (var n = 0; n < len; n++) {
if (rdata.data[i].versions[n].status == true) {
isSetup = true;
if (rdata.data[i].tip == 'lib') {
var mupdate = (rdata.data[i].versions[n].no == rdata.data[i].versions[n].version) ? '' : '更新 | ';
handle = mupdate + '' + lan.soft.setup + ' | ' + lan.soft.uninstall + ' ';
titleClick = 'onclick="PluginMan(\'' + rdata.data[i].name + '\',\'' + rdata.data[i].title + '\')" style="cursor:pointer"';
} else {
var mupdate = (rdata.data[i].versions[n].no == rdata.data[i].update[n]) ? '' : '更新 | ';
if (rdata.data[i].versions[n].no == '') mupdate = '';
handle = mupdate + '' + lan.soft.setup + ' | ' + lan.soft.uninstall + ' ';
titleClick = 'onclick="SoftMan(\'' + rdata.data[i].name + '\',\'' + version_info + '\')" style="cursor:pointer"';
}
version = rdata.data[i].versions[n].version;
softPath = ' ';
indexshow = '
';
if (rdata.data[i].versions[n].run == true) {
state = ' '
} else {
state = ' '
}
}
var isTask = rdata.data[i].versions[n].task;
if (isTask == '-1') {
handle = '' + lan.soft.the_install + ' '
} else if (isTask == '0') {
handle = '' + lan.soft.sleep_install + ' '
}
}
sBody += '' +
' ' + rdata.data[i].title + ' ' + version + ' ' +
'' + rdata.data[i].ps + ' ' +
'' + softPath + ' ' +
'' + state + ' ' +
'' + indexshow + ' ' +
'' + handle + ' ' +
' '
} else {
var pnum = 0;
for (var n = 0; n < len; n++) {
if (rdata.data[i].versions[n].status == true) {
checked = rdata.data[i].versions[n]['display'] ? "checked" : "";
var mupdate = (rdata.data[i].versions[n].no == rdata.data[i].update[n]) ? '' : '更新 | ';
handle = mupdate + '' + lan.soft.setup + ' | ' + lan.soft.uninstall + ' ';
softPath = ' ';
titleClick = 'onclick="phpSoftMain(\'' + rdata.data[i].versions[n].version + '\',' + n + ')" style="cursor:pointer"';
indexshow = '
';
if (rdata.data[i].versions[n].run == true) {
state = ' '
} else {
state = ' '
}
} else {
handle = '' + lan.soft.install + ' ';
softPath = '';
checked = '';
indexshow = '';
titleClick = '';
state = '';
}
var pps = rdata.data[i].ps;
if (rdata.data[i].apache == '2.2' && rdata.data[i].versions[n].fpm == true) {
pps += ", " + lan.soft.apache22 + " ";
}
if (rdata.data[i].apache == '2.2' && rdata.data[i].versions[n].fpm == false) pnum++;
if (rdata.data[i].apache != '2.2' && rdata.data[i].versions[n].fpm == false) {
pps += ", " + lan.soft.apache24 + " ";
}
var isTask = rdata.data[i].versions[n].task;
if (isTask == '-1') {
if (rdata.data[i].apache == '2.2') pnum++;
handle = '' + lan.soft.the_install + ' '
} else if (isTask == '0') {
if (rdata.data[i].apache == '2.2') pnum++;
handle = '' + lan.soft.sleep_install + ' '
}
pBody += '' +
' ' + rdata.data[i].title + '-' + rdata.data[i].versions[n].version + ' '
//+''+rdata.data[i].versions[n].no+' '
//+''+rdata.data[i].type+' '
+
'' + pps + ' ' +
'' + softPath + ' ' +
'' + state + ' ' +
'' + indexshow + ' ' +
'' + handle + ' ' +
' '
}
if (pnum > 0) {
setCookie('apacheVersion', '2.2');
setCookie('phpVersion', 1);
} else {
setCookie('apacheVersion', '');
setCookie('phpVersion', 0);
}
}
}
sBody += pBody;
$("#softList").html(sBody);
$(".menu-sub span").click(function() {
setCookie('softType', $(this).attr('typeid'));
$(this).addClass("on").siblings().removeClass("on");
GetSList();
})
})
}
//刷新状态
function FPStatus() {
$.get("/auth?action=flush_pay_status", function(res) {
layer.msg(res.msg, { icon: res.status ? "1" : "2" })
})
}
//更新
function SoftUpdate(name, version, update) {
var msg = "建议您在服务器负载闲时进行软件更新. ";
if (name == 'mysql') msg = "更新数据库有风险,建议在更新前,先备份您的数据库. 如果您的是云服务器,强烈建议您在更新前做一个快照. 建议您在服务器负载闲时进行软件更新. ";
SafeMessage('更新[' + name + ']', '更新过程可能会导致服务中断,您真的现在就将[' + name + ']更新到[' + update + ']吗?', function() {
var data = "name=" + name + "&version=" + version + "&type=0&upgrade=" + update;
var loadT = layer.msg('正在更新[' + name + '-' + version + '],请稍候...', { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/plugins/install', data, function(rdata) {
if (rdata.status) {
GetTaskCount();
layer.msg('已添加到任务列表,请稍候...', { icon: 1 });
} else {
layer.msg('更新失败!', { icon: 2 });
}
layer.close(loadT);
});
}, msg);
}
//独立安装
function oneInstall(name, version) {
var isError = false
if (name == 'pure') name += '-' + version.toLowerCase();
if (name == 'apache' || name == 'nginx') {
$.ajax({
url: '/ajax?action=GetInstalled',
type: 'get',
async: false,
success: function(rdata) {
if (rdata.webserver != name && rdata.webserver != false) {
layer.msg(lan.soft.err_install2, { icon: 2 })
isError = true;
return;
}
}
});
}
if (name == 'php') {
if (getCookie('apacheVersion') == '2.2' && getCookie('phpVersion') == 1) {
layer.msg(lan.soft.apache22_err, { icon: 5 });
return;
}
}
var optw = '';
if (name == 'mysql') {
optw = "" + lan.soft.mysql_f + " "
var sUrl = '/data?action=getData&table=databases';
$.ajax({
url: sUrl,
type: "GET",
async: false,
success: function(dataD) {
if (dataD.data.length > 0) {
layer.msg(lan.soft.mysql_d, { icon: 5, time: 5000 })
isError = true;;
}
}
});
}
if (isError) return;
var one = layer.open({
type: 1,
title: lan.soft.type_title,
area: '350px',
closeBtn: 2,
shadeClose: true,
content: ""
})
$('.fangshi input').click(function() {
$(this).attr('checked', 'checked').parent().siblings().find("input").removeAttr('checked');
});
$("#bi-btn").click(function() {
var type = $('.fangshi input').prop("checked") ? '1' : '0';
var data = "name=" + name + "&version=" + version + "&type=" + type;
var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=InstallSoft', data, function(rdata) {
layer.closeAll();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
GetSList();
})
});
$(".one-close").click(function() {
layer.close(one);
})
InstallTips();
fly("bi-btn");
}
function AddVersion(name, ver, type, obj, title) {
if (type == "lib") {
layer.confirm(lan.get('install_confirm', [title, ver]), { icon: 3, closeBtn: 2 }, function() {
$(obj).text(lan.soft.install_the);
var data = "name=" + name+"&version="+ver;
var loadT = layer.msg(lan.soft.the_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post("/plugins/install", data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
setTimeout(function() { GetSList() }, 2000)
});
});
return;
}
var titlename = name;
var veropt = ver.split("|");
var SelectVersion = '';
for (var i = 0; i < veropt.length; i++) {
SelectVersion += '' + name + ' ' + veropt[i] + ' ';
}
if (name == 'phpmyadmin' || name == 'nginx' || name == 'apache') {
var isError = false
$.ajax({
url: '/ajax?action=GetInstalled',
type: 'get',
async: false,
success: function(rdata) {
if (name == 'nginx') {
if (rdata.webserver != name.toLowerCase() && rdata.webserver != false) {
layer.msg(lan.soft.err_install1, { icon: 2 })
isError = true;
return;
}
}
if (name == 'apache') {
if (rdata.webserver != name.toLowerCase() && rdata.webserver != false) {
layer.msg(lan.soft.err_install2, { icon: 2 })
isError = true;
return;
}
}
if (name == 'phpmyadmin') {
if (rdata.php.length < 1) {
layer.msg(lan.soft.err_install3, { icon: 2 })
isError = true;
return;
}
if (!rdata.mysql.setup) {
layer.msg(lan.soft.err_install4, { icon: 2 })
isError = true;
return;
}
}
}
});
if (isError) return;
}
layer.open({
type: 1,
title: titlename + lan.soft.install_title,
area: '350px',
closeBtn: 2,
shadeClose: true,
content: ""
})
selectChange();
$('.fangshi input').click(function() {
$(this).attr('checked', 'checked').parent().siblings().find("input").removeAttr('checked');
});
$("#bi-btn").click(function() {
var info = $("#SelectVersion").val().toLowerCase();
var name = info.split(" ")[0];
var version = info.split(" ")[1];
var type = $('.fangshi input').prop("checked") ? '1' : '0';
var data = "name=" + name + "&version=" + version + "&type=" + type;
var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post("/plugins/install", data, function(rdata) {
layer.closeAll();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
GetSList();
});
});
InstallTips();
fly("bi-btn");
}
function selectChange() {
$("#SelectVersion,#selectVer").change(function() {
var info = $(this).val();
var name = info.split(" ")[0];
var version = info.split(" ")[1];
max = 64
msg = "64M"
if (name == 'mysql') {
memSize = getCookie('memSize');
switch (version) {
case '5.1':
max = 256;
msg = '256M';
break;
case '8.0':
max = 5200;
msg = '6GB';
break;
case '5.7':
max = 1500;
msg = '2GB';
break;
case '5.6':
max = 800;
msg = '1GB';
break;
case 'AliSQL':
max = 800;
msg = '1GB';
break;
case 'mariadb_10.0':
max = 800;
msg = '1GB';
break;
case 'mariadb_10.1':
max = 1500;
msg = '2GB';
break;
}
if (memSize < max) {
layer.msg(lan.bt.insatll_mem.replace('{1}', msg).replace('{2}', version), { icon: 5 });
}
}
});
}
//卸载软件
function UninstallVersion(name, version, title) {
var isError = false
if (name == 'mysql') {
var sUrl = '/data?action=getData&table=databases';
$.ajax({
url: sUrl,
type: "GET",
async: false,
success: function(dataD) {
if (dataD.data.length > 0) {
layer.msg(lan.soft.mysql_del_err + '强行卸载: curl http://h.bt.cn/mu.sh|bash
', { icon: 5, time: 8000 });
isError = true;;
}
}
});
}
if (isError) return;
layer.confirm(lan.soft.uninstall_confirm.replace('{1}', title).replace('{2}', version), { icon: 3, closeBtn: 2 }, function() {
var data = 'name=' + name + '&version=' + version;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/plugins?action=unInstall', data, function(rdata) {
layer.close(loadT)
GetSList();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
})
});
}
//获取插件列表
function GetLibList() {
var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] })
$.post('/ajax?action=GetLibList', '', function(rdata) {
layer.close(loadT)
var tBody = ''
for (var i = 0; i < rdata.length; i++) {
tBody += "\
" + rdata[i].name + " \
" + rdata[i].type + " \
" + rdata[i].ps + " \
-- \
" + rdata[i].status + " \
" + rdata[i].optstr + " \
"
}
$("#softList").append(tBody);
});
}
//设置插件
function SetLibConfig(name, action) {
if (action == 1) {
var access_key = $("input[name='access_key']").val();
var secret_key = $("input[name='secret_key']").val();
var bucket_name = $("input[name='bucket_name']").val();
if (access_key.length < 1 || secret_key.length < 1 || bucket_name.length < 1) {
layer.msg(lan.soft.from_err, { icon: 2 });
return;
}
var bucket_domain = $("input[name='bucket_domain']").val();
var data = 'name=' + name + '&access_key=' + access_key + '&secret_key=' + secret_key + '&bucket_name=' + bucket_name + '&bucket_domain=' + bucket_domain;
var loadT = layer.msg(lan.soft.lib_the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=SetQiniuAS', data, function(rdata) {
layer.close(loadT);
if (rdata.status) layer.closeAll();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
}).error(function() {
layer.close(loadT);
layer.msg(lan.public.error, { icon: 2 });
});
return;
}
if (name == 'beta') {
neice();
return;
}
$.post('/ajax?action=GetQiniuAS', 'name=' + name, function(rdata) {
var keyMsg = rdata.info.key.split('|');
var secretMsg = rdata.info.secret.split('|');
var bucketMsg = rdata.info.bucket.split('|');
var domainMsg = rdata.info.domain.split('|');
var body = ""
layer.open({
type: 1,
shift: 5,
closeBtn: 2,
area: '700px',
title: lan.soft.lib_config + rdata.info.name,
content: body
});
});
}
//安装插件
function InstallLib(name) {
layer.confirm(lan.soft.lib_insatll_confirm.replace('{1}', name), { title: lan.soft.lib_install, icon: 3, closeBtn: 2 }, function() {
var loadT = layer.msg(lan.soft.lib_install_the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=InstallLib', 'name=' + name, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
if (rdata.status) {
GetSList();
SetLibConfig(name);
}
});
});
}
//卸载插件
function UninstallLib(name) {
layer.confirm(lan.soft.lib_uninsatll_confirm.replace('{1}', name), { title: lan.soft.lib_uninstall, icon: 3, closeBtn: 2 }, function() {
var loadT = layer.msg(lan.soft.lib_uninstall_the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/ajax?action=UninstallLib', 'name=' + name, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
if (rdata.status) {
GetSList();
}
});
});
}
//首页显示
function toIndexDisplay(name, version) {
var status = $("#index_" + name).prop("checked") ? "0" : "1";
if (name == "php") {
var verinfo = version.replace(/\./, "");
status = $("#index_" + name + verinfo).prop("checked") ? "0" : "1";
}
var data = "name=" + name + "&status=" + status + "&version=" + version;
$.post("/plugins?action=setPluginStatus", data, function(rdata) {
if (rdata.status) {
layer.msg(rdata.msg, { icon: 1 })
}
})
}
//刷新缓存
function flush_cache() {
var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] })
$.post('/plugins?action=flush_cache', {}, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
$(function() {
if (window.document.location.pathname == '/soft') {
setInterval(function() { GetSList(true); }, 5000);
}
});