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\u4e00-\u9fa5\-\*]{1,100}\.){1,4}([\w\u4e00-\u9fa5\-]{1,24}|[\w\u4e00-\u9fa5\-]{1,24}\.[\w\u4e00-\u9fa5\-]{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+"
    " }); _this.set_cookie('ChangePath', loadT.form); 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 (typeof (rdata) == 'string') { if ((rdata.indexOf('/static/favicon.ico') != -1 && rdata.indexOf('/static/img/qrCode.png') != -1) || rdata.indexOf('') === 0) { window.location.href = "/login" return } } if(callback) callback(rdata); }).error(function (e, f) { console.log(e,f) 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.status) { btnObj.time = 0; } } 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,callback1){ 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, cancel: (config.cancel?config.cancel:function(){}) }; layer.confirm(config.msg, btnObj, function(index){ if(callback) callback(index); },function(index){ if(callback1) callback1(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, append) { //渲染表单表格 var html = ''; for (var key in arr) { html += '' + key + '' if (typeof arr[key] != 'object') { html += '' + arr[key] + ''; } else { for (var i = 0; i < arr[key].length; i++) { html += '' + arr[key][i] + ''; } } html += '' } if (append) { $('#' + obj).append(html) } else { $('#' + 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, form) { 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 < item.items.length; x++) { var _obj = item.items[x]; if (!_name && !_obj.name) { alert('缺少必要参数name'); return; } if (_obj.hide) continue; if (_obj.name) _name = _obj.name; if (_obj.placeholder) _placeholder = _obj.placeholder; if (_obj.title) _html += '' + _obj.title + " "; switch (_obj.type) { case 'select': var _width = _obj.width ? _obj.width : '100px'; _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 }); if (item.ps) _html += " " + item.ps + ""; } _html += '
    '; if (!item.class) item.class = ''; if (item.hide) _hide = 'style="display:none;"' _html = '
    ' + _html + '
    ' if (form) { form.append(_html) bt.render_clicks(clicks) } 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 _obj = _lines[i] if (_obj.hasOwnProperty("html")) { _form.append(_obj.html) } else { var rRet = bt.render_form_line(_obj, bs); for (var s = 0; s < rRet.clicks.length; s++) clicks.push(rRet.clicks[s]); _form.append(rRet.html); } } var _btn_html = ''; for (var i = 0;i"+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"), end: data.end ? data.end : false }) 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':''); } }) var asc = 'glyphicon-triangle-top'; var desc = 'glyphicon-triangle-bottom'; var orderby = bt.get_cookie('order'); if (orderby != undefined) { var arrys = orderby.split(' ') if (arrys.length == 2) { if (arrys[1] == 'asc') { $(obj.table).find('th span[data-id="' + arrys[0] + '"]').removeClass(desc).addClass(asc); } else { $(obj.table).find('th span[data-id="' + arrys[0] + '"]').removeClass(asc).addClass(desc); } } } $(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 or = _span.attr('data-id'); if (_span.hasClass(asc)) { bt.set_cookie('order', or + ' desc'); $(obj.table).find('th span[data-id="' + or + '"]').removeClass(asc).addClass(desc); _checks[or](); } else if (_span.hasClass(desc)) { bt.set_cookie('order', or + ' asc'); $(obj.table).find('th span[data-id="' + arrys[0] + '"]').removeClass(desc).addClass(asc); _checks[or](); } } }) } 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]; var typeName = ''; switch(type){ case 'stop': typeName = '停止'; break; case 'restart': typeName = '重启'; break; case 'reload': typeName = '重载'; break; } bt.confirm({msg:lan.get('service_confirm',[msg,serverName]),title:typeName+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) }) }, re_plugin_pay_other: function (pluginName, pid, type,price) { bt.pub.get_user_info(function (rdata) { if (!rdata.status) { bt.pub.bind_btname(0, function (rdata) { }) return; } var txt = '购买'; if (type) txt = '续费'; var payhtml = '
    \
    \
    \
    \
    \
    '+txt+'时长
    \
      \
    • 1个月
    • \
    • 3个月
    • \
    • 6个月
    • \
    • 1年
    • \
    \
    \
    总计
    \
    \
    \
    微信扫码支付
    \
    \
    \
    \
    \
    '; layer.open({ type: 1, title: txt + pluginName, area: ['616px', '450px'], closeBtn: 2, shadeClose: false, content: payhtml }); bt.soft.get_rscode_other(pid, price, 1,type) setTimeout(function () { $(".pay-btn-group > li").click(function () { $(this).addClass("active").siblings().removeClass("active"); }); }, 100); }) }, get_rscode_other: function (pid, price, cycle,type) { var loadT = layer.msg('正在获取支付信息...', { icon: 16, time: 0, shade: 0.3 }); $.post('/auth?action=create_plugin_other_order', { pid: pid, cycle: cycle,type:type }, function (rdata) { layer.close(loadT); if (!rdata.status) { layer.closeAll(); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); return; } if (!rdata.msg.code) { layer.closeAll(); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); soft.flush_cache(); return; } console.log(price, cycle) $(".sale-price").text((price * cycle).toFixed(2)) $(".pay-wx").html(''); $(".pay-wx").qrcode(rdata.msg.code); bt.set_cookie('other_oid',rdata.msg.oid) bt.soft.get_order_stat(rdata.msg.oid,type); }); }, get_order_stat: function (order_id,type) { if (bt.get_cookie('other_oid') != order_id) return; setTimeout(function () { $.post('/auth?action=get_order_stat', { oid: order_id,type:type }, function (stat) { if (stat == 1) { layer.closeAll(); soft.flush_cache(); return; } if ($(".pay-btn-group").length > 0) { bt.soft.get_order_stat(order_id,type); } }); }, 1000) }, 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; p = p + '' if (p.indexOf('not_load') == -1) { var loading = bt.load(lan.public.the, 1); } else { var loading = null; p = p.split("not_load")[0]; } bt.send('get_soft_list', 'plugin/get_soft_list', { p: p, type: type, tojs: 'soft.get_list', force: force, query: search }, function (rdata) { if (loading) 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) { if (rdata.size) { _this.install_other(rdata) return; } loadT.close(); bt.pub.get_task_count(); if(soft) soft.get_list(); bt.msg(rdata); }) }) }, install_other: function (data) { layer.closeAll(); var loadT = layer.open({ type: 1, area: "500px", title: (data.update?"更新":"安装") + "第三方插件包", closeBtn: 2, shift: 5, shadeClose: false, content: '\
    \ \
      \ '+ (data.update ? "
    • 更新过程可能需要几分钟时间,请耐心等候!
    • " : "
    • 安装过程可能需要几分钟时间,请耐心等候!
    • 如果已存在此插件,将被替换!
    • ")+'\
    \
    \
    ' }); }, update_soft: function (name,title, version, min_version,update_msg) { var _this = this; var msg = "
  • 建议您在服务器负载闲时进行软件更新.
  • "; if(name == 'mysql') msg = "
    • 更新数据库有风险,建议在更新前,先备份您的数据库.
    • 如果您的是云服务器,强烈建议您在更新前做一个快照.
    • 建议您在服务器负载闲时进行软件更新.
    "; if (update_msg) msg += '
    本次更新说明:
    ' + update_msg.replace(/(_bt_)/g, "\n") +'

    '; bt.show_confirm('更新[' + title + ']', '更新过程可能会导致服务中断,您真的现在就将[' + title + ']更新到[' + version + '.' + min_version + ']吗?', function () { var loadT = bt.load('正在更新到[' + title+'-'+version+'.'+min_version+'],请稍候...'); bt.send('install_plugin', 'plugin/install_plugin', { sName: name, version: version, upgrade: version }, function (rdata) { if (rdata.size) { _this.install_other(rdata) return; } 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;i') if (rtmp.length < 2) { 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.data.database.data_add.list[2].items[0].value = bt.get_random(16); 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_total_all'},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_redirect_list:function(name,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetRedirectList','site/GetRedirectList',{sitename:name },function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, // 重定向列表 get_redirect_list:function(name,callback){ var loadT = layer.load(); bt.send('GetRedirectList','site/GetRedirectList',{sitename:name },function(rdata){ layer.close(loadT); if(callback) callback(rdata); }); }, create_redirect:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('CreateRedirect','site/CreateRedirect',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, modify_redirect:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('ModifyRedirect','site/ModifyRedirect',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, remove_redirect:function(sitename,redirectname,callback){ bt.show_confirm('删除重定向['+ redirectname +']','您真的要删除该重定向吗?',function(){ var loadT = bt.load(lan.site.the_msg); bt.send('DeleteRedirect','site/DeleteRedirect',{sitename:sitename,redirectname:redirectname},function(rdata){ loadT.close(); if(callback) callback(rdata); }); }); }, get_redirect_config:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('GetRedirectFile','site/GetRedirectFile',obj,function(rdata){ loadT.close(); if(callback) callback(rdata); }); }, save_redirect_config:function(obj,callback){ var loadT = bt.load(lan.site.the_msg); bt.send('SaveProxyFile','site/SaveRedirectFile',obj,function(rdata){ loadT.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 = layer.open({ title: false, type:1, closeBtn:0, shade: 0.3, area: "500px", offset: "30%", content: "
    正在准备申请证书...
    ", success:function(layers,index){ bt.site.get_let_logs(); bt.send('CreateLet', 'site/CreateLet', data, function (rdata) { layer.close(loadT); if (callback) callback(rdata); }); } }); }, get_let_logs: function () { bt.send('get_lines','ajax/get_lines',{ num: 10, filename: "/www/server/panel/logs/letsencrypt.log" },function(rdata){ if ($("#create_lst").text() === "") return; if (rdata.status === true) { $("#create_lst").text(rdata.msg); $("#create_lst").scrollTop($("#create_lst")[0].scrollHeight); } setTimeout(function () { bt.site.get_let_logs(); }, 1000); }); }, 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(); site.reload(); 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({title:'停用站点 【'+ name +'】',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({title:'启动站点 【'+ name +'】',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); }) }, get_dir_auth:function(id,callback){ var loading = bt.load(); bt.send('get_dir_auth','site/get_dir_auth',{id:id},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, create_dir_guard:function(data,callback){ var loading = bt.load(); bt.send('set_dir_auth','site/set_dir_auth',{id:data.id,name:data.name,site_dir:data.site_dir,username:data.username,password:data.password},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, edit_dir_account:function(data,callback){ var loading = bt.load(); bt.send('modify_dir_auth_pass','site/modify_dir_auth_pass',{id:data.id,name:data.name,username:data.username,password:data.password},function(rdata){ loading.close(); if(callback) callback(rdata); }) }, delete_dir_guard:function(id,data,callback){ var loading = bt.load(); bt.show_confirm('删除['+ data +']',"你确定要删除目录保护吗",function(){ bt.send('delete_dir_auth','site/delete_dir_auth',{id:id,name:data},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+'/'+ress); _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); }) }) } } ] } } }