From 4893eaf58fe5b2f83a05f7f0c53e5093ae454578 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Mon, 26 Nov 2018 14:35:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/memcached/index.html | 4 +- plugins/memcached/js/{redis.js => mem.js} | 83 +- plugins/mysql/js/mysql.js | 441 +++++++ plugins/php/info.json | 2 +- plugins/php/install.sh | 9 +- plugins/php/js/php.js | 776 +++++++++--- plugins/phpmyadmin/js/phpmyadmin.js | 118 ++ plugins/score/index.py | 352 ++++++ plugins/score/score_main.py | 340 ----- plugins/score/testcpu | Bin 0 -> 9356 bytes static/js/soft.js | 1374 +-------------------- 11 files changed, 1612 insertions(+), 1887 deletions(-) rename plugins/memcached/js/{redis.js => mem.js} (62%) create mode 100755 plugins/mysql/js/mysql.js create mode 100755 plugins/phpmyadmin/js/phpmyadmin.js create mode 100755 plugins/score/index.py delete mode 100755 plugins/score/score_main.py create mode 100755 plugins/score/testcpu diff --git a/plugins/memcached/index.html b/plugins/memcached/index.html index be3a7fdbd..9d09301eb 100755 --- a/plugins/memcached/index.html +++ b/plugins/memcached/index.html @@ -3,7 +3,9 @@

服务

配置修改

+

切换版本

负载状态

+

性能调整

@@ -12,5 +14,5 @@
\ No newline at end of file diff --git a/plugins/memcached/js/redis.js b/plugins/memcached/js/mem.js similarity index 62% rename from plugins/memcached/js/redis.js rename to plugins/memcached/js/mem.js index d90e983ac..1ebbf98f0 100755 --- a/plugins/memcached/js/redis.js +++ b/plugins/memcached/js/mem.js @@ -175,4 +175,85 @@ function redisStatus() { $(".soft-man-con").html(Con); },'json'); } -//redis负载状态 end \ No newline at end of file +//redis负载状态 end + + +//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 = '
\ +

BindIP监听IP,请勿随意修改

\ +

PORT监听端口,一般无需修改

\ +

CACHESIZEMB,缓存大小,建议不要大于512M

\ +

MAXCONN最大连接数,建议不要大于40960

\ +
\ +
' + $(".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 }); + }); +} \ No newline at end of file diff --git a/plugins/mysql/js/mysql.js b/plugins/mysql/js/mysql.js new file mode 100755 index 000000000..1a30978f0 --- /dev/null +++ b/plugins/mysql/js/mysql.js @@ -0,0 +1,441 @@ +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 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 = '

\ + \ + \ +

'; + + $(".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 += ''; + } + + var body = "
" + lan.soft.select_version + "
'; + + if (name == 'mysql') { + body += "" + } + + $(".soft-man-con").html(body); + $(".btn-success").click(function() { + var ver = $("#selectVer").val(); + oneInstall(name, ver.split(" ")[1]); + }); + selectChange(); +} + + +//设置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 }); + }); + }) +} + + +//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 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)); +} + +//数据库存储信置 +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 = '

\ + \ + \ +

'; + $(".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) + '\ + \ +

' + lan.soft.mysql_log_err + '

\ + \ +

' + + $(".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_maxmem + ': MB\ +
\ +

key_buffer_sizeMB, ' + lan.soft.mysql_set_key_buffer_size + '

\ +

query_cache_sizeMB, ' + lan.soft.mysql_set_query_cache_size + '

\ +

tmp_table_sizeMB, ' + lan.soft.mysql_set_tmp_table_size + '

\ +

innodb_buffer_pool_sizeMB, ' + lan.soft.mysql_set_innodb_buffer_pool_size + '

\ +

innodb_log_buffer_sizeMB, ' + lan.soft.mysql_set_innodb_log_buffer_size + '

\ +

innodb_additional_mem_pool_sizeMB

\ +

sort_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_sort_buffer_size + '

\ +

read_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_buffer_size + '

\ +

read_rnd_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_rnd_buffer_size + '

\ +

join_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_join_buffer_size + '

\ +

thread_stackKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_thread_stack + '

\ +

binlog_cache_sizeKB * ' + 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 + '

\ +
\ +
' + + $(".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(); + }); + + }); +} \ No newline at end of file diff --git a/plugins/php/info.json b/plugins/php/info.json index 56f3ee061..5d84a8f01 100755 --- a/plugins/php/info.json +++ b/plugins/php/info.json @@ -1,7 +1,7 @@ { "sort": 7, "ps": "PHP是世界上最好的编程语言", - "shell": "php.sh", + "shell": "install.sh", "name": "php", "title": "PHP", "default": false, diff --git a/plugins/php/install.sh b/plugins/php/install.sh index 61032384a..4d510008a 100755 --- a/plugins/php/install.sh +++ b/plugins/php/install.sh @@ -18,19 +18,16 @@ Install_php() } -Uninstall_safelogin() +Uninstall_php() { - chattr -i /www/server/panel/plugin/safelogin/token.pl - rm -f /www/server/panel/data/limitip.conf - sed -i "/ALL/d" /etc/hosts.deny - rm -rf /www/server/panel/plugin/safelogin + echo "123123" } action=$1 host=$2; if [ "${1}" == 'install' ];then - Uninstall_php + Install_php else Uninstall_php fi diff --git a/plugins/php/js/php.js b/plugins/php/js/php.js index eedb5c495..f2e5e39ae 100755 --- a/plugins/php/js/php.js +++ b/plugins/php/js/php.js @@ -1,170 +1,616 @@ -function redisOp(a, b) { - - var c = "name=" + a + "&func=" + b; - var d = ""; - - switch(b) { - case "stop":d = '停止';break; - case "start":d = '启动';break; - case "restart":d = '重启';break; - case "reload":d = '重载';break; - } - layer.confirm( '您真的要{1}{2}服务吗?'.replace('{1}', d).replace('{2}', a), {icon:3,closeBtn: 2}, function() { - var e = layer.msg('正在{1}{2}服务,请稍候...'.replace('{1}', d).replace('{2}', a), {icon: 16,time: 0}); - $.post("/plugins/run", c, function(g) { - layer.close(e); - - var f = g.data == 'ok' ? '{1}服务已{2}'.replace('{1}', a).replace('{2}', d):'{1}服务{2}失败!'.replace('{1}', a).replace('{2}', d); - layer.msg(f, {icon: g.data == 'ok' ? 1 : 2}); - - if(b != "reload" && g.data == 'ok') { - if (b == 'start') { - setRedisService('redis', true); - } else if (b=='stop'){ - setRedisService('redis', false); - } else { - } - } - if(g.data != 'ok') { - layer.msg(g.data, {icon: 2,time: 0,shade: 0.3,shadeClose: true}); - } - },'json').error(function() { - layer.close(e); - layer.msg('操作成功!', {icon: 1}); - }); - }) -} - -//服务 -function setRedisService(name, status){ - var serviceCon ='

当前状态:'+(status ? '开启' : '关闭' )+ - '

\ - \ - \ - \ -
'; - $(".soft-man-con").html(serviceCon); -} - - -//服务 -function redisService(){ - - $.post('/plugins/run', {name:'redis', func:'status'}, function(data) { - console.log(data); - if(!data.status){ - layer.msg(data.msg,{icon:0,time:3000,shade: [0.3, '#000']}); - return; - } - if (data.data == 'start'){ - setRedisService('redis', true); - } else { - setRedisService('redis', false); - } - },'json'); -} - -redisService(); - - -//配置修改 --- start -function redisConfig(type){ - - var con = '

提示:Ctrl+F 搜索关键字,Ctrl+G 查找下一个,Ctrl+S 保存,Ctrl+Shift+R 查找替换!

\ - \ +//软件管理 +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: '
\ + \ +
\ + ' + sdata + '\ +
\ +
\ +
\ +
\ +
' + }); + 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 + '\ +
\ +
' + $(".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 }); + }); + +} + + +//php超时限制 +function phpTimeLimit(version, max) { + var LimitCon = '

' + lan.bt.s + '

'; + $(".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 + '

\ + \ '; - $(".soft-man-con").html(con); - - var loadT = layer.msg('配置文件路径获取中...',{icon:16,time:0,shade: [0.3, '#000']}); - $.post('/plugins/run', {name:'redis', func:'conf'},function (data) { - layer.close(loadT); - - var loadT2 = layer.msg('文件内容获取中...',{icon:16,time:0,shade: [0.3, '#000']}); - var fileName = data.data; - $.post('/files/get_body', 'path=' + fileName, function(rdata) { - layer.close(loadT2); - if (!rdata.status){ - layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - $("#textBody").empty().text(rdata.data.data); - $(".CodeMirror").remove(); - var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), { - extraKeys: { - "Ctrl-Space": "autocomplete", - "Ctrl-F": "findPersistent", - "Ctrl-H": "replaceAll", - "Ctrl-S": function() { - redisConfSafe(fileName); - } - }, - lineNumbers: true, - matchBrackets:true, - }); - editor.focus(); - $(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0}); - $("#OnlineEditFileBtn").click(function(){ - $("#textBody").text(editor.getValue()); - redisConfSafe(fileName); - }); - },'json'); - },'json'); -} - -//配置保存 -function redisConfSafe(fileName) { - var data = encodeURIComponent($("#textBody").val()); - var encoding = 'utf-8'; - var loadT = layer.msg('保存中...', { - icon: 16, - time: 0 + $(".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); + }); + }); +} + + +//设置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 = '
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + pathinfo1 + body + '' + + '
' + lan.soft.php_ext_name + '' + lan.soft.php_ext_type + '' + lan.soft.php_ext_ps + '' + lan.soft.php_ext_status + '' + lan.public.action + '
' + + '
' + + ''; + 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 = "
" + + "" + + "" + + "
" + + "
" + + "" + + "" + dbody + "" + + "
" + lan.soft.php_ext_name + "" + lan.public.action + "
"; + + con += '\ + '; + + $(".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 = "" + + "" + + "" + + "" + + "" + + "" + + "" + 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 += ''; + } + var body = "
" + + "

" + lan.soft.concurrency_type + ":

" + + "

" + lan.soft.php_fpm_model + ":*" + 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 + "

" + + "
" + + "
" + + $(".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); + }); }); - $.post('/files/save_body', 'data=' + data + '&path=' + fileName + '&encoding=' + encoding, function(rdata) { +} + +//phpinfo +function BtPhpinfo(version) { + var con = ''; + $(".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.msg(rdata.msg, { - icon: rdata.status ? 1 : 2 + 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;}', '') }); - },'json'); -} -//配置修改 --- end - -//redis负载状态 start -function redisStatus() { - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - $.post('/plugins/run', {name:'redis', func:'run_info'}, function(data) { - layer.close(loadT); - if (!data.status){ - layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - var rdata = $.parseJSON(data.data); - 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); - },'json'); -} -//redis负载状态 end \ No newline at end of file + }); +} + + +//查看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"); + }) +} + + +//php上传限制 +function phpUploadLimit(version, max) { + var LimitCon = '

MB

'; + $(".soft-man-con").html(LimitCon); +} diff --git a/plugins/phpmyadmin/js/phpmyadmin.js b/plugins/phpmyadmin/js/phpmyadmin.js new file mode 100755 index 000000000..80e04e12e --- /dev/null +++ b/plugins/phpmyadmin/js/phpmyadmin.js @@ -0,0 +1,118 @@ +//phpmyadmin安全设置 +function safeConf(name, port, auth) { + var con = '
\ + ' + lan.soft.pma_port + '\ + \ + \ +
\ +
\ + ' + lan.soft.pma_pass + '\ + \ + \ + \ +
\ +
\ +

' + lan.soft.pma_user + '

\ +

' + lan.soft.pma_pass1 + '

\ +

' + lan.soft.pma_pass2 + '

\ +

\ +
\ + '; + $(".soft-man-con").html(con); + if (auth) { + $(".user_pw").show(); + } +} + + +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切换php版本 +function phpVer(name, version) { + $.post('/site?action=GetPHPVersion', function(rdata) { + var body = "
" + lan.soft.php_version + "
'; + $(".soft-man-con").html(body); + }) +} +//修改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 }); + }); +} \ No newline at end of file diff --git a/plugins/score/index.py b/plugins/score/index.py new file mode 100755 index 000000000..a94a2b101 --- /dev/null +++ b/plugins/score/index.py @@ -0,0 +1,352 @@ +# coding: utf-8 + +import time +import psutil +import random +import os +import urllib +import binascii +import json +import public +import re + + +class score_main: + + __APIURL = 'https://www.bt.cn/api/Auth' + __UPATH = 'data/userInfo.json' + __userInfo = None + __PDATA = None + + def CheckToken(self): + pdata = {} + data = {} + if os.path.exists(self.__UPATH): + self.__userInfo = json.loads(public.readFile(self.__UPATH)) + if self.__userInfo: + pdata['access_key'] = self.__userInfo['access_key'] + data['secret_key'] = self.__userInfo['secret_key'] + else: + pdata['access_key'] = 'test' + data['secret_key'] = '123456' + pdata['data'] = data + self.__PDATA = pdata + + # 修正信息 + def SetScore(self, get): + if hasattr(get, 'ips'): + return self.SubmitSetScore('ips', get.ips) + if hasattr(get, 'virt'): + return self.SubmitSetScore('virt', get.virt) + + # 发送信息修正 + def SubmitSetScore(self, key, value): + self.CheckToken() + self.__PDATA['data'][key] = value + self.__PDATA['data'] = self.De_Code(self.__PDATA['data']) + result = json.loads(public.httpPost( + self.__APIURL + '/SetSocre', self.__PDATA)) + result['data'] = self.En_Code(result['data']) + return result + + # 获取得分列表 + def GetScore(self, get): + self.CheckToken() + self.__PDATA['data'] = self.De_Code(self.__PDATA['data']) + result = json.loads(public.httpPost( + self.__APIURL + '/GetSocre', self.__PDATA)) + result['data'] = self.En_Code(result['data']) + return result + + # 获取配置信息 + def GetConfig(self, get=None): + virt = '/usr/sbin/virt-what' + if not os.path.exists(virt): + if os.path.exists('/etc/yum.repos.d/epel.repo'): + os.system( + 'mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo_backup') + os.system('yum install virt-what -y') + if os.path.exists('/etc/yum.repos.d/epel.repo_backup'): + os.system( + 'mv /etc/yum.repos.d/epel.repo_backup /etc/yum.repos.d/epel.repo') + + data = {} + data['virt'] = public.ExecShell('virt-what')[0].strip() + cpuinfo = open('/proc/cpuinfo', 'r').read() + rep = "model\s+name\s+:\s+(.+)" + tmp = re.search(rep, cpuinfo) + + data['cpu'] = tmp.groups()[0] + data['core'] = psutil.cpu_count() + data['memory'] = psutil.virtual_memory().total / 1024 / 1024 + data['system'] = self.GetSystemVersion() + + scoreInfo = self.readScore() + data['disk'] = str(scoreInfo['read']) + ',' + str(scoreInfo['write']) + data['mem_score'] = scoreInfo['mem'] + data['cpu_score'] = scoreInfo['cpu1'] + \ + scoreInfo['cpu2'] + scoreInfo['cpu3'] + scoreInfo['cpu4'] + data['disk_score'] = scoreInfo['disk_score'] + data['total_score'] = scoreInfo['mem'] + \ + data['cpu_score'] + scoreInfo['disk_score'] + return data + + # 提交到云端 + def SubmitScore(self, get): + try: + self.CheckToken() + pdata = self.GetConfig(get) + if not pdata['total_score']: + return public.returnMsg(False, '请先跑分!') + pdata['secret_key'] = self.__userInfo['secret_key'] + self.__PDATA['data'] = self.De_Code(pdata) + result = json.loads(public.httpPost( + self.__APIURL + '/SubmitScore', self.__PDATA)) + result['data'] = self.En_Code(result['data']) + return result + except: + return None + + # 取操作系统版本 + def GetSystemVersion(self): + version = public.readFile('/etc/redhat-release') + if not version: + version = public.readFile( + '/etc/issue').replace('\\n \\l', '').strip() + else: + version = version.replace('release ', '').strip() + return version + + # 写当前得分 + def writeScore(self, type, value): + scoreFile = '/www/server/panel/plugin/score/score.json' + if not os.path.exists(scoreFile): + data = {} + data['cpu1'] = 0 + data['cpu2'] = 0 + data['cpu3'] = 0 + data['cpu4'] = 0 + data['mem'] = 0 + data['disk_score'] = 0 + data['read'] = 0 + data['write'] = 0 + public.writeFile(scoreFile, json.dumps(data)) + + data = json.loads(public.readFile(scoreFile)) + data[type] = value + public.writeFile(scoreFile, json.dumps(data)) + + # 读当前得分 + def readScore(self): + scoreFile = '/www/server/panel/plugin/score/score.json' + if not os.path.exists(scoreFile): + data = {} + data['cpu1'] = 0 + data['cpu2'] = 0 + data['cpu3'] = 0 + data['cpu4'] = 0 + data['mem'] = 0 + data['disk_score'] = 0 + data['read'] = 0 + data['write'] = 0 + public.writeFile(scoreFile, json.dumps(data)) + data = json.loads(public.readFile(scoreFile)) + return data + + # 测试CPU + def testCpu(self, get, n=1): + data = {} + data['cpuCount'] = psutil.cpu_count() + if not hasattr(get, 'type'): + get.type = '0' + import re + cpuinfo = open('/proc/cpuinfo', 'r').read() + rep = "model\s+name\s+:\s+(.+)" + tmp = re.search(rep, cpuinfo) + data['cpuType'] = "" + if tmp: + data['cpuType'] = tmp.groups()[0] + + import system + data['system'] = system.system().GetSystemVersion() + path = '/www/server/panel/plugin/score/testcpu' + if not os.path.exists(path): + os.system('gcc ' + path + '.c -o ' + path + ' -lpthread') + start = time.time() + os.system(path + ' 32 ' + get.type) + end = time.time() + data['score'] = int(400 * 10 / (end - start)) + if not os.path.exists(path): + data['score'] = 0 + self.writeScore('cpu' + get.type, data['score']) + return data + pass + + # 测试整数运算 + def testInt(self): + return self.testIntOrFloat(1) + + # 测试浮点运行 + def testFloat(self): + return self.testIntOrFloat(1.01) + + # CPU测试体 + def testIntOrFloat(self, n=1): + start = time.time() + num = 10000 * 100 + for i in range(num): + if i == 0: + continue + a = n + i + b = n - i + c = n * i + d = n / i + n = n + 1 + + end = time.time() + usetime = end - start + return num / 100 / usetime + + # 冒泡算法测试 + def testBubble(self): + start = time.time() + num = 10000 * 5 + xx = 'qwertyuiopasdfghjklzxcvbnm1234567890' + for c in xrange(num): + lst = [] + for k in range(10): + lst.append(xx[random.randint(0, len(xx) - 1)]) + lst = self.bubbleSort(lst) + end = time.time() + usetime = end - start + return num / 5 / usetime + + # 冒泡排序 + def bubbleSort(self, lst): + length = len(lst) + for i in xrange(0, length, 1): + for j in xrange(0, length - 1 - i, 1): + if lst[j] < lst[j + 1]: + temp = lst[j] + lst[j] = lst[j + 1] + lst[j + 1] = temp + return lst + + # 二叉树算法测试 + def testTree(self): + import testTree + + start = time.time() + elems = range(3000) # 生成树节点 + tree = testTree.Tree() # 新建一个树对象 + for elem in elems: + tree.add(elem) # 逐个加入树的节点 + + tree.level_queue(tree.root) + tree.front_digui(tree.root) + tree.middle_digui(tree.root) + tree.later_digui(tree.root) + tree.front_stack(tree.root) + tree.middle_stack(tree.root) + tree.later_stack(tree.root) + + end = time.time() + usetime = end - start + return 3000 / usetime + + # 测试内存 + def testMem(self, get): + mem = psutil.virtual_memory() + self.writeScore('mem', mem.total / 1024 / 1024) + # 提交数据 + self.SubmitScore(get) + return mem.total / 1024 / 1024 + + # 测试磁盘 + def testDisk(self, get): + import os + data = {} + os.system('rm -f testDisk_*') + filename = "testDisk_" + \ + time.strftime('%Y%m%d%H%M%S', time.localtime()) + data['write'] = self.testDiskWrite(filename) + import shutil + filename2 = "testDisk_" + \ + time.strftime('%Y%m%d%H%M%S', time.localtime()) + shutil.move(filename, filename2) + data['read'] = self.testDiskRead(filename2) + diskIo = psutil.disk_partitions() + diskInfo = [] + for disk in diskIo: + tmp = {} + tmp['path'] = disk[1] + tmp['size'] = psutil.disk_usage(disk[1])[0] + diskInfo.append(tmp) + data['diskInfo'] = diskInfo + writeDisk = data['write'] + if data['write'] > 1000: + writeDisk = 1000 + readDisk = data['read'] + if data['read'] > 1000: + readDisk = 1000 + + data['score'] = (writeDisk * 6) + (readDisk * 6) + os.remove(filename2) + + self.writeScore('disk_score', data['score']) + self.writeScore('write', data['write']) + self.writeScore('read', data['read']) + return data + pass + + # 测试磁盘写入速度 + def testDiskWrite(self, filename): + import random + start = time.time() + fp = open(filename, 'w+') + strTest = "" + strTmp = "" + for n in range(4): + strTmp += chr(random.randint(97, 122)) + for n in range(1024): + strTest += strTmp + + for i in range(1024 * 256): + fp.write(strTest) + + del(strTest) + del(strTmp) + fp.close() + end = time.time() + usetime = end - start + return int(1024 / usetime) + + # 测试磁盘读取速度 + def testDiskRead(self, filename): + os.system('echo 3 > /proc/sys/vm/drop_caches') + import random + start = time.time() + fp = open(filename, 'r') + size = 4096 + while True: + tmp = fp.read(size) + if not tmp: + break + del(tmp) + fp.close() + end = time.time() + usetime = end - start + return int(1024 / usetime) + + def testWorkNet(self): + pass + + # 加密数据 + def De_Code(self, data): + pdata = urllib.urlencode(data) + return binascii.hexlify(pdata) + + # 解密数据 + def En_Code(self, data): + result = urllib.unquote(binascii.unhexlify(data)) + return json.loads(result) diff --git a/plugins/score/score_main.py b/plugins/score/score_main.py deleted file mode 100755 index 8e70d18f7..000000000 --- a/plugins/score/score_main.py +++ /dev/null @@ -1,340 +0,0 @@ -#coding: utf-8 -# +------------------------------------------------------------------- -# | 宝塔Linux面板 x3 -# +------------------------------------------------------------------- -# | Copyright (c) 2015-2016 宝塔软件(http://bt.cn) All rights reserved. -# +------------------------------------------------------------------- -# | Author: 黄文良 <2879625666@qq.com> -# +------------------------------------------------------------------- - -#+-------------------------------------------------------------------- -#| 服务器测试 -#+-------------------------------------------------------------------- - -import time,psutil,random,os,urllib,binascii,json,public,re; -class score_main: - - __APIURL = 'https://www.bt.cn/api/Auth'; - __UPATH = 'data/userInfo.json'; - __userInfo = None; - __PDATA = None; - - def CheckToken(self): - pdata = {} - data = {} - if os.path.exists(self.__UPATH): - self.__userInfo = json.loads(public.readFile(self.__UPATH)); - if self.__userInfo: - pdata['access_key'] = self.__userInfo['access_key']; - data['secret_key'] = self.__userInfo['secret_key']; - else: - pdata['access_key'] = 'test'; - data['secret_key'] = '123456'; - pdata['data'] = data; - self.__PDATA = pdata; - - #修正信息 - def SetScore(self,get): - if hasattr(get,'ips'): - return self.SubmitSetScore('ips',get.ips); - if hasattr(get,'virt'): - return self.SubmitSetScore('virt',get.virt); - - #发送信息修正 - def SubmitSetScore(self,key,value): - self.CheckToken(); - self.__PDATA['data'][key] = value - self.__PDATA['data'] = self.De_Code(self.__PDATA['data']); - result = json.loads(public.httpPost(self.__APIURL+'/SetSocre',self.__PDATA)); - result['data'] = self.En_Code(result['data']); - return result; - - #获取得分列表 - def GetScore(self,get): - self.CheckToken(); - self.__PDATA['data'] = self.De_Code(self.__PDATA['data']); - result = json.loads(public.httpPost(self.__APIURL+'/GetSocre',self.__PDATA)); - result['data'] = self.En_Code(result['data']); - return result; - - #获取配置信息 - def GetConfig(self,get=None): - virt = '/usr/sbin/virt-what' - if not os.path.exists(virt): - if os.path.exists('/etc/yum.repos.d/epel.repo'): - os.system('mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo_backup'); - os.system('yum install virt-what -y'); - if os.path.exists('/etc/yum.repos.d/epel.repo_backup'): - os.system('mv /etc/yum.repos.d/epel.repo_backup /etc/yum.repos.d/epel.repo'); - - data = {} - data['virt'] = public.ExecShell('virt-what')[0].strip(); - cpuinfo = open('/proc/cpuinfo','r').read(); - rep = "model\s+name\s+:\s+(.+)" - tmp = re.search(rep,cpuinfo); - - data['cpu'] = tmp.groups()[0]; - data['core'] = psutil.cpu_count(); - data['memory'] = psutil.virtual_memory().total/1024/1024 - data['system'] = self.GetSystemVersion(); - - scoreInfo = self.readScore(); - data['disk'] = str(scoreInfo['read'])+','+str(scoreInfo['write']) - data['mem_score'] = scoreInfo['mem']; - data['cpu_score'] = scoreInfo['cpu1'] + scoreInfo['cpu2'] + scoreInfo['cpu3'] + scoreInfo['cpu4']; - data['disk_score'] = scoreInfo['disk_score']; - data['total_score'] = scoreInfo['mem']+data['cpu_score']+scoreInfo['disk_score']; - return data; - - #提交到云端 - def SubmitScore(self,get): - try: - self.CheckToken(); - pdata = self.GetConfig(get); - if not pdata['total_score']: return public.returnMsg(False,'请先跑分!'); - pdata['secret_key'] = self.__userInfo['secret_key']; - self.__PDATA['data'] = self.De_Code(pdata); - result = json.loads(public.httpPost(self.__APIURL+'/SubmitScore',self.__PDATA)); - result['data'] = self.En_Code(result['data']); - return result; - except: - return None; - - #取操作系统版本 - def GetSystemVersion(self): - version = public.readFile('/etc/redhat-release') - if not version: - version = public.readFile('/etc/issue').replace('\\n \\l','').strip(); - else: - version = version.replace('release ','').strip(); - return version - - #写当前得分 - def writeScore(self,type,value): - scoreFile = '/www/server/panel/plugin/score/score.json'; - if not os.path.exists(scoreFile): - data = {} - data['cpu1'] = 0; - data['cpu2'] = 0; - data['cpu3'] = 0; - data['cpu4'] = 0; - data['mem'] = 0; - data['disk_score'] = 0; - data['read'] = 0; - data['write'] = 0; - public.writeFile(scoreFile,json.dumps(data)); - - data = json.loads(public.readFile(scoreFile)); - data[type] = value; - public.writeFile(scoreFile,json.dumps(data)); - - #读当前得分 - def readScore(self): - scoreFile = '/www/server/panel/plugin/score/score.json'; - if not os.path.exists(scoreFile): - data = {} - data['cpu1'] = 0; - data['cpu2'] = 0; - data['cpu3'] = 0; - data['cpu4'] = 0; - data['mem'] = 0; - data['disk_score'] = 0; - data['read'] = 0; - data['write'] = 0; - public.writeFile(scoreFile,json.dumps(data)); - data = json.loads(public.readFile(scoreFile)); - return data; - - - #测试CPU - def testCpu(self,get,n = 1): - data = {} - data['cpuCount'] = psutil.cpu_count(); - if not hasattr(get,'type'): get.type = '0'; - import re; - cpuinfo = open('/proc/cpuinfo','r').read(); - rep = "model\s+name\s+:\s+(.+)" - tmp = re.search(rep,cpuinfo); - data['cpuType'] = "" - if tmp: - data['cpuType'] = tmp.groups()[0]; - - import system - data['system'] = system.system().GetSystemVersion(); - path = '/www/server/panel/plugin/score/testcpu'; - if not os.path.exists(path): os.system('gcc '+path+'.c -o ' +path + ' -lpthread'); - start = time.time(); - os.system(path + ' 32 ' + get.type); - end = time.time(); - data['score'] = int(400 * 10 / (end - start)); - if not os.path.exists(path): data['score'] = 0; - self.writeScore('cpu'+get.type, data['score']) - return data; - pass - - #测试整数运算 - def testInt(self): - return self.testIntOrFloat(1); - - #测试浮点运行 - def testFloat(self): - return self.testIntOrFloat(1.01); - - #CPU测试体 - def testIntOrFloat(self,n=1): - start = time.time(); - num = 10000 * 100; - for i in range(num): - if i == 0: continue; - a = n + i; - b = n - i; - c = n * i; - d = n / i; - n = n + 1; - - end = time.time(); - usetime = end - start; - return num / 100 / usetime; - - #冒泡算法测试 - def testBubble(self): - start = time.time(); - num = 10000 * 5; - xx = 'qwertyuiopasdfghjklzxcvbnm1234567890' - for c in xrange(num): - lst = [] - for k in range(10): - lst.append(xx[random.randint(0,len(xx)-1)]) - lst = self.bubbleSort(lst) - end = time.time(); - usetime = end - start; - return num / 5 / usetime; - - #冒泡排序 - def bubbleSort(self,lst): - length = len(lst) - for i in xrange(0, length, 1): - for j in xrange(0, length-1-i, 1): - if lst[j] < lst[j+1]: - temp = lst[j] - lst[j] = lst[j+1] - lst[j+1] = temp - return lst - - #二叉树算法测试 - def testTree(self): - import testTree - - start = time.time(); - elems = range(3000) #生成树节点 - tree = testTree.Tree() #新建一个树对象 - for elem in elems: - tree.add(elem) #逐个加入树的节点 - - tree.level_queue(tree.root) - tree.front_digui(tree.root) - tree.middle_digui(tree.root) - tree.later_digui(tree.root) - tree.front_stack(tree.root) - tree.middle_stack(tree.root) - tree.later_stack(tree.root) - - end = time.time(); - usetime = end - start; - return 3000 / usetime; - - - - #测试内存 - def testMem(self,get): - mem = psutil.virtual_memory() - self.writeScore('mem', mem.total/1024/1024) - #提交数据 - self.SubmitScore(get) - return mem.total/1024/1024; - - #测试磁盘 - def testDisk(self,get): - import os - data = {} - os.system('rm -f testDisk_*'); - filename = "testDisk_" + time.strftime('%Y%m%d%H%M%S',time.localtime()); - data['write'] = self.testDiskWrite(filename); - import shutil - filename2 = "testDisk_" + time.strftime('%Y%m%d%H%M%S',time.localtime()); - shutil.move(filename,filename2); - data['read'] = self.testDiskRead(filename2); - diskIo = psutil.disk_partitions() - diskInfo = [] - for disk in diskIo: - tmp = {} - tmp['path'] = disk[1] - tmp['size'] = psutil.disk_usage(disk[1])[0] - diskInfo.append(tmp) - data['diskInfo'] = diskInfo; - writeDisk = data['write']; - if data['write'] > 1000: writeDisk = 1000; - readDisk = data['read']; - if data['read'] > 1000: readDisk = 1000; - - data['score'] = (writeDisk * 6) + (readDisk * 6) - os.remove(filename2); - - self.writeScore('disk_score', data['score']) - self.writeScore('write', data['write']) - self.writeScore('read', data['read']) - return data; - pass - - #测试磁盘写入速度 - def testDiskWrite(self,filename): - import random - start = time.time(); - fp = open(filename,'w+'); - strTest = ""; - strTmp = ""; - for n in range(4): - strTmp += chr(random.randint(97, 122)) - for n in range(1024): - strTest += strTmp; - - for i in range(1024 * 256): - fp.write(strTest); - - del(strTest); - del(strTmp); - fp.close() - end = time.time(); - usetime = end - start; - return int(1024/usetime); - - #测试磁盘读取速度 - def testDiskRead(self,filename): - os.system('echo 3 > /proc/sys/vm/drop_caches'); - import random - start = time.time(); - fp = open(filename,'r'); - size = 4096; - while True: - tmp = fp.read(size); - if not tmp: break; - del(tmp); - fp.close() - end = time.time(); - usetime = end - start; - return int(1024/usetime); - - def testWorkNet(self): - pass - - - #加密数据 - def De_Code(self,data): - pdata = urllib.urlencode(data); - return binascii.hexlify(pdata); - - #解密数据 - def En_Code(self,data): - result = urllib.unquote(binascii.unhexlify(data)); - return json.loads(result); - \ No newline at end of file diff --git a/plugins/score/testcpu b/plugins/score/testcpu new file mode 100755 index 0000000000000000000000000000000000000000..45cd64a43575d11776966e13ed637c25c37a9643 GIT binary patch literal 9356 zcmeHNe{5Sv9lw{vBP(MsVcC|Aj(B5*tVnG#F)3>_)hT`5tJZW~Rzo%@7sqjGYmROF zLtCWKZ(0g8tE=6(N|!B=X0Qx`{Hkjh0MEWxxbO3o#p7-K5(%O1v#F)t*>?m*U& zIX^J;u=b=j@+fH=lhO#Ui-@Ne18{y&8$H+S8-qLS25IIz9eO6c(bmm3 zcOxbP^ApqwiEx`GT4fuXaYD{h>CAX)UFGK6gn$s=r)3Kp+a1~^--dt0$HSp$B9ufU zH(#&h+a(DIQ{30nHU0(TvDC(d-Fykj*DDDKV=X^2aUM*ilabhA*}~0tQu2LD+6g;T zgRd}fo{2pjiB0fGY%(rzmJLfux*xH>@Z=Cymd-p%0 z?cQsjS+8pyfGM4j#N?Ng>mEE;`lx}|^0yuJ0AZPYUdBctpG4h(j^tA}a_MfXPJae9 z^dE=r0J1Z60#J6w)oCZ$hyI^%D}irD_9EYeygidjZjVOBw@)02P5@J){ZD@U;DdJt zOy2|i`#rroF7$nH_Fm`^N|0_6d8>^{hlKT-p?>t-aV8pP0GVtw$F}=d5HV$AY>fZ- zkyJV~wQbin_z@XLBc#tF(|E5S9#r2a@fl#}`a|7J%?LCj@P8fwzi#|h&sN43v^AQk zF44@wp;^jK*ILy=7dq*MhhBm%pQ*vxDXi}4jVW zKsMu|`6eE3hE^&+ExN3m-h52XY(MIzhrFmAE&y*i*H2+DO$A$T|@|}(5KTGo$ zg?X+FNHfZo6hkx1-g>=msXTiyX`1Izdb{bbo86+rtL0@h=`ZQo`LRP6CW~8v_9BOo zpGQ`Ee2n66{)l)z3P_0BQ$ugGS9^9d%l>y^{|nT@{+`?ZFn-YTo^!VSjNATQVLxr# zPrB`&1HbuAD*jDHSTs-C%_E|@+A{;2@JH^I+3B?o^i&HwpkL5xWS*U_dH0j<762Kq znuu4eyo4!B)tXSPm0yPnGo75=ruH1A{(@iqa_O?#sjXdBJ3O25lA>j<6}Aq0$WA9DyB;^ zraM!;+G0(&zqAUzZ-Z}D-8x)D;a^)-zjl6AePVG{9UZQs=WzA&TFuaEc@5KTF)-lz zbQ|ZZ&sN4x(FyQe1fibCe%ERX$6gKA>lEPZS(2Fgt-IhwUZ`;(Eg@T~8$wh5Ehf|d zuQyb5&{$F)nZDC#jW2E9s&Q&y)_Mlo~rkz&Q@$~noG z8^|j*`S*x?`M9?1BCm-3S8S7oL zEB_6HhUt~A{60zdl0-W=d_PHxB@6;Z=ChoKpR91J=#-U87k+!Wi zGVPWy{1N>;0O}5G7}geIwpGzkr%D{jExgWE?)c>neDM z#AK|rF4ziZJs|&X+a>FLvi_2+$7Jp7)0CSLXhxtJfo24n5okuB8G&X5nh|J5pc#Q? z1ey_OM&N%l0-g7C`^mFTAE&GEK=3IZ3_ryWX9CFy_E@r`=%Y(9aY@d{anFlO?HLna zGelB~EZObqIT?sV8T4N01L=5#*TX z9QUv7d@9UC&xC@RbO?9q0UCaEDiDdWucjHQG~Ie8*c-}ZG#-%PO(hYr)bq;MQ}Lu! zzpd=&>^BO1BWY!G_}tkdJYeZK7p>Sug|%?@Ec>a#JYZ(0EmHPF@Ub6TRBTQO#xpP; zZ2`$`V0wp&Diy`siI|EdDoWi{+(EiKNy3FA2XA^Lwx`m01=$NyjCdeH0y6-6pu zq@v`dP*9q?Wv11O)HgPxB#H{#j0@2Y)+X)}RebO*%I`6BPfGZN#GjP-MTzNS71?tV z-%VJdn?>up(gOnHGZii@=>yS_#7iJ1{D{Q%|5-dHaY?p+QsO>bx>EZ|yS?lmBaEw4 zABH6Rv(kP*+K)@zC-HYAPDp%O;-bVqk+>wsdmR|OL@m-UP&zT)AUN@g3s+ot&4pX7 z&g=Yi|4iS`yO3{1rcb7~BP01J_Sds}8Q;&vjwOLM11jtSl-3U6*V*<~2Ww+fA1R5$ zfX)&+HaxeE7?U*`(8jfq99|wn;e(XP5h+S<){jWTBSIYX295R5uui>w-rXl%p7CoQ IDipB)002MW' + 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: '
\ - \ -
\ - ' + sdata + '\ -
\ -
\ -
\ -
\ -
' - }); - 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 + '\ -
\ -
' - $(".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(); @@ -173,446 +6,7 @@ function MenusaveOrder() { $("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) + '

\ -
\ - \ - \ - \ -
'; - $(".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

'; - $(".soft-man-con").html(LimitCon); -} -//php超时限制 -function phpTimeLimit(version, max) { - var LimitCon = '

' + lan.bt.s + '

'; - $(".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.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); - }); - }); -} - - - -//设置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 = '
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + pathinfo1 + body + '' + - '
' + lan.soft.php_ext_name + '' + lan.soft.php_ext_type + '' + lan.soft.php_ext_ps + '' + lan.soft.php_ext_status + '' + lan.public.action + '
' + - '
' + - '
  • 请按实际需求安装扩展,不要安装不必要的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 = "
" + - "" + - "" + - "
" + - "
" + - "" + - "" + dbody + "" + - "
" + lan.soft.php_ext_name + "" + lan.public.action + "
"; - - 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 = "" + - "" + - "" + - "" + - "" + - "" + - "" - 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 += ''; - } - var body = "
" + - "

" + lan.soft.concurrency_type + ":

" + - "

" + lan.soft.php_fpm_model + ":*" + 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 + "

" + - "
" + - "
" - - $(".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 = ''; - $(".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'] }); @@ -874,28 +268,6 @@ function GetNginxStatus() { $(".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) { @@ -916,601 +288,12 @@ function SoftMan(name, version) { }); } - -//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 = '
\ -

BindIP监听IP,请勿随意修改

\ -

PORT监听端口,一般无需修改

\ -

CACHESIZEMB,缓存大小,建议不要大于512M

\ -

MAXCONN最大连接数,建议不要大于40960

\ -
\ -
' - $(".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 = '

\ - \ - \ -

'; - $(".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) + '\ - \ -

' + lan.soft.mysql_log_err + '

\ - \ -

' - - $(".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_maxmem + ': MB\ -
\ -

key_buffer_sizeMB, ' + lan.soft.mysql_set_key_buffer_size + '

\ -

query_cache_sizeMB, ' + lan.soft.mysql_set_query_cache_size + '

\ -

tmp_table_sizeMB, ' + lan.soft.mysql_set_tmp_table_size + '

\ -

innodb_buffer_pool_sizeMB, ' + lan.soft.mysql_set_innodb_buffer_pool_size + '

\ -

innodb_log_buffer_sizeMB, ' + lan.soft.mysql_set_innodb_log_buffer_size + '

\ -

innodb_additional_mem_pool_sizeMB

\ -

sort_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_sort_buffer_size + '

\ -

read_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_buffer_size + '

\ -

read_rnd_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_rnd_buffer_size + '

\ -

join_buffer_sizeKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_join_buffer_size + '

\ -

thread_stackKB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_thread_stack + '

\ -

binlog_cache_sizeKB * ' + 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 + '

\ -
\ -
' - - $(".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 = '

\ - \ - \ -

'; - - $(".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 += ''; - } - - var body = "
" + lan.soft.select_version + "
'; - - if (name == 'mysql') { - body += "
  • " + lan.soft.mysql_f + "
" - } - - $(".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 + "
'; - $(".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.soft.pma_pass + '\ - \ - \ - \ -
\ -
\ -

' + lan.soft.pma_user + '

\ -

' + lan.soft.pma_pass1 + '

\ -

' + lan.soft.pma_pass2 + '

\ -

\ -
\ -
  • ' + lan.soft.pma_ps + '
'; - $(".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() { @@ -1784,6 +567,7 @@ function GetSList(isdisplay) { }) },'json'); } + //刷新状态 function FPStatus() { $.get("/auth?action=flush_pay_status", function(res) { @@ -1967,51 +751,6 @@ function AddVersion(name, ver, type, obj, title) { 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 }); - } - } - }); -} //卸载软件 @@ -2044,117 +783,6 @@ function UninstallVersion(name, version, title) { } -//获取插件列表 -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 = "
" + - "

" + keyMsg[0] + ": *" + keyMsg[2] + " " + ' [' + lan.public.help + ']' + "

" + - "

" + secretMsg[0] + ": *" + secretMsg[2] + "

" + - "

" + bucketMsg[0] + ": *" + bucketMsg[2] + "

" + - "

" + domainMsg[0] + ": *" + domainMsg[2] + "

" + - '
' + - '' + - '' + - "" + - '
' + - "
" - - 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";