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 @@
\ 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 = ''
+ $(".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 = '\
+ \
+ ' + lan.public.edit + ' \
+
';
+
+ $(".soft-man-con").html(LimitCon);
+ });
+}
+
+
+//软件切换版本
+function softChangeVer(name, version) {
+ if (name == "mysqld") name = "mysql";
+ var veropt = version.split("|");
+ var SelectVersion = '';
+ for (var i = 0; i < veropt.length; i++) {
+ SelectVersion += '' + name + ' ' + veropt[i] + ' ';
+ }
+
+ var body = "" + lan.soft.select_version + " ";
+ body += SelectVersion + ' ' + lan.soft.version_to + '
';
+
+ if (name == 'mysql') {
+ body += ""
+ }
+
+ $(".soft-man-con").html(body);
+ $(".btn-success").click(function() {
+ var ver = $("#selectVer").val();
+ oneInstall(name, ver.split(" ")[1]);
+ });
+ selectChange();
+}
+
+
+//设置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 = '\
+ \
+ ' + lan.soft.mysql_to + ' \
+
';
+ $(".soft-man-con").html(LimitCon);
+ });
+}
+
+//MySQL-Slow日志
+function mysqlSlowLog() {
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/database?action=GetSlowLogs', {}, function(logs) {
+ layer.close(loadT);
+ if (logs.status !== true) {
+ logs.msg = '';
+ }
+ if (logs.msg == '') logs.msg = '当前没有慢日志.';
+ var phpCon = '';
+ $(".soft-man-con").html(phpCon);
+ var ob = document.getElementById('error_log');
+ ob.scrollTop = ob.scrollHeight;
+ });
+}
+
+//数据库日志
+function mysqlLog(act) {
+ //获取二进制日志相关信息
+ $.post('/database?action=BinLog', "status=1", function(rdata) {
+ var limitCon = '\
+ ' + lan.soft.mysql_log_bin + ' ' + ToSize(rdata.msg) + ' \
+ ' + (rdata.status ? lan.soft.off : lan.soft.on) + ' \
+
' + lan.soft.mysql_log_err + '' + lan.soft.mysql_log_close + '
\
+ \
+
'
+
+ $(".soft-man-con").html(limitCon);
+
+ //获取错误日志
+ $.post('/database?action=GetErrorLog', "", function(error_body) {
+ if (error_body.status === false) {
+ layer.msg(error_body.msg, { icon: 5 });
+ error_body = lan.soft.mysql_log_ps1;
+ }
+ if (error_body == "") error_body = lan.soft.mysql_log_ps1;
+ $("#error_log").text(error_body);
+ var ob = document.getElementById('error_log');
+ ob.scrollTop = ob.scrollHeight;
+ });
+ });
+}
+
+//取数据库运行状态
+function mysqlRunStatus() {
+ $.post('/database?action=GetRunStatus', "", function(rdata) {
+ var cache_size = ((parseInt(rdata.Qcache_hits) / (parseInt(rdata.Qcache_hits) + parseInt(rdata.Qcache_inserts))) * 100).toFixed(2) + '%';
+ if (cache_size == 'NaN%') cache_size = 'OFF';
+ var Con = '\
+ \
+ ' + lan.soft.mysql_status_title1 + ' ' + getLocalTime(rdata.Run) + ' ' + lan.soft.mysql_status_title5 + ' ' + parseInt(rdata.Questions / rdata.Uptime) + ' \
+ ' + lan.soft.mysql_status_title2 + ' ' + rdata.Connections + ' ' + lan.soft.mysql_status_title6 + ' ' + parseInt((parseInt(rdata.Com_commit) + parseInt(rdata.Com_rollback)) / rdata.Uptime) + ' \
+ ' + lan.soft.mysql_status_title3 + ' ' + ToSize(rdata.Bytes_sent) + ' ' + lan.soft.mysql_status_title7 + ' ' + rdata.File + ' \
+ ' + lan.soft.mysql_status_title4 + ' ' + ToSize(rdata.Bytes_received) + ' ' + lan.soft.mysql_status_title8 + ' ' + rdata.Position + ' \
+ \
+
\
+
\
+ \
+ \
+ ' + lan.soft.mysql_status_title9 + ' ' + rdata.Threads_running + '/' + rdata.Max_used_connections + ' ' + lan.soft.mysql_status_ps1 + ' \
+ ' + lan.soft.mysql_status_title10 + ' ' + ((1 - rdata.Threads_created / rdata.Connections) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps2 + ' \
+ ' + lan.soft.mysql_status_title11 + ' ' + ((1 - rdata.Key_reads / rdata.Key_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps3 + ' \
+ ' + lan.soft.mysql_status_title12 + ' ' + ((1 - rdata.Innodb_buffer_pool_reads / rdata.Innodb_buffer_pool_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps4 + ' \
+ ' + lan.soft.mysql_status_title13 + ' ' + cache_size + ' ' + lan.soft.mysql_status_ps5 + ' \
+ ' + lan.soft.mysql_status_title14 + ' ' + ((rdata.Created_tmp_disk_tables / rdata.Created_tmp_tables) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps6 + ' \
+ ' + lan.soft.mysql_status_title15 + ' ' + rdata.Open_tables + ' ' + lan.soft.mysql_status_ps7 + ' \
+ ' + lan.soft.mysql_status_title16 + ' ' + rdata.Select_full_join + ' ' + lan.soft.mysql_status_ps8 + ' \
+ ' + lan.soft.mysql_status_title17 + ' ' + rdata.Select_range_check + ' ' + lan.soft.mysql_status_ps9 + ' \
+ ' + lan.soft.mysql_status_title18 + ' ' + rdata.Sort_merge_passes + ' ' + lan.soft.mysql_status_ps10 + ' \
+ ' + lan.soft.mysql_status_title19 + ' ' + rdata.Table_locks_waited + ' ' + lan.soft.mysql_status_ps11 + ' \
+ \
+
'
+ $(".soft-man-con").html(Con);
+ });
+}
+
+//数据库配置状态
+function mysqlStatus() {
+ //获取MySQL配置
+ $.post('/database?action=GetDbStatus', "", function(rdata) {
+ var key_buffer_size = ToSizeM(rdata.mem.key_buffer_size)
+ var query_cache_size = ToSizeM(rdata.mem.query_cache_size)
+ var tmp_table_size = ToSizeM(rdata.mem.tmp_table_size)
+ var innodb_buffer_pool_size = ToSizeM(rdata.mem.innodb_buffer_pool_size)
+ var innodb_additional_mem_pool_size = ToSizeM(rdata.mem.innodb_additional_mem_pool_size)
+ var innodb_log_buffer_size = ToSizeM(rdata.mem.innodb_log_buffer_size)
+
+ var sort_buffer_size = ToSizeM(rdata.mem.sort_buffer_size)
+ var read_buffer_size = ToSizeM(rdata.mem.read_buffer_size)
+ var read_rnd_buffer_size = ToSizeM(rdata.mem.read_rnd_buffer_size)
+ var join_buffer_size = ToSizeM(rdata.mem.join_buffer_size)
+ var thread_stack = ToSizeM(rdata.mem.thread_stack)
+ var binlog_cache_size = ToSizeM(rdata.mem.binlog_cache_size)
+
+ var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size
+ var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size
+ var memSize = a + rdata.mem.max_connections * b
+
+
+ var memCon = '\
+
' + lan.soft.mysql_set_msg + ' \
+ \
+ ' + lan.soft.mysql_set_select + ' \
+ 1-2GB \
+ 2-4GB \
+ 4-8GB \
+ 8-16GB \
+ 16-32GB \
+ \
+ ' + lan.soft.mysql_set_maxmem + ': MB\
+
\
+
key_buffer_size MB, ' + lan.soft.mysql_set_key_buffer_size + '
\
+
query_cache_size MB, ' + lan.soft.mysql_set_query_cache_size + '
\
+
tmp_table_size MB, ' + lan.soft.mysql_set_tmp_table_size + '
\
+
innodb_buffer_pool_size MB, ' + lan.soft.mysql_set_innodb_buffer_pool_size + '
\
+
innodb_log_buffer_size MB, ' + lan.soft.mysql_set_innodb_log_buffer_size + '
\
+
innodb_additional_mem_pool_size MB
\
+
sort_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_sort_buffer_size + '
\
+
read_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_buffer_size + '
\
+
read_rnd_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_rnd_buffer_size + '
\
+
join_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_join_buffer_size + '
\
+
thread_stack KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_thread_stack + '
\
+
binlog_cache_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_binlog_cache_size + '
\
+
thread_cache_size ' + lan.soft.mysql_set_thread_cache_size + '
\
+
table_open_cache ' + lan.soft.mysql_set_table_open_cache + '
\
+
max_connections ' + lan.soft.mysql_set_max_connections + '
\
+
' + lan.soft.mysql_set_restart + ' ' + lan.public.save + '
\
+
'
+
+ $(".soft-man-con").html(memCon);
+
+ $(".conf_p input[name*='size'],.conf_p input[name='max_connections'],.conf_p input[name='thread_stack']").change(function() {
+ ComMySqlMem();
+ });
+
+ $(".conf_p select[name='mysql_set']").change(function() {
+ MySQLMemOpt($(this).val());
+ ComMySqlMem();
+ });
+
+ });
+}
\ 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 ? '开启' : '关闭' )+
- '
\
- '+(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: ''
+ });
+ if (name == "52") {
+ $(".phphide").hide();
+ }
+
+ if (rdata.versions.length < 5) {
+ $(".phphide").hide();
+ $(".pstate").hide();
+ SetPHPConfig(name, nameA.pathinfo);
+ $("p[data-id='4']").addClass('bgw');
+ } else {
+ service(name, nameA.run);
+ }
+
+ $(".bt-w-menu p a").click(function() {
+ var txt = $(this).text();
+ $(this).parent().addClass("bgw").siblings().removeClass("bgw");
+ if (txt != lan.soft.php_menu_ext) $(".soft-man-con").removeAttr("style");
+ });
+ $(".soft-man-menu").dragsort({ dragSelector: ".spanmove", dragEnd: MenusaveOrder });
+ });
+}
+
+//FPM日志
+function GetFpmLogs(phpversion) {
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.get('/ajax?action=GetFpmLogs&version=' + phpversion, function(logs) {
+ layer.close(loadT);
+ if (logs.status !== true) {
+ logs.msg = '';
+ }
+ if (logs.msg == '') logs.msg = '当前没有fpm日志.';
+ var phpCon = '';
+ $(".soft-man-con").html(phpCon);
+ var ob = document.getElementById('error_log');
+ ob.scrollTop = ob.scrollHeight;
+ });
+}
+
+//FPM-Slow日志
+function GetFpmSlowLogs(phpversion) {
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.get('/ajax?action=GetFpmSlowLogs&version=' + phpversion, function(logs) {
+ layer.close(loadT);
+ if (logs.status !== true) {
+ logs.msg = '';
+ }
+ if (logs.msg == '') logs.msg = '当前没有慢日志.';
+ var phpCon = '';
+ $(".soft-man-con").html(phpCon);
+ var ob = document.getElementById('error_log');
+ ob.scrollTop = ob.scrollHeight;
+ });
+}
+
+
+//配置修改
+function SetPHPConf(version) {
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=GetPHPConf', 'version=' + version, function(rdata) {
+ layer.close(loadT);
+ var mlist = '';
+ for (var i = 0; i < rdata.length; i++) {
+ var w = '70'
+ if (rdata[i].name == 'error_reporting') w = '250';
+ var ibody = ' ';
+ switch (rdata[i].type) {
+ case 0:
+ var selected_1 = (rdata[i].value == 1) ? 'selected' : '';
+ var selected_0 = (rdata[i].value == 0) ? 'selected' : '';
+ ibody = '开启 关闭 '
+ break;
+ case 1:
+ var selected_1 = (rdata[i].value == 'On') ? 'selected' : '';
+ var selected_0 = (rdata[i].value == 'Off') ? 'selected' : '';
+ ibody = '开启 关闭 '
+ break;
+ }
+ mlist += '' + rdata[i].name + ' ' + ibody + ', ' + rdata[i].ps + '
'
+ }
+ var phpCon = '\
+ ' + mlist + '\
+
' + lan.public.fresh + ' ' + lan.public.save + '
\
+
'
+ $(".soft-man-con").html(phpCon);
+ });
+}
+
+
+//提交PHP配置
+function SubmitPHPConf(version) {
+ var data = {
+ version: version,
+ display_errors: $("select[name='display_errors']").val(),
+ 'cgi.fix_pathinfo': $("select[name='cgi.fix_pathinfo']").val(),
+ 'date.timezone': $("input[name='date.timezone']").val(),
+ short_open_tag: $("select[name='short_open_tag']").val(),
+ asp_tags: $("select[name='asp_tags']").val() || 'On',
+ safe_mode: $("select[name='safe_mode']").val(),
+ max_execution_time: $("input[name='max_execution_time']").val(),
+ max_input_time: $("input[name='max_input_time']").val(),
+ memory_limit: $("input[name='memory_limit']").val(),
+ post_max_size: $("input[name='post_max_size']").val(),
+ file_uploads: $("select[name='file_uploads']").val(),
+ upload_max_filesize: $("input[name='upload_max_filesize']").val(),
+ max_file_uploads: $("input[name='max_file_uploads']").val(),
+ default_socket_timeout: $("input[name='default_socket_timeout']").val(),
+ error_reporting: $("input[name='error_reporting']").val() || 'On'
+ }
+
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=SetPHPConf', data, function(rdata) {
+ layer.close(loadT);
+ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ });
+
+}
+
+
+//php超时限制
+function phpTimeLimit(version, max) {
+ var LimitCon = ' ' + lan.bt.s + '' + lan.public.save + '
';
+ $(".soft-man-con").html(LimitCon);
+}
+//设置超时限制
+function SetPHPMaxTime(version) {
+ var max = $(".phpTimeLimit").val();
+ var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=setPHPMaxTime', 'version=' + version + '&time=' + max, function(rdata) {
+ $(".bt-w-menu .active").attr('onclick', "phpTimeLimit('" + version + "'," + max + ")");
+ $(".bt-w-menu .active a").attr('href', "javascript:phpTimeLimit('" + version + "'," + max + ");");
+ layer.close(loadT);
+ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ });
+}
+//设置PHP上传限制
+function SetPHPMaxSize(version) {
+ max = $(".phpUploadLimit").val();
+ if (max < 2) {
+ alert(max);
+ layer.msg(lan.soft.php_upload_size, { icon: 2 });
+ return;
+ }
+ var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=setPHPMaxSize', '&version=' + version + '&max=' + max, function(rdata) {
+ $(".bt-w-menu .active").attr('onclick', "phpUploadLimit('" + version + "'," + max + ")");
+ $(".bt-w-menu .active a").attr('href', "javascript:phpUploadLimit('" + version + "'," + max + ");");
+ layer.close(loadT);
+ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ })
+}
+//配置修改
+function configChange(type) {
+ var con = '' + lan.bt.edit_ps + '
\
+ ' + lan.public.save + ' \
\
- 此处为redis主配置文件,若您不了解配置规则,请勿随意修改。 \
+ ' + lan.get('config_edit_ps', [type]) + ' \
';
- $(".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 = '' +
+ '
' +
+ '' +
+ '' +
+ '' + lan.soft.php_ext_name + ' ' +
+ '' + lan.soft.php_ext_type + ' ' +
+ '' + lan.soft.php_ext_ps + ' ' +
+ '' + lan.soft.php_ext_status + ' ' +
+ '' + lan.public.action + ' ' +
+ ' ' +
+ ' ' +
+ '' + pathinfo1 + body + ' ' +
+ '
' +
+ '
' +
+ '请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常 Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常 ';
+ var divObj = document.getElementById('phpextdiv');
+ var scrollTopNum = 0;
+ if (divObj) scrollTopNum = divObj.scrollTop;
+ $(".soft-man-con").html(con);
+ document.getElementById('phpextdiv').scrollTop = scrollTopNum;
+ });
+
+ if (go == undefined) {
+ setTimeout(function() {
+ if ($(".bgw #phpext").html() != '安装扩展') {
+ return;
+ }
+ SetPHPConfig(version, pathinfo);
+ }, 3000);
+ }
+}
+
+//安装扩展
+function InstallPHPLib(version, name, title, pathinfo) {
+ layer.confirm(lan.soft.php_ext_install_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
+ name = name.toLowerCase();
+ var data = "name=" + name + "&version=" + version + "&type=1";
+ var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/files?action=InstallSoft', data, function(rdata) {
+ setTimeout(function() {
+ layer.close(loadT);
+ SetPHPConfig(version, pathinfo, true);
+ setTimeout(function() {
+ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ }, 1000);
+ }, 1000);
+ });
+
+ fly("bi-btn");
+ InstallTips();
+ GetTaskCount();
+ });
+}
+
+//卸载扩展
+function UninstallPHPLib(version, name, title, pathinfo) {
+ layer.confirm(lan.soft.php_ext_uninstall_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
+ name = name.toLowerCase();
+ var data = 'name=' + name + '&version=' + version;
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/files?action=UninstallSoft', data, function(rdata) {
+ layer.close(loadT);
+ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ SetPHPConfig(version, pathinfo, true);
+ });
+ });
+}
+//禁用函数
+function disFun(version) {
+ $.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
+ var disable_functions = rdata.disable_functions.split(',');
+ var dbody = ''
+ for (var i = 0; i < disable_functions.length; i++) {
+ if (disable_functions[i] == '') continue;
+ dbody += "" + disable_functions[i] + " " + lan.public.del + " ";
+ }
+
+ var con = "" +
+ " " +
+ "" + lan.public.add + " " +
+ "
" +
+ "" +
+ "" + lan.soft.php_ext_name + " " + lan.public.action + " " +
+ "" + dbody + " " +
+ "
";
+
+ con += '\
+ \
+ ' + lan.soft.fun_ps2 + ' \
+ ' + lan.soft.fun_ps3 + ' \
+ ';
+
+ $(".soft-man-con").html(con);
+ });
+}
+//设置禁用函数
+function disable_functions(version, act, fs) {
+ var fsArr = fs.split(',');
+ if (act == 1) {
+ var functions = $("#disable_function_val").val();
+ for (var i = 0; i < fsArr.length; i++) {
+ if (functions == fsArr[i]) {
+ layer.msg(lan.soft.fun_msg, { icon: 5 });
+ return;
+ }
+ }
+ fs += ',' + functions;
+ msg = lan.public.add_success;
+ } else {
+
+ fs = '';
+ for (var i = 0; i < fsArr.length; i++) {
+ if (act == fsArr[i]) continue;
+ fs += fsArr[i] + ','
+ }
+ msg = lan.public.del_success;
+ fs = fs.substr(0, fs.length - 1);
+ }
+
+ var data = 'version=' + version + '&disable_functions=' + fs;
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=setPHPDisable', data, function(rdata) {
+ layer.close(loadT);
+ layer.msg(rdata.status ? msg : rdata.msg, { icon: rdata.status ? 1 : 2 });
+ disFun(version);
+ });
+}
+//性能调整
+function SetFpmConfig(version, action) {
+ if (action == 1) {
+ $.post('/system?action=GetMemInfo', '', function(memInfo) {
+ var limit_children = parseInt(memInfo['memTotal'] / 8);
+ var max_children = Number($("input[name='max_children']").val());
+ var start_servers = Number($("input[name='start_servers']").val());
+ var min_spare_servers = Number($("input[name='min_spare_servers']").val());
+ var max_spare_servers = Number($("input[name='max_spare_servers']").val());
+ var pm = $("select[name='pm']").val();
+
+ if (limit_children < max_children) {
+ layer.msg('当前服务器内存不足,最大允许[' + limit_children + ']个子进程!', { icon: 2 });
+ $("input[name='max_children']").focus();
+ return;
+ }
+
+ if (max_children < max_spare_servers) {
+ layer.msg(lan.soft.php_fpm_err1, { icon: 2 });
+ return;
+ }
+
+ if (min_spare_servers > start_servers) {
+ layer.msg(lan.soft.php_fpm_err2, { icon: 2 });
+ return;
+ }
+
+ if (max_spare_servers < min_spare_servers) {
+ layer.msg(lan.soft.php_fpm_err3, { icon: 2 });
+ return;
+ }
+
+ if (max_children < start_servers) {
+ layer.msg(lan.soft.php_fpm_err4, { icon: 2 });
+ return;
+ }
+
+ if (max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1) {
+ layer.msg(lan.soft.php_fpm_err5, { icon: 2 });
+ return;
+ }
+ var data = 'version=' + version + '&max_children=' + max_children + '&start_servers=' + start_servers + '&min_spare_servers=' + min_spare_servers + '&max_spare_servers=' + max_spare_servers + '&pm=' + pm;
+ var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.post('/config?action=setFpmConfig', data, function(rdata) {
+ layer.close(loadT);
+ var loadT = layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
+ }).error(function() {
+ layer.close(loadT);
+ layer.msg(lan.public.config_ok, { icon: 1 });
+ });
+ });
+ return;
+ }
+
+ $.post('/config?action=getFpmConfig', 'version=' + version, function(rdata) {
+
+ var limitList = "" + lan.soft.concurrency_m + " " +
+ "30" + lan.soft.concurrency + " " +
+ "50" + lan.soft.concurrency + " " +
+ "100" + lan.soft.concurrency + " " +
+ "200" + lan.soft.concurrency + " " +
+ "300" + lan.soft.concurrency + " " +
+ "500" + lan.soft.concurrency + " "
+ var pms = [{ 'name': 'static', 'title': lan.bt.static }, { 'name': 'dynamic', 'title': lan.bt.dynamic }];
+ var pmList = '';
+ for (var i = 0; i < pms.length; i++) {
+ pmList += '' + pms[i].title + ' ';
+ }
+ var body = "" +
+ "
" + lan.soft.concurrency_type + ": " + limitList + "
" +
+ "
" + lan.soft.php_fpm_model + ": " + pmList + " *" + lan.soft.php_fpm_ps1 + "
" +
+ "
max_children: *" + lan.soft.php_fpm_ps2 + "
" +
+ "
start_servers: *" + lan.soft.php_fpm_ps3 + "
" +
+ "
min_spare_servers: *" + lan.soft.php_fpm_ps4 + "
" +
+ "
max_spare_servers: *" + lan.soft.php_fpm_ps5 + "
" +
+ "
" + lan.public.save + "
" +
+ "
"
+
+ $(".soft-man-con").html(body);
+ $("select[name='limit']").change(function() {
+ var type = $(this).val();
+ var max_children = rdata.max_children;
+ var start_servers = rdata.start_servers;
+ var min_spare_servers = rdata.min_spare_servers;
+ var max_spare_servers = rdata.max_spare_servers;
+ switch (type) {
+ case '1':
+ max_children = 30;
+ start_servers = 5;
+ min_spare_servers = 5;
+ max_spare_servers = 20;
+ break;
+ case '2':
+ max_children = 50;
+ start_servers = 15;
+ min_spare_servers = 15;
+ max_spare_servers = 35;
+ break;
+ case '3':
+ max_children = 100;
+ start_servers = 20;
+ min_spare_servers = 20;
+ max_spare_servers = 70;
+ break;
+ case '4':
+ max_children = 200;
+ start_servers = 25;
+ min_spare_servers = 25;
+ max_spare_servers = 150;
+ break;
+ case '5':
+ max_children = 300;
+ start_servers = 30;
+ min_spare_servers = 30;
+ max_spare_servers = 180;
+ break;
+ case '6':
+ max_children = 500;
+ start_servers = 35;
+ min_spare_servers = 35;
+ max_spare_servers = 250;
+ break;
+ }
+
+ $("input[name='max_children']").val(max_children);
+ $("input[name='start_servers']").val(start_servers);
+ $("input[name='min_spare_servers']").val(min_spare_servers);
+ $("input[name='max_spare_servers']").val(max_spare_servers);
+ });
});
- $.post('/files/save_body', 'data=' + data + '&path=' + fileName + '&encoding=' + encoding, function(rdata) {
+}
+
+//phpinfo
+function BtPhpinfo(version) {
+ var con = '' + lan.soft.phpinfo + ' ';
+ $(".soft-man-con").html(con);
+}
+//获取PHPInfo
+function GetPHPInfo(version) {
+ var loadT = layer.msg(lan.soft.get, { icon: 16, time: 0, shade: [0.3, '#000'] });
+ $.get('/ajax?action=GetPHPInfo&version=' + version, function(rdata) {
layer.close(loadT);
- layer.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' + lan.public.save + '
';
+ $(".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.public.save + ' \
+
\
+ \
+ ' + lan.soft.pma_pass + ' \
+ \
+ \
+ \
+
\
+ \
+
' + lan.soft.pma_user + '
\
+
' + lan.soft.pma_pass1 + '
\
+
' + lan.soft.pma_pass2 + '
\
+
' + lan.public.save + '
\
+
\
+ ';
+ $(".soft-man-con").html(con);
+ if (auth) {
+ $(".user_pw").show();
+ }
+}
+
+
+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 + " ";
+ var optionSelect = '';
+ for (var i = 0; i < rdata.length; i++) {
+ optionSelect = rdata[i].version == version ? 'selected' : '';
+ body += "" + rdata[i].name + " "
+ }
+ body += ' ' + lan.public.save + '
';
+ $(".soft-man-con").html(body);
+ })
+}
+//修改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: ''
- });
- if (name == "52") {
- $(".phphide").hide();
- }
-
- if (rdata.versions.length < 5) {
- $(".phphide").hide();
- $(".pstate").hide();
- SetPHPConfig(name, nameA.pathinfo);
- $("p[data-id='4']").addClass('bgw');
- } else {
- service(name, nameA.run);
- }
-
- $(".bt-w-menu p a").click(function() {
- var txt = $(this).text();
- $(this).parent().addClass("bgw").siblings().removeClass("bgw");
- if (txt != lan.soft.php_menu_ext) $(".soft-man-con").removeAttr("style");
- });
- $(".soft-man-menu").dragsort({ dragSelector: ".spanmove", dragEnd: MenusaveOrder });
- });
-}
-
-//FPM日志
-function GetFpmLogs(phpversion) {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.get('/ajax?action=GetFpmLogs&version=' + phpversion, function(logs) {
- layer.close(loadT);
- if (logs.status !== true) {
- logs.msg = '';
- }
- if (logs.msg == '') logs.msg = '当前没有fpm日志.';
- var phpCon = '';
- $(".soft-man-con").html(phpCon);
- var ob = document.getElementById('error_log');
- ob.scrollTop = ob.scrollHeight;
- });
-}
-
-//FPM-Slow日志
-function GetFpmSlowLogs(phpversion) {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.get('/ajax?action=GetFpmSlowLogs&version=' + phpversion, function(logs) {
- layer.close(loadT);
- if (logs.status !== true) {
- logs.msg = '';
- }
- if (logs.msg == '') logs.msg = '当前没有慢日志.';
- var phpCon = '';
- $(".soft-man-con").html(phpCon);
- var ob = document.getElementById('error_log');
- ob.scrollTop = ob.scrollHeight;
- });
-}
-
-
-//配置修改
-function SetPHPConf(version) {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=GetPHPConf', 'version=' + version, function(rdata) {
- layer.close(loadT);
- var mlist = '';
- for (var i = 0; i < rdata.length; i++) {
- var w = '70'
- if (rdata[i].name == 'error_reporting') w = '250';
- var ibody = ' ';
- switch (rdata[i].type) {
- case 0:
- var selected_1 = (rdata[i].value == 1) ? 'selected' : '';
- var selected_0 = (rdata[i].value == 0) ? 'selected' : '';
- ibody = '开启 关闭 '
- break;
- case 1:
- var selected_1 = (rdata[i].value == 'On') ? 'selected' : '';
- var selected_0 = (rdata[i].value == 'Off') ? 'selected' : '';
- ibody = '开启 关闭 '
- break;
- }
- mlist += '' + rdata[i].name + ' ' + ibody + ', ' + rdata[i].ps + '
'
- }
- var phpCon = '\
- ' + mlist + '\
-
' + lan.public.fresh + ' ' + lan.public.save + '
\
-
'
- $(".soft-man-con").html(phpCon);
- });
-}
-
-
-//提交PHP配置
-function SubmitPHPConf(version) {
- var data = {
- version: version,
- display_errors: $("select[name='display_errors']").val(),
- 'cgi.fix_pathinfo': $("select[name='cgi.fix_pathinfo']").val(),
- 'date.timezone': $("input[name='date.timezone']").val(),
- short_open_tag: $("select[name='short_open_tag']").val(),
- asp_tags: $("select[name='asp_tags']").val() || 'On',
- safe_mode: $("select[name='safe_mode']").val(),
- max_execution_time: $("input[name='max_execution_time']").val(),
- max_input_time: $("input[name='max_input_time']").val(),
- memory_limit: $("input[name='memory_limit']").val(),
- post_max_size: $("input[name='post_max_size']").val(),
- file_uploads: $("select[name='file_uploads']").val(),
- upload_max_filesize: $("input[name='upload_max_filesize']").val(),
- max_file_uploads: $("input[name='max_file_uploads']").val(),
- default_socket_timeout: $("input[name='default_socket_timeout']").val(),
- error_reporting: $("input[name='error_reporting']").val() || 'On'
- }
-
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=SetPHPConf', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
function MenusaveOrder() {
var data = $(".soft-man-menu > p").map(function() { return $(this).attr("data-id"); }).get();
@@ -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) + '
\
- \
- ' + (status ? lan.soft.stop : lan.soft.start) + ' \
- ' + lan.soft.restart + ' \
- ' + lan.soft.reload + ' \
-
';
- $(".soft-man-con").html(serviceCon);
- var help = '' + lan.soft.mysql_mem_err + ' ';
- if (name == 'mysqld') {
- $(".soft-man-con").append(help);
- }
-}
-
-
-//php上传限制
-function phpUploadLimit(version, max) {
- var LimitCon = ' MB' + lan.public.save + '
';
- $(".soft-man-con").html(LimitCon);
-}
-//php超时限制
-function phpTimeLimit(version, max) {
- var LimitCon = ' ' + lan.bt.s + '' + lan.public.save + '
';
- $(".soft-man-con").html(LimitCon);
-}
-//设置超时限制
-function SetPHPMaxTime(version) {
- var max = $(".phpTimeLimit").val();
- var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=setPHPMaxTime', 'version=' + version + '&time=' + max, function(rdata) {
- $(".bt-w-menu .active").attr('onclick', "phpTimeLimit('" + version + "'," + max + ")");
- $(".bt-w-menu .active a").attr('href', "javascript:phpTimeLimit('" + version + "'," + max + ");");
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
-//设置PHP上传限制
-function SetPHPMaxSize(version) {
- max = $(".phpUploadLimit").val();
- if (max < 2) {
- alert(max);
- layer.msg(lan.soft.php_upload_size, { icon: 2 });
- return;
- }
- var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=setPHPMaxSize', '&version=' + version + '&max=' + max, function(rdata) {
- $(".bt-w-menu .active").attr('onclick', "phpUploadLimit('" + version + "'," + max + ")");
- $(".bt-w-menu .active a").attr('href', "javascript:phpUploadLimit('" + version + "'," + max + ");");
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- })
-}
-//配置修改
-function configChange(type) {
- var con = '' + lan.bt.edit_ps + '
\
- ' + lan.public.save + ' \
- \
- ' + lan.get('config_edit_ps', [type]) + ' \
- ';
- $(".soft-man-con").html(con);
- var fileName = '';
- switch (type) {
- case 'mysqld':
- fileName = '/etc/my.cnf';
- break;
- case 'nginx':
- fileName = '/www/server/nginx/conf/nginx.conf';
- break;
- case 'pure-ftpd':
- fileName = '/www/server/pure-ftpd/etc/pure-ftpd.conf';
- break;
- case 'apache':
- fileName = '/www/server/apache/conf/httpd.conf';
- break;
- case 'tomcat':
- fileName = '/www/server/tomcat/conf/server.xml';
- break;
- case 'memcached':
- fileName = '/etc/init.d/memcached';
- break;
- case 'redis':
- fileName = '/www/server/redis/redis.conf';
- break;
- default:
- fileName = '/www/server/php/' + type + '/etc/php.ini';
- break;
- }
- var loadT = layer.msg(lan.soft.get, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/files?action=GetFileBody', 'path=' + fileName, function(rdata) {
- layer.close(loadT);
- $("#textBody").empty().text(rdata.data);
- $(".CodeMirror").remove();
- var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), {
- extraKeys: { "Ctrl-Space": "autocomplete" },
- lineNumbers: true,
- matchBrackets: true,
- });
- editor.focus();
- $(".CodeMirror-scroll").css({ "height": "300px", "margin": 0, "padding": 0 });
- $("#OnlineEditFileBtn").click(function() {
- $("#textBody").text(editor.getValue());
- confSafe(fileName);
- });
- });
-}
-
-
-
-//设置PATHINFO
-function SetPathInfo(version, type) {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=setPathInfo', 'version=' + version + '&type=' + type, function(rdata) {
- var pathinfo = (type == 'on') ? true : false;
- var pathinfoOpt = '' + lan.public.off + ' '
- if (!pathinfo) {
- pathinfoOpt = '' + lan.public.on + ' '
- }
- var pathinfo1 = 'PATH_INFO ' + lan.soft.php_menu_ext + ' ' + lan.soft.mvc_ps + ' ' + pathinfoOpt + ' ';
- $("#pathInfo").html(pathinfo1);
- $(".bt-w-menu .bgw").attr('onclick', "SetPHPConfig('" + version + "'," + pathinfo + ",1)");
- $(".bt-w-menu .bgw a").attr('href', "javascript:SetPHPConfig('" + version + "'," + pathinfo + ",1);");
- layer.msg(rdata.msg, { icon: 1 });
- });
-}
-
-
-//PHP扩展配置
-function SetPHPConfig(version, pathinfo, go) {
- $.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
- var body = ""
- var opt = ""
- for (var i = 0; i < rdata.libs.length; i++) {
- if (rdata.libs[i].versions.indexOf(version) == -1) continue;
- if (rdata.libs[i]['task'] == '-1' && rdata.libs[i].phpversions.indexOf(version) != -1) {
- opt = '' + lan.soft.the_install + ' '
- } else if (rdata.libs[i]['task'] == '0' && rdata.libs[i].phpversions.indexOf(version) != -1) {
- opt = '' + lan.soft.sleep_install + ' '
- } else if (rdata.libs[i].status) {
- opt = '' + lan.soft.uninstall + ' '
- } else {
- opt = '' + lan.soft.install + ' '
- }
-
- body += '' +
- '' + rdata.libs[i].name + ' ' +
- '' + rdata.libs[i].type + ' ' +
- '' + rdata.libs[i].msg + ' ' +
- ' ' +
- '' + opt + ' ' +
- ' '
- }
- var pathinfoOpt = '' + lan.soft.off + ' '
- if (!rdata.pathinfo) {
- pathinfoOpt = '' + lan.soft.on + ' '
- }
- var pathinfo1 = 'PATH_INFO ' + lan.soft.php_menu_ext + ' ' + lan.soft.mvc_ps + ' ' + pathinfoOpt + ' ';
- var con = '' +
- '
' +
- '' +
- '' +
- '' + lan.soft.php_ext_name + ' ' +
- '' + lan.soft.php_ext_type + ' ' +
- '' + lan.soft.php_ext_ps + ' ' +
- '' + lan.soft.php_ext_status + ' ' +
- '' + lan.public.action + ' ' +
- ' ' +
- ' ' +
- '' + pathinfo1 + body + ' ' +
- '
' +
- '
' +
- '请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常 Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常 ';
- var divObj = document.getElementById('phpextdiv');
- var scrollTopNum = 0;
- if (divObj) scrollTopNum = divObj.scrollTop;
- $(".soft-man-con").html(con);
- document.getElementById('phpextdiv').scrollTop = scrollTopNum;
- });
-
- if (go == undefined) {
- setTimeout(function() {
- if ($(".bgw #phpext").html() != '安装扩展') {
- return;
- }
- SetPHPConfig(version, pathinfo);
- }, 3000);
- }
-}
-
-//安装扩展
-function InstallPHPLib(version, name, title, pathinfo) {
- layer.confirm(lan.soft.php_ext_install_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
- name = name.toLowerCase();
- var data = "name=" + name + "&version=" + version + "&type=1";
- var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/files?action=InstallSoft', data, function(rdata) {
- setTimeout(function() {
- layer.close(loadT);
- SetPHPConfig(version, pathinfo, true);
- setTimeout(function() {
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- }, 1000);
- }, 1000);
- });
-
- fly("bi-btn");
- InstallTips();
- GetTaskCount();
- });
-}
-
-//卸载扩展
-function UninstallPHPLib(version, name, title, pathinfo) {
- layer.confirm(lan.soft.php_ext_uninstall_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
- name = name.toLowerCase();
- var data = 'name=' + name + '&version=' + version;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/files?action=UninstallSoft', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- SetPHPConfig(version, pathinfo, true);
- });
- });
-}
-//禁用函数
-function disFun(version) {
- $.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
- var disable_functions = rdata.disable_functions.split(',');
- var dbody = ''
- for (var i = 0; i < disable_functions.length; i++) {
- if (disable_functions[i] == '') continue;
- dbody += "" + disable_functions[i] + " " + lan.public.del + " ";
- }
-
- var con = "" +
- " " +
- "" + lan.public.add + " " +
- "
" +
- "" +
- "" + lan.soft.php_ext_name + " " + lan.public.action + " " +
- "" + dbody + " " +
- "
";
-
- con += '\
- \
- ' + lan.soft.fun_ps2 + ' \
- ' + lan.soft.fun_ps3 + ' \
- ';
-
- $(".soft-man-con").html(con);
- });
-}
-//设置禁用函数
-function disable_functions(version, act, fs) {
- var fsArr = fs.split(',');
- if (act == 1) {
- var functions = $("#disable_function_val").val();
- for (var i = 0; i < fsArr.length; i++) {
- if (functions == fsArr[i]) {
- layer.msg(lan.soft.fun_msg, { icon: 5 });
- return;
- }
- }
- fs += ',' + functions;
- msg = lan.public.add_success;
- } else {
-
- fs = '';
- for (var i = 0; i < fsArr.length; i++) {
- if (act == fsArr[i]) continue;
- fs += fsArr[i] + ','
- }
- msg = lan.public.del_success;
- fs = fs.substr(0, fs.length - 1);
- }
-
- var data = 'version=' + version + '&disable_functions=' + fs;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=setPHPDisable', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.status ? msg : rdata.msg, { icon: rdata.status ? 1 : 2 });
- disFun(version);
- });
-}
-//性能调整
-function SetFpmConfig(version, action) {
- if (action == 1) {
- $.post('/system?action=GetMemInfo', '', function(memInfo) {
- var limit_children = parseInt(memInfo['memTotal'] / 8);
- var max_children = Number($("input[name='max_children']").val());
- var start_servers = Number($("input[name='start_servers']").val());
- var min_spare_servers = Number($("input[name='min_spare_servers']").val());
- var max_spare_servers = Number($("input[name='max_spare_servers']").val());
- var pm = $("select[name='pm']").val();
-
- if (limit_children < max_children) {
- layer.msg('当前服务器内存不足,最大允许[' + limit_children + ']个子进程!', { icon: 2 });
- $("input[name='max_children']").focus();
- return;
- }
-
- if (max_children < max_spare_servers) {
- layer.msg(lan.soft.php_fpm_err1, { icon: 2 });
- return;
- }
-
- if (min_spare_servers > start_servers) {
- layer.msg(lan.soft.php_fpm_err2, { icon: 2 });
- return;
- }
-
- if (max_spare_servers < min_spare_servers) {
- layer.msg(lan.soft.php_fpm_err3, { icon: 2 });
- return;
- }
-
- if (max_children < start_servers) {
- layer.msg(lan.soft.php_fpm_err4, { icon: 2 });
- return;
- }
-
- if (max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1) {
- layer.msg(lan.soft.php_fpm_err5, { icon: 2 });
- return;
- }
- var data = 'version=' + version + '&max_children=' + max_children + '&start_servers=' + start_servers + '&min_spare_servers=' + min_spare_servers + '&max_spare_servers=' + max_spare_servers + '&pm=' + pm;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/config?action=setFpmConfig', data, function(rdata) {
- layer.close(loadT);
- var loadT = layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- }).error(function() {
- layer.close(loadT);
- layer.msg(lan.public.config_ok, { icon: 1 });
- });
- });
- return;
- }
-
- $.post('/config?action=getFpmConfig', 'version=' + version, function(rdata) {
-
- var limitList = "" + lan.soft.concurrency_m + " " +
- "30" + lan.soft.concurrency + " " +
- "50" + lan.soft.concurrency + " " +
- "100" + lan.soft.concurrency + " " +
- "200" + lan.soft.concurrency + " " +
- "300" + lan.soft.concurrency + " " +
- "500" + lan.soft.concurrency + " "
- var pms = [{ 'name': 'static', 'title': lan.bt.static }, { 'name': 'dynamic', 'title': lan.bt.dynamic }];
- var pmList = '';
- for (var i = 0; i < pms.length; i++) {
- pmList += '' + pms[i].title + ' ';
- }
- var body = "" +
- "
" + lan.soft.concurrency_type + ": " + limitList + "
" +
- "
" + lan.soft.php_fpm_model + ": " + pmList + " *" + lan.soft.php_fpm_ps1 + "
" +
- "
max_children: *" + lan.soft.php_fpm_ps2 + "
" +
- "
start_servers: *" + lan.soft.php_fpm_ps3 + "
" +
- "
min_spare_servers: *" + lan.soft.php_fpm_ps4 + "
" +
- "
max_spare_servers: *" + lan.soft.php_fpm_ps5 + "
" +
- "
" + lan.public.save + "
" +
- "
"
-
- $(".soft-man-con").html(body);
- $("select[name='limit']").change(function() {
- var type = $(this).val();
- var max_children = rdata.max_children;
- var start_servers = rdata.start_servers;
- var min_spare_servers = rdata.min_spare_servers;
- var max_spare_servers = rdata.max_spare_servers;
- switch (type) {
- case '1':
- max_children = 30;
- start_servers = 5;
- min_spare_servers = 5;
- max_spare_servers = 20;
- break;
- case '2':
- max_children = 50;
- start_servers = 15;
- min_spare_servers = 15;
- max_spare_servers = 35;
- break;
- case '3':
- max_children = 100;
- start_servers = 20;
- min_spare_servers = 20;
- max_spare_servers = 70;
- break;
- case '4':
- max_children = 200;
- start_servers = 25;
- min_spare_servers = 25;
- max_spare_servers = 150;
- break;
- case '5':
- max_children = 300;
- start_servers = 30;
- min_spare_servers = 30;
- max_spare_servers = 180;
- break;
- case '6':
- max_children = 500;
- start_servers = 35;
- min_spare_servers = 35;
- max_spare_servers = 250;
- break;
- }
-
- $("input[name='max_children']").val(max_children);
- $("input[name='start_servers']").val(start_servers);
- $("input[name='min_spare_servers']").val(min_spare_servers);
- $("input[name='max_spare_servers']").val(max_spare_servers);
- });
- });
-}
-
-//phpinfo
-function BtPhpinfo(version) {
- var con = '' + lan.soft.phpinfo + ' ';
- $(".soft-man-con").html(con);
-}
-//获取PHPInfo
-function GetPHPInfo(version) {
- var loadT = layer.msg(lan.soft.get, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.get('/ajax?action=GetPHPInfo&version=' + version, function(rdata) {
- layer.close(loadT);
- layer.open({
- type: 1,
- title: "PHP-" + version + "-PHPINFO",
- area: ['70%', '90%'],
- closeBtn: 2,
- shadeClose: true,
- content: rdata.replace('a:link {color: #009; text-decoration: none; background-color: #fff;}', '').replace('a:link {color: #000099; text-decoration: none; background-color: #ffffff;}', '')
- });
- });
-}
//nginx
function nginxSoftMain(name, version) {
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
@@ -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 = ''
- $(".soft-man-con").html(memCon);
- });
-}
-
-//memcached提交配置
-function SetMemcachedConf() {
- var data = {
- ip: $("input[name='membind']").val(),
- port: $("input[name='memport']").val(),
- cachesize: $("input[name='memcachesize']").val(),
- maxconn: $("input[name='memmaxconn']").val()
- }
-
- if (data.ip.split('.').length < 4) {
- layer.msg('IP地址格式不正确!', { icon: 2 });
- return;
- }
-
- if (data.port < 1 || data.port > 65535) {
- layer.msg('端口范围不正确!', { icon: 2 });
- return;
- }
-
- if (data.cachesize < 8) {
- layer.msg('缓存值过小', { icon: 2 });
- return;
- }
-
- if (data.maxconn < 4) {
- layer.msg('最大连接数过小', { icon: 2 });
- return;
- }
- var loadT = layer.msg('正在保存...', { icon: 16, time: 0, shade: 0.3 });
- $.post('/ajax?action=SetMemcachedCache', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
-
-//数据库存储信置
-function changeMySQLDataPath(act) {
- if (act != undefined) {
- layer.confirm(lan.soft.mysql_to_msg, { closeBtn: 2, icon: 3 }, function() {
- var datadir = $("#datadir").val();
- var data = 'datadir=' + datadir;
- var loadT = layer.msg(lan.soft.mysql_to_msg1, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/database?action=SetDataDir', data, function(rdata) {
- layer.close(loadT)
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
- });
- });
- return;
- }
-
- $.post('/database?action=GetMySQLInfo', '', function(rdata) {
- var LimitCon = '\
- \
- ' + lan.soft.mysql_to + ' \
-
';
- $(".soft-man-con").html(LimitCon);
- });
-}
-
-//MySQL-Slow日志
-function mysqlSlowLog() {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/database?action=GetSlowLogs', {}, function(logs) {
- layer.close(loadT);
- if (logs.status !== true) {
- logs.msg = '';
- }
- if (logs.msg == '') logs.msg = '当前没有慢日志.';
- var phpCon = '';
- $(".soft-man-con").html(phpCon);
- var ob = document.getElementById('error_log');
- ob.scrollTop = ob.scrollHeight;
- });
-}
-
-//数据库日志
-function mysqlLog(act) {
- //获取二进制日志相关信息
- $.post('/database?action=BinLog', "status=1", function(rdata) {
- var limitCon = '\
- ' + lan.soft.mysql_log_bin + ' ' + ToSize(rdata.msg) + ' \
- ' + (rdata.status ? lan.soft.off : lan.soft.on) + ' \
-
' + lan.soft.mysql_log_err + '' + lan.soft.mysql_log_close + '
\
- \
- '
-
- $(".soft-man-con").html(limitCon);
-
- //获取错误日志
- $.post('/database?action=GetErrorLog', "", function(error_body) {
- if (error_body.status === false) {
- layer.msg(error_body.msg, { icon: 5 });
- error_body = lan.soft.mysql_log_ps1;
- }
- if (error_body == "") error_body = lan.soft.mysql_log_ps1;
- $("#error_log").text(error_body);
- var ob = document.getElementById('error_log');
- ob.scrollTop = ob.scrollHeight;
- });
- });
-}
-
-//取数据库运行状态
-function mysqlRunStatus() {
- $.post('/database?action=GetRunStatus', "", function(rdata) {
- var cache_size = ((parseInt(rdata.Qcache_hits) / (parseInt(rdata.Qcache_hits) + parseInt(rdata.Qcache_inserts))) * 100).toFixed(2) + '%';
- if (cache_size == 'NaN%') cache_size = 'OFF';
- var Con = '\
- \
- ' + lan.soft.mysql_status_title1 + ' ' + getLocalTime(rdata.Run) + ' ' + lan.soft.mysql_status_title5 + ' ' + parseInt(rdata.Questions / rdata.Uptime) + ' \
- ' + lan.soft.mysql_status_title2 + ' ' + rdata.Connections + ' ' + lan.soft.mysql_status_title6 + ' ' + parseInt((parseInt(rdata.Com_commit) + parseInt(rdata.Com_rollback)) / rdata.Uptime) + ' \
- ' + lan.soft.mysql_status_title3 + ' ' + ToSize(rdata.Bytes_sent) + ' ' + lan.soft.mysql_status_title7 + ' ' + rdata.File + ' \
- ' + lan.soft.mysql_status_title4 + ' ' + ToSize(rdata.Bytes_received) + ' ' + lan.soft.mysql_status_title8 + ' ' + rdata.Position + ' \
- \
-
\
-
\
- \
- \
- ' + lan.soft.mysql_status_title9 + ' ' + rdata.Threads_running + '/' + rdata.Max_used_connections + ' ' + lan.soft.mysql_status_ps1 + ' \
- ' + lan.soft.mysql_status_title10 + ' ' + ((1 - rdata.Threads_created / rdata.Connections) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps2 + ' \
- ' + lan.soft.mysql_status_title11 + ' ' + ((1 - rdata.Key_reads / rdata.Key_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps3 + ' \
- ' + lan.soft.mysql_status_title12 + ' ' + ((1 - rdata.Innodb_buffer_pool_reads / rdata.Innodb_buffer_pool_read_requests) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps4 + ' \
- ' + lan.soft.mysql_status_title13 + ' ' + cache_size + ' ' + lan.soft.mysql_status_ps5 + ' \
- ' + lan.soft.mysql_status_title14 + ' ' + ((rdata.Created_tmp_disk_tables / rdata.Created_tmp_tables) * 100).toFixed(2) + '% ' + lan.soft.mysql_status_ps6 + ' \
- ' + lan.soft.mysql_status_title15 + ' ' + rdata.Open_tables + ' ' + lan.soft.mysql_status_ps7 + ' \
- ' + lan.soft.mysql_status_title16 + ' ' + rdata.Select_full_join + ' ' + lan.soft.mysql_status_ps8 + ' \
- ' + lan.soft.mysql_status_title17 + ' ' + rdata.Select_range_check + ' ' + lan.soft.mysql_status_ps9 + ' \
- ' + lan.soft.mysql_status_title18 + ' ' + rdata.Sort_merge_passes + ' ' + lan.soft.mysql_status_ps10 + ' \
- ' + lan.soft.mysql_status_title19 + ' ' + rdata.Table_locks_waited + ' ' + lan.soft.mysql_status_ps11 + ' \
- \
-
'
- $(".soft-man-con").html(Con);
- });
-}
-
-//数据库配置状态
-function mysqlStatus() {
- //获取MySQL配置
- $.post('/database?action=GetDbStatus', "", function(rdata) {
- var key_buffer_size = ToSizeM(rdata.mem.key_buffer_size)
- var query_cache_size = ToSizeM(rdata.mem.query_cache_size)
- var tmp_table_size = ToSizeM(rdata.mem.tmp_table_size)
- var innodb_buffer_pool_size = ToSizeM(rdata.mem.innodb_buffer_pool_size)
- var innodb_additional_mem_pool_size = ToSizeM(rdata.mem.innodb_additional_mem_pool_size)
- var innodb_log_buffer_size = ToSizeM(rdata.mem.innodb_log_buffer_size)
-
- var sort_buffer_size = ToSizeM(rdata.mem.sort_buffer_size)
- var read_buffer_size = ToSizeM(rdata.mem.read_buffer_size)
- var read_rnd_buffer_size = ToSizeM(rdata.mem.read_rnd_buffer_size)
- var join_buffer_size = ToSizeM(rdata.mem.join_buffer_size)
- var thread_stack = ToSizeM(rdata.mem.thread_stack)
- var binlog_cache_size = ToSizeM(rdata.mem.binlog_cache_size)
-
- var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size
- var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size
- var memSize = a + rdata.mem.max_connections * b
-
-
- var memCon = '\
-
' + lan.soft.mysql_set_msg + ' \
- \
- ' + lan.soft.mysql_set_select + ' \
- 1-2GB \
- 2-4GB \
- 4-8GB \
- 8-16GB \
- 16-32GB \
- \
- ' + lan.soft.mysql_set_maxmem + ': MB\
-
\
-
key_buffer_size MB, ' + lan.soft.mysql_set_key_buffer_size + '
\
-
query_cache_size MB, ' + lan.soft.mysql_set_query_cache_size + '
\
-
tmp_table_size MB, ' + lan.soft.mysql_set_tmp_table_size + '
\
-
innodb_buffer_pool_size MB, ' + lan.soft.mysql_set_innodb_buffer_pool_size + '
\
-
innodb_log_buffer_size MB, ' + lan.soft.mysql_set_innodb_log_buffer_size + '
\
-
innodb_additional_mem_pool_size MB
\
-
sort_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_sort_buffer_size + '
\
-
read_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_buffer_size + '
\
-
read_rnd_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_read_rnd_buffer_size + '
\
-
join_buffer_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_join_buffer_size + '
\
-
thread_stack KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_thread_stack + '
\
-
binlog_cache_size KB * ' + lan.soft.mysql_set_conn + ', ' + lan.soft.mysql_set_binlog_cache_size + '
\
-
thread_cache_size ' + lan.soft.mysql_set_thread_cache_size + '
\
-
table_open_cache ' + lan.soft.mysql_set_table_open_cache + '
\
-
max_connections ' + lan.soft.mysql_set_max_connections + '
\
-
' + lan.soft.mysql_set_restart + ' ' + lan.public.save + '
\
-
'
-
- $(".soft-man-con").html(memCon);
-
- $(".conf_p input[name*='size'],.conf_p input[name='max_connections'],.conf_p input[name='thread_stack']").change(function() {
- ComMySqlMem();
- });
-
- $(".conf_p select[name='mysql_set']").change(function() {
- MySQLMemOpt($(this).val());
- ComMySqlMem();
- });
-
- });
-}
-
-//重启MySQL
-function ReBootMySqld() {
- var loadT = layer.msg(lan.get('service_the', [lan.bt.restart, 'MySQLd']), { icon: 16, time: 0, shade: 0.3 });
- $.post('/system?action=ServiceAdmin', 'name=mysqld&type=restart', function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
-
-//计算MySQL内存开销
-function ComMySqlMem() {
- var key_buffer_size = parseInt($("input[name='key_buffer_size']").val());
- var query_cache_size = parseInt($("input[name='query_cache_size']").val());
- var tmp_table_size = parseInt($("input[name='tmp_table_size']").val());
- var innodb_buffer_pool_size = parseInt($("input[name='innodb_buffer_pool_size']").val());
- var innodb_additional_mem_pool_size = parseInt($("input[name='innodb_additional_mem_pool_size']").val());
- var innodb_log_buffer_size = parseInt($("input[name='innodb_log_buffer_size']").val());
-
- var sort_buffer_size = $("input[name='sort_buffer_size']").val() / 1024;
- var read_buffer_size = $("input[name='read_buffer_size']").val() / 1024;
- var read_rnd_buffer_size = $("input[name='read_rnd_buffer_size']").val() / 1024;
- var join_buffer_size = $("input[name='join_buffer_size']").val() / 1024;
- var thread_stack = $("input[name='thread_stack']").val() / 1024;
- var binlog_cache_size = $("input[name='binlog_cache_size']").val() / 1024;
- var max_connections = $("input[name='max_connections']").val();
-
- var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size
- var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size
- var memSize = a + max_connections * b
- $("input[name='memSize']").val(memSize.toFixed(2));
-}
-
-//MySQL内存优化方案
-function MySQLMemOpt(opt) {
- var query_size = parseInt($("input[name='query_cache_size']").val());
- switch (opt) {
- case '1':
- $("input[name='key_buffer_size']").val(128);
- if (query_size) $("input[name='query_cache_size']").val(64);
- $("input[name='tmp_table_size']").val(64);
- $("input[name='innodb_buffer_pool_size']").val(256);
- $("input[name='sort_buffer_size']").val(768);
- $("input[name='read_buffer_size']").val(768);
- $("input[name='read_rnd_buffer_size']").val(512);
- $("input[name='join_buffer_size']").val(1024);
- $("input[name='thread_stack']").val(256);
- $("input[name='binlog_cache_size']").val(64);
- $("input[name='thread_cache_size']").val(64);
- $("input[name='table_open_cache']").val(128);
- $("input[name='max_connections']").val(100);
- break;
- case '2':
- $("input[name='key_buffer_size']").val(256);
- if (query_size) $("input[name='query_cache_size']").val(128);
- $("input[name='tmp_table_size']").val(384);
- $("input[name='innodb_buffer_pool_size']").val(384);
- $("input[name='sort_buffer_size']").val(768);
- $("input[name='read_buffer_size']").val(768);
- $("input[name='read_rnd_buffer_size']").val(512);
- $("input[name='join_buffer_size']").val(2048);
- $("input[name='thread_stack']").val(256);
- $("input[name='binlog_cache_size']").val(64);
- $("input[name='thread_cache_size']").val(96);
- $("input[name='table_open_cache']").val(192);
- $("input[name='max_connections']").val(200);
- break;
- case '3':
- $("input[name='key_buffer_size']").val(384);
- if (query_size) $("input[name='query_cache_size']").val(192);
- $("input[name='tmp_table_size']").val(512);
- $("input[name='innodb_buffer_pool_size']").val(512);
- $("input[name='sort_buffer_size']").val(1024);
- $("input[name='read_buffer_size']").val(1024);
- $("input[name='read_rnd_buffer_size']").val(768);
- $("input[name='join_buffer_size']").val(2048);
- $("input[name='thread_stack']").val(256);
- $("input[name='binlog_cache_size']").val(128);
- $("input[name='thread_cache_size']").val(128);
- $("input[name='table_open_cache']").val(384);
- $("input[name='max_connections']").val(300);
- break;
- case '4':
- $("input[name='key_buffer_size']").val(512);
- if (query_size) $("input[name='query_cache_size']").val(256);
- $("input[name='tmp_table_size']").val(1024);
- $("input[name='innodb_buffer_pool_size']").val(1024);
- $("input[name='sort_buffer_size']").val(2048);
- $("input[name='read_buffer_size']").val(2048);
- $("input[name='read_rnd_buffer_size']").val(1024);
- $("input[name='join_buffer_size']").val(4096);
- $("input[name='thread_stack']").val(384);
- $("input[name='binlog_cache_size']").val(192);
- $("input[name='thread_cache_size']").val(192);
- $("input[name='table_open_cache']").val(1024);
- $("input[name='max_connections']").val(400);
- break;
- case '5':
- $("input[name='key_buffer_size']").val(1024);
- if (query_size) $("input[name='query_cache_size']").val(384);
- $("input[name='tmp_table_size']").val(2048);
- $("input[name='innodb_buffer_pool_size']").val(4096);
- $("input[name='sort_buffer_size']").val(4096);
- $("input[name='read_buffer_size']").val(4096);
- $("input[name='read_rnd_buffer_size']").val(2048);
- $("input[name='join_buffer_size']").val(8192);
- $("input[name='thread_stack']").val(512);
- $("input[name='binlog_cache_size']").val(256);
- $("input[name='thread_cache_size']").val(256);
- $("input[name='table_open_cache']").val(2048);
- $("input[name='max_connections']").val(500);
- break;
- }
-}
-
-//设置MySQL配置参数
-function SetMySQLConf() {
- $.post('/system?action=GetMemInfo', '', function(memInfo) {
- //var memSize = memInfo['memTotal'];
- //var setSize = parseInt($("input[name='memSize']").val());
- //if(memSize < setSize){
- // var msg = lan.soft.mysql_set_err.replace('{1}',memSize).replace('{2}',setSize);
- // layer.msg(msg,{icon:2,time:5000});
- // return;
- //}
- var query_cache_size = parseInt($("input[name='query_cache_size']").val());
- var query_cache_type = 0;
- if (query_cache_size > 0) {
- query_cache_type = 1;
- }
- var data = {
- key_buffer_size: parseInt($("input[name='key_buffer_size']").val()),
- query_cache_size: query_cache_size,
- query_cache_type: query_cache_type,
- tmp_table_size: parseInt($("input[name='tmp_table_size']").val()),
- max_heap_table_size: parseInt($("input[name='tmp_table_size']").val()),
- innodb_buffer_pool_size: parseInt($("input[name='innodb_buffer_pool_size']").val()),
- innodb_log_buffer_size: parseInt($("input[name='innodb_log_buffer_size']").val()),
- sort_buffer_size: parseInt($("input[name='sort_buffer_size']").val()),
- read_buffer_size: parseInt($("input[name='read_buffer_size']").val()),
- read_rnd_buffer_size: parseInt($("input[name='read_rnd_buffer_size']").val()),
- join_buffer_size: parseInt($("input[name='join_buffer_size']").val()),
- thread_stack: parseInt($("input[name='thread_stack']").val()),
- binlog_cache_size: parseInt($("input[name='binlog_cache_size']").val()),
- thread_cache_size: parseInt($("input[name='thread_cache_size']").val()),
- table_open_cache: parseInt($("input[name='table_open_cache']").val()),
- max_connections: parseInt($("input[name='max_connections']").val())
- };
-
- $.post('/database?action=SetDbConf', data, function(rdata) {
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
- })
-}
-
//转换单们到MB
function ToSizeM(byteLen) {
var a = parseInt(byteLen) / 1024 / 1024;
return a || 0;
}
-//设置二进制日志
-function SetBinLog() {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3 });
- $.post('/database?action=BinLog', "", function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
- mysqlLog();
- });
-}
-
-//清空日志
-function closeMySqlLog() {
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3 });
- $.post('/database?action=GetErrorLog', "close=1", function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
- mysqlLog();
- });
-}
-
-//数据库端口
-function changeMySQLPort(act) {
- if (act != undefined) {
- layer.confirm(lan.soft.mysql_port_title, { closeBtn: 2, icon: 3 }, function() {
- var port = $("#dataport").val();
- var data = 'port=' + port;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/database?action=SetMySQLPort', data, function(rdata) {
- layer.close(loadT)
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
- });
- });
- return;
- }
-
- $.post('/database?action=GetMySQLInfo', '', function(rdata) {
- var LimitCon = '\
- \
- ' + lan.public.edit + ' \
-
';
-
- $(".soft-man-con").html(LimitCon);
- });
-}
-
-
-//软件切换版本
-function softChangeVer(name, version) {
- if (name == "mysqld") name = "mysql";
- var veropt = version.split("|");
- var SelectVersion = '';
- for (var i = 0; i < veropt.length; i++) {
- SelectVersion += '' + name + ' ' + veropt[i] + ' ';
- }
-
- var body = "" + lan.soft.select_version + " ";
- body += SelectVersion + ' ' + lan.soft.version_to + '
';
-
- if (name == 'mysql') {
- body += ""
- }
-
- $(".soft-man-con").html(body);
- $(".btn-success").click(function() {
- var ver = $("#selectVer").val();
- oneInstall(name, ver.split(" ")[1]);
- });
- selectChange();
-}
-
-//phpmyadmin切换php版本
-function phpVer(name, version) {
- $.post('/site?action=GetPHPVersion', function(rdata) {
- var body = "" + lan.soft.php_version + " ";
- var optionSelect = '';
- for (var i = 0; i < rdata.length; i++) {
- optionSelect = rdata[i].version == version ? 'selected' : '';
- body += "" + rdata[i].name + " "
- }
- body += ' ' + lan.public.save + '
';
- $(".soft-man-con").html(body);
- })
-}
-
-function phpVerChange(type, msg) {
- var data = type + '=' + $("#" + msg).val();
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
- layer.closeAll();
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- if (rdata.status) {
- setTimeout(function() {
- window.location.reload();
- }, 3000);
- }
- })
-}
-//phpmyadmin安全设置
-function safeConf(name, port, auth) {
- var con = '\
- ' + lan.soft.pma_port + ' \
- \
- ' + lan.public.save + ' \
-
\
- \
- ' + lan.soft.pma_pass + ' \
- \
- \
- \
-
\
- \
-
' + lan.soft.pma_user + '
\
-
' + lan.soft.pma_pass1 + '
\
-
' + lan.soft.pma_pass2 + '
\
-
' + lan.public.save + '
\
-
\
- ';
- $(".soft-man-con").html(con);
- if (auth) {
- $(".user_pw").show();
- }
-}
-
-
-//修改phpmyadmin端口
-function phpmyadminport() {
- var pmport = $("#pmport").val();
- if (pmport < 80 || pmport > 65535) {
- layer.msg(lan.firewall.port_err, { icon: 2 });
- return;
- }
- var data = 'port=' + pmport;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
-//phpmyadmin二级密码
-function phpmyadminSafe() {
- var stat = $("#phpmyadminsafe").prop("checked");
- if (stat) {
- $(".user_pw").hide();
- phpmyadmin('close');
- } else {
- $(".user_pw").show();
- }
-
-}
-
-
-//设置phpmyadmin二级密码
-function phpmyadmin(msg) {
- type = 'password';
- if (msg == 'close') {
- password_1 = msg;
- username = msg;
- layer.confirm(lan.soft.pma_pass_close, { closeBtn: 2, icon: 3 }, function() {
- var data = type + '=' + msg + '&siteName=phpmyadmin';
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
- });
- return;
- } else {
- username = $("#username_get").val()
- password_1 = $("#password_get_1").val()
- password_2 = $("#password_get_2").val()
- if (username.length < 1 || password_1.length < 1) {
- layer.msg(lan.soft.pma_pass_empty, { icon: 2 });
- return;
- }
- if (password_1 != password_2) {
- layer.msg(lan.bt.pass_err_re, { icon: 2 });
- return;
- }
- }
- msg = password_1 + '&username=' + username + '&siteName=phpmyadmin';
- var data = type + '=' + msg;
- var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
- $.post('/ajax?action=setPHPMyAdmin', data, function(rdata) {
- layer.close(loadT);
- layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
- });
-}
//首页软件列表
function indexsoft() {
@@ -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 = ""
-
- 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";