diff --git a/BTPanel/static/js/public_backup.js b/BTPanel/static/js/public_backup.js index 38f608da..c153aaf6 100644 --- a/BTPanel/static/js/public_backup.js +++ b/BTPanel/static/js/public_backup.js @@ -514,13 +514,16 @@ var bt = }; if(!config.hasOwnProperty('time')) config.time = 2000; if(typeof config.msg=='string' && bt.contains(config.msg,'ERROR')) config.time = 0; - - if(config.hasOwnProperty('icon')){ - if(typeof config.icon=='boolean') config.icon = config.icon?1:2; - } - else if(config.hasOwnProperty('status')){ - config.icon=config.status?1:2; - } + + if (config.hasOwnProperty('icon')) { + if (typeof config.icon == 'boolean') config.icon = config.icon ? 1 : 2; + } + else if (config.hasOwnProperty('status')) { + config.icon = config.status ? 1 : 2; + if (!config.status) { + btnObj.time = 0; + } + } if(config.icon) btnObj.icon = config.icon; btnObj.time = config.time; var msg = '' diff --git a/BTPanel/static/js/public_backup_.js b/BTPanel/static/js/public_backup_.js deleted file mode 100644 index f6bf551a..00000000 --- a/BTPanel/static/js/public_backup_.js +++ /dev/null @@ -1 +0,0 @@ -var bt = { os : 'Linux', check_ip : function(ip) //验证 ip { var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; return reg.test(ip); }, check_ips : function(ips)//验证ip段 { var reg = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/\d{1,2})?$/; return reg.test(ip); }, check_url : function(url) //验证url { var reg = /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/; return reg.test(url); }, check_port : function(port) { var reg = /^([1-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; return reg.test(port); }, check_chinese : function(str) { var reg = /[\u4e00-\u9fa5]/; return reg.test(str); }, check_domain : function(domain) //验证域名 { var reg = /^([\w\-\*]{1,100}\.){1,4}([\w\-]{1,24}|[\w\-]{1,24}\.[\w\-]{1,24})$/; return reg.test(bt.strim(domain)); }, check_img : function(fileName) //验证是否图片 { var exts = ['jpg','jpeg','png','bmp','gif','tiff','ico']; var check = bt.check_exts(fileName,exts); return check; }, check_zip : function(fileName) { var ext = fileName.split('.'); var extName = ext[ext.length-1].toLowerCase(); if( extName == 'zip') return 0; if( extName == 'rar') return 2; if( extName == 'gz' || extName == 'tgz') return 1; return -1; }, check_text : function(fileName) { var exts = ['rar','zip','tar.gz','gz','iso','xsl','doc','xdoc','jpeg','jpg','png','gif','bmp','tiff','exe','so','7z','bz']; return bt.check_exts(fileName,exts)?false:true; }, check_exts : function(fileName,exts) { var ext = fileName.split('.'); if(ext.length < 2) return false; var extName = ext[ext.length-1].toLowerCase(); for(var i=0;iarr2.length?arr1.length:arr2.length; while(leng - arr1.length>0){ arr1.push(0); } while(leng - arr2.length>0){ arr2.push(0); } for (var i=0;i= 0; } return false; }, format_size : function(bytes ,is_unit,fixed, end_unit) //字节转换,到指定单位结束 is_unit:是否显示单位 fixed:小数点位置 end_unit:结束单位 { if (bytes == undefined) return 0; if(is_unit==undefined) is_unit = true; if(fixed==undefined) fixed = 2; if (end_unit == undefined) end_unit = ''; if(typeof bytes == 'string') bytes = parseInt(bytes); var unit = [' B',' KB',' MB',' GB','TB']; var c = 1024; for(var i=0;i 10){ tm = tm.substring(0,10); } var data = new Date(parseInt(tm) * 1000); var o = { "M+" : data.getMonth()+1, //month "d+" : data.getDate(), //day "h+" : data.getHours(), //hour "m+" : data.getMinutes(), //minute "s+" : data.getSeconds(), //second "q+" : Math.floor((data.getMonth()+3)/3), //quarter "S" : data.getMilliseconds() //millisecond } if(/(y+)/.test(format)) format=format.replace(RegExp.$1, (data.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o)if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); return format; }, format_path:function(path){ var reg = /(\\)/g; path = path.replace(reg,'/'); return path; }, get_random : function(len) { len = len || 32; var $chars = 'AaBbCcDdEeFfGHhiJjKkLMmNnPpRSrTsWtXwYxZyz2345678'; // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 var maxPos = $chars.length; var pwd = ''; for (i = 0; i < len; i++) { pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd; }, refresh_pwd : function(length,obj) { if(obj==undefined) obj = 'MyPassword'; var _input = $("#"+obj); if(_input.length>0){ _input.val(bt.get_random(length)) } else{ $("."+obj).val(bt.get_random(length)) } }, get_random_num : function(min,max) //生成随机数 { var range = max - min; var rand = Math.random(); var num = min + Math.round(rand * range); //四舍五入 return num; }, set_cookie : function(key,val) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = key + "="+ escape (val) + ";expires=" + exp.toGMTString(); }, get_cookie : function(key) { var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) { var val = unescape(arr[2]); return val== 'undefined'?'':val; } else{ return null; } }, select_path:function(id){ _this = this; _this.set_cookie("SetName", ""); var loadT = bt.open({ type: 1, area: "650px", title: lan.bt.dir, closeBtn: 2, shift: 5, content: "
"+lan.bt.path+":
"+lan.bt.comp+"
    "+lan.bt.filename+""+lan.bt.etime+""+lan.bt.access+""+lan.bt.own+"
    " }); setTimeout(function(){ $('#btn_back').click(function(){ var path = $("#PathPlace").find("span").text(); path = bt.rtrim(bt.format_path(path),'/'); var back_path = bt.get_file_path(path); get_file_list(back_path); }) //选择 $('#bt_select').click(function(){ var path = bt.format_path($("#PathPlace").find("span").text()); path = bt.rtrim(path,'/') $("#"+id).val(path); $("."+id).val(path); loadT.close(); }) },100) get_file_list($("#" + id).val()) function get_file_list(path) { bt.send('GetDir', 'files/GetDir', { path: path, disk: true }, function (rdata) { var d = '',a=''; if(rdata.DISK != undefined) { for(var f = 0; f < rdata.DISK.length; f++) { a += "
     " + rdata.DISK[f].path + "
    " } $("#changecomlist").html(a) } for(var f = 0; f < rdata.DIR.length; f++) { var g = rdata.DIR[f].split(";"); var e = g[0]; if(e.length > 20) { e = e.substring(0, 20) + "..." } if(isChineseChar(e)) { if(e.length > 10) { e = e.substring(0, 10) + "..." } } d += "" + e + "" + bt.format_data(g[2]) + "" + g[3] + "" + g[4] + "X" } if(rdata.FILES != null && rdata.FILES != "") { for(var f = 0; f < rdata.FILES.length; f++) { var g = rdata.FILES[f].split(";"); var e = g[0]; if(e.length > 20) { e = e.substring(0, 20) + "..." } if(isChineseChar(e)) { if(e.length > 10) { e = e.substring(0, 10) + "..." } } d += "" + e + "" + bt.format_data(g[2]) + "" + g[3] + "" + g[4] + "" } } $(".default").hide(); $(".file-list").show(); $("#tbody").html(d); if(rdata.PATH.substr(rdata.PATH.length - 1, 1) != "/") { rdata.PATH += "/" } $("#PathPlace").find("span").html(rdata.PATH); $('.bt_open_dir').click(function(){ get_file_list($(this).attr('path')); }) }) } function ActiveDisk() { var a = $("#PathPlace").find("span").text().substring(0, 1); switch (a) { case "C": $(".path-con-left dd:nth-of-type(1)").css("background", "#eee").siblings().removeAttr("style"); break; case "D": $(".path-con-left dd:nth-of-type(2)").css("background", "#eee").siblings().removeAttr("style"); break; case "E": $(".path-con-left dd:nth-of-type(3)").css("background", "#eee").siblings().removeAttr("style"); break; case "F": $(".path-con-left dd:nth-of-type(4)").css("background", "#eee").siblings().removeAttr("style"); break; case "G": $(".path-con-left dd:nth-of-type(5)").css("background", "#eee").siblings().removeAttr("style"); break; case "H": $(".path-con-left dd:nth-of-type(6)").css("background", "#eee").siblings().removeAttr("style"); break; default: $(".path-con-left dd").removeAttr("style") } } }, show_confirm : function(title, msg, fun, error) { if(error == undefined) { error = "" } var d = Math.round(Math.random() * 9 + 1); var c = Math.round(Math.random() * 9 + 1); var e = ""; e = d + c; sumtext = d + " + " + c; bt.set_cookie("vcodesum", e); var mess = layer.open({ type: 1, title: title, area: "350px", closeBtn: 2, shadeClose: true, content: "

    " + msg + "

    " + error + "
    "+lan.bt.cal_msg+"" + sumtext + "=
    " }); $("#vcodeResult").focus().keyup(function(a) { if(a.keyCode == 13) { $("#toSubmit").click() } }); $(".bt-cancel").click(function(){ layer.close(mess); }); $("#toSubmit").click(function() { var a = $("#vcodeResult").val().replace(/ /g, ""); if(a == undefined || a == "") { layer.msg(lan.bt.cal_err); return } if(a != bt.get_cookie("vcodesum")) { layer.msg(lan.bt.cal_err); return } layer.close(mess); fun(); }) }, to_login:function() { layer.confirm('您的登陆状态已过期,请重新登陆!',{title:'会话已过期',icon:2,closeBtn: 1,shift: 5},function(){ location.reload(); }); }, do_login:function() { bt.confirm({msg:lan.bt.loginout},function(){ window.location.href = "/login?dologin=True" }) }, send : function(response,module,data,callback,sType) { if(sType==undefined) sType=1; module = module.replace('panel_data','data'); sType=1; var str = bt.get_random(16); console.time(str); if(!response) alert(lan.get('lack_param',['response'])); modelTmp = module.split('/') if(modelTmp.length<2) alert(lan.get('lack_param',['s_module','action'])); if(bt.os == 'Linux' && sType === 0) { socket.on(response,function(rdata){ socket.removeAllListeners(response); var rRet = rdata.data; if(rRet.status===-1){ bt.to_login(); return; } console.timeEnd(str); if(callback) callback(rRet); }); if(!data) data = {}; data = bt.linux_format_param(data); data['s_response'] = response; data['s_module'] = modelTmp[0]; data['action'] = modelTmp[1]; socket.emit('panel',data) } else{ data = bt.win_format_param(data); var url = '/' + modelTmp[0] + '?action=' + modelTmp[1]; $.post(url,data,function(rdata){ if(callback) callback(rdata); }).error(function(){ if(callback) callback('error'); }); } }, linux_format_param : function(param) { if(typeof param == 'string') { var data= {}; arr = param.split('&'); var reg = /(^[^=]*)=(.*)/; for (var i=0;i=3) data[tmp[1]] = tmp[2]=='undefined'?'': tmp[2]; } return data; } return param; }, win_format_param : function(param) { if(typeof data == 'object') { var data = ''; for(var key in param){ data+=key+'='+param[key]+'&'; } if(data.length>0) data = data.substr(0,data.length-1); return data; } return param; }, msg : function(config) { var btns = new Array(); var btnObj = { title:config.title?config.title:false, shadeClose: config.shadeClose?config.shadeClose:true, closeBtn: config.closeBtn?config.closeBtn:0, scrollbar:true, shade:0.3, }; if(!config.hasOwnProperty('time')) config.time = 2000; if(typeof config.msg=='string' && bt.contains(config.msg,'ERROR')) config.time = 0; if(config.hasOwnProperty('icon')){ if(typeof config.icon=='boolean') config.icon = config.icon?1:2; } else if(config.hasOwnProperty('status')){ config.icon=config.status?1:2; } if(config.icon) btnObj.icon = config.icon; btnObj.time = config.time; var msg = '' if(config.msg) msg += config.msg; if(config.msg_error) msg+=config.msg_error; if(config.msg_solve) msg+=config.msg_solve; layer.msg(msg,btnObj); }, confirm : function(config,callback){ var btnObj = { title:config.title?config.title:false, time : config.time?config.time:0, shadeClose: config.shadeClose?config.shadeClose:true, closeBtn: config.closeBtn?config.closeBtn:2, scrollbar:true, shade:0.3, icon:3 }; layer.confirm(config.msg, btnObj, function(index){ if(callback) callback(index); }); }, load : function(msg) { if(!msg) msg = lan.public.the; var loadT = layer.msg(msg,{icon:16,time:0,shade: [0.3, '#000']}); var load = { form : loadT, close:function(){ layer.close(load.form); } } return load; }, open: function(config) { config.closeBtn = 2; var loadT = layer.open(config); var load = { form : loadT, close:function(){ layer.close(load.form); } } return load; }, closeAll : function(){ layer.closeAll(); }, check_select:function(){ setTimeout(function () { var num = $('input[type="checkbox"].check:checked').length; console.log(num); if (num == 1) { $('button[batch="true"]').hide(); $('button[batch="false"]').show(); }else if (num>1){ $('button[batch="true"]').show(); $('button[batch="false"]').show(); }else{ $('button[batch="true"]').hide(); $('button[batch="false"]').hide(); } },5) }, render_help:function(arr){ var html = '
      '; for(var i = 0;i'; } html += '
    '; return html; }, render_ps:function(item){ var html='

    '+item.title+'

    '; for(var i = 0;i' + item.list[i].val + '

    '; } html+='

    '; return html; }, render_table:function(obj,arr){ //渲染表单表格 var html = ''; for (var key in arr) { html+=''+key +''+arr[key]+''; } $('#'+obj).html(html); }, fixed_table:function(name){ $('#'+name).parent().bind('scroll',function(){ var scrollTop = this.scrollTop; $(this).find("thead").css({"transform":"translateY("+scrollTop+"px)","position":"relative","z-index":"1"}); }); }, render_tab:function(obj,arr){ var _obj = $('#'+obj).addClass("tab-nav"); for(var i = 0;i'+item.title+'') if(item.callback){ _tab.data('callback',item.callback); _tab.click(function(){ $('#'+obj).find('span').removeClass('on'); $(this).addClass('on'); var _contents =$('.tab-con'); _contents.html(''); $(this).data('callback')(_contents); }) } _obj.append(_tab); } }, render_form_line:function(item,bs){ var clicks = [], _html = '',_hide='',is_title_css = ' ml0'; if(!bs) bs = ''; if(item.title){ _html += ''+item.title+''; is_title_css = ''; } _html += "
    "; var _name = item.name; var _placeholder = item.placeholder; if(item.items && item.type!='select') { for(var x=0;x'; for(var j=0;j<_obj.items.length;j++){ _html+=''; } _html +=''; break; case 'textarea': var _width = _obj.width?_obj.width:'330px'; var _height = _obj.height?_obj.height:'100px'; _html += ''; if(_placeholder) _html+='
    '+_placeholder+'
    '; break; case 'button': var _width = _obj.width?_obj.width:'330px'; _html +=''; break; case 'radio': var _v = _obj.value===true?'checked':'' _html +='' break; case 'checkbox': var _v = _obj.value===true?'checked':'' _html +='' break; case 'number': var _width = _obj.width?_obj.width:'330px'; _html += ""; _html += _obj.unit?_obj.unit:''; break; case 'password': var _width = _obj.width?_obj.width:'330px'; _html += ""; break; default: var _width = _obj.width?_obj.width:'330px'; _html += ""; break; } if(_obj.title) _html+=''; if(_obj.callback) clicks.push({bind: _name + bs,callback:_obj.callback}); if(_obj.event) { _html +=''; if(_obj.event.callback) clicks.push({bind:'icon_'+ _name + bs,callback:_obj.event.callback}); } if(_obj.ps) _html +="

    "+_obj.ps+"

    "; } if(item.ps) _html +="

    "+item.ps+"

    "; } else{ switch(item.type){ case 'select': var _width = item.width?item.width:'100px'; _html += ''; break; case 'button': var _width = item.width?item.width:'330px'; _html +=''; break; case 'number': var _width = item.width?item.width:'330px'; _html += ""; break; case 'checkbox': var _v = item.value===true?'checked':'' _html +='' break; case 'password': var _width = item.width?item.width:'330px'; _html += ""; break; default: var _width = item.width?item.width:'330px'; _html += ""; break; } if(item.callback) clicks.push({bind: _name + bs,callback:item.callback}); } _html += '
    '; if(!item.class) item.class=''; if(item.hide) _hide = 'style="display:none;"' _html = '
    ' + _html +'
    ' return { html: _html,clicks:clicks,data:item}; }, render_form:function(data,callback){ if(data){ var bs = '_' + bt.get_random(6); var _form = $("
    "); var _lines = data.list; var clicks = []; for (var i = 0;i<_lines.length;i++){ var rRet = bt.render_form_line(_lines[i],bs); for(var s = 0;s"+item.title+""; clicks.push({bind:item.name + bs,callback:item.callback}); } _form.append("
    " + _btn_html + "
    "); var loadOpen = bt.open({ type: 1, skin: data.skin, area: data.area, title: data.title, closeBtn: 2, content:_form.prop("outerHTML") }) setTimeout(function(){ bt.render_clicks(clicks,loadOpen,callback); },100) } return bs; }, render_clicks:function(clicks,loadOpen,callback){ for(var i =0;i'; } if(item.help) thead+='?'; thead += ''; } } thead += ''; var _tab = $(obj.table).append(thead); if(obj.data.length>0){ for (var i=0;i < obj.data.length;i++) { var val = obj.data[i]; var tr = $(''); for (var h=0;h < obj.columns.length;h++) { var item = obj.columns[h]; if(item){ var _val = val[item.field]; if(typeof _val =='string') _val= _val.replace(/\\/g,''); if(item.hasOwnProperty('templet')) _val = item.templet(val); if(item.type=='checkbox') _val = ''; var td = ''); tr.data('item',val); _tab.append(tr); } } } } else{ _tab.append(""+lan.bt.no_data+""); } $(obj.table).find('.check').click(function(){ var checked = $(this).prop('checked'); if($(this).parent().prop('tagName')=='TH'){ $('.check').prop('checked',checked?'checked':''); } }) $(obj.table).find('th').data('checks',checks).click(function(){ var _th =$(this); var _checks = _th.data('checks'); var _span = _th.find('span'); if(_span.length>0){ var asc = 'glyphicon-triangle-top'; var desc = 'glyphicon-triangle-bottom'; var or = _span.attr('data-id'); if(_span.hasClass(asc)){ bt.set_cookie('order',or + ' desc'); _checks[or](); setTimeout(function(){ $(obj.table).find('th span[data-id="'+or+'"]').removeClass(asc).addClass(desc); },100) }else if(_span.hasClass(desc)){ bt.set_cookie('order',or + ' asc'); _checks[or](); setTimeout(function(){ $(obj.table).find('th span[data-id="'+or+'"]').removeClass(desc).addClass(asc); },100) } } }) } return _tab; } }; bt.pub = { get_data : function(data,callback,hide){ if(!hide) var loading = bt.load(lan.public.the); bt.send('getData','data/getData',data,function(rdata){ if(loading) loading.close(); if(callback) callback(rdata); }) }, set_data_by_key: function (tab, key, obj) { var _span = $(obj); var _input = $(""); _span.hide().after(_input); _input.focus(); _input.blur(function(){ var item = $(this).parents('tr').data('item'); var _txt = $(this); var data = {table:tab,id:item.id}; data[key] = _txt.val() bt.pub.set_data_ps(data,function(rdata){ if(rdata.status){ _span.text(_txt.val()); _span.show(); _txt.remove(); } }) }) _input.keyup(function(){ if(event.keyCode == 13){ _input.trigger("blur"); } }) }, set_data_ps:function(data,callback){ bt.send('setPs','data/setPs',data,function(rdata){ if(callback) callback(rdata); }) }, set_server_status : function(serverName,type) { if(bt.contains(serverName,'php-')) { serverName = "php-fpm-" + serverName.replace('php-','').replace('.',''); } if(serverName=='pureftpd') serverName = 'pure-ftpd'; if(serverName=='mysql') serverName = 'mysqld'; serverName = serverName.replace('_soft',''); var data = "name=" + serverName + "&type=" + type; var msg = lan.bt[type]; bt.confirm({msg:lan.get('service_confirm',[msg,serverName])},function(){ var load = bt.load(lan.get('service_the',[msg,serverName])) bt.send('system','system/ServiceAdmin',data,function(rdata){ load.close(); var f = rdata.status ? lan.get('service_ok',[serverName,msg]):lan.get('service_err',[serverName,msg]); bt.msg({msg:f,icon:rdata.status}) if(type != "reload" && rdata.status) { setTimeout(function() { window.location.reload() }, 1000) } if(!rdata.status) { bt.msg(rdata); } }) }) }, set_server_status_by:function(data,callback){ bt.send('system','system/ServiceAdmin',data,function(rdata){ if(callback) callback(rdata) }) }, get_task_count:function(){ bt.send('GetTaskCount','ajax/GetTaskCount',{},function(rdata){ $(".task").text(rdata) }) }, check_install:function(callback){ bt.send('CheckInstalled','ajax/CheckInstalled',{},function(rdata){ if(callback) callback(rdata); }) }, get_user_info:function(callback){ var loading = bt.load(); bt.send('GetUserInfo','ssl/GetUserInfo',{},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, show_hide_pass:function(obj){ var a = "glyphicon-eye-open"; var b = "glyphicon-eye-close"; if($(obj).hasClass(a)){ $(obj).removeClass(a).addClass(b); $(obj).prev().text($(obj).prev().attr('data-pw')) } else{ $(obj).removeClass(b).addClass(a); $(obj).prev().text('**********'); } }, copy_pass:function(password){ var clipboard = new ClipboardJS('#bt_copys'); clipboard.on('success', function (e) { bt.msg({msg:'复制成功',icon:1}); }); clipboard.on('error', function (e) { bt.msg({msg:'复制失败,浏览器不兼容!',icon:2}); }); $("#bt_copys").attr('data-clipboard-text',password); $("#bt_copys").click(); }, login_btname: function (username,password,callback) { var loadT = bt.load(lan.config.token_get); bt.send('GetToken', 'ssl/GetToken', "username=" + username + "&password=" + password, function (rdata) { loadT.close(); bt.msg(rdata); if (rdata.status) { if (callback) callback(rdata) } }) }, bind_btname : function(callback) { layer.open({ type: 1, title: '绑定宝塔官网账号', area: ['420px','360px'], closeBtn: 2, shadeClose: false, content:'

    绑定宝塔官网账号

    未有账号,去注册

    ' }); setTimeout(function(){ $('.login-button').click(function(){ p1 = $("#p1").val(); p2 = $("#p2").val(); var loadT = bt.load(lan.config.token_get); bt.send('GetToken','ssl/GetToken',"username=" + p1 + "&password=" + p2,function(rdata){ loadT.close(); bt.msg(rdata); if(rdata.status) { if(callback){ layer.closeAll(); callback(rdata) } else{ window.location.reload(); } $("input[name='btusername']").val(p1); } }) }) },100) }, unbind_bt : function() { var name = $("input[name='btusername']").val(); bt.confirm({msg:lan.config.binding_un_msg,title:lan.config.binding_un_title},function(){ bt.send('DelToken','ssl/DelToken',{},function(rdata){ bt.msg(rdata); $("input[name='btusername']").val(''); }) }) }, get_menm:function(callback){ var loading = bt.load(); bt.send('GetMemInfo','system/GetMemInfo',{},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, on_edit_file:function(type, fileName) { if(type != 0) { var l = $("#PathPlace input").val(); var body = encodeURIComponent($("#textBody").val()); var encoding = $("select[name=encoding]").val(); var loadT = bt.load(lan.bt.save_file); bt.send('SaveFileBody','files/SaveFileBody',"data=" + body + "&path=" + fileName + "&encoding=" + encoding,function(rdata){ if(type == 1) loadT.close(); bt.msg(rdata); }) return; } var loading = bt.load(lan.bt.read_file); ext = bt.get_file_ext(fileName); doctype = ''; switch(ext) { case "html": var mixedMode = {name: "htmlmixed",scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,mode: null}, {matches: /(text|application)\/(x-)?vb(a|script)/i,mode: "vbscript"}]}; doctype = mixedMode; break; case "htm": var mixedMode = {name: "htmlmixed",scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,mode: null},{matches: /(text|application)\/(x-)?vb(a|script)/i,mode: "vbscript"}]}; doctype = mixedMode; break; case "js": doctype = "text/javascript"; break; case "json": doctype = "application/ld+json"; break; case "css": doctype = "text/css"; break; case "php": doctype = "application/x-httpd-php"; break; case "tpl": doctype = "application/x-httpd-php"; break; case "xml": doctype = "application/xml"; break; case "sql": doctype = "text/x-sql"; break; case "conf": doctype = "text/x-nginx-conf"; break; default: var mixedMode = {name: "htmlmixed",scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,mode: null}, {matches: /(text|application)\/(x-)?vb(a|script)/i,mode: "vbscript"}]}; doctype = mixedMode; break; } bt.send('GetFileBody','files/GetFileBody','path='+fileName,function(rdata){ if(!rdata.status){ bt.msg({msg:rdata.msg,icon:5}); return; } loading.close(); var u = ["utf-8", "GBK", "GB2312", "BIG5"]; var n = ""; var m = ""; var o = ""; for(var p = 0; p < u.length; p++) { m = rdata.encoding == u[p] ? "selected" : ""; n += '" } var r = bt.open({ type: 1, shift: 5, closeBtn: 1, //maxmin: true, area: ["90%", "90%"], shade:false, title: lan.bt.edit_title+"[" + fileName + "]", content: '

    '+lan.bt.edit_ps +'

    \
    \
    证书(PEM格式)
    \ \
    \
    \ \
    \ \
      \
    • 粘贴您的*.key以及*.pem内容,然后保存即可[帮助]
    • \
    • 如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书
    • PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt
    • \
    \ ' bt.open({ type: 1, area: "600px", title: '自定义面板证书', closeBtn: 2, shift: 5, shadeClose: false, content:certBody }); $("#btn_submit").click(function(){ key = $('#key').val(); csr = $('#csr').val(); _this.set_panel_ssl({privateKey:key,certPem:csr}); }) }) }, set_panel_ssl:function(data,callback) { var loadT = bt.load(lan.config.ssl_msg); bt.send('SavePanelSSL','config/SavePanelSSL',data,function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }) }, set_username:function(type) { if(type==1) { if(p1 == "" || p1.length < 3) { bt.msg({msg:lan.bt.user_len,icon:2}) return; } if(p1 != p2) { bt.msg({msg:lan.bt.user_err_re,icon:2}) return; } var checks = ['admin','root','admin123','123456']; if($.inArray(p1,checks)){ bt.msg({msg:'禁止使用常用用户名!',icon:2}) return; } bt.send('setUsername','config/setUsername',{username1:p1,username2:p2},function(rdata){ if(rdata.status) { layer.closeAll(); $("input[name='username_']").val(p1) } bt.msg(rdata); }) return; } bt.open({ type: 1, area: "290px", title: lan.bt.user_title, closeBtn: 2, shift: 5, shadeClose: false, content: "
    "+lan.bt.user+"
    "+lan.bt.pass_re+"
    " }) }, set_password:function(type){ if(type == 1) { p1 = $("#p1").val(); p2 = $("#p2").val(); if(p1 == "" || p1.length < 8) { bt.msg({msg:lan.bt.pass_err_len,icon:2}) return } //准备弱口令匹配元素 var checks = ['admin888','123123123','12345678','45678910','87654321','asdfghjkl','password','qwerqwer']; pchecks = 'abcdefghijklmnopqrstuvwxyz1234567890'; for(var i=0;i
    "+lan.public.pass+"
    "+lan.bt.pass_re+"
    "+lan.bt.pass_rep_btn+"
    " }); } } bt.system = { get_total:function(callback){ bt.send('GetSystemTotal','system/GetSystemTotal',{},function(rdata){ if(callback) callback(rdata); }) }, get_net:function(callback){ bt.send('GetNetWork','system/GetNetWork',{},function(rdata){ if(callback) callback(rdata); }) }, get_disk_list:function(callback){ bt.send('GetDiskInfo','system/GetDiskInfo',{},function(rdata){ if(callback) callback(rdata); }) }, re_memory : function(callback){ bt.send('ReMemory','system/ReMemory',{},function(rdata){ if(callback) callback(rdata); }) }, check_update: function (callback, check) { var data = {}; if (check == undefined) data = { check: true }; if (check === false) data = {} if (check) var load = bt.load(lan.index.update_get); bt.send('UpdatePanel', 'ajax/UpdatePanel', data ,function(rdata){ if (check) load.close(); if(callback) callback(rdata); }) }, to_update: function (callback){ var load = bt.load(lan.index.update_the); bt.send('UpdatePanel', 'ajax/UpdatePanel', { toUpdate: 'yes' }, function (rdata) { load.close(); if (callback) callback(rdata); }) }, reload_panel:function(callback){ bt.send('ReWeb','system/ReWeb',{},function(rdata){ if(callback) callback(rdata); }) }, rep_panel:function(callback){ var loading = bt.load(lan.index.rep_panel_the) bt.send('RepPanel','system/RepPanel',{},function(rdata){ loading.close(); if(rdata){ if(callback) callback({status:rdata,msg:lan.index.rep_panel_ok}); bt.system.reload_panel(); } }) }, get_warning:function(callback){ bt.send('GetWarning','ajax/GetWarning',{},function(rdata){ if(callback) callback(rdata); }) }, root_reload:function(callback){ bt.send('RestartServer','system/RestartServer',{},function(rdata){ if(callback) callback(rdata); }) } } bt.control = { get_status:function(callback){ loading = bt.load(lan.public.read); bt.send('GetControl','control/SetControl',{type:1},function(rdata){ if(callback) callback(rdata); }) }, set_control:function(type,day,callback){ loadT = bt.load(lan.public.the); bt.send('SetControl','config/SetControl',{type:type,day:day},function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }) }, clear_control:function(callback){ bt.confirm({msg:lan.control.close_log_msg,title:lan.control.close_log},function(){ loadT = bt.load(lan.public.the); bt.send('SetControl','config/SetControl',{type:'del'},function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }) }) }, get_data:function(type,start,end,callback){ action = ''; switch(type) { case 'cpu': //cpu和内存一起获取 action='GetCpuIo'; break; case 'disk': action='GetDiskIo'; break; case 'net': action='GetNetWorkIo'; break; case 'load': action='get_load_average'; break; } if(!action) bt.msg(lan.get('lack_param','type')); bt.send(action,'ajax/'+action,{start:start,end:end},function(rdata){ if(callback) callback(rdata,type); }) }, format_option:function(obj,type){ option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }, formatter: obj.formatter }, xAxis: { type: 'category', boundaryGap: false, data: obj.tData, axisLine:{ lineStyle:{ color:"#666" } } }, yAxis: { type: 'value', name: obj.unit, boundaryGap: [0, '100%'], min:0, splitLine:{ lineStyle:{ color:"#ddd" } }, axisLine:{ lineStyle:{ color:"#666" } } }, dataZoom: [{ type: 'inside', start: 0, zoomLock:true }, { start: 0, handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', handleSize: '80%', handleStyle: { color: '#fff', shadowBlur: 3, shadowColor: 'rgba(0, 0, 0, 0.6)', shadowOffsetX: 2, shadowOffsetY: 2 } }], series: [] }; if(obj.legend) option.legend = obj.legend; if(obj.dataZoom) option.dataZoom = obj.dataZoom; for (var i=0;i li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); }); },100) }) }, re_plugin_pay:function(pluginName,pid,type){ bt.pub.get_user_info(function(rdata){ if(!rdata.status) { bt.pub.bind_btname(0,function(rdata){ if(rdata.status) bt.soft.re_plugin_pay(pluginName,pid,type); }) return; } var txt = '购买'; if(type) txt = '续费'; var payhtml = '
    \
    \
    类型
    \
    \
      \
    • '+pluginName+'1款插件
    • \
    • 升级为专业版所有插件免费使用
    • \
    \ \
    \
    \
    \
    \
    '; layer.open({ type: 1, title: txt + pluginName, area: ['616px','680px'], closeBtn: 2, shadeClose: false, content:payhtml }); setTimeout(function(){ bt.soft.get_product_discount(pluginName,pid); $(".li-c-item li").click(function(){ var i = $(this).index(); $(this).addClass("active").siblings().removeClass("active"); if(i==0){ bt.soft.get_product_discount(pluginName,pid); $(".pro-info").hide(); } else{ bt.soft.get_product_discount('',0); $(".pro-info").show(); } }); $(".pay-btn-group > li").click(function(){ $(this).addClass("active").siblings().removeClass("active"); }); },100) }) }, get_voucher_list:function(pid){ $("#couponlist").html("
    加载中,请稍后
    "); bt.soft.pro.get_voucher(pid,function(rdata){ if(rdata !=null && rdata.length>0){ 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{ bt.soft.pro.create_order_voucher(pid,code,function(rdata){ layer.closeAll(); bt.set_cookie('force',1); if(soft) soft.flush_cache(); bt.msg(rdata); }); } }) } else{ $("#couponlist").html("

    暂无代金券

    "); } }) }, get_rscode:function(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('
    '); bt.soft.pro.create_order(pid,cycle,function(rdata){ $(".payloadingmask").remove(); if(rdata.status === false){ bt.set_cookie('force',1); if(soft) soft.flush_cache(); layer.msg(rdata.msg,{icon:2}); return; } $(".pay-wx").html(''); $(".pay-wx").qrcode(rdata.msg); clearInterval(bt.soft.pub.wxpayTimeId); if (pid) { bt.soft.pub.wxpayTimeId = setInterval(function () { bt.soft.pro.get_plugin_coupon(pid,function (rdata) { if (rdata.status) { layer.closeAll(); clearInterval(bt.soft.pub.wxpayTimeId); bt.msg({ msg: "插件支付成功!", icon: 16, time: 0, shade: [0.3, "#000"] }); bt.set_cookie('force', 1); if (soft) soft.flush_cache(); return; } }) }, 3000); } else { bt.soft.pub.wxpayTimeId = setInterval(function () { bt.soft.pro.get_re_order_status(function (rdata) { if (rdata.status) { layer.closeAll(); clearInterval(bt.soft.pub.wxpayTimeId); bt.msg({ msg: "专业版支付成功!", icon: 16, time: 0, shade: [0.3, "#000"] }); bt.set_cookie('force', 1); if (soft) soft.flush_cache(); return; } }) }, 3000); } }); }, get_product_discount:function(pluginName,pid){ if(pluginName ==undefined) pluginName=''; if(pid==undefined) pid= 0; var con = '
    \
    付款方式
    \
    • 微信支付
    • 代金券
    \
    \
    \
    \
    \
    开通时长
    \
    \
    \
    总计
    \
    \
    \
    微信扫码支付
    \
    \
    \ \
    ' $(".libpay-con").html("
    加载中,请稍后
    "); bt.soft.pro.get_product_discount_by(pluginName,function(rdata){ if(rdata !=null){ var coucon = ''; var qarr = Object.keys(rdata); var qlen = qarr.length; if(pluginName) qlen = qlen-1; //折扣列表 for(var i=0;i'+bt.soft.pro.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(); } }) }, get_index_list:function(callback){ bt.send('get_index_list','plugin/get_index_list',{},function(rdata){ if(callback) callback(rdata); }) }, set_sort_index:function(data,callback){ var loading = bt.load(); bt.send('sort_index','plugin/sort_index',{ssort:data},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_soft_list:function(p, type,search,callback){ if(p == undefined) p=1; if(type == undefined) type = 0; if(search == undefined) search = ''; var force = bt.get_cookie('force'); if(force == undefined) force = 0; var loading = bt.load(lan.public.the,1); bt.send('get_soft_list','plugin/get_soft_list',{p:p,type:type,tojs:'soft.get_list',force:force,query:search},function(rdata){ loading.close(); bt.set_cookie('force',0); if(callback) callback(rdata); }) }, to_index: function (name, callback) { var status = $("#index_" + name).prop("checked") ? "0" : "1"; if (name.indexOf('php-')>=0) { var verinfo = name.replace(/\./,""); status = $("#index_" + verinfo).prop("checked")?"0":"1"; } if(status==1){ bt.send('add_index','plugin/add_index',{sName:name},function(rdata){ rdata.time = 1000; if(!rdata.status) bt.msg(rdata); if(callback) callback(rdata); }) } else{ bt.send('remove_index','plugin/remove_index',{sName:name},function(rdata){ rdata.time = 1000; if(!rdata.status) bt.msg(rdata); if(callback) callback(rdata); }) } }, install:function(name){ _this = this; _this.get_soft_find(name, function (rdata) { var arrs = ['apache', 'nginx', 'mysql']; if ($.inArray(name, arrs) >= 0 || name.indexOf('php-')>=0) { var SelectVersion = '', shtml = name; if (rdata.versions.length > 1) { for (var i = 0; i < rdata.versions.length; i++) { var item = rdata.versions[i]; SelectVersion += ''; } shtml = ""; } else { shtml = "" + name + ""; } var loadOpen = bt.open({ type: 1, title: name + lan.soft.install_title, area: '350px', content: "
    \
    "+ lan.soft.install_version + ":" + shtml+"
    \
    "+ lan.bt.install_type + ":
    \
    \ \ \
    \
    " }) $('.fangshi input').click(function () { $(this).attr('checked', 'checked').parent().siblings().find("input").removeAttr('checked'); }); $("#bi-btn").click(function () { loadOpen.close(); var info = $("#SelectVersion").val().toLowerCase(); name = info.split(" ")[0]; version = info.split(" ")[1]; var type = $('.fangshi input:eq(0)').prop("checked") ? '1' : '0'; if (rdata.versions.length > 1) { _this.install_soft(rdata, version, type); } else { _this.install_soft(rdata, rdata.versions[0].m_version, type); } }); } else if (rdata.versions.length > 1) { var SelectVersion = ''; for(var i=0; i'; } var loadOpen = bt.open({ type: 1, title: name + lan.soft.install_title, area: '350px', content:"
    \
    "+ lan.soft.install_version + ":
    \
    \ \ \
    \
    " }) $("#bi-btn").click(function(){ loadOpen.close(); var info = $("#SelectVersion").val().toLowerCase(); name = info.split(" ")[0]; version = info.split(" ")[1]; _this.install_soft(rdata,version); }); } else{ _this.install_soft(rdata,rdata.versions[0].m_version); } }) }, install_soft: function (item, version, type) { //安装单版本 if (type == undefined) type = 0; item.title = bt.replace_all(item.title,'-' + version,''); var msg = item.type!=5?lan.soft.lib_insatll_confirm.replace('{1}',item.title):lan.get('install_confirm',[item.title,version]); bt.confirm({msg:msg,title:item.type!=5?lan.soft.lib_install:lan.soft.install_title}, function() { var loadT = bt.load(lan.soft.lib_install_the); bt.send('install_plugin', 'plugin/install_plugin', { sName: item.name, version: version, type:type }, function (rdata) { loadT.close(); bt.pub.get_task_count(); if(soft) soft.get_list(); bt.msg(rdata); }) }) }, update_soft:function(name,version,min_version){ var msg = "
  • 建议您在服务器负载闲时进行软件更新.
  • "; if(name == 'mysql') msg = "
    • 更新数据库有风险,建议在更新前,先备份您的数据库.
    • 如果您的是云服务器,强烈建议您在更新前做一个快照.
    • 建议您在服务器负载闲时进行软件更新.
    "; bt.show_confirm('更新['+name+']','更新过程可能会导致服务中断,您真的现在就将['+name+']更新到['+version+'.'+min_version+']吗?',function(){ var loadT = bt.load('正在更新到['+name+'-'+version+'.'+min_version+'],请稍候...'); bt.send('install_plugin','plugin/install_plugin',{sName:name,version:version,upgrade:version},function(rdata){ loadT.close(); bt.pub.get_task_count(); if(soft) soft.get_list(); bt.msg(rdata); }) },msg); }, un_install:function(name){ var _this = this; _this.get_soft_find(name,function(item){ var version = ''; for(var i=0;i1){ for(var i=0;i'+lan.soft.config_edit+'

    '+lan.soft.nginx_version+'

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

    '+lan.soft.config_edit+'

    '; } switch(name) { case 'mysqld': menu += '

    '+lan.soft.save_path+'

    '+lan.site.port+'

    '+lan.soft.status+'

    '+lan.soft.php_main7+'

    '+lan.soft.log+'

    '+lan.public.slow_log+'

    '; break; case 'phpmyadmin': menu = '

    '+lan.soft.php_version+'

    '+lan.soft.safe+'

    '; break; case 'memcached': menu += '

    负载状态

    性能调整

    '; break; case 'redis': menu += '

    负载状态

    '; break; case 'tomcat': menu += '

    运行日志

    '; break; case 'apache': case 'nginx': menu = '

    '+lan.soft.config_edit+'

    ' menu += (name=='nginx')?'

    '+lan.soft.nginx_status+'

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

    '+lan.soft.nginx_version+'

    '; } var logsPath = '/www/wwwlogs/error_log' if(name == 'nginx'){ logsPath = '/www/wwwlogs/nginx_error.log'; } menu+='

    错误日志

    '; break; } } return menu; }, get_tab_contents : function(key,name,value) //获取设置菜单操作 { var _this = this; switch(key) { case 'service': if(typeof value == 'string') value = value=='true'?true:false; var tabCon ='

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

    \
    \ \ \ \
    '; $(".soft-man-con").html(tabCon); var help = '
    • '+lan.soft.mysql_mem_err+'
    '; if(name == 'mysqld') $(".soft-man-con").append(help); break; case 'config': var con = '

    '+lan.bt.edit_ps+'

    \ \
      \
    • '+lan.get('config_edit_ps',[name])+'
    • \
    '; $(".soft-man-con").html(con); var fileName = bt.soft.get_config_path(name); var loadT = bt.load(lan.soft.get); bt.send('GetFileBody','files/GetFileBody',{path:fileName},function(rdata){ loadT.close(); $("#textBody").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":"350px","margin":0,"padding":0}); $("#OnlineEditFileBtn").click(function(){ $("#textBody").text(editor.getValue()); bt.soft.save_config(fileName,editor.getValue()) }); }) break; case 'change_version': if(name == "mysqld") name = "mysql"; var veropt = value.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(); _this.get_soft_find(name,function(rdata){ if(name=='mysql'){ bt.database.get_list(1,'',function(ddata){ if (ddata.data.length>0) { bt.msg({msg:lan.soft.mysql_d,icon:5,time:5000}) return; } _this.install_soft(rdata,ver.split(" ")[1],0); }) } else{ _this.install_soft(rdata,ver.split(" ")[1],0); } }) }); break; case 'change_data_path': bt.send('GetMySQLInfo','database/GetMySQLInfo',{},function(rdata){ var tabCon = '

    \ \ \

    '; $(".soft-man-con").html(tabCon); $("#btn_change_path").click(function(){ bt.confirm({msg:lan.soft.mysql_to_msg},function(){ var datadir = $("#datadir").val(); var loadT = bt.load(lan.soft.mysql_to_msg1); bt.send('SetDataDir','database/SetDataDir',{datadir:datadir},function(rdata){ loadT.close(); bt.msg(rdata); }); }); }); }); break; case 'change_mysql_port': bt.send('GetMySQLInfo','database/GetMySQLInfo',{},function(rdata){ var tabCon = '

    \ \ \

    '; $(".soft-man-con").html(tabCon); $("#btn_change_port").click(function(){ bt.confirm({msg:lan.soft.mysql_to_msg},function(){ var port = $("#dataport").val(); var loadT = bt.load(); bt.send('SetMySQLPort','database/SetMySQLPort',{port:port},function(rdata){ loadT.close(); bt.msg(rdata); }); }); }); }); break; case 'get_mysql_run_status': bt.send('GetRunStatus','database/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); }) break; case 'get_mysql_status': bt.send('GetDbStatus','database/GetDbStatus',{},function(rdata){ var key_buffer_size = bt.format_size(rdata.mem.key_buffer_size,false,0,'MB') var query_cache_size = bt.format_size(rdata.mem.query_cache_size,false,0,'MB') var tmp_table_size = bt.format_size(rdata.mem.tmp_table_size,false,0,'MB') var innodb_buffer_pool_size = bt.format_size(rdata.mem.innodb_buffer_pool_size,false,0,'MB') var innodb_additional_mem_pool_size = bt.format_size(rdata.mem.innodb_additional_mem_pool_size,false,0,'MB') var innodb_log_buffer_size = bt.format_size(rdata.mem.innodb_log_buffer_size,false,0,'MB') var sort_buffer_size = bt.format_size(rdata.mem.sort_buffer_size,false,0,'MB') var read_buffer_size = bt.format_size(rdata.mem.read_buffer_size,false,0,'MB') var read_rnd_buffer_size = bt.format_size(rdata.mem.read_rnd_buffer_size,false,0,'MB') var join_buffer_size = bt.format_size(rdata.mem.join_buffer_size,false,0,'MB') var thread_stack = bt.format_size(rdata.mem.thread_stack,false,0,'MB') var binlog_cache_size = bt.format_size(rdata.mem.binlog_cache_size,false,0,'MB') 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(); }); $('#btn_SetMySQLConf').click(function(){ SetMySQLConf(); }) //设置MySQL配置参数 function SetMySQLConf(){ bt.send('GetMemInfo','system/GetMemInfo',{},function(memInfo){ 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()) }; bt.send('SetDbConf','database/SetDbConf',data,function(rdata){ 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; } } }) break; case 'mysql_log': var loadT = bt.load(); bt.send('BinLog','database/BinLog',{status:1},function(rdata){ loadT.close(); var limitCon = '

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

    '+lan.soft.mysql_log_err+'

    \ \

    ' $(".soft-man-con").html(limitCon); //设置二进制日志 $(".btn-bin").click(function () { 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 }); bt.soft.get_tab_contents('mysql_log') }); }) //清空日志 $(".btn-clear").click(function () { 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 }); bt.soft.get_tab_contents('mysql_log') }); }) bt.send('GetErrorLog','database/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; }); }) break; case 'mysql_slow_log': var loadT = bt.load(); bt.send('GetSlowLogs','database/GetSlowLogs',{},function(logs){ loadT.close(); if(!logs.status){ logs.msg = ''; } if (logs.msg == '') logs.msg = '当前没有慢日志.'; var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }) break; case 'log': var loadT = bt.load(lan.public.the_get); bt.send('GetOpeLogs','ajax/GetOpeLogs',{path:name},function(rdata){ loadT.close(); if(rdata.msg == '') rdata.msg = '当前没有日志!'; var ebody = '
    '; $(".soft-man-con").html(ebody); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }) break; case 'nginx_status': bt.send('GetNginxStatus','ajax/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); }) break; case 'memcached_status': case 'memcached_set': var loadT = bt.load(lan.public.get_the); bt.send('GetMemcachedStatus','ajax/GetMemcachedStatus',{},function(rdata){ loadT.close(); if(key=='memcached_set') { var memCon = '
    \

    BindIP监听IP,请勿随意修改

    \

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

    \

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

    \

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

    \
    \
    ' $(".soft-man-con").html(memCon); $('.btn-success').click(function(){ 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 = bt.load(lan.public.the); bt.send('SetMemcachedCache','ajax/SetMemcachedCache',data,function(rdata){ loadT.close(); bt.msg(rdata) }); }) } else{ var memCon = '
    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
    字段当前值说明
    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(memCon); } }) break; case 'phpmyadmin_php': bt.send('GetPHPVersion','site/GetPHPVersion',{},function(rdata){ var body = "
    " + lan.soft.php_version +"
    '; $(".soft-man-con").html(body); $('.btn-success').click(function () { var loadT = bt.load(lan.public.the); bt.send('setPHPMyAdmin', 'ajax/setPHPMyAdmin', { phpversion: $("#get_phpVersion").val()},function(rdata){ loadT.close(); bt.msg(rdata); if(rdata.status){ setTimeout(function(){ window.location.reload(); },3000); } }) }) }) break; case 'phpmyadmin_safe': var arr = value.split('|'); var port = arr[0]; var auth = eval(arr[1]); 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_port').click(function(){ var pmport = $("#pmport").val(); if(!bt.check_port(pmport)){ layer.msg(lan.firewall.port_err,{icon:2}); return; } var loadT = bt.load(lan.public.the); bt.send('setPHPMyAdmin','ajax/setPHPMyAdmin',{port:pmport},function(rdata){ loadT.close(); bt.msg(rdata); }) }) $('.phpmyadmin_safe').click(function(){ var stat = $("#phpmyadminsafe").prop("checked"); if(stat) { $(".user_pw").hide(); set_phpmyadmin('close'); }else{ $(".user_pw").show(); } }) $('.phpmyadmin_safe_save').click(function(){ set_phpmyadmin('get'); }) function set_phpmyadmin(msg){ type = 'password'; if(msg == 'close') { bt.confirm({msg:lan.soft.pma_pass_close},function(){ var loading = bt.load(lan.public.the); bt.send('setPHPMyAdmin', 'ajax/setPHPMyAdmin', { password: msg, siteName:'phpmyadmin'},function(rdata){ loading.close(); bt.msg(rdata); }) }) 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){ bt.msg({msg:lan.soft.pma_pass_empty,icon:2}) return; } if(password_1 != password_2){ bt.msg({msg:lan.soft.pass_err_re,icon:2}) return; } } var loading = bt.load(lan.public.the); bt.send('setPHPMyAdmin', 'ajax/setPHPMyAdmin', { password: password_1, username: username, siteName:'phpmyadmin'},function(rdata){ loading.close(); bt.msg(rdata); }) } break; case 'set_php_config': bt.soft.php.get_config(name,function(rdata){ var body = "" var opt = "" for(var i=0;i' }else if(rdata.libs[i]['task'] == '0' && rdata.libs[i].phpversions.indexOf(name) != -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 con='
    ' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +''+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; $('a').click(function(){ var _obj = $(this); if(_obj.hasClass('lib-uninstall')) { bt.soft.php.un_install_php_lib(name,_obj.attr('data-name'),_obj.attr('data-title'),function(rdata){ setTimeout(function(){ bt.soft.get_tab_contents('set_php_config',name); },1000) }); } else if(_obj.hasClass('lib-install')){ bt.soft.php.install_php_lib(name,_obj.attr('data-name'),_obj.attr('data-title'),function(rdata){ setTimeout(function(){ bt.soft.get_tab_contents('set_php_config',name); },1000) }); } }) }) break; case 'get_phpinfo': var con = ''; $(".soft-man-con").html(con); $('#btn_phpinfo').click(function(){ var loadT = bt.load(lan.soft.get); bt.send('GetPHPInfo','ajax/GetPHPInfo',{version:name},function(rdata){ loadT.close(); bt.open({ type: 1, title: "PHP-"+name+"-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;}','') }) }) }) break; case 'config_edit': bt.soft.php.get_php_config(name,function(rdata){ 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); $('button').click(function(){ var _id = $(this).attr('id'); switch(_id){ case 'btn_conf_fresh': bt.soft.get_tab_contents(key,name); break; case 'btn_conf_save': var data = { version:name, 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 = bt.load(); bt.send('SetPHPConf','config/SetPHPConf',data,function(rdata){ loadT.close(); bt.soft.get_tab_contents(key,name); bt.msg(rdata) }); break; } }) }); break; case 'set_upload_limit': bt.soft.php.get_limit_config(name,function(ret){ var LimitCon = '

    MB

    '; $(".soft-man-con").html(LimitCon); $('#btn_set_max_size').click(function(){ var max = $(".phpUploadLimit").val(); if(max < 2){ layer.msg(lan.soft.php_upload_size,{icon:2}); return; } bt.soft.php.set_upload_max(name,max,function(rdata){ if(rdata.status){ bt.soft.get_tab_contents(key,name); } bt.msg(rdata); }) }) }) break; case 'set_timeout_limit': bt.soft.php.get_limit_config(name,function(ret){ var LimitCon = '

    '+lan.bt.s+'

    '; $(".soft-man-con").html(LimitCon); $('#btn_set_max_time').click(function(){ var max = $(".phpTimeLimit").val(); bt.soft.php.set_php_timeout(name,max,function(rdata){ if(rdata.status){ bt.soft.get_tab_contents(key,name); } bt.msg(rdata); }) }) }) break; case 'set_dis_fun': bt.soft.php.get_config(name,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); $('button.btn-success,a.del_functions').click(function(){ var data = ''; if($(this).is('button')){ var fs = $('#disable_function_val').val(); if($.inArray(fs, disable_functions)>=0){ bt.msg({msg:lan.soft.fun_msg,icon:5}); return; } disable_functions.push(fs); } else{ var fs = $(this).attr('data-val'); disable_functions.splice($.inArray(fs, disable_functions), 1) } data = disable_functions.join(','); bt.soft.php.disable_functions(name,data,function(rdata){ if(rdata.status){ bt.soft.get_tab_contents(key,name); } bt.msg(rdata); }) }) }) break; case 'set_fpm_config': bt.soft.php.get_fpm_config(name,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); }); $('.btn-success').click(function(){ bt.pub.get_menm(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:name, max_children:max_children, start_servers:start_servers, min_spare_servers:min_spare_servers, max_spare_servers:max_spare_servers, pm:pm } bt.soft.php.set_fpm_config(name,data,function(rdata){ bt.soft.get_tab_contents(key,name); bt.msg(rdata); }) }) }) }); break; case 'get_php_status': bt.soft.php.get_php_status(name,function(rdata){ var arr = {}; arr[lan.bt.php_pool] = rdata.pool; arr[lan.bt.php_manager] =((rdata['process manager'] == 'dynamic')?lan.bt.dynamic:lan.bt.static); arr[lan.bt.php_start] = rdata['start time']; arr[lan.bt.php_accepted] = rdata['accepted conn']; arr[lan.bt.php_queue] = rdata['listen queue']; arr[lan.bt.php_max_queue] = rdata['max listen queue']; arr[lan.bt.php_len_queue] = rdata['listen queue len']; arr[lan.bt.php_idle] = rdata['idle processes']; arr[lan.bt.php_active] = rdata['active processes']; arr[lan.bt.php_total] = rdata['total processes']; arr[lan.bt.php_max_active] = rdata['max active processes']; arr[lan.bt.php_max_children] = rdata['max children reached']; arr[lan.bt.php_slow] = rdata['slow requests']; var con = "
    "; $(".soft-man-con").html(con); bt.render_table('tab_php_status',arr); }) break; case 'get_fpm_logs': bt.soft.php.get_fpm_logs(name,function(logs){ var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }) break; case 'get_slow_logs': bt.soft.php.get_slow_logs(name,function(logs){ var phpCon = ''; $(".soft-man-con").html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }) break; case 'get_redis_status': bt.soft.redis.get_redis_status(function(rdata){ 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); }) break; } }, //软件设置 set_soft_config:function(name){ _this = this; var loading = bt.load(); _this.get_soft_find(name,function(rdata){ loading.close(); var menu = ''; if(rdata.version_coexist) { var ver = name.split('-')[1].replace('.',''); bodys = [ '

    '+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'+lan.soft.log+'

    ', '

    '+lan.public.slow_log+'

    ', '

    phpinfo

    ' ] var phpSort = [0,1,2,3,4,5,6,7,8,9,10,11]; for(var i=0;i' + lan.soft.service + '

    ' + menu layer.open({ type: 1, area: '640px', title: name + lan.soft.admin, closeBtn: 2, shift: 0, content: '
    \
    ' +menu+ '
    \
    \
    \
    \
    ' }); if(name== "php-5.2"){ $(".phphide").hide(); } if (name == 'phpmyadmin') { $(".bt_server").remove(); } bt.soft.get_tab_contents('service',name,rdata.status); $(".bt-w-menu p").click(function(){ $(this).addClass("bgw").siblings().removeClass("bgw"); }); _this.get_soft_find('apache', function (rdata) { if (rdata.setup) { if (rdata.version.indexOf('2.2') >= 0) { $(".apache24").hide(); $(".bt_server").remove(); $(".bt-w-menu p:eq(0)").trigger("click"); } } }) $(".bt-w-menu p:eq(0)").trigger("click"); }) }, get_config_path:function(name){ var fileName = ''; if(bt.os=='Linux'){ switch(name){ case 'mysqld': fileName = '/etc/my.cnf'; break; case 'nginx': fileName = '/www/server/nginx/conf/nginx.conf'; break; case 'pureftpd': 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/'+name+'/etc/php.ini'; break; } } return fileName }, set_lib_config:function(name,title){ var loadT = bt.load(lan.soft.menu_temp); bt.send('getConfigHtml','plugin/getConfigHtml',{name:name},function(rhtml){ loadT.close(); if(rhtml.status === false){ if(name == "phpguard"){ layer.msg(lan.soft.menu_phpsafe,{icon:1}) } else{ layer.msg(rhtml.msg,{icon:2}); } return; } bt.open({ type: 1, shift: 5, offset: '20%', closeBtn: 2, area: '700px', title: ''+ title, content: rhtml }); rtmp = rhtml.split('',''); setTimeout(function(){ if(!!(window.attachEvent && !window.opera)){ execScript(rcode); }else{ window.eval(rcode); } },200) }); }, save_config:function(fileName,data){ var encoding = 'utf-8'; var loadT = bt.load(lan.soft.the_save); bt.send('SaveFileBody','files/SaveFileBody',{data:data,path:fileName,encoding:encoding},function(rdata){ loadT.close(); bt.msg(rdata); }) } } bt.database = { get_list : function(page,search,callback) { if(page == undefined) page = 1 search = search == undefined ? '':search; var order = bt.get_cookie('order') ? '&order=' + bt.get_cookie('order'):''; var data = 'tojs=database.get_list&table=databases&limit=15&p='+page+'&search='+search + order; bt.pub.get_data(data,function(rdata){ if(callback) callback(rdata); }) }, get_root_pass:function(callback){ bt.send('getKey','data/getKey',{table:'config',key:'mysql_root',id:1},function(rdata){ if(callback) callback(rdata); }) }, set_root : function(){ bt.database.get_root_pass(function(rdata){ var bs = bt.render_form(bt.data.database.root); $('.password'+bs).val(rdata); }) }, set_data_pass:function(callback){ var bs = bt.render_form(bt.data.database.data_pass,function(rdata){ if(callback) callback(rdata); }); return bs; }, set_data_access:function(name){ var loading = bt.load(); bt.send('GetDatabaseAccess','database/GetDatabaseAccess',{name:name},function(rdata){ loading.close(); var bs = bt.render_form(bt.data.database.data_access); $('.name'+bs).val(name); setTimeout(function(){ if(rdata.msg=='127.0.0.1' || rdata.msg =='%'){ $('.dataAccess'+bs).val(rdata.msg) } else{ $('.dataAccess'+bs).val('ip').trigger('change'); $('#dataAccess_subid').val(rdata.msg); } },100) }) }, add_database:function(callback){ bt.render_form(bt.data.database.data_add,function(rdata){ if(callback) callback(rdata); }); }, del_database:function(data,callback){ var loadT = bt.load(lan.get('del_all_task_the',[data.name])); bt.send('DeleteDatabase','database/DeleteDatabase',data,function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }) }, sync_database:function(callback){ var loadT = bt.load(lan.database.sync_the); bt.send('SyncGetDatabases','database/SyncGetDatabases',{},function(rdata){ loadT.close(); if(callback) callback(rdata); bt.msg(rdata); }); }, sync_to_database:function(data,callback){ var loadT = bt.load(lan.database.sync_the); bt.send('SyncToDatabases','database/SyncToDatabases',data,function(rdata){ loadT.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, open_phpmyadmin:function(name,username,password){ if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){ layer.msg(lan.database.phpmyadmin_err,{icon:2,shade: [0.3, '#000']}) setTimeout(function(){ window.location.href = '/soft'; },3000); return; } var murl = $("#toPHPMyAdmin").attr('action'); $("#pma_username").val(username); $("#pma_password").val(password); $("#db").val(name); layer.msg(lan.database.phpmyadmin,{icon:16,shade: [0.3, '#000'],time:1000}); setTimeout(function(){ $("#toPHPMyAdmin").submit(); },200); }, input_sql:function(fileName,dataName){ bt.confirm({msg:lan.database.input_confirm,title:lan.database.input_title},function(index){ var loading = bt.load(lan.database.input_the); bt.send('InputSql','database/InputSql',{file:fileName,name:dataName},function(rdata){ loading.close(); bt.msg(rdata); }) }); }, backup_data:function(id,dataname,callback){ var loadT = bt.load(lan.database.backup_the); bt.send('ToBackup','database/ToBackup',{id:id},function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }); }, del_backup:function(id,dataid,dataname){ bt.confirm({msg:lan.database.backup_del_confirm,title:lan.database.backup_del_title},function(index){ var loadT = bt.load(); bt.send('DelBackup','database/DelBackup',{id:id},function(frdata){ loadT.close(); if(frdata.status){ if(database) database.database_detail(dataid,dataname); } bt.msg(frdata); }); }); } } bt.send('get_config','config/get_config',{},function(rdata){ bt.config = rdata; }) bt.plugin = { get_plugin_byhtml:function(name,callback){ bt.send('getConfigHtml','plugin/getConfigHtml',{name:name},function(rdata){ if(callback) callback(rdata); }); }, get_firewall_state:function(callback){ var typename = getCookie('serverType'); var name = 'btwaf_httpd'; if(typename == "nginx") name='btwaf' bt.send('a','plugin/a',{name:name,s:'get_site_config'},function(rdata){ if(callback) callback(rdata); }) } } bt.site = { get_list : function(page,search,type,callback) { if(page == undefined) page = 1 type = type == undefined ? '&type=-1' : ('&type='+ type); search = search == undefined ? '':search; var order = bt.get_cookie('order') ? '&order=' + bt.get_cookie('order'):''; var data = 'tojs=site.get_list&table=sites&limit=15&p='+page+'&search='+search + order + type; bt.pub.get_data(data,function(rdata){ if(callback) callback(rdata); }) }, get_domains:function(id,callback){ var data = 'table=domain&list=True&search='+id; bt.pub.get_data(data,function(rdata){ if(callback) callback(rdata); },1) }, get_type:function(callback){ bt.send('get_site_types','site/get_site_types','',function(rdata){ if(callback) callback(rdata); }); }, add_type:function(name,callback){ bt.send('add_site_type','site/add_site_type',{name:name},function(rdata){ if(callback) callback(rdata); }); }, edit_type:function(data,callback){ bt.send('modify_site_type_name','site/modify_site_type_name',{id:data.id,name:data.name},function(rdata){ if(callback) callback(rdata); }); }, del_type:function(id,callback){ bt.send('remove_site_type','site/remove_site_type',{id:id},function(rdata){ if(callback) callback(rdata); }); }, set_site_type:function(data,callback){ bt.send('set_site_type','site/set_site_type',{id:data.id,site_ids:data.site_array},function(rdata){ if(callback) callback(rdata); }); }, get_site_domains:function(id,callback){ var loading = bt.load(); bt.send('GetSiteDomains','site/GetSiteDomains',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, add_domains:function(id,webname,domains,callback){ var loading = bt.load(); bt.send('AddDomain','site/AddDomain',{domain:domains,webname:webname,id:id},function(rdata){ loading.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, del_domain:function(siteId,siteName,domain,port,callback){ var loading = bt.load(); bt.send('DelDomain','site/DelDomain',{id:siteId,webname:siteName,domain:domain,port:port},function(rdata){ loading.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, get_dirbind:function(id,callback){ var loading = bt.load(); bt.send('GetDirBinding','site/GetDirBinding',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, add_dirbind:function(id,domain,dirName,callback){ var loading = bt.load(); bt.send('AddDirBinding','site/AddDirBinding',{id:id,domain:domain,dirName:dirName},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, del_dirbind:function(id,callback){ var loading = bt.load(); bt.send('DelDirBinding','site/DelDirBinding',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_dir_rewrite:function(data,callback){ var loading = bt.load(); bt.send('GetDirRewrite','site/GetDirRewrite',data,function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_site_path:function(id,callback){ bt.send('getKey','data/getKey',{table:'sites',key:'path',id:id},function(rdata){ if(callback) callback(rdata); }) }, get_dir_userini:function(id,path,callback){ bt.send('GetDirUserINI','site/GetDirUserINI',{id:id,path:path},function(rdata){ if(callback) callback(rdata); }) }, set_dir_userini:function(path,callback){ var loading = bt.load(); bt.send('SetDirUserINI','site/SetDirUserINI',{path:path},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_logs_status:function(id,callback){ var loading = bt.load(); bt.send('logsOpen','site/logsOpen',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_site_runpath:function(id,path,callback){ var loading = bt.load(); bt.send('SetSiteRunPath','site/SetSiteRunPath',{id:id,runPath:path},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_site_path:function(id,path,callback){ var loading = bt.load(); bt.send('SetPath','site/SetPath',{id:id,path:path},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_site_pwd: function (id, username, password, callback){ var loading = bt.load(); bt.send('SetHasPwd','site/SetHasPwd',{id:id,username:username,password:password},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, close_site_pwd: function (id, callback) { var loading = bt.load(); bt.send('SetHasPwd', 'site/CloseHasPwd', { id: id}, function (rdata) { loading.close(); if (callback) callback(rdata); }) }, get_limitnet:function(id,callback){ bt.send('GetLimitNet','site/GetLimitNet',{id:id},function(rdata){ if(callback) callback(rdata); }) }, set_limitnet:function(id,perserver,perip,limit_rate,callback){ var loading = bt.load(); bt.send('SetLimitNet','site/SetLimitNet',{id:id,perserver:perserver,perip:perip,limit_rate:limit_rate},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, close_limitnet:function(id,callback){ var loading = bt.load(); bt.send('CloseLimitNet','site/CloseLimitNet',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_rewrite_list:function(siteName,callback){ bt.send('GetRewriteList','site/GetRewriteList',{siteName:siteName},function(rdata){ if(callback) callback(rdata); }) }, set_rewrite_tel:function(name,data,callback){ var loading = bt.load(lan.site.saving_txt); bt.send('SetRewriteTel','site/SetRewriteTel',{name:name,data:data},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_index:function(id,callback){ bt.send('GetIndex','site/GetIndex',{id:id},function(rdata){ if(callback) callback(rdata); }) }, set_index:function(id,index,callback){ var loading = bt.load(); bt.send('SetIndex','site/SetIndex',{id:id,Index:index},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_site_config:function(siteName,callback){ if(bt.os=='Linux'){ var sPath = '/www/server/panel/vhost/'+bt.get_cookie('serverType')+'/'+siteName+'.conf'; bt.files.get_file_body(sPath,function(rdata){ if(callback) callback(rdata); }) } }, set_site_config:function(siteName,data,encoding,callback){ var loading = bt.load(lan.site.saving_txt); if(bt.os=='Linux'){ var sPath = '/www/server/panel/vhost/'+bt.get_cookie('serverType')+'/'+siteName+'.conf'; bt.files.set_file_body(sPath,data,'utf-8',function(rdata){ loading.close(); if(callback) callback(rdata); }) } }, set_phpversion:function(siteName,version,callback){ var loading = bt.load(); bt.send('SetPHPVersion','site/SetPHPVersion',{siteName:siteName,version:version},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_site_proxy:function(siteName ,callback){ bt.send('GetProxy','site/GetProxy',{name :siteName },function(rdata){ if(callback) callback(rdata); }) }, set_site_proxy:function(siteName,type,proxyUrl,toDomain,sub1,sub2,callback){ var loading = bt.load(); bt.send('SetProxy','site/SetProxy',{name:siteName,type:type,proxyUrl:proxyUrl,toDomain:toDomain,sub1:sub1,sub2:sub2},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_open_proxy_cache:function(siteName,callback){ var loading = bt.load(); bt.send('ProxyCache','site/ProxyCache',{siteName:siteName},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_proxy_list:function(name,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetProxyList','site/GetProxyList',{sitename:name },function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, create_proxy:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('CreateProxy','site/CreateProxy',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, remove_proxy:function(sitename,proxyname,callback){ bt.show_confirm('删除反向代理['+ proxyname +']','您真的要从列表中删除吗?',function(){ var loadT = bt.load(lan.site.the_msg); bt.send('RemoveProxy','site/RemoveProxy',{sitename:sitename,proxyname:proxyname},function(rdata){ loadT.close(); if(callback) callback(rdata); bt.msg(rdata); }) }) }, modify_proxy:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('ModifyProxy',' site/ModifyProxy',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, get_proxy_config:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetProxyFile','site/GetProxyFile',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, save_proxy_config:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('SaveProxyFile','site/SaveProxyFile',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, get_site_security:function(id,name,callback){ bt.send('GetSecurity','site/GetSecurity',{id:id,name:name },function(rdata){ if(callback) callback(rdata); }) }, set_site_security:function(id,name,fix,domains,status,callback){ var loading = bt.load(lan.site.the_msg); bt.send('SetSecurity','site/SetSecurity',{id:id,name:name,fix:fix,domains:domains,status:status},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_site_301:function(siteName,callback){ bt.send('Get301Status','site/Get301Status',{siteName:siteName},function(rdata){ if(callback) callback(rdata); }) }, set_site_301:function(siteName,srcDomain,toUrl,type,callback){ var loading = bt.load(); bt.send('Set301Status','site/Set301Status',{siteName:siteName,toDomain:toUrl,srcDomain:srcDomain,type:type},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_tomcat:function(siteName,callback){ var loading = bt.load(lan.public.config); bt.send('SetTomcat','site/SetTomcat',{siteName:siteName},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, get_site_logs:function(siteName,callback){ var loading = bt.load(); bt.send('GetSiteLogs','site/GetSiteLogs',{siteName:siteName},function(rdata){ loading.close(); if(rdata.status !== true) rdata.msg = ''; if (rdata.msg == '') rdata.msg = '当前没有日志.'; if(callback) callback(rdata); }) }, get_site_ssl:function(siteName,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetSSL','site/GetSSL',{siteName:siteName},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, create_let:function(data,callback){ var loadT = bt.load(lan.site.ssl_apply_2); bt.send('CreateLet','site/CreateLet',data,function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, get_dns_api:function(callback){ var loadT = bt.load(); bt.send('GetDnsApi','site/GetDnsApi',{},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, set_dns_api:function(data,callback){ var loadT = bt.load(); bt.send('SetDnsApi','site/SetDnsApi',data,function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, verify_domain:function(partnerOrderId,siteName,callback){ var loadT = bt.load(lan.site.ssl_apply_2); bt.send('Completed','ssl/Completed',{partnerOrderId:partnerOrderId,siteName:siteName},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, get_dv_ssl:function(domain,path,callback){ var loadT = bt.load(lan.site.ssl_apply_1); bt.send('GetDVSSL','ssl/GetDVSSL',{domain:domain,path:path},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, get_ssl_info:function(partnerOrderId,siteName,callback){ var loadT = bt.load(lan.site.ssl_apply_3); bt.send('GetSSLInfo','ssl/GetSSLInfo',{partnerOrderId:partnerOrderId,siteName:siteName},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, set_cert_ssl:function(certName,siteName,callback){ var loadT = bt.load('正在部署证书...'); bt.send('SetCertToSite','ssl/SetCertToSite',{certName:certName,siteName:siteName},function(rdata){ loadT.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, remove_cert_ssl:function(certName,callback){ bt.show_confirm('删除证书','您真的要从证书夹删除证书吗?',function(){ var loadT = bt.load(lan.site.the_msg); bt.send('RemoveCert','ssl/RemoveCert',{certName:certName},function(rdata){ loadT.close(); if(callback) callback(rdata); bt.msg(rdata); }) }) }, set_http_to_https:function(siteName,callback){ var loading = bt.load(); bt.send('HttpToHttps','site/HttpToHttps',{siteName:siteName},function(rdata){ loading.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, close_http_to_https:function(siteName,callback){ var loading = bt.load(); bt.send('CloseToHttps','site/CloseToHttps',{siteName:siteName},function(rdata){ loading.close(); if(callback) callback(rdata); bt.msg(rdata); }) }, set_ssl:function(siteName,data,callback){ if(data.path){ //iis导入证书 } else{ var loadT = bt.load(lan.site.saving_txt); bt.send('SetSSL','site/SetSSL',{type:1,siteName:siteName,key:data.key,csr:data.csr},function(rdata){ loadT.close(); if(callback) callback(rdata); }) } }, set_ssl_status:function(action,siteName,callback){ var loadT = bt.load(lan.site.get_ssl_list); bt.send(action,'site/'+action,{updateOf:1,siteName:siteName},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, get_cer_list:function(callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetCertList','ssl/GetCertList',{},function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, get_order_list:function(siteName,callback){ bt.send('GetOrderList','ssl/GetOrderList',{siteName:siteName},function(rdata){ if(callback) callback(rdata); }) }, del_site:function(data,callback){ var loadT = bt.load(lan.get('del_all_task_the',[data.webname])); bt.send('DeleteSite','site/DeleteSite',data,function(rdata){ loadT.close(); if(callback) callback(rdata); }) }, add_site:function(callback) { var _form = $.extend(true, {}, bt.data.site.add); bt.site.get_all_phpversion(function (rdata) { bt.site.get_type(function (tdata) { for(var i=0;i<_form.list.length;i++){ if (_form.list[i].name == 'version') { var items = []; for (var j = rdata.length - 1; j >= 0; j--) { var o = rdata[j]; o.value = o.version; o.title = o.name; items.push(o); } _form.list[i].items = items; } else if (_form.list[i].name == 'type_id') { for (var x = 0; x < tdata.length; x++) _form.list[i].items.push({ value: tdata[x].id, title: tdata[x].name }); } } var bs = bt.render_form(_form,function(rdata){ if(callback) callback(rdata); }); $(".placeholder").click(function(){ $(this).hide(); $('.webname'+bs).focus(); }) $('.path' + bs).val($("#defaultPath").text()); $('.webname'+bs).focus(function() { $(".placeholder").hide(); }); $('.webname'+bs).blur(function() { if($(this).val().length==0){ $(".placeholder").show(); } }); }) }) }, get_all_phpversion:function(callback){ bt.send('GetPHPVersion','site/GetPHPVersion',{},function(rdata){ if(callback) callback(rdata); }) }, get_site_phpversion:function(siteName,callback){ bt.send('GetSitePHPVersion','site/GetSitePHPVersion',{siteName:siteName},function(rdata){ if(callback) callback(rdata); }) }, stop:function(id,name){ bt.confirm({msg:lan.site.site_stop_txt},function(index){ if (index > 0) { var loadT = bt.load(); bt.send('SiteStop','site/SiteStop',{id:id,name:name},function(ret){ loadT.close(); if(site) site.get_list(); bt.msg(ret); }); } }); }, start:function(id,name){ bt.confirm({msg:lan.site.site_start_txt},function(index){ if (index > 0) { var loadT = bt.load(); bt.send('SiteStart','site/SiteStart',{id:id,name:name},function(ret){ loadT.close(); if(site) site.get_list(); bt.msg(ret); }); } }); }, backup_data:function(id,callback){ var loadT = bt.load(lan.database.backup_the); bt.send('ToBackup','site/ToBackup',{id:id},function(rdata){ loadT.close(); bt.msg(rdata); if(callback) callback(rdata); }); }, del_backup:function(id,siteId,siteName){ bt.confirm({msg:lan.site.webback_del_confirm,title:lan.site.del_bak_file},function(index){ var loadT = bt.load(); bt.send('DelBackup','site/DelBackup',{id:id},function(frdata){ loadT.close(); if(frdata.status){ if(site) site.site_detail(siteId,siteName); } bt.msg(frdata); }); }); }, set_endtime:function(id,dates){ var loadT = bt.load(lan.site.saving_txt); bt.send('SetEdate','site/SetEdate',{id:id,edate:dates},function(rdata){ loadT.close(); }); }, get_default_path:function(type,callback){ var vhref=''; if(bt.os=='Linux'){ switch(type){ case 0: vhref = '/www/server/panel/data/defaultDoc.html'; break; case 1: vhref = '/www/server/panel/data/404.html'; break; case 2: var serverType = bt.get_cookie('serverType'); vhref = '/www/server/apache/htdocs/index.html'; if(serverType=='nginx') vhref = '/www/server/nginx/html/index.html'; break; case 3: vhref = '/www/server/stop/index.html'; break; } } if(callback) callback(vhref); }, get_default_site:function(callback){ var loading = bt.load(); bt.send('GetDefaultSite','site/GetDefaultSite',{},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, set_default_site:function(name,callback){ var loading = bt.load(); bt.send('SetDefaultSite','site/SetDefaultSite',{name:name},function(rdata){ loading.close(); if(callback) callback(rdata); }) } } bt.form ={ btn:{ close:function(title,callback){ var obj = {title:'关闭',name:'btn-danger'}; if(title) obj.title = title; if(callback) obj['callback'] = callback; return obj; }, submit:function(title,callback){ var obj = {title:'提交',name:'submit',css:'btn-success'}; if(title) obj.title = title; if(callback) obj['callback'] = callback; return obj; } }, item:{ data_access:{ title:'访问权限',items:[ {name:'dataAccess',type:'select',width:'100px',items:[ {title:'本地服务器',value:'127.0.0.1'}, {title:'所有人',value:'%'}, {title:'指定IP',value:'ip'} ],callback:function(obj){ var subid = obj.attr('name')+'_subid'; $('#'+subid).remove(); if(obj.val()=='ip'){ obj.parent().append(''); } } } ]}, password:{title:'密码',name:'password',items:[ {type:'text',width:'311px',value:bt.get_random(16),event: {css:'glyphicon-repeat',callback:function(obj){bt.refresh_pwd(16,obj);}}} ]}, } } bt.data = { database:{ root:{ title : lan.database.edit_pass_title, area:'530px', list:[{title:'root密码',name:'password',items:[ {type:'text',width:'311px',event: {css:'glyphicon-repeat',callback:function(obj){bt.refresh_pwd(16,obj);}}} ]}, ], btns:[ bt.form.btn.close(), bt.form.btn.submit('提交',function(rdata,load){ var loading = bt.load(); bt.send('SetupPassword','database/SetupPassword',rdata,function(rRet){ loading.close(); bt.msg(rRet); load.close(); }) }) ] }, data_add:{ title:lan.database.add_title, area:'530px', list:[ {title:'数据库名',items:[ {name:'name',placeholder:'新的数据库名称',type:'text',width:'65%',callback:function(obj){ $('input[name="db_user"]').val(obj.val()); }}, {name:'codeing',type:'select',width:'27%',items:[ {title:'utf-8',value:'utf8'}, {title:'utf8mb4',value:'utf8mb4'}, {title:'gbk',value:'gbk'}, {title:'big5',value:'big5'}, ]} ]}, {title:'用户名',name:'db_user',placeholder:'数据库用户',width:'65%'}, bt.form.item.password, {title:'类型',name:'dtype',type:'select',disabled:(bt.contains(bt.get_cookie('serverType'),'nginx') || bt.contains(bt.get_cookie('serverType'),'apache') ?true:false),items:[ {title:'MySQL',value:'MySQL'}, {title:'SQLServer',value:'SQLServer'} ]}, bt.form.item.data_access ], btns:[ bt.form.btn.close(), bt.form.btn.submit('提交',function(rdata,load,callback){ if(!rdata.address) rdata.address = rdata.dataAccess; if(!rdata.ps) rdata.ps = rdata.name; var loading = bt.load(); bt.send('AddDatabase','database/AddDatabase',rdata,function(rRet){ loading.close(); if(rRet.status) load.close(); if(callback) callback(rRet); bt.msg(rRet); }) }) ] }, data_access:{ title:'设置数据库权限', area:'480px', list:[ {title:'name',name:'name',hide:true}, bt.form.item.data_access ], btns:[ bt.form.btn.close(), {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load){ var loading = bt.load(); rdata.access = rdata.dataAccess; if(rdata.access == 'ip') rdata.access = rdata.address; bt.send('SetDatabaseAccess','database/SetDatabaseAccess',rdata,function(rRet){ loading.close(); bt.msg(rRet); if(rRet.status) load.close(); }) }} ] }, data_pass : { title:'修改数据库密码', area:'530px', list:[ {title:'id',name:'id',hide:true}, {title:'用户名',name:'name',disabled:true}, {title:'密码',name:'password',items:[ {type:'text',event: {css:'glyphicon-repeat',callback:function(obj){bt.refresh_pwd(16,obj);}}} ]}, ], btns:[ {title:'关闭',name:'close'}, {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load,callback){ var loading = bt.load(); bt.send('ResDatabasePassword','database/ResDatabasePassword',rdata,function(rRet){ loading.close(); bt.msg(rRet); if(rRet.status) load.close(); if(callback) callback(rRet); }) }} ] } }, site:{ add:{ title:lan.site.site_add, area: '640px', list:[ {title:'域名',name:'webname',items:[ {type:'textarea',width:'458px',callback:function(obj){ var array = obj.val().split("\n"); var ress =array[0].split(":")[0]; var res = bt.strim(ress.replace(new RegExp(/([-.])/g), '_')); var ftp_user = res; var data_user = res; if(!isNaN(res.substr(0,1))){ ftp_user='ftp_'+ftp_user; data_user = 'sql_' + data_user; } if (data_user.length > 16) data_user = data_user.substr(0, 16) obj.data('ftp',ftp_user); obj.data('database',data_user); $('.ftp_username').val(ftp_user); $('.datauser').val(data_user); var _form = obj.parents('div.bt-form'); var _path_obj = _form.find('input[name="path"]'); var path = _path_obj.val(); var defaultPath = $('#defaultPath').text(); var dPath = bt.rtrim(defaultPath,'/'); if(path.substr(0,dPath.length)==dPath) _path_obj.val(dPath+'/'+res); _form.find('input[name="ps"]').val(ress); },placeholder:'每行填写一个域名,默认为80端口
    泛解析添加方法 *.domain.com
    如另加端口格式为 www.domain.com:88'} ]}, {title:'备注',name:'ps',placeholder:'网站备注'}, {title:'根目录',name:'path',items:[ {type:'text',width:'330px',event: {css:'glyphicon-folder-open',callback:function(obj){bt.select_path(obj);}}} ]}, {title:'FTP',items:[ {name:'ftp',type:'select',items:[ {value:'false',title:'不创建'}, {value:'true',title:'创建'} ],callback:function(obj){ var subid = obj.attr('name')+'_subid'; $('#'+subid).remove(); if(obj.val()=='true'){ var _bs = obj.parents('div.bt-form').attr('data-id'); var ftp_user = $('textarea[name="webname"]').data('ftp'); var item = {title:'FTP设置',items:[ {name:'ftp_username',title:'用户名',width:'173px',value:ftp_user}, {name:'ftp_password',title:'密码',width:'173px',value:bt.get_random(16)} ],ps:'创建站点的同时,为站点创建一个对应FTP帐户,并且FTP目录指向站点所在目录。'} var _tr = bt.render_form_line(item) obj.parents('div.line').append('
    '+_tr.html+'
    '); } }} ]}, {title:'数据库',items:[ {name:'sql',type:'select',items:[ {value:'false',title:'不创建'}, {value:'MySQL',title:'MySQL'}, {value:'SQLServer',title:'SQLServer'} ],callback:function(obj){ var subid = obj.attr('name')+'_subid'; $('#'+subid).remove(); if(obj.val()!='false') { if(bt.os=='Linux' && obj.val()=='SQLServer'){ obj.val('false'); bt.msg({msg:'Linux暂不支持SQLServer!',icon:2}); return; } var _bs = obj.parents('div.bt-form').attr('data-id'); var data_user =$('textarea[name="webname"]').data('database'); var item = {title:'数据库设置',items:[ {name:'datauser',title:'用户名',width:'173px',value:data_user}, {name:'datapassword',title:'密码',width:'173px',value:bt.get_random(16)} ],ps:'创建站点的同时,为站点创建一个对应的数据库帐户,方便不同站点使用不同数据库。'} var _tr = bt.render_form_line(item) obj.parents('div.line').append('
    '+_tr.html+'
    '); } }}, {name:'codeing',type:'select',items:[ {value:'utf8',title:'utf-8'}, {value:'utf8mb4',title:'utf8mb4'}, {value:'gbk',title:'gbk'}, {value:'big5',title:'big5'} ]} ]}, {title:'程序类型',type:'select',name:'type',disabled:(bt.contains( bt.get_cookie('serverType'),'IIS')?false:true),items:[ {value:'PHP',title:'PHP'}, {value:'Asp',title:'Asp'}, {value:'Aspx',title:'Aspx'}, ],callback:function(obj){ if(obj.val()=='Asp' || obj.val()=='Aspx'){ obj.parents('div.line').next().hide(); }else{ obj.parents('div.line').next().show(); } }}, {title:'PHP版本',name:'version',type:'select',items:[ {value:'00',title:'纯静态'} ] }, { title: '网站分类', name: 'type_id', type: 'select', items: [ ] } ], btns:[ {title:'关闭',name:'close'}, {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load,callback){ var loading = bt.load(); if(!rdata.webname){ bt.msg({msg:'主域名格式不正确',icon:2}); return; } var webname = bt.replace_all(rdata.webname,'http:\\/\\/',''); webname = bt.replace_all(webname,'https:\\/\\/',''); var arrs = webname.split('\n'); var list = []; var domain_name,port; for (var i=0;i1?temp[1]:80; if(!bt.check_domain(item.name)){ bt.msg({msg:lan.site.domain_err_txt,icon:2}) return; } if(i>0) { list.push(arrs[i]); }else{ domain_name = item.name; port = item.port; } } } var domain = {}; domain['domain'] = domain_name; domain['domainlist'] = list; domain['count'] = list.length; rdata.webname = JSON.stringify(domain); rdata.port = port; bt.send('AddSite','site/AddSite',rdata,function(rRet){ loading.close(); if(rRet.siteStatus) load.close(); if(callback) callback(rRet); }) }} ] } }, ftp:{ add:{ title: lan.ftp.add_title, area:'530px', list:[ { title: '用户名', name: 'ftp_username', callback: function (obj) { var defaultPath = $('#defaultPath').text(); var wootPath = bt.rtrim(defaultPath,'/'); if(bt.contains($('input[name="path"]').val(),wootPath)){ $('input[name="path"]').val(wootPath+'/'+obj.val()) } }}, {title:'密码',name:'ftp_password',items:[ {type:'text',width:'330px',value:bt.get_random(16),event: {css:'glyphicon-repeat',callback:function(obj){bt.refresh_pwd(16,obj);}}} ]}, {title:'根目录',name:'path',items:[ {type:'text',event: {css:'glyphicon-folder-open',callback:function(obj){bt.select_path(obj);}}} ]} ], btns:[ {title:'关闭',name:'close'}, {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load,callback){ var loading = bt.load(); if(!rdata.ps) rdata.ps = rdata.ftp_username; bt.send('AddUser','ftp/AddUser',rdata,function(rRet){ loading.close(); if(rRet.status) load.close(); if(callback) callback(rRet); bt.msg(rRet); }) }} ] }, set_port:{ title:lan.ftp.port_title, skin:'', area:'500px', list:[ {title:'默认端口',name:'port',width:'250px'} ], btns:[ {title:'关闭',name:'close'}, {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load,callback){ var loading = bt.load(); bt.send('setPort','ftp/setPort',rdata,function(rRet){ loading.close(); if(rRet.status) load.close(); if(callback) callback(rRet); bt.msg(rRet); }) }} ] }, set_password:{ title:lan.ftp.pass_title, area:'530px', list:[ {title:'id',name:'id',hide:true}, {title:'用户名',name:'ftp_username',disabled:true}, {title:'密码',name:'new_password',items:[ {type:'text',event: {css:'glyphicon-repeat',callback:function(obj){bt.refresh_pwd(16,obj);}}} ]}, ], btns:[ {title:'关闭',name:'close'}, {title:'提交',name:'submit',css:'btn-success',callback:function(rdata,load,callback){ bt.confirm({msg:lan.ftp.pass_confirm,title: lan.ftp.stop_title},function(){ var loading = bt.load(); bt.send('SetUserPassword','ftp/SetUserPassword',rdata,function(rRet){ loading.close(); if(rRet.status) load.close(); if(callback) callback(rRet); bt.msg(rRet); }) }) } } ] } } } \ No newline at end of file diff --git a/BTPanel/static/js/site.js b/BTPanel/static/js/site.js index 86a7d621..692b2de8 100644 --- a/BTPanel/static/js/site.js +++ b/BTPanel/static/js/site.js @@ -598,8 +598,10 @@ var site = { }) }, reload: function (index) { - site.reload(7); - $('#ssl_tabs span:eq(' + index + ')').trigger('click'); + if (index == undefined) index = 0 + var _sel = $('#ssl_tabs .on'); + if (_sel.length == 0) _sel = $('#ssl_tabs span:eq(0)'); + _sel.trigger('click'); } }, edit: { @@ -609,7 +611,7 @@ var site = { var list = [ { items: [ - { name: 'newdomain', width: '450px', type: 'textarea', placeholder: lan.site.domain_help }, + { name: 'newdomain', width: '400px', type: 'textarea', placeholder: lan.site.domain_help }, { name: 'btn_submit_domain', text: lan.site.add, type: 'button', callback: function (sdata) { var arrs = sdata.newdomain.split("\n"); @@ -1686,7 +1688,7 @@ var site = { "
    " + "" + "
    " + - ""+lan.site.reserve_url+"" + + ""+lan.site.reserve_url+"" + "" + "
    " + "
    " + @@ -1696,7 +1698,7 @@ var site = { "
    " + "" + "
    " + - ""+lan.site.reserve_type+"" + + ""+lan.site.redirect_type+"" + "
    " + "" + ""+lan.site.redirect_mode+"" + @@ -1963,7 +1965,7 @@ var site = { sub_conter += "
    " + "" + "" + - "删除" + + "Del" + "
    "; } if (i == 2) $('.add-replace-prosy').attr('disabled', 'disabled') @@ -1992,7 +1994,7 @@ var site = { "" + "
    " + "
    " + - ""+lan.site.proxy_adv+"" + + ""+lan.site.proxy_adv+"" + "" + "
    " + "
    " + @@ -2339,7 +2341,11 @@ var site = { }) }, reload: function (index) { - $('.site-menu p:eq(' + index + ')').trigger('click'); + if (index == undefined) index = 0 + + var _sel = $('.site-menu p.bgw'); + if (_sel.length == 0) _sel = $('.site-menu p:eq(0)'); + _sel.trigger('click'); }, plugin_firewall: function () { var typename = bt.get_cookie('serverType');