//软件管理 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('/plugin?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\ \
\ '+sdata+'\
\
\
\
\ ' }); if(name== "52"){ $(".phphide").hide(); } if(rdata.versions.length < 5){ $(".phphide").hide(); $(".pstate").hide(); SetPHPConfig(name,nameA.pathinfo); $("p[data-id='4']").addClass('bgw'); }else{ service(name,nameA.run); } $(".bt-w-menu p a").click(function(){ var txt = $(this).text(); $(this).parent().addClass("bgw").siblings().removeClass("bgw"); if(txt != lan.soft.php_menu_ext) $(".soft-man-con").removeAttr("style"); }); $(".soft-man-menu").dragsort({dragSelector: ".spanmove", dragEnd: MenusaveOrder}); }); } //FPM日志 function GetFpmLogs(phpversion){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/ajax?action=GetFpmLogs&version='+phpversion,function(logs){ layer.close(loadT); if(logs.status !== true){ logs.msg = ''; } if (logs.msg == '') logs.msg = '当前没有fpm日志.'; var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); } //FPM-Slow日志 function GetFpmSlowLogs(phpversion){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/ajax?action=GetFpmSlowLogs&version='+phpversion,function(logs){ layer.close(loadT); if(logs.status !== true){ logs.msg = ''; } if (logs.msg == '') logs.msg = '当前没有慢日志.'; var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); } //配置修改 function SetPHPConf(version){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=GetPHPConf','version='+version,function(rdata){ layer.close(loadT); var mlist = ''; for(var i=0;i'; switch(rdata[i].type){ case 0: var selected_1 = (rdata[i].value == 1)?'selected':''; var selected_0 = (rdata[i].value == 0)?'selected':''; ibody = '' break; case 1: var selected_1 = (rdata[i].value == 'On')?'selected':''; var selected_0 = (rdata[i].value == 'Off')?'selected':''; ibody = '' break; } mlist += '

'+rdata[i].name+''+ibody+', '+rdata[i].ps+'

' } var phpCon = '
\ '+mlist+'\
\
' $(".soft-man-con").html(phpCon); }); } //提交PHP配置 function SubmitPHPConf(version){ var data = { version:version, display_errors:$("select[name='display_errors']").val(), 'cgi.fix_pathinfo':$("select[name='cgi.fix_pathinfo']").val(), 'date.timezone':$("input[name='date.timezone']").val(), short_open_tag:$("select[name='short_open_tag']").val(), asp_tags:$("select[name='asp_tags']").val()||'On', safe_mode:$("select[name='safe_mode']").val(), max_execution_time:$("input[name='max_execution_time']").val(), max_input_time:$("input[name='max_input_time']").val(), memory_limit:$("input[name='memory_limit']").val(), post_max_size:$("input[name='post_max_size']").val(), file_uploads:$("select[name='file_uploads']").val(), upload_max_filesize:$("input[name='upload_max_filesize']").val(), max_file_uploads:$("input[name='max_file_uploads']").val(), default_socket_timeout:$("input[name='default_socket_timeout']").val(), error_reporting:$("input[name='error_reporting']").val()||'On' } var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=SetPHPConf',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } function MenusaveOrder() { var data = $(".soft-man-menu > p").map(function() { return $(this).attr("data-id"); }).get(); var ssort = data.join("|"); $("input[name=softMenuSortOrder]").val(ssort); $.post('/ajax?action=phpSort','ssort='+ssort,function(){}); }; //服务 function service(name,status){ if(status == 'false') status = false; if(status == 'true') status = true; var serviceCon ='

'+lan.soft.status+':'+(status?lan.soft.on:lan.soft.off)+'

\
\ \ \ \
'; $(".soft-man-con").html(serviceCon); var help = ''; if(name == 'mysqld'){ $(".soft-man-con").append(help); } } //更新软件列表 function updateSoftList(){ $.get('/plugin?action=getCloudPlugin',function(rdata){ }); } //php上传限制 function phpUploadLimit(version,max){ var LimitCon = '

MB

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

'+lan.bt.s+'

'; $(".soft-man-con").html(LimitCon); } //设置超时限制 function SetPHPMaxTime(version){ var max = $(".phpTimeLimit").val(); var loadT = layer.msg(lan.soft.the_save,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=setPHPMaxTime','version='+version+'&time='+max,function(rdata){ $(".bt-w-menu .active").attr('onclick',"phpTimeLimit('"+version+"',"+max+")"); $(".bt-w-menu .active a").attr('href',"javascript:phpTimeLimit('"+version+"',"+max+");"); layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //设置PHP上传限制 function SetPHPMaxSize(version){ max = $(".phpUploadLimit").val(); if(max < 2){ alert(max); layer.msg(lan.soft.php_upload_size,{icon:2}); return; } var loadT = layer.msg(lan.soft.the_save,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=setPHPMaxSize','&version='+version+'&max='+max,function(rdata){ $(".bt-w-menu .active").attr('onclick',"phpUploadLimit('"+version+"',"+max+")"); $(".bt-w-menu .active a").attr('href',"javascript:phpUploadLimit('"+version+"',"+max+");"); layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }) } //配置修改 function configChange(type){ var con = '

'+lan.bt.edit_ps+'

\ \ '; $(".soft-man-con").html(con); var fileName = ''; switch(type){ case 'mysqld': fileName = '/etc/my.cnf'; break; case 'nginx': fileName = '/www/server/nginx/conf/nginx.conf'; break; case 'pure-ftpd': fileName = '/www/server/pure-ftpd/etc/pure-ftpd.conf'; break; case 'apache': fileName = '/www/server/apache/conf/httpd.conf'; break; case 'tomcat': fileName = '/www/server/tomcat/conf/server.xml'; break; case 'memcached': fileName = '/etc/init.d/memcached'; break; case 'redis': fileName = '/www/server/redis/redis.conf'; break; default: fileName = '/www/server/php/'+type+'/etc/php.ini'; break; } var loadT = layer.msg(lan.soft.get,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/files?action=GetFileBody', 'path=' + fileName, function(rdata) { layer.close(loadT); $("#textBody").empty().text(rdata.data); $(".CodeMirror").remove(); var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), { extraKeys: {"Ctrl-Space": "autocomplete"}, lineNumbers: true, matchBrackets:true, }); editor.focus(); $(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0}); $("#OnlineEditFileBtn").click(function(){ $("#textBody").text(editor.getValue()); confSafe(fileName); }); }); } //配置保存 function confSafe(fileName){ var data = encodeURIComponent($("#textBody").val()); var encoding = 'utf-8'; var loadT = layer.msg(lan.soft.the_save, { icon: 16, time: 0 }); $.post('/files?action=SaveFileBody', 'data=' + data + '&path=' + fileName+'&encoding='+encoding, function(rdata) { layer.close(loadT); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); }); } //设置PATHINFO function SetPathInfo(version,type){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=setPathInfo','version='+version+'&type='+type,function(rdata){ var pathinfo = (type == 'on')?true:false; var pathinfoOpt = ''+lan.public.off+'' if(!pathinfo){ pathinfoOpt = ''+lan.public.on+'' } var pathinfo1 = 'PATH_INFO'+lan.soft.php_menu_ext+''+lan.soft.mvc_ps+''+pathinfoOpt+''; $("#pathInfo").html(pathinfo1); $(".bt-w-menu .bgw").attr('onclick',"SetPHPConfig('"+version+"',"+pathinfo+",1)"); $(".bt-w-menu .bgw a").attr('href',"javascript:SetPHPConfig('"+version+"',"+pathinfo+",1);"); layer.msg(rdata.msg,{icon:1}); }); } //PHP扩展配置 function SetPHPConfig(version,pathinfo,go){ $.get('/ajax?action=GetPHPConfig&version='+version,function(rdata){ var body = "" var opt = "" for(var i=0;i' }else if(rdata.libs[i]['task'] == '0' && rdata.libs[i].phpversions.indexOf(version) != -1){ opt = ''+lan.soft.sleep_install+'' }else if(rdata.libs[i].status){ opt = ''+lan.soft.uninstall+'' }else{ opt = ''+lan.soft.install+'' } body += '' +''+rdata.libs[i].name+'' +''+rdata.libs[i].type+'' +''+rdata.libs[i].msg+'' +'' +''+opt+'' +'' } var pathinfoOpt = ''+lan.soft.off+'' if(!rdata.pathinfo){ pathinfoOpt = ''+lan.soft.on+'' } var pathinfo1 = 'PATH_INFO'+lan.soft.php_menu_ext+''+lan.soft.mvc_ps+''+pathinfoOpt+''; var con='
' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +''+pathinfo1+body+'' +'
'+lan.soft.php_ext_name+''+lan.soft.php_ext_type+''+lan.soft.php_ext_ps+''+lan.soft.php_ext_status+''+lan.public.action+'
' +'
' +'
  • 请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常
  • Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis
  • opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常
'; var divObj = document.getElementById('phpextdiv'); var scrollTopNum = 0; if(divObj) scrollTopNum = divObj.scrollTop; $(".soft-man-con").html(con); document.getElementById('phpextdiv').scrollTop = scrollTopNum; }); if(go == undefined){ setTimeout(function(){ if($(".bgw #phpext").html() != '安装扩展'){ return; } SetPHPConfig(version,pathinfo); },3000); } } //安装扩展 function InstallPHPLib(version,name,title,pathinfo){ layer.confirm(lan.soft.php_ext_install_confirm.replace('{1}',name),{icon:3,closeBtn:2},function(){ name = name.toLowerCase(); var data = "name="+name+"&version="+version+"&type=1"; var loadT = layer.msg(lan.soft.add_install,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/files?action=InstallSoft', data, function(rdata) { setTimeout(function(){ layer.close(loadT); SetPHPConfig(version,pathinfo,true); setTimeout(function(){ layer.msg(rdata.msg,{icon:rdata.status?1:2}); },1000); },1000); }); fly("bi-btn"); InstallTips(); GetTaskCount(); }); } //卸载扩展 function UninstallPHPLib(version,name,title,pathinfo){ layer.confirm(lan.soft.php_ext_uninstall_confirm.replace('{1}',name),{icon:3,closeBtn:2},function(){ name = name.toLowerCase(); var data = 'name='+name+'&version='+version; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/files?action=UninstallSoft',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); SetPHPConfig(version,pathinfo,true); }); }); } //禁用函数 function disFun(version){ $.get('/ajax?action=GetPHPConfig&version='+version,function(rdata){ var disable_functions = rdata.disable_functions.split(','); var dbody = '' for(var i=0;i"+lan.public.del+""; } var con = "
" +"" +"" +"
" +"
" +"" +"" + dbody + "" +"
"+lan.soft.php_ext_name+""+lan.public.action+"
"; con +='\
    \
  • '+lan.soft.fun_ps2+'
  • \
  • '+lan.soft.fun_ps3+'
  • \
'; $(".soft-man-con").html(con); }); } //设置禁用函数 function disable_functions(version,act,fs){ var fsArr = fs.split(','); if(act == 1){ var functions = $("#disable_function_val").val(); for(var i=0;i start_servers) { layer.msg(lan.soft.php_fpm_err2,{icon:2}); return; } if(max_spare_servers < min_spare_servers){ layer.msg(lan.soft.php_fpm_err3,{icon:2}); return; } if(max_children < start_servers){ layer.msg(lan.soft.php_fpm_err4,{icon:2}); return; } if(max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1){ layer.msg(lan.soft.php_fpm_err5,{icon:2}); return; } var data = 'version='+version+'&max_children='+max_children+'&start_servers='+start_servers+'&min_spare_servers='+min_spare_servers+'&max_spare_servers='+max_spare_servers + '&pm='+pm; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/config?action=setFpmConfig',data,function(rdata){ layer.close(loadT); var loadT = layer.msg(rdata.msg,{icon:rdata.status?1:2}); }).error(function(){ layer.close(loadT); layer.msg(lan.public.config_ok,{icon:1}); }); }); return; } $.post('/config?action=getFpmConfig','version='+version,function(rdata){ var limitList = "" +"" +"" +"" +"" +"" +"" var pms = [{'name':'static','title':lan.bt.static},{'name':'dynamic','title':lan.bt.dynamic}]; var pmList = ''; for(var i=0;i'+pms[i].title+''; } var body="
" +"

"+lan.soft.concurrency_type+":

" +"

"+lan.soft.php_fpm_model+":*"+lan.soft.php_fpm_ps1+"

" +"

max_children:*"+lan.soft.php_fpm_ps2+"

" +"

start_servers: *"+lan.soft.php_fpm_ps3+"

" +"

min_spare_servers: *"+lan.soft.php_fpm_ps4+"

" +"

max_spare_servers: *"+lan.soft.php_fpm_ps5+"

" +"
" +"
" $(".soft-man-con").html(body); $("select[name='limit']").change(function(){ var type = $(this).val(); var max_children = rdata.max_children; var start_servers = rdata.start_servers; var min_spare_servers = rdata.min_spare_servers; var max_spare_servers = rdata.max_spare_servers; switch(type){ case '1': max_children = 30; start_servers = 5; min_spare_servers = 5; max_spare_servers = 20; break; case '2': max_children = 50; start_servers = 15; min_spare_servers = 15; max_spare_servers = 35; break; case '3': max_children = 100; start_servers = 20; min_spare_servers = 20; max_spare_servers = 70; break; case '4': max_children = 200; start_servers = 25; min_spare_servers = 25; max_spare_servers = 150; break; case '5': max_children = 300; start_servers = 30; min_spare_servers = 30; max_spare_servers = 180; break; case '6': max_children = 500; start_servers = 35; min_spare_servers = 35; max_spare_servers = 250; break; } $("input[name='max_children']").val(max_children); $("input[name='start_servers']").val(start_servers); $("input[name='min_spare_servers']").val(min_spare_servers); $("input[name='max_spare_servers']").val(max_spare_servers); }); }); } //phpinfo function BtPhpinfo(version){ var con = ''; $(".soft-man-con").html(con); } //获取PHPInfo function GetPHPInfo(version){ var loadT = layer.msg(lan.soft.get,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/ajax?action=GetPHPInfo&version='+version,function(rdata){ layer.close(loadT); layer.open({ type: 1, title: "PHP-"+version+"-PHPINFO", area: ['70%','90%'], closeBtn: 2, shadeClose: true, content:rdata.replace('a:link {color: #009; text-decoration: none; background-color: #fff;}','').replace('a:link {color: #000099; text-decoration: none; background-color: #ffffff;}','') }); }); } //nginx function nginxSoftMain(name,version){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/system?action=GetConcifInfo',function(rdata){ layer.close(loadT); nameA = rdata['web']; var status = name=='nginx'?'

'+lan.soft.nginx_status+'

':''; var menu = ''; if(version != undefined || version !=''){ var menu = '

'+lan.soft.nginx_version+'

'; } var waf = '' if(name == 'nginx'){ waf = '

'+lan.soft.waf_title+'

' } var logsPath = (name == 'nginx')?'/www/wwwlogs/nginx_error.log':'/www/wwwlogs/error_log'; layer.open({ type: 1, area: '640px', title: name+lan.soft.admin, closeBtn: 2, shift: 0, content: '
\
\

'+lan.soft.web_service+'

\

'+lan.soft.config_edit+'

\ '+waf+'\ '+menu+'\ '+status+'\

错误日志

\
\
\
\
\
' }); service(name,nameA.status); $(".bt-w-menu p").click(function(){ //var i = $(this).index(); $(this).addClass("bgw").siblings().removeClass("bgw"); }); }); } //显示指定日志 function showLogs(logPath){ var loadT = layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/ajax?action=GetOpeLogs',{path:logPath},function(rdata){ layer.close(loadT); if(rdata.msg == '') rdata.msg = '当前没有日志!'; var ebody = '
'; $(".soft-man-con").html(ebody); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); } //WAF防火墙 function waf(){ var loadT = layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, '#000']}); $.get("/waf?action=GetConfig",function(rdata){ layer.close(loadT); if(rdata.status == -1){ layer.msg(lan.soft.waf_not,{icon:5,time:5000}); return; } var whiteList = "" for(var i=0;i"+lan.public.del+""; } var blackList = "" for(var i=0;i"+lan.public.del+""; } var cc = rdata.CCrate.split('/') var con = "
\
\ "+lan.soft.waf_title+"
\ \ \
\
\ \ \
\
\
\ \ \ \ \ \ \
\
\ "+lan.soft.waf_input6+"\ "+lan.soft.waf_input7+"("+lan.bt.s+")\ \
\
\
\ "+lan.soft.waf_input8+"\ \
"+whiteList+"
\
\
\ "+lan.soft.waf_input9+"\ \
"+blackList+"
\
\
\
" $(".soft-man-con").html(con); }); } //上传限制 function upLimit(){ var loadT = layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, '#000']}); $.get("/waf?action=GetConfig",function(rdata){ layer.close(loadT); var black_fileExt = '' for(var i=0;i"+lan.public.del+""; } if($("#blacktable").html() != undefined){ $("#blacktable").html(black_fileExt); $("#black_fileExt_val").val(''); return; } layer.open({ type: 1, area: '300px', title: lan.soft.waf_up_title, closeBtn: 2, shift: 0, content:"
" +"" +"" +"
" +"
" +"" +"" + black_fileExt + "" +"
"+lan.soft.waf_up_from2+""+lan.public.action+"
" }); }); } //设置waf状态 function CloseWaf(){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/waf?action=SetStatus','',function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); if(rdata.status) waf(); }); } //取规则文件 function GetWafFile(name){ OnlineEditFile(0,'/www/server/panel/vhost/wafconf/' + name); } //规则编辑 function gzEdit(){ layer.open({ type: 1, area: '360px', title: lan.soft.waf_edit, closeBtn: 2, shift: 0, content:"
\ \ \ \ \ \ \
" }); } //更新WAF规则 function updateWaf(){ var loadT = layer.msg(lan.soft.waf_update,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/waf?action=updateWaf','',function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); }); } //设置WAF配置值 function SetWafConfig(name,value){ if(name == 'CCrate'){ var CCrate_1 = $("#CCrate_1").val(); var CCrate_2 = $("#CCrate_2").val(); if (CCrate_1 < 1 || CCrate_1 > 3000 || CCrate_2 < 1 || CCrate_2 > 1800){ layer.msg(lan.soft.waf_cc_err,{icon:5}); return; } value = CCrate_1 + '/' + CCrate_2; } var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/waf?action=SetConfigString','name='+name+'&value='+value,function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); if(rdata.status) waf(); }); } //删除WAF指定值 function deleteWafKey(name,value){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/waf?action=SetConfigList&act=del','name='+name+'&value='+value,function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); if(rdata.status) waf(); if(name == 'black_fileExt') upLimit(); }); } //删除WAF指定值 function addWafKey(name){ var value = $('#'+name+'_val').val(); var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/waf?action=SetConfigList&act=add','name='+name+'&value='+value,function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); if(rdata.status) waf(); if(name == 'black_fileExt') upLimit(); }); } //查看Nginx负载状态 function GetNginxStatus(){ $.post('/ajax?action=GetNginxStatus','',function(rdata){ var con = "
\ \ \ \ \ \ \ \
"+lan.bt.nginx_active+""+rdata.active+"
"+lan.bt.nginx_accepts+""+rdata.accepts+"
"+lan.bt.nginx_handled+""+rdata.handled+"
"+lan.bt.nginx_requests+""+rdata.requests+"
"+lan.bt.nginx_reading+""+rdata.Reading+"
"+lan.bt.nginx_writing+""+rdata.Writing+"
"+lan.bt.nginx_waiting+""+rdata.Waiting+"
"; $(".soft-man-con").html(con); }) } //查看PHP负载状态 function GetPHPStatus(version){ $.post('/ajax?action=GetPHPStatus','version='+version,function(rdata){ var con = "
\ \ \ \ \ \ \ \ \ \ \ \ \ \
"+lan.bt.php_pool+""+rdata.pool+"
"+lan.bt.php_manager+""+((rdata['process manager'] == 'dynamic')?lan.bt.dynamic:lan.bt.static)+"
"+lan.bt.php_start+""+rdata['start time']+"
"+lan.bt.php_accepted+""+rdata['accepted conn']+"
"+lan.bt.php_queue+""+rdata['listen queue']+"
"+lan.bt.php_max_queue+""+rdata['max listen queue']+"
"+lan.bt.php_len_queue+""+rdata['listen queue len']+"
"+lan.bt.php_idle+""+rdata['idle processes']+"
"+lan.bt.php_active+""+rdata['active processes']+"
"+lan.bt.php_total+""+rdata['total processes']+"
"+lan.bt.php_max_active+""+rdata['max active processes']+"
"+lan.bt.php_max_children+""+rdata['max children reached']+"
"+lan.bt.php_slow+""+rdata['slow requests']+"
"; $(".soft-man-con").html(con); $(".GetPHPStatus td,.GetPHPStatus th").css("padding","7px"); }) } //软件管理窗口 function SoftMan(name,version){ switch(name){ case 'nginx': nginxSoftMain(name,version); return; break; case 'apache': nginxSoftMain(name,version); return; break; case 'mysql': name='mysqld'; break; } var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/system?action=GetConcifInfo',function(rdata){ layer.close(loadT); var nameA = rdata[name.replace('mysqld','mysql')]; var menu = '

'+lan.soft.config_edit+'

'+lan.soft.nginx_version+'

'; if(name == "phpmyadmin"){ menu = '

'+lan.soft.php_version+'

'+lan.soft.safe+'

'; } if(version == undefined || version == ''){ var menu = '

'+lan.soft.config_edit+'

'; } if(name == 'mysqld'){ menu += '

'+lan.soft.save_path+'

'+lan.site.port+'

'+lan.soft.status+'

'+lan.soft.php_main7+'

'+lan.soft.log+'

慢日志

'; } else if(name == 'memcached'){ menu += '

负载状态

性能调整

'; } else if(name == 'redis'){ menu += '

负载状态

'; } else if(name == 'tomcat'){ menu += '

运行日志

'; } layer.open({ type: 1, area: '640px', title: name+lan.soft.admin, closeBtn: 2, shift: 0, content: '
\
\

'+lan.soft.service+'

' +menu+ '
\
\
\
\
' }); service(name,nameA.status); $(".bt-w-menu p").click(function(){ //var i = $(this).index(); $(this).addClass("bgw").siblings().removeClass("bgw"); }); }); } //redis负载状态 function RedisStatus(){ var loadT = layer.msg('正在获取...',{icon:16,time:0,shade:0.3}); $.get('/ajax?action=GetRedisStatus',function(rdata){ layer.close(loadT); hit = (parseInt(rdata.keyspace_hits) / (parseInt(rdata.keyspace_hits) + parseInt(rdata.keyspace_misses)) * 100).toFixed(2); var Con = '
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
字段当前值说明
uptime_in_days'+rdata.uptime_in_days+'已运行天数
tcp_port'+rdata.tcp_port+'当前监听端口
connected_clients'+rdata.connected_clients+'连接的客户端数量
used_memory_rss'+ToSize(rdata.used_memory_rss)+'Redis当前占用的系统内存总量
used_memory'+ToSize(rdata.used_memory)+'Redis当前已分配的内存总量
used_memory_peak'+ToSize(rdata.used_memory_peak)+'Redis历史分配内存的峰值
mem_fragmentation_ratio'+rdata.mem_fragmentation_ratio+'%内存碎片比率
total_connections_received'+rdata.total_connections_received+'运行以来连接过的客户端的总数量
total_commands_processed'+rdata.total_commands_processed+'运行以来执行过的命令的总数量
instantaneous_ops_per_sec'+rdata.instantaneous_ops_per_sec+'服务器每秒钟执行的命令数量
keyspace_hits'+rdata.keyspace_hits+'查找数据库键成功的次数
keyspace_misses'+rdata.keyspace_misses+'查找数据库键失败的次数
hit'+hit+'%查找数据库键命中率
latest_fork_usec'+rdata.latest_fork_usec+'最近一次 fork() 操作耗费的微秒数
' $(".soft-man-con").html(Con); }); } //memcached负载状态 function MemcachedStatus(){ var loadT = layer.msg('正在获取...',{icon:16,time:0,shade:0.3}); $.get('/ajax?action=GetMemcachedStatus',function(rdata){ layer.close(loadT); var Con = '
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
字段当前值说明
BindIP'+rdata.bind+'监听IP
PORT'+rdata.port+'监听端口
CACHESIZE'+rdata.cachesize+' MB最大缓存容量
MAXCONN'+rdata.maxconn+'最大连接数限制
curr_connections'+rdata.curr_connections+'当前打开的连接数
cmd_get'+rdata.cmd_get+'GET请求数
get_hits'+rdata.get_hits+'GET命中次数
get_misses'+rdata.get_misses+'GET失败次数
hit'+rdata.hit.toFixed(2)+'%GET命中率
curr_items'+rdata.curr_items+'当前被缓存的数据行数
evictions'+rdata.evictions+'因内存不足而被清理的缓存行数
bytes'+ToSize(rdata.bytes)+'当前已使用内存
bytes_read'+ToSize(rdata.bytes_read)+'请求总大小
bytes_written'+ToSize(rdata.bytes_written)+'发送总大小
' $(".soft-man-con").html(Con); }); } //memcached性能调整 function MemcachedCache(){ var loadT = layer.msg('正在获取...',{icon:16,time:0,shade:0.3}); $.get('/ajax?action=GetMemcachedStatus',function(rdata){ layer.close(loadT); var memCon = '
\

BindIP监听IP,请勿随意修改

\

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

\

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

\

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

\
\
' $(".soft-man-con").html(memCon); }); } //memcached提交配置 function SetMemcachedConf(){ var data = { ip:$("input[name='membind']").val(), port:$("input[name='memport']").val(), cachesize:$("input[name='memcachesize']").val(), maxconn:$("input[name='memmaxconn']").val() } if(data.ip.split('.').length < 4){ layer.msg('IP地址格式不正确!',{icon:2}); return; } if(data.port < 1 || data.port > 65535){ layer.msg('端口范围不正确!',{icon:2}); return; } if(data.cachesize < 8){ layer.msg('缓存值过小',{icon:2}); return; } if(data.maxconn < 4){ layer.msg('最大连接数过小',{icon:2}); return; } var loadT = layer.msg('正在保存...',{icon:16,time:0,shade:0.3}); $.post('/ajax?action=SetMemcachedCache',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //数据库存储信置 function changeMySQLDataPath(act){ if(act != undefined){ layer.confirm(lan.soft.mysql_to_msg,{closeBtn:2,icon:3},function(){ var datadir = $("#datadir").val(); var data = 'datadir='+datadir; var loadT = layer.msg(lan.soft.mysql_to_msg1,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/database?action=SetDataDir',data,function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); }); }); return; } $.post('/database?action=GetMySQLInfo','',function(rdata){ var LimitCon = '

\ \ \

'; $(".soft-man-con").html(LimitCon); }); } //MySQL-Slow日志 function mysqlSlowLog(){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/database?action=GetSlowLogs',{},function(logs){ layer.close(loadT); if(logs.status !== true){ logs.msg = ''; } if (logs.msg == '') logs.msg = '当前没有慢日志.'; var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); } //数据库日志 function mysqlLog(act){ //获取二进制日志相关信息 $.post('/database?action=BinLog',"status=1",function(rdata){ var limitCon = '

\ '+lan.soft.mysql_log_bin+' '+ToSize(rdata.msg)+'\ \

'+lan.soft.mysql_log_err+'

\ \

' $(".soft-man-con").html(limitCon); //获取错误日志 $.post('/database?action=GetErrorLog',"",function(error_body){ if(error_body.status === false){ layer.msg(error_body.msg,{icon:5}); error_body = lan.soft.mysql_log_ps1; } if(error_body == "") error_body = lan.soft.mysql_log_ps1; $("#error_log").text(error_body); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); }); } //取数据库运行状态 function mysqlRunStatus(){ $.post('/database?action=GetRunStatus',"",function(rdata){ var cache_size = ((parseInt(rdata.Qcache_hits)/(parseInt(rdata.Qcache_hits)+parseInt(rdata.Qcache_inserts)))* 100).toFixed(2) + '%'; if(cache_size == 'NaN%') cache_size = 'OFF'; var Con = '
\ \ \ \ \ \ \
'+lan.soft.mysql_status_title1+''+getLocalTime(rdata.Run)+''+lan.soft.mysql_status_title5+''+parseInt(rdata.Questions/rdata.Uptime)+'
'+lan.soft.mysql_status_title2+''+rdata.Connections+''+lan.soft.mysql_status_title6+''+parseInt((parseInt(rdata.Com_commit) + parseInt(rdata.Com_rollback)) / rdata.Uptime) +'
'+lan.soft.mysql_status_title3+''+ToSize(rdata.Bytes_sent)+''+lan.soft.mysql_status_title7+''+rdata.File+'
'+lan.soft.mysql_status_title4+''+ToSize(rdata.Bytes_received)+''+lan.soft.mysql_status_title8+''+rdata.Position+'
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
'+lan.soft.mysql_status_title9+''+rdata.Threads_running+'/'+rdata.Max_used_connections+''+lan.soft.mysql_status_ps1+'
'+lan.soft.mysql_status_title10+''+((1-rdata.Threads_created/rdata.Connections)* 100).toFixed(2)+'%'+lan.soft.mysql_status_ps2+'
'+lan.soft.mysql_status_title11+''+((1-rdata.Key_reads / rdata.Key_read_requests) * 100).toFixed(2)+'%'+lan.soft.mysql_status_ps3+'
'+lan.soft.mysql_status_title12+''+((1-rdata.Innodb_buffer_pool_reads/rdata.Innodb_buffer_pool_read_requests) * 100).toFixed(2)+'%'+lan.soft.mysql_status_ps4+'
'+lan.soft.mysql_status_title13+''+cache_size+''+lan.soft.mysql_status_ps5+'
'+lan.soft.mysql_status_title14+''+((rdata.Created_tmp_disk_tables/rdata.Created_tmp_tables) * 100).toFixed(2)+'%'+lan.soft.mysql_status_ps6+'
'+lan.soft.mysql_status_title15+''+rdata.Open_tables+''+lan.soft.mysql_status_ps7+'
'+lan.soft.mysql_status_title16+''+rdata.Select_full_join+''+lan.soft.mysql_status_ps8+'
'+lan.soft.mysql_status_title17+''+rdata.Select_range_check+''+lan.soft.mysql_status_ps9+'
'+lan.soft.mysql_status_title18+''+rdata.Sort_merge_passes+''+lan.soft.mysql_status_ps10+'
'+lan.soft.mysql_status_title19+''+rdata.Table_locks_waited+''+lan.soft.mysql_status_ps11+'
' $(".soft-man-con").html(Con); }); } //数据库配置状态 function mysqlStatus(){ //获取MySQL配置 $.post('/database?action=GetDbStatus',"",function(rdata){ var key_buffer_size = ToSizeM(rdata.mem.key_buffer_size) var query_cache_size = ToSizeM(rdata.mem.query_cache_size) var tmp_table_size = ToSizeM(rdata.mem.tmp_table_size) var innodb_buffer_pool_size = ToSizeM(rdata.mem.innodb_buffer_pool_size) var innodb_additional_mem_pool_size = ToSizeM(rdata.mem.innodb_additional_mem_pool_size) var innodb_log_buffer_size = ToSizeM(rdata.mem.innodb_log_buffer_size) var sort_buffer_size = ToSizeM(rdata.mem.sort_buffer_size) var read_buffer_size = ToSizeM(rdata.mem.read_buffer_size) var read_rnd_buffer_size = ToSizeM(rdata.mem.read_rnd_buffer_size) var join_buffer_size = ToSizeM(rdata.mem.join_buffer_size) var thread_stack = ToSizeM(rdata.mem.thread_stack) var binlog_cache_size = ToSizeM(rdata.mem.binlog_cache_size) var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size var memSize = a + rdata.mem.max_connections * b var memCon = '
\
'+lan.soft.mysql_set_msg+'\ \ '+lan.soft.mysql_set_maxmem+': MB\
\

key_buffer_sizeMB, '+lan.soft.mysql_set_key_buffer_size+'

\

query_cache_sizeMB, '+lan.soft.mysql_set_query_cache_size+'

\

tmp_table_sizeMB, '+lan.soft.mysql_set_tmp_table_size+'

\

innodb_buffer_pool_sizeMB, '+lan.soft.mysql_set_innodb_buffer_pool_size+'

\

innodb_log_buffer_sizeMB, '+lan.soft.mysql_set_innodb_log_buffer_size+'

\

innodb_additional_mem_pool_sizeMB

\

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

\

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

\

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

\

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

\

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

\

binlog_cache_sizeKB * '+lan.soft.mysql_set_conn+', '+lan.soft.mysql_set_binlog_cache_size+'

\

thread_cache_size '+lan.soft.mysql_set_thread_cache_size+'

\

table_open_cache '+lan.soft.mysql_set_table_open_cache+'

\

max_connections '+lan.soft.mysql_set_max_connections+'

\
\
' $(".soft-man-con").html(memCon); $(".conf_p input[name*='size'],.conf_p input[name='max_connections'],.conf_p input[name='thread_stack']").change(function(){ ComMySqlMem(); }); $(".conf_p select[name='mysql_set']").change(function(){ MySQLMemOpt($(this).val()); ComMySqlMem(); }); }); } //重启MySQL function ReBootMySqld(){ var loadT = layer.msg(lan.get('service_the',[lan.bt.restart,'MySQLd']),{icon:16,time:0,shade:0.3}); $.post('/system?action=ServiceAdmin','name=mysqld&type=restart',function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //计算MySQL内存开销 function ComMySqlMem(){ var key_buffer_size = parseInt($("input[name='key_buffer_size']").val()); var query_cache_size = parseInt($("input[name='query_cache_size']").val()); var tmp_table_size = parseInt($("input[name='tmp_table_size']").val()); var innodb_buffer_pool_size = parseInt($("input[name='innodb_buffer_pool_size']").val()); var innodb_additional_mem_pool_size = parseInt($("input[name='innodb_additional_mem_pool_size']").val()); var innodb_log_buffer_size = parseInt($("input[name='innodb_log_buffer_size']").val()); var sort_buffer_size = $("input[name='sort_buffer_size']").val() / 1024; var read_buffer_size = $("input[name='read_buffer_size']").val() / 1024; var read_rnd_buffer_size = $("input[name='read_rnd_buffer_size']").val() / 1024; var join_buffer_size = $("input[name='join_buffer_size']").val() / 1024; var thread_stack = $("input[name='thread_stack']").val() / 1024; var binlog_cache_size = $("input[name='binlog_cache_size']").val() / 1024; var max_connections = $("input[name='max_connections']").val(); var a = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size var b = sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size + thread_stack + binlog_cache_size var memSize = a + max_connections * b $("input[name='memSize']").val(memSize.toFixed(2)); } //MySQL内存优化方案 function MySQLMemOpt(opt){ var query_size = parseInt($("input[name='query_cache_size']").val()); switch(opt){ case '1': $("input[name='key_buffer_size']").val(128); if(query_size) $("input[name='query_cache_size']").val(64); $("input[name='tmp_table_size']").val(64); $("input[name='innodb_buffer_pool_size']").val(256); $("input[name='sort_buffer_size']").val(768); $("input[name='read_buffer_size']").val(768); $("input[name='read_rnd_buffer_size']").val(512); $("input[name='join_buffer_size']").val(1024); $("input[name='thread_stack']").val(256); $("input[name='binlog_cache_size']").val(64); $("input[name='thread_cache_size']").val(64); $("input[name='table_open_cache']").val(128); $("input[name='max_connections']").val(100); break; case '2': $("input[name='key_buffer_size']").val(256); if(query_size) $("input[name='query_cache_size']").val(128); $("input[name='tmp_table_size']").val(384); $("input[name='innodb_buffer_pool_size']").val(384); $("input[name='sort_buffer_size']").val(768); $("input[name='read_buffer_size']").val(768); $("input[name='read_rnd_buffer_size']").val(512); $("input[name='join_buffer_size']").val(2048); $("input[name='thread_stack']").val(256); $("input[name='binlog_cache_size']").val(64); $("input[name='thread_cache_size']").val(96); $("input[name='table_open_cache']").val(192); $("input[name='max_connections']").val(200); break; case '3': $("input[name='key_buffer_size']").val(384); if(query_size) $("input[name='query_cache_size']").val(192); $("input[name='tmp_table_size']").val(512); $("input[name='innodb_buffer_pool_size']").val(512); $("input[name='sort_buffer_size']").val(1024); $("input[name='read_buffer_size']").val(1024); $("input[name='read_rnd_buffer_size']").val(768); $("input[name='join_buffer_size']").val(2048); $("input[name='thread_stack']").val(256); $("input[name='binlog_cache_size']").val(128); $("input[name='thread_cache_size']").val(128); $("input[name='table_open_cache']").val(384); $("input[name='max_connections']").val(300); break; case '4': $("input[name='key_buffer_size']").val(512); if(query_size) $("input[name='query_cache_size']").val(256); $("input[name='tmp_table_size']").val(1024); $("input[name='innodb_buffer_pool_size']").val(1024); $("input[name='sort_buffer_size']").val(2048); $("input[name='read_buffer_size']").val(2048); $("input[name='read_rnd_buffer_size']").val(1024); $("input[name='join_buffer_size']").val(4096); $("input[name='thread_stack']").val(384); $("input[name='binlog_cache_size']").val(192); $("input[name='thread_cache_size']").val(192); $("input[name='table_open_cache']").val(1024); $("input[name='max_connections']").val(400); break; case '5': $("input[name='key_buffer_size']").val(1024); if(query_size) $("input[name='query_cache_size']").val(384); $("input[name='tmp_table_size']").val(2048); $("input[name='innodb_buffer_pool_size']").val(4096); $("input[name='sort_buffer_size']").val(4096); $("input[name='read_buffer_size']").val(4096); $("input[name='read_rnd_buffer_size']").val(2048); $("input[name='join_buffer_size']").val(8192); $("input[name='thread_stack']").val(512); $("input[name='binlog_cache_size']").val(256); $("input[name='thread_cache_size']").val(256); $("input[name='table_open_cache']").val(2048); $("input[name='max_connections']").val(500); break; } } //设置MySQL配置参数 function SetMySQLConf(){ $.post('/system?action=GetMemInfo','',function(memInfo){ //var memSize = memInfo['memTotal']; //var setSize = parseInt($("input[name='memSize']").val()); //if(memSize < setSize){ // var msg = lan.soft.mysql_set_err.replace('{1}',memSize).replace('{2}',setSize); // layer.msg(msg,{icon:2,time:5000}); // return; //} var query_cache_size = parseInt($("input[name='query_cache_size']").val()); var query_cache_type = 0; if(query_cache_size > 0){ query_cache_type = 1; } var data = { key_buffer_size:parseInt($("input[name='key_buffer_size']").val()), query_cache_size:query_cache_size, query_cache_type:query_cache_type, tmp_table_size:parseInt($("input[name='tmp_table_size']").val()), max_heap_table_size:parseInt($("input[name='tmp_table_size']").val()), innodb_buffer_pool_size:parseInt($("input[name='innodb_buffer_pool_size']").val()), innodb_log_buffer_size:parseInt($("input[name='innodb_log_buffer_size']").val()), sort_buffer_size:parseInt($("input[name='sort_buffer_size']").val()), read_buffer_size:parseInt($("input[name='read_buffer_size']").val()), read_rnd_buffer_size:parseInt($("input[name='read_rnd_buffer_size']").val()), join_buffer_size:parseInt($("input[name='join_buffer_size']").val()), thread_stack:parseInt($("input[name='thread_stack']").val()), binlog_cache_size:parseInt($("input[name='binlog_cache_size']").val()), thread_cache_size:parseInt($("input[name='thread_cache_size']").val()), table_open_cache:parseInt($("input[name='table_open_cache']").val()), max_connections:parseInt($("input[name='max_connections']").val()) }; $.post('/database?action=SetDbConf',data,function(rdata){ layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); }) } //转换单们到MB function ToSizeM(byteLen){ var a = parseInt(byteLen) / 1024 /1024; return a || 0; } //设置二进制日志 function SetBinLog(){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade:0.3}); $.post('/database?action=BinLog',"",function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:5}); mysqlLog(); }); } //清空日志 function closeMySqlLog(){ var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade:0.3}); $.post('/database?action=GetErrorLog',"close=1",function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:5}); mysqlLog(); }); } //数据库端口 function changeMySQLPort(act){ if(act != undefined){ layer.confirm(lan.soft.mysql_port_title,{closeBtn:2,icon:3},function(){ var port = $("#dataport").val(); var data = 'port='+port; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/database?action=SetMySQLPort',data,function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:5}); }); }); return; } $.post('/database?action=GetMySQLInfo','',function(rdata){ var LimitCon = '

\ \ \

'; $(".soft-man-con").html(LimitCon); }); } //软件切换版本 function softChangeVer(name,version){ if(name == "mysqld") name = "mysql"; var veropt = version.split("|"); var SelectVersion = ''; for(var i=0; i'; } var body = "
"+lan.soft.select_version+"
'; if(name == 'mysql'){ body += "
  • "+lan.soft.mysql_f+"
" } $(".soft-man-con").html(body); $(".btn-success").click(function(){ var ver = $("#selectVer").val(); oneInstall(name,ver.split(" ")[1]); }); selectChange(); } //phpmyadmin切换php版本 function phpVer(name,version){ $.post('/site?action=GetPHPVersion',function(rdata){ var body = "
"+lan.soft.php_version+"
'; $(".soft-man-con").html(body); }) } function phpVerChange(type,msg){ var data = type + '=' + $("#" + msg).val(); var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/ajax?action=setPHPMyAdmin',data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); if(rdata.status){ setTimeout(function(){ window.location.reload(); },3000); } }) } //phpmyadmin安全设置 function safeConf(name,port,auth){ var con = '
\ '+lan.soft.pma_port+'\ \ \
\
\ '+lan.soft.pma_pass+'\ \ \ \
\
\

'+lan.soft.pma_user+'

\

'+lan.soft.pma_pass1+'

\

'+lan.soft.pma_pass2+'

\

\
\
  • '+lan.soft.pma_ps+'
'; $(".soft-man-con").html(con); if(auth){ $(".user_pw").show(); } } //修改phpmyadmin端口 function phpmyadminport(){ var pmport = $("#pmport").val(); if(pmport < 80 || pmport > 65535){ layer.msg(lan.firewall.port_err,{icon:2}); return; } var data = 'port=' + pmport; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/ajax?action=setPHPMyAdmin',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //phpmyadmin二级密码 function phpmyadminSafe(){ var stat = $("#phpmyadminsafe").prop("checked"); if(stat) { $(".user_pw").hide(); phpmyadmin('close'); }else{ $(".user_pw").show(); } } //设置phpmyadmin二级密码 function phpmyadmin(msg){ type = 'password'; if(msg == 'close'){ password_1 = msg; username = msg; layer.confirm(lan.soft.pma_pass_close,{closeBtn:2,icon:3},function(){ var data = type + '=' + msg + '&siteName=phpmyadmin'; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/ajax?action=setPHPMyAdmin',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); }); return; }else{ username = $("#username_get").val() password_1 = $("#password_get_1").val() password_2 = $("#password_get_2").val() if(username.length < 1 || password_1.length < 1){ layer.msg(lan.soft.pma_pass_empty,{icon:2}); return; } if(password_1 != password_2){ layer.msg(lan.bt.pass_err_re,{icon:2}); return; } } msg = password_1 + '&username='+username + '&siteName=phpmyadmin'; var data = type + '=' + msg; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/ajax?action=setPHPMyAdmin',data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //首页软件列表 function indexsoft(){ var loadT = layer.msg(lan.soft.get_list,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/plugin?action=getPluginList','display=1',function(rdata){ layer.close(loadT); var con = ''; for(var i=0;i\ \
\
\
'+rdata.data[i].title+' '+version+state+'
\
\ ' } } else{ for(var n=0; n\ \
\
\
'+rdata.data[i].title+' '+rdata.data[i].versions[n].version+state+'
\
\ ' } } } } } $("#indexsoft").html(con); //软件位置移动 var softboxlen = $("#indexsoft > div").length; var softboxsum = 12; var softboxcon = ''; var softboxn =softboxlen; if(softboxlen <= softboxsum){ for(var i=0;i' } $("#indexsoft").append(softboxcon); } $("#indexsoft").dragsort({ dragSelector: ".spanmove", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "
" }); function saveOrder() { var data = $("#indexsoft > div").map(function() { return $(this).attr("data-id"); }).get(); var ssort = data.join("|"); $("input[name=list1SortOrder]").val(ssort); $.post("/plugin?action=savePluginSort",'ssort=' + ssort,function(rdata){}); }; }); } //插件设置菜单 function PluginMan(name,title){ loadT = layer.msg(lan.soft.menu_temp,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/plugin?action=getConfigHtml&name=' + name,function(rhtml){ layer.close(loadT); if(rhtml.status === false){ if(name == "phpguard"){ layer.msg(lan.soft.menu_phpsafe,{icon:1}) } else{ layer.msg(rhtml.msg,{icon:2}); } return; } layer.open({ type: 1, shift: 5, offset: '20%', closeBtn: 2, area: '700px', title: ''+ title, content: rhtml }); rcode = rhtml.split('',''); setTimeout(function(){ if(!!(window.attachEvent && !window.opera)){ execScript(rcode); }else{ window.eval(rcode); } },200) }); } //设置插件 function SetPluginConfig(name,param,def){ if(def == undefined) def = 'SetConfig'; loadT = layer.msg(lan.config.config_save,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/plugin?action=a&name='+name+'&s=' + def,param,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //取七牛文件列表 function GetFileList(name){ var loadT = layer.msg(lan.soft.qiniu_lise,{icon:16,time:0,shade: [0.3, '#000']}); $.get('/ajax?action=GetQiniuFileList&name='+name,function(rdata){ layer.close(loadT); if(rdata.status === false){ layer.msg(rdata.msg,{icon:2}); return; } var tBody = '' for(var i=0;i\ "+rdata[i].mimeType+"\ "+ToSize(rdata[i].fsize)+"\ "+getLocalTime(rdata[i].putTime)+"\ " } layer.open({ type: 1, skin: 'demo-class', area: '700px', title: lan.soft.qiniu_file_title, closeBtn: 2, shift: 0, content: "
\ \ \ \ \ \ \ \ \ \ "+tBody+"\
"+lan.soft.qiniu_th1+""+lan.soft.qiniu_th2+""+lan.soft.qiniu_th3+""+lan.soft.qiniu_th4+"
\
" }); }); } //取软件列表 function GetSList(isdisplay){ if(isdisplay !== true){ var loadT = layer.msg(lan.soft.get_list,{icon:16,time:0,shade: [0.3, '#000']}) } if(!isdisplay || isdisplay === true) isdisplay = getCookie('p'+getCookie('softType')); if(isdisplay == true || isdisplay == 'true') isdisplay = 1; var search = $("#SearchValue").val(); if(search != ''){ search = '&search=' + search; } var type = ''; var istype = getCookie('softType'); if(istype == 'undefined' || istype == 'null' || !istype) { istype = '0'; } type = '&type='+istype; var page = ''; if(isdisplay){ page = '&p='+isdisplay; setCookie('p'+getCookie('softType'),isdisplay); } $.post('/plugin?action=getPluginList&tojs=GetSList'+search+type+page,'',function(rdata){ layer.close(loadT); var tBody = ''; var sBody = ''; var pBody = ''; for(var i=0;i'+rdata.type[i].title+''; } $(".softtype").html(tBody); $("#softPage").html(rdata.page); $("#softPage .Pcount").css({"position":"absolute","left":"0"}) $(".task").text(rdata.data[rdata.length - 1]); for(var i=0;i'+lan.soft.install+''; var isSetup = false; if(rdata.data[i].name != 'php'){ for(var n=0; n更新 | '; handle = mupdate + ''+lan.soft.setup+' | '+lan.soft.uninstall+''; titleClick = 'onclick="PluginMan(\''+rdata.data[i].name+'\',\''+rdata.data[i].title+'\')" style="cursor:pointer"'; }else{ var mupdate = (rdata.data[i].versions[n].no == rdata.data[i].update[n])? '': '更新 | '; if(rdata.data[i].versions[n].no == '') mupdate = ''; handle = mupdate + ''+lan.soft.setup+' | '+lan.soft.uninstall+''; titleClick = 'onclick="SoftMan(\''+rdata.data[i].name+'\',\''+version_info+'\')" style="cursor:pointer"'; } version = rdata.data[i].versions[n].version; softPath = ''; indexshow = '
'; if(rdata.data[i].versions[n].run == true){ state='' } else{ state='' } } var isTask = rdata.data[i].versions[n].task; if(isTask == '-1'){ handle = ''+lan.soft.the_install+'' }else if(isTask == '0'){ handle = ''+lan.soft.sleep_install+'' } } var enddate = ''+rdata.data[i].end+''; if(rdata.data[i].price > 0){ var price = '¥'+rdata.data[i].price+''; var uninstall = '' if(isSetup){ uninstall = ' | '+lan.soft.uninstall+'' } if(rdata.data[i].end == '未开通' || rdata.data[i].end == '已到期' || rdata.data[i].end == '待支付'){ handle = '立即购买' + uninstall titleClick = 'onclick="Renewinstall(\''+rdata.data[i].title+'\',\''+rdata.data[i].product_id+'\')" style="cursor:pointer"'; if(rdata.data[i].end == '已到期') { handle = '立即续费' + uninstall } enddate = ''+rdata.data[i].end+'  '; } if(rdata.data[i].end.indexOf('20') != -1 || rdata.data[i].end == '已到期') enddate = ''+rdata.data[i].end+' (续费)'; }else{ var price = '免费'; } sBody += '' +''+rdata.data[i].title+' '+version+'' //+''+rdata.data[i].versions[0].no+'' //+''+rdata.data[i].type+'' +''+rdata.data[i].ps+'' +price +enddate +''+softPath+'' +''+state+'' +''+indexshow+'' +''+handle+'' +'' } else{ var pnum = 0; for(var n=0; n更新 | '; handle = mupdate + ''+lan.soft.setup+' | '+lan.soft.uninstall+''; softPath = ''; titleClick = 'onclick="phpSoftMain(\''+rdata.data[i].versions[n].version+'\','+n+')" style="cursor:pointer"'; indexshow = '
'; if(rdata.data[i].versions[n].run == true){ state='' } else{ state='' } } else{ handle = ''+lan.soft.install+''; softPath =''; checked = ''; indexshow = ''; titleClick =''; state = ''; } var pps = rdata.data[i].ps; if(rdata.data[i].apache == '2.2' && rdata.data[i].versions[n].fpm == true){ pps += ", "+lan.soft.apache22+""; } if(rdata.data[i].apache == '2.2' && rdata.data[i].versions[n].fpm == false) pnum++; if(rdata.data[i].apache != '2.2' && rdata.data[i].versions[n].fpm == false){ pps += ", "+lan.soft.apache24+""; } var isTask = rdata.data[i].versions[n].task; if(isTask == '-1'){ if(rdata.data[i].apache == '2.2') pnum++; handle = ''+lan.soft.the_install+'' }else if(isTask == '0'){ if(rdata.data[i].apache == '2.2') pnum++; handle = ''+lan.soft.sleep_install+'' } pBody += '' +''+rdata.data[i].title+'-'+rdata.data[i].versions[n].version+'' //+''+rdata.data[i].versions[n].no+'' //+''+rdata.data[i].type+'' +''+pps+'' +'免费' +'--' +''+softPath+'' +''+state+'' +''+indexshow+'' +''+handle+'' +'' } if(pnum > 0){ setCookie('apacheVersion','2.2'); setCookie('phpVersion',1); }else{ setCookie('apacheVersion',''); setCookie('phpVersion',0); } } } sBody += pBody; $("#softList").html(sBody); $(".menu-sub span").click(function(){ setCookie('softType',$(this).attr('typeid')); $(this).addClass("on").siblings().removeClass("on"); GetSList(); }) }) } //刷新状态 function FPStatus(){ $.get("/auth?action=flush_pay_status",function(res){ layer.msg(res.msg,{icon:res.status?"1":"2"}) }) } //更新 function SoftUpdate(name,version,update){ var msg = "
  • 建议您在服务器负载闲时进行软件更新.
  • "; if(name == 'mysql') msg = "
    • 更新数据库有风险,建议在更新前,先备份您的数据库.
    • 如果您的是云服务器,强烈建议您在更新前做一个快照.
    • 建议您在服务器负载闲时进行软件更新.
    "; SafeMessage('更新['+name+']','更新过程可能会导致服务中断,您真的现在就将['+name+']更新到['+update+']吗?',function(){ var data = "name="+name+"&version="+version+"&type=0&upgrade=" + update; var loadT = layer.msg('正在更新['+name+'-'+version+'],请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); $.post('/plugin?action=install', data, function(rdata) { if(rdata.status){ GetTaskCount(); layer.msg('已添加到任务列表,请稍候...',{icon:1}); }else{ layer.msg('更新失败!',{icon:2}); } layer.close(loadT); }); },msg); } //续费 function Renewinstall(pluginName,pid,an){ if(an === undefined){ var txt = "开通"; } else{ var txt = "续费"; } var payhtml = '
    \
    \
    类型
    \
    \
      \
    • '+pluginName+'1款插件
    • \
    • 升级为专业版所有插件免费使用
    • \
    \ \
    \
    \
    \
    \
    '; layer.open({ type: 1, title: txt + pluginName, area: ['616px','680px'], closeBtn: 2, shadeClose: false, content:payhtml }); get_plugin_price(pluginName,pid,1); $(".li-c-item li").click(function(){ var i = $(this).index(); $(this).addClass("active").siblings().removeClass("active"); if(i==0){ get_plugin_price(pluginName,pid,1); $(".pro-info").hide(); } else{ get_product_discount(); $(".pro-info").show(); } }); $(".pay-btn-group > li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); }); } //升级为专业版 function updatapro(){ var payhtml = '
    \
    \
    \

    注:如需购买多台永久授权,请登录宝塔官网购买。去宝塔官网

    \
    '; layer.open({ type: 1, title: '升级专业版,所有插件,免费使用', area: ['616px','540px'], closeBtn: 2, shadeClose: false, content:payhtml }); get_product_discount(); $(".pay-btn-group > li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); }); } //取插件折扣信息 function get_plugin_price(pluginName,pid,an){ var con = '
    \
    付款方式
    \
    • 微信支付
    • 代金券
    \
    \
    \
    \
    \
    开通时长
    \
    \
    \
    总计
    \
    \
    \
    微信扫码支付
    \
    \
    \ \
    ' $(".libpay-con").html("
    加载中,请稍后
    "); $.post('/auth?action=get_plugin_price',{pluginName:pluginName},function(rdata){ if(rdata.status === false){ //未绑定 var payhtml = '

    绑定宝塔官网账号

    未有账号,去注册

    '; $(".libPay-select").hide(); $(".libpay-con").html(payhtml); } else if(an === undefined){ //同意协议 var payhtml = '
    注意:您购买的插件只在当前服务器有效。
    本插件为特价期间,可能存在一定的稳定性问题。
    有任何问题,欢迎咨询QQ394030111反馈。
    '; $(".libPay-select").hide(); $(".libpay-con").html(payhtml); var imin=6; var timehwnd = setInterval(function countdown(){ imin--; var applyObj = $("#apply-ps"); if(imin == 0){ applyObj.prop("value","同意"); applyObj.removeAttr("disabled"); applyObj.attr("onclick","anTo('"+pluginName+"','"+pid+"')"); applyObj.removeAttr("style"); clearInterval(timehwnd); }else{ applyObj.prop("value","同意("+imin+")"); } },1000); } else{ $(".libPay-select").show(); $(".libpay-con").html(con); $("#PayCycle .btn-group").html(rdata); $(".pay-cycle li").click(function(){ var i = $(this).index(); $(this).addClass("active").siblings().removeClass("active"); $(".payment-con > div").eq(i).show().siblings().hide(); }); $(".btn-group .btn-success").click(); $(".btn-group .btn").click(function(){ $(this).addClass("btn-success").siblings().removeClass("btn-success"); }); } }) } //取插件优惠券 function get_plugin_coupon(pid){ var con = ''; $("#couponlist").html("
    加载中,请稍后
    "); $.post('/auth?action=get_voucher_plugin',{pid:pid},function(rdata){ if(rdata !=''){ for(var i=0,l=rdata.length;i'+rdata[i].cycle+conver_unit(rdata[i].unit)+''; } $("#couponlist").html('
      '+con+'
    '); $(".pay-btn-group > li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); $(".paymethod-submit button").css({"background-color":"#20a53a","border-color":"#20a53a"}); }); $(".paymethod-submit button").click(function(){ var code = $("#couponlist .pay-btn-group .active").attr("data-code"); if(code == undefined){ layer.msg("请选择代金券"); } else{ useCoupon_plugin(code,pid); } }) } else{ $("#couponlist").html("

    暂无代金券

    "); } }) } //取专业版代金券 function get_pro_coupon(){ $("#couponlist").html("
    加载中,请稍后
    "); $.get("/auth?action=get_voucher",function(rdata){ if(rdata !=null){ var con = ''; var len = rdata.length; for(var i=0; i'+cyc+''; } } $("#couponlist").html('
      '+con+'
    '); $(".pay-btn-group > li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); $(".paymethod-submit button").css({"background-color":"#20a53a","border-color":"#20a53a"}); }); $(".paymethod-submit button").click(function(){ var code = $("#couponlist .pay-btn-group .active").attr("data-code"); if(code == undefined){ layer.msg("请选择代金券"); } else{ useCoupon(code); } }) } else{ $("#couponlist").html("

    暂无代金券

    "); } }) } //插件代金券续费 function useCoupon_plugin(code,pid){ var loadT = layer.msg("提交中,请稍后。",{ icon: 16, time: 0, shade: [0.3, "#000"]}); $.post("/auth?action=create_order_voucher_plugin",{pid:pid,code:code},function(rdata){ layer.closeAll(); layer.msg(rdata.msg); }) } //专业版代金券续费 function useCoupon(code){ var loadT = layer.msg("提交中,请稍后。",{ icon: 16, time: 0, shade: [0.3, "#000"]}); $.post("/auth?action=create_order_voucher",{code:code},function(rdata){ layer.closeAll(); layer.msg(rdata.msg); if(rdata.status === true){ layer.msg("支付成功!专业版升级中,请勿操作!",{icon: 16, time: 0, shade: [0.3, "#000"]}); $.get("/system?action=UpdatePro",function(rr){ show_upVip(); }).error(function(){ show_upVip(); }); } }) } function show_upVip(){ layer.closeAll(); layer.msg("恭喜您,升级完成!",{icon:1}); setTimeout(function(){window.location.href = '/';},3000); } //取专业版产品折扣信息 function get_product_discount(){ var con = '
    \
    付款方式
    \
    • 微信支付
    • 代金券
    \
    \
    \
    \
    \
    开通时长
    \
    \
    \
    总计
    \
    \
    \
    微信扫码支付
    \
    \
    \ \
    ' $(".libpay-con").html("
    加载中,请稍后
    "); $.get("/auth?action=get_product_discount_by",function(rdata){ if(rdata !=null){ var coucon = ''; var qarr = Object.keys(rdata); var qlen = qarr.length; //折扣列表 for(var i=0;i'+conver_unit(j)+''+(c==1?"":''+c*10+'折')+''; } $(".libpay-con").html(con); $("#PayCycle").html('
      '+coucon+'
    '); $(".pay-btn-group li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); }); $(".pay-cycle li").click(function(){ var i = $(this).index(); $(this).addClass("active").siblings().removeClass("active"); $(".payment-con > div").eq(i).show().siblings().hide(); }); $("#PayCycle .pay-btn-group li").eq(0).click(); } }) } //单位转换 function conver_unit(name){ var unit= ''; switch (name){ case "year": unit = "年"; break; case "month": unit = "个月"; break; case "day": unit = "天"; break; case "1": unit = "1个月"; break; case "3": unit = "3个月"; break; case "6": unit = "6个月"; break; case "12": unit = "1年"; break; case "24": unit = "2年"; break; case "36": unit = "3年"; break; case "999": unit = "永久"; break; } return unit; } var wxpayTimeId = 0; function getRsCode(pid,price,sprice,cycle){ $(".sale-price").text(price); if(price == sprice){ $(".cost-price").text(sprice+'元').hide(); } else{ $(".cost-price").text(sprice+'元').show(); } $(".pay-wx").html('加载中,请稍后'); $(".libPay").append('
    '); $.post('/auth?action=get_buy_code',{pid:pid,cycle:cycle},function(rdata){ $(".payloadingmask").remove(); if(rdata.status === false){ layer.msg(rdata.msg,{icon:2}); return; } $(".pay-wx").html(''); $(".pay-wx").qrcode(rdata.msg); clearInterval(wxpayTimeId); wxpayTimeId = setInterval(function(){ $.post('/auth?action=check_pay_status',{id:pid},function(rdata){ if(rdata.status) { layer.closeAll(); layer.msg('支付成功!',{icon:1}); clearInterval(wxpayTimeId); return; } }) },3000); }); } function getRsCodePro(price,sprice,cycle){ $(".sale-price").text(price); if(price == sprice){ $(".cost-price").text(sprice+'元').hide(); } else{ $(".cost-price").text(sprice+'元').show(); } $(".pay-wx").html('加载中,请稍后'); $(".libPay").append('
    '); $.post('/auth?action=create_order',{cycle:cycle},function(rdata){ $(".payloadingmask").remove(); if(rdata.status === false){ layer.msg(rdata.msg,{icon:2}); return; } $(".pay-wx").html(''); $(".pay-wx").qrcode(rdata.msg); clearInterval(wxpayTimeId); wxpayTimeId = setInterval(function(){ $.post('/auth?action=get_re_order_status',function(rdata){ if(rdata.status) { layer.closeAll(); layer.msg("支付成功!专业版升级中,请勿操作!",{icon: 16, time: 0, shade: [0.3, "#000"]}); clearInterval(wxpayTimeId); $.get("/system?action=UpdatePro",function(rr){ show_upVip(); }).error(function(){ show_upVip(); }); return; } }) },3000); }); } function anTo(pluginName,pid){ layer.closeAll(); Renewinstall(pluginName,pid,1); } //登陆宝塔官网帐户 function loginBT(pluginName,pid){ p1 = $("#p1").val(); p2 = $("#p2").val(); var loadT = layer.msg(lan.config.token_get,{icon:16,time:0,shade: [0.3, '#000']}); $.post("/ssl?action=GetToken", "username=" + p1 + "&password=" + p2, function(b){ layer.close(loadT); layer.msg(b.msg, {icon: b.status?1:2}); if(b.status) { layer.closeAll(); Renewinstall(pluginName,pid); } }); } //独立安装 function oneInstall(name,version){ var isError = false if (name == 'pure') name += '-'+version.toLowerCase(); if (name == 'apache' || name == 'nginx'){ $.ajax({ url:'/ajax?action=GetInstalled', type:'get', async:false, success:function(rdata){ if(rdata.webserver != name && rdata.webserver != false){ layer.msg(lan.soft.err_install2,{icon:2}) isError = true; return; } } }); } if(name == 'php'){ if(getCookie('apacheVersion') == '2.2' && getCookie('phpVersion') == 1){ layer.msg(lan.soft.apache22_err,{icon:5}); return; } } var optw = ''; if(name == 'mysql'){ optw = "

  • "+lan.soft.mysql_f+"
  • " var sUrl = '/data?action=getData&table=databases'; $.ajax({ url:sUrl, type:"GET", async:false, success:function(dataD){ if(dataD.data.length > 0) { layer.msg(lan.soft.mysql_d,{icon:5,time:5000}) isError = true;; } } }); } if (isError) return; var one = layer.open({ type: 1, title: lan.soft.type_title, area: '350px', closeBtn: 2, shadeClose: true, content:"
    \
    "+lan.soft.install_version+":"+name+" "+version+""+optw+"
    \
    "+lan.bt.install_type+":
    \
    \ \ \
    \
    " }) $('.fangshi input').click(function(){ $(this).attr('checked','checked').parent().siblings().find("input").removeAttr('checked'); }); $("#bi-btn").click(function(){ var type = $('.fangshi input').prop("checked") ? '1':'0'; var data = "name="+name+"&version="+version+"&type="+type; var loadT = layer.msg(lan.soft.add_install,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/files?action=InstallSoft', data, function(rdata) { layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); GetSList(); }) }); $(".one-close").click(function(){ layer.close(one); }) InstallTips(); fly("bi-btn"); } function AddVersion(name,ver,type,obj,title){ if(type == "lib"){ layer.confirm(lan.get('install_confirm',[title,ver]),{icon:3,closeBtn:2},function(){ $(obj).text(lan.soft.install_the); var data = "name="+name; var loadT = layer.msg(lan.soft.the_install,{icon:16,time:0,shade: [0.3, '#000']}); $.post("/plugin?action=install",data,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); setTimeout(function(){GetSList()},2000) }); }); return; } var titlename = name; var veropt = ver.split("|"); var SelectVersion = ''; for(var i=0; i'; } if(name == 'phpmyadmin' || name == 'nginx' || name == 'apache'){ var isError = false $.ajax({ url:'/ajax?action=GetInstalled', type:'get', async:false, success:function(rdata){ if(name == 'nginx'){ if(rdata.webserver != name.toLowerCase() && rdata.webserver != false){ layer.msg(lan.soft.err_install1,{icon:2}) isError = true; return; } } if(name == 'apache'){ if(rdata.webserver != name.toLowerCase() && rdata.webserver != false){ layer.msg(lan.soft.err_install2,{icon:2}) isError = true; return; } } if(name == 'phpmyadmin'){ if (rdata.php.length < 1){ layer.msg(lan.soft.err_install3,{icon:2}) isError = true; return; } if (!rdata.mysql.setup){ layer.msg(lan.soft.err_install4,{icon:2}) isError = true; return; } } } }); if(isError) return; } layer.open({ type: 1, title: titlename+lan.soft.install_title, area: '350px', closeBtn: 2, shadeClose: true, content:"
    \
    "+lan.soft.install_version+":
    \
    "+lan.bt.install_type+":
    \
    \ \ \
    \
    " }) selectChange(); $('.fangshi input').click(function(){ $(this).attr('checked','checked').parent().siblings().find("input").removeAttr('checked'); }); $("#bi-btn").click(function(){ var info = $("#SelectVersion").val().toLowerCase(); var name = info.split(" ")[0]; var version = info.split(" ")[1]; var type = $('.fangshi input').prop("checked") ? '1':'0'; var data = "name="+name+"&version="+version+"&type="+type; var loadT = layer.msg(lan.soft.add_install,{icon:16,time:0,shade: [0.3, '#000']}); $.post("/plugin?action=install",data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); GetSList(); }); }); InstallTips(); fly("bi-btn"); } function selectChange(){ $("#SelectVersion,#selectVer").change(function(){ var info = $(this).val(); var name = info.split(" ")[0]; var version = info.split(" ")[1]; max=64 msg="64M" if(name == 'mysql'){ memSize = getCookie('memSize'); switch(version){ case '5.1': max = 256; msg = '256M'; break; case '8.0': max = 5200; msg = '6GB'; break; case '5.7': max = 1500; msg = '2GB'; break; case '5.6': max = 800; msg = '1GB'; break; case 'AliSQL': max = 800; msg = '1GB'; break; case 'mariadb_10.0': max = 800; msg = '1GB'; break; case 'mariadb_10.1': max = 1500; msg = '2GB'; break; } if(memSize < max){ layer.msg(lan.bt.insatll_mem.replace('{1}',msg).replace('{2}',version),{icon:5}); } } }); } //卸载软件 function UninstallVersion(name,version,title){ var isError = false if(name == 'mysql'){ var sUrl = '/data?action=getData&table=databases'; $.ajax({ url:sUrl, type:"GET", async:false, success:function(dataD){ if(dataD.data.length > 0) { layer.msg(lan.soft.mysql_del_err + '

    强行卸载: curl http://h.bt.cn/mu.sh|bash

    ',{icon:5,time:8000}); isError = true;; } } }); } if(isError) return; layer.confirm(lan.soft.uninstall_confirm.replace('{1}',title).replace('{2}',version),{icon:3,closeBtn:2},function(){ var data = 'name='+name+'&version='+version; var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/plugin?action=unInstall',data,function(rdata){ layer.close(loadT) GetSList(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }) }); } //获取插件列表 function GetLibList(){ var loadT = layer.msg(lan.soft.get_list,{icon:16,time:0,shade: [0.3, '#000']}) $.post('/ajax?action=GetLibList','',function(rdata){ layer.close(loadT) var tBody = '' for(var i=0;i\ "+rdata[i].type+"\ "+rdata[i].ps+"\ --\ "+rdata[i].status+"\ "+rdata[i].optstr+"\ " } $("#softList").append(tBody); }); } //设置插件 function SetLibConfig(name,action){ if(action == 1){ var access_key = $("input[name='access_key']").val(); var secret_key = $("input[name='secret_key']").val(); var bucket_name = $("input[name='bucket_name']").val(); if(access_key.length < 1 || secret_key.length < 1 || bucket_name.length < 1){ layer.msg(lan.soft.from_err,{icon:2}); return; } var bucket_domain = $("input[name='bucket_domain']").val(); var data = 'name='+name+'&access_key='+access_key+'&secret_key='+secret_key+'&bucket_name='+bucket_name+'&bucket_domain='+bucket_domain; var loadT = layer.msg(lan.soft.lib_the,{icon:16,time:0,shade:[0.3,'#000']}); $.post('/ajax?action=SetQiniuAS',data,function(rdata){ layer.close(loadT); if(rdata.status) layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }).error(function(){ layer.close(loadT); layer.msg(lan.public.error,{icon:2}); }); return; } if(name == 'beta'){ neice(); return; } $.post('/ajax?action=GetQiniuAS','name='+name,function(rdata){ var keyMsg = rdata.info.key.split('|'); var secretMsg = rdata.info.secret.split('|'); var bucketMsg = rdata.info.bucket.split('|'); var domainMsg = rdata.info.domain.split('|'); var body="
    " +"

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

    " +"

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

    " +"

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

    " +"

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

    " +'
    ' +'' +'' +"" +'
    ' +"
    " layer.open({ type: 1, shift: 5, closeBtn: 2, area: '700px', title: lan.soft.lib_config+rdata.info.name, content: body }); }); } //安装插件 function InstallLib(name){ layer.confirm(lan.soft.lib_insatll_confirm.replace('{1}',name),{title:lan.soft.lib_install,icon:3,closeBtn:2}, function() { var loadT = layer.msg(lan.soft.lib_install_the,{icon:16,time:0,shade:[0.3,'#000']}); $.post('/ajax?action=InstallLib','name='+name,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); if(rdata.status){ GetSList(); SetLibConfig(name); } }); }); } //卸载插件 function UninstallLib(name){ layer.confirm(lan.soft.lib_uninsatll_confirm.replace('{1}',name),{title:lan.soft.lib_uninstall,icon:3,closeBtn:2}, function() { var loadT = layer.msg(lan.soft.lib_uninstall_the,{icon:16,time:0,shade:[0.3,'#000']}); $.post('/ajax?action=UninstallLib','name='+name,function(rdata){ layer.close(loadT); layer.msg(rdata.msg,{icon:rdata.status?1:2}); if(rdata.status){ GetSList(); } }); }); } //首页显示 function toIndexDisplay(name,version){ var status = $("#index_"+name).prop("checked")?"0":"1"; if(name == "php"){ var verinfo = version.replace(/\./,""); status = $("#index_"+name+verinfo).prop("checked")?"0":"1"; } var data= "name="+name+"&status="+status+"&version="+version; $.post("plugin?action=setPluginStatus",data,function(rdata){ if(rdata.status){ layer.msg(rdata.msg,{icon:1}) } }) } //刷新缓存 function flush_cache(){ var loadT = layer.msg(lan.soft.get_list,{icon:16,time:0,shade: [0.3, '#000']}) $.post('/plugin?action=flush_cache',{},function(rdata){ layer.close(loadT) layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } $(function(){ if(window.document.location.pathname == '/soft'){ setInterval(function(){GetSList(true);},5000); } }); updateSoftList();