You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5319 lines
179 KiB
5319 lines
179 KiB
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;i<exts.length;i++){
|
|
if(extName == exts[i]) return true;
|
|
}
|
|
return false;
|
|
},
|
|
check_version:function(version,cloud_version){
|
|
var arr1 = version.split('.'); //
|
|
var arr2 = cloud_version.split('.');
|
|
var leng = arr1.length>arr2.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<leng;i++) {
|
|
if(i==leng-1){
|
|
if(arr1[i]!=arr2[i]) return 2; //子版本匹配不上
|
|
}
|
|
else{
|
|
if(arr1[i]!=arr2[i]) return -1; //版本匹配不上
|
|
}
|
|
}
|
|
return 1; //版本正常
|
|
},
|
|
replace_all:function(str,old_data,new_data){
|
|
var reg_str = "/("+old_data+"+)/g"
|
|
var reg = eval(reg_str);
|
|
return str.replace(reg,new_data);
|
|
},
|
|
get_file_ext : function(fileName)
|
|
{
|
|
var text = fileName.split(".");
|
|
var n = text.length-1;
|
|
text = text[n];
|
|
return text;
|
|
},
|
|
get_file_path : function(filename)
|
|
{
|
|
var arr = filename.split('/');
|
|
path = filename.replace('/'+arr[arr.length-1],"");
|
|
return path;
|
|
},
|
|
get_date:function(a){
|
|
var dd = new Date();
|
|
dd.setTime(dd.getTime() + (a == undefined || isNaN(parseInt(a)) ? 0 : parseInt(a)) * 86400000);
|
|
var y = dd.getFullYear();
|
|
var m = dd.getMonth() + 1;
|
|
var d = dd.getDate();
|
|
return y + "-" + (m < 10 ? ('0' + m) : m) + "-" + (d < 10 ? ('0' + d) : d);
|
|
},
|
|
get_form: function (select) {
|
|
var sarr = $(select).serializeArray();
|
|
var iarr = {}
|
|
for (var i = 0; i < sarr.length; i++) {
|
|
iarr[sarr[i].name] = sarr[i].value;
|
|
}
|
|
return iarr;
|
|
},
|
|
ltrim:function(str,r){
|
|
var reg_str = "/(^\\"+r+"+)/g"
|
|
var reg = eval(reg_str);
|
|
str = str.replace(reg,"");
|
|
return str;
|
|
},
|
|
rtrim:function(str,r){
|
|
var reg_str = "/(\\"+r+"+$)/g"
|
|
var reg = eval(reg_str);
|
|
str = str.replace(reg,"");
|
|
return str;
|
|
},
|
|
strim: function (str) {
|
|
var reg_str = "/ /g"
|
|
var reg = eval(reg_str);
|
|
str = str.replace(reg, "");
|
|
return str;
|
|
},
|
|
contains : function(str,substr){
|
|
if(str){
|
|
return str.indexOf(substr) >= 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<unit.length;i++){
|
|
var cUnit = unit[i];
|
|
if(end_unit)
|
|
{
|
|
if(cUnit.trim() == end_unit.trim())
|
|
{
|
|
var val = i == 0 ? bytes : fixed==0? bytes:bytes.toFixed(fixed)
|
|
if(is_unit){
|
|
return val + cUnit;
|
|
}
|
|
else{
|
|
val = parseFloat(val);
|
|
return val;
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
if(bytes < c){
|
|
var val = i == 0 ? bytes : fixed==0? bytes:bytes.toFixed(fixed)
|
|
if(is_unit){
|
|
return val + cUnit;
|
|
}
|
|
else{
|
|
val = parseFloat(val);
|
|
return val;
|
|
}
|
|
}
|
|
}
|
|
|
|
bytes /= c;
|
|
}
|
|
},
|
|
format_data : function(tm,format)
|
|
{
|
|
if(format==undefined) format = "yyyy/MM/dd hh:mm:ss";
|
|
tm = tm.toString();
|
|
if(tm.length > 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: "<div class='changepath'><div class='path-top'><button type='button' id='btn_back' class='btn btn-default btn-sm'><span class='glyphicon glyphicon-share-alt'></span> "+lan.public.return+"</button><div class='place' id='PathPlace'>"+lan.bt.path+":<span></span></div></div><div class='path-con'><div class='path-con-left'><dl><dt id='changecomlist' >"+lan.bt.comp+"</dt></dl></div><div class='path-con-right'><ul class='default' id='computerDefautl'></ul><div class='file-list divtable'><table class='table table-hover' style='border:0 none'><thead><tr class='file-list-head'><th width='40%'>"+lan.bt.filename+"</th><th width='20%'>"+lan.bt.etime+"</th><th width='10%'>"+lan.bt.access+"</th><th width='10%'>"+lan.bt.own+"</th><th width='10%'></th></tr></thead><tbody id='tbody' class='list-list'></tbody></table></div></div></div></div><div class='getfile-btn' style='margin-top:0'><button type='button' class='btn btn-default btn-sm pull-left' onclick='CreateFolder()'>"+lan.bt.adddir+"</button><button type='button' class='btn btn-danger btn-sm mr5' onclick=\"layer.close(getCookie('ChangePath'))\">"+lan.public.close+"</button> <button type='button' id='bt_select' class='btn btn-success btn-sm' >"+lan.bt.path_ok+"</button></div>"
|
|
});
|
|
_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 += "<dd class=\"bt_open_dir\" path =\""+rdata.DISK[f].path+"\"><span class='glyphicon glyphicon-hdd'></span> " + rdata.DISK[f].path + "</dd>"
|
|
}
|
|
$("#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 += "<tr><td class=\"bt_open_dir\" path =\"" + rdata.PATH + "/" + g[0] + "\" title='" + g[0] + "'><span class='glyphicon glyphicon-folder-open'></span>" + e + "</td><td>" + bt.format_data(g[2]) + "</td><td>" + g[3] + "</td><td>" + g[4] + "</td><td><span class='delfile-btn' onclick=\"NewDelFile('" + rdata.PATH + "/" + g[0] + "')\">X</span></td></tr>"
|
|
}
|
|
|
|
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 += "<tr><td title='" + g[0] + "'><span class='glyphicon glyphicon-file'></span>" + e + "</td><td>" + bt.format_data(g[2]) + "</td><td>" + g[3] + "</td><td>" + g[4] + "</td><td></td></tr>"
|
|
}
|
|
}
|
|
|
|
$(".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: "<div class='bt-form webDelete pd20 pb70'><p>" + msg + "</p>" + error + "<div class='vcode'>"+lan.bt.cal_msg+"<span class='text'>" + sumtext + "</span>=<input type='number' id='vcodeResult' value=''></div><div class='bt-form-submit-btn'><button type='button' class='btn btn-danger btn-sm bt-cancel'>"+lan.public.cancel+"</button> <button type='button' id='toSubmit' class='btn btn-success btn-sm' >"+lan.public.ok+"</button></div></div>"
|
|
});
|
|
$("#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('<!DOCTYPE html>') === 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<arr.length;i++) {
|
|
var tmp = arr[i].match(reg);
|
|
if(tmp.length>=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 = '<ul class="help-info-text c7">';
|
|
for(var i = 0;i<arr.length;i++){
|
|
html +='<li>'+arr[i]+'</li>';
|
|
}
|
|
html += '</ul>';
|
|
return html;
|
|
},
|
|
render_ps:function(item){
|
|
var html='<p class=\'p1\'>'+item.title+'</p>';
|
|
for(var i = 0;i<item.list.length;i++){
|
|
html +='<p><span>'+item.list[i].title+':</span><strong>' + item.list[i].val + '</strong></p>';
|
|
}
|
|
html+='<p style="margin-bottom: 19px; margin-top: 11px; color: #666"></p>';
|
|
return html;
|
|
},
|
|
render_table: function (obj, arr, append) { //渲染表单表格
|
|
var html = '';
|
|
for (var key in arr) {
|
|
html += '<tr><th>' + key + '</th>'
|
|
if (typeof arr[key] != 'object') {
|
|
html += '<td>' + arr[key] + '</td>';
|
|
}
|
|
else {
|
|
for (var i = 0; i < arr[key].length; i++) {
|
|
html += '<td>' + arr[key][i] + '</td>';
|
|
}
|
|
}
|
|
html += '</tr>'
|
|
}
|
|
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<arr.length;i++){
|
|
var item = arr[i];
|
|
var _tab = $('<span '+(item.on?'class="on"':'')+'>'+item.title+'</span>')
|
|
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 += '<span class="tname">' + item.title + '</span>';
|
|
is_title_css = '';
|
|
}
|
|
_html += "<div class='info-r " + is_title_css + "'>";
|
|
|
|
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 += '<span class=" mr5">' + _obj.title + " ";
|
|
switch (_obj.type) {
|
|
case 'select':
|
|
var _width = _obj.width ? _obj.width : '100px';
|
|
_html += '<select ' + (_obj.disabled ? 'disabled' : '') + ' class="bt-input-text mr5 ' + _name + bs + '" name="' + _name + '" style="width:' + _width + '">';
|
|
for (var j = 0; j < _obj.items.length; j++) {
|
|
_html += '<option ' + (_obj.value == _obj.items[j].value ? 'selected' : '') + ' value="' + _obj.items[j].value + '">' + _obj.items[j].title + '</option>';
|
|
}
|
|
_html += '</select>';
|
|
break;
|
|
case 'textarea':
|
|
var _width = _obj.width ? _obj.width : '330px';
|
|
var _height = _obj.height ? _obj.height : '100px';
|
|
_html += '<textarea class="bt-input-text mr20 ' + _name + bs + '" name="' + _name + '" style="width:' + _width + ';height:' + _height + ';line-height:22px">' + (_obj.value ? _obj.value : '') + '</textarea>';
|
|
if (_placeholder) _html += '<div class="placeholder c9" style="top: 15px; left: 15px; display: block;">' + _placeholder + '</div>';
|
|
break;
|
|
case 'button':
|
|
var _width = _obj.width ? _obj.width : '330px';
|
|
_html += '<button name=\'' + _name + '\' class="btn btn-success btn-sm mr5 ml5 ' + _name + bs + '">' + _obj.text + '</button>';
|
|
break;
|
|
case 'radio':
|
|
var _v = _obj.value === true ? 'checked' : ''
|
|
_html += '<input type="radio" class="' + _name + '" id="' + _name + '" name="' + _name + '" ' + _v + '><label class="mr20" for="' + _name + '" style="font-weight:normal">' + _obj.text + '</label>'
|
|
break;
|
|
case 'checkbox':
|
|
var _v = _obj.value === true ? 'checked' : ''
|
|
_html += '<input type="checkbox" class="' + _name + '" id="' + _name + '" name="' + _name + '" ' + _v + '><label class="mr20" for="' + _name + '" style="font-weight:normal">' + _obj.text + '</label>'
|
|
break;
|
|
case 'number':
|
|
var _width = _obj.width ? _obj.width : '330px';
|
|
_html += "<input name='" + _name + "' " + (_obj.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='number' style='width:" + _width + "' value='" + (_obj.value ? _obj.value : '0') + "' />";
|
|
_html += _obj.unit ? _obj.unit : '';
|
|
break;
|
|
case 'password':
|
|
var _width = _obj.width ? _obj.width : '330px';
|
|
_html += "<input name='" + _name + "' " + (_obj.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='password' style='width:" + _width + "' value='" + (_obj.value ? _obj.value : '') + "' />";
|
|
break;
|
|
default:
|
|
var _width = _obj.width ? _obj.width : '330px';
|
|
|
|
_html += "<input name='" + _name + "' " + (_obj.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='text' style='width:" + _width + "' value='" + (_obj.value ? _obj.value : '') + "' />";
|
|
break;
|
|
}
|
|
if (_obj.title) _html += '</span>';
|
|
if (_obj.callback) clicks.push({ bind: _name + bs, callback: _obj.callback });
|
|
if (_obj.event) {
|
|
_html += '<span data-id="' + _name + bs + '" class="glyphicon cursor mr5 ' + _obj.event.css + ' icon_' + _name + bs + '" ></span>';
|
|
if (_obj.event.callback) clicks.push({ bind: 'icon_' + _name + bs, callback: _obj.event.callback });
|
|
}
|
|
if (_obj.ps) _html += " <span class='c9 mt10'>" + _obj.ps + "</span>";
|
|
}
|
|
if (item.ps) _html += " <span class='c9 mt10'>" + item.ps + "</span>";
|
|
}
|
|
else {
|
|
switch (item.type) {
|
|
case 'select':
|
|
var _width = item.width ? item.width : '100px';
|
|
_html += '<select ' + (item.disabled ? 'disabled' : '') + ' class="bt-input-text mr5 ' + _name + bs + '" name="' + _name + '" style="width:' + _width + '">';
|
|
for (var j = 0; j < item.items.length; j++) {
|
|
_html += '<option ' + (item.value == item.items[j].value ? 'selected' : '') + ' value="' + item.items[j].value + '">' + item.items[j].title + '</option>';
|
|
}
|
|
_html += '</select>';
|
|
break;
|
|
case 'button':
|
|
var _width = item.width ? item.width : '330px';
|
|
_html += '<button name=\'' + _name + '\' class="btn btn-success btn-sm mr5 ml5 ' + _name + bs + '">' + item.text + '</button>';
|
|
break;
|
|
case 'number':
|
|
var _width = item.width ? item.width : '330px';
|
|
_html += "<input name='" + item.name + "' " + (item.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='number' style='width:" + _width + "' value='" + (item.value ? item.value : '0') + "' />";
|
|
break;
|
|
case 'checkbox':
|
|
var _v = item.value === true ? 'checked' : ''
|
|
_html += '<input type="checkbox" class="' + _name + '" id="' + _name + '" name="' + _name + '" ' + _v + '><label class="mr20" for="' + _name + '" style="font-weight:normal">' + item.text + '</label>'
|
|
break;
|
|
case 'password':
|
|
var _width = item.width ? item.width : '330px';
|
|
_html += "<input name='" + _name + "' " + (item.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='password' style='width:" + _width + "' value='" + (item.value ? item.value : '') + "' />";
|
|
break;
|
|
default:
|
|
var _width = item.width ? item.width : '330px';
|
|
|
|
_html += "<input name='" + item.name + "' " + (item.disabled ? 'disabled' : '') + " class='bt-input-text mr5 " + _name + bs + "' " + (_placeholder ? ' placeholder="' + _placeholder + '"' : "") + " type='text' style='width:" + _width + "' value='" + (item.value ? item.value : '') + "' />";
|
|
break;
|
|
}
|
|
if (item.callback) clicks.push({ bind: _name + bs, callback: item.callback });
|
|
if (item.ps) _html += " <span class='c9 mt10 mr5'>" + item.ps + "</span>";
|
|
}
|
|
_html += '</div>';
|
|
if (!item.class) item.class = '';
|
|
if (item.hide) _hide = 'style="display:none;"'
|
|
_html = '<div class="line ' + item.class + '" ' + _hide + '>' + _html + '</div>'
|
|
|
|
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 = $("<div data-id='form"+bs+"' class='bt-form bt-form pd20 pb70 "+ (data.class?data.class:'') +"'></div>");
|
|
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<data.btns.length;i++) {
|
|
var item = data.btns[i];
|
|
var css = item.css?item.css:'btn-danger';
|
|
_btn_html += "<button type='button' class='btn btn-sm "+css+" " + item.name + bs + "' >"+item.title+"</button>";
|
|
clicks.push({bind:item.name + bs,callback:item.callback});
|
|
}
|
|
_form.append("<div class='bt-form-submit-btn'>" + _btn_html + "</div>");
|
|
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<clicks.length;i++){
|
|
var obj= clicks[i];
|
|
|
|
var btn = $('.'+obj.bind);
|
|
btn.data('item',obj);
|
|
btn.data('load',loadOpen);
|
|
btn.data('callback',callback);
|
|
|
|
switch(btn.prop("tagName")){
|
|
case 'SPAN':
|
|
btn.click(function(){
|
|
var _obj = $(this).data('item');
|
|
_obj.callback($(this).attr('data-id'));
|
|
})
|
|
break;
|
|
case 'SELECT':
|
|
btn.change(function(){
|
|
var _obj = $(this).data('item');
|
|
_obj.callback($(this));
|
|
})
|
|
break;
|
|
case 'TEXTAREA':
|
|
case 'INPUT':
|
|
case 'BUTTON':
|
|
|
|
if (btn.prop("tagName") == 'BUTTON' || btn.attr("type") == 'checkbox')
|
|
{
|
|
btn.click(function(){
|
|
var _obj = $(this).data('item');
|
|
var load = $(this).data('load');
|
|
var _callback = $(this).data('callback');
|
|
var parent = $(this).parents('.bt-form');
|
|
|
|
if (_obj.callback) {
|
|
|
|
var data = {};
|
|
parent.find('*').each(function(index,_this){
|
|
var _name = $(_this).attr('name');
|
|
|
|
if(_name){
|
|
if($(_this).attr('type')=='checkbox' || $(_this).attr('type')=='radio'){
|
|
data[_name] = $(_this).prop('checked');
|
|
}else{
|
|
data[_name] = $(_this).val();
|
|
}
|
|
}
|
|
})
|
|
_obj.callback(data,load,function(rdata){
|
|
if(_callback) _callback(rdata);
|
|
});
|
|
}
|
|
else{
|
|
load.close();
|
|
}
|
|
})
|
|
}
|
|
else {
|
|
if (btn.attr("type") == 'radio') {
|
|
btn.click(function () {
|
|
var _obj = $(this).data('item');
|
|
_obj.callback($(this))
|
|
})
|
|
}
|
|
else {
|
|
btn.on('input', function () {
|
|
var _obj = $(this).data('item');
|
|
_obj.callback($(this));
|
|
})
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
render:function(obj) //columns 行
|
|
{
|
|
if(obj.columns)
|
|
{
|
|
var checks = {};
|
|
$(obj.table).html('');
|
|
var thead = '<thead><tr>';
|
|
for (var h=0;h < obj.columns.length;h++) {
|
|
var item = obj.columns[h];
|
|
if(item){
|
|
thead += '<th';
|
|
if(item.width) thead += ' width="'+item.width+'" ';
|
|
if(item.align || item.sort){
|
|
thead+=' style="';
|
|
if(item.align) thead += 'text-align:'+item.align+';';
|
|
if(item.sort) thead += item.sort?'cursor: pointer;':'';
|
|
thead+='"';
|
|
}
|
|
if(item.type=='checkbox'){
|
|
thead += '><input class="check" onclick="bt.check_select();" type="checkbox">';
|
|
}
|
|
else{
|
|
thead += '>'+item.title;
|
|
}
|
|
if(item.sort) {
|
|
checks[item.field] = item.sort;
|
|
thead += ' <span data-id="'+item.field+'" class="glyphicon glyphicon-triangle-top" style="margin-left:5px;color:#bbb"></span>';
|
|
}
|
|
if(item.help) thead+='<a href="'+item.help+'" class="bt-ico-ask" target="_blank" title="点击查看说明">?</a>';
|
|
|
|
thead += '</th>';
|
|
}
|
|
}
|
|
thead += '</tr></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 = $('<tr></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 = '<input value='+val[item.field]+' class="check" onclick="bt.check_select();" type="checkbox">';
|
|
var td = '<td ';
|
|
if(item.align){
|
|
td+='style="';
|
|
if(item.align) td+='text-align:'+item.align;
|
|
td+='"';
|
|
}
|
|
if(item.index) td +='data-index="' + i + '" '
|
|
td+='>';
|
|
tr.append(td +_val+'</td>');
|
|
tr.data('item',val);
|
|
_tab.append(tr);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
_tab.append("<tr><td colspan='"+obj.columns.length+"'>"+lan.bt.no_data+"</td></tr>");
|
|
}
|
|
$(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 = $("<input class='baktext' value='"+_span.text()+"' type='text' placeholder='"+lan.ftp.ps+"' />");
|
|
_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:'<div class="libLogin pd20" ><div class="bt-form text-center"><div class="line mb15"><h3 class="c2 f16 text-center mtb20">绑定宝塔官网账号</h3></div><div class="line"><input class="bt-input-text" name="username2" type="text" placeholder="手机" id="p1"></div><div class="line"><input autocomplete="new-password" class="bt-input-text" type="password" name="password2" placeholder="密码" id="p2"></div><div class="line"><input class="login-button" value="登录" type="button" ></div><p class="text-right"><a class="btlink" href="https://www.bt.cn/register.html" target="_blank">未有账号,去注册</a></p></div></div>'
|
|
});
|
|
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 += '<option value="' + u[p] + '" ' + m + ">" + u[p] + "</option>"
|
|
}
|
|
var r = bt.open({
|
|
type: 1,
|
|
shift: 5,
|
|
closeBtn: 1,
|
|
//maxmin: true,
|
|
area: ["90%", "90%"],
|
|
shade:false,
|
|
title: lan.bt.edit_title+"[" + fileName + "]",
|
|
content: '<form class="bt-form pd20 pb70"><div class="line"><p style="color:red;margin-bottom:10px">'+lan.bt.edit_ps
|
|
+' <select class="bt-input-text" name="encoding" style="width: 74px;position: absolute;top: 31px;right: 19px;height: 22px;z-index: 9999;border-radius: 0;">'
|
|
+ n + '</select></p><textarea class="mCustomScrollbar bt-input-text" id="textBody" style="width:100%;margin:0 auto;line-height: 1.8;position: relative;top: 10px;" value="" /></div><div class="bt-form-submit-btn" style="position:absolute; bottom:0; width:100%"><button type="button" class="btn btn-danger btn-sm btn-editor-close">'+lan.public.close+'</button><button id="OnlineEditFileBtn" type="button" class="btn btn-success btn-sm">'+lan.public.save+'</button></div></form>'
|
|
})
|
|
$("#textBody").text(rdata.data);
|
|
var q = $(window).height() * 0.9;
|
|
$("#textBody").height(q - 160);
|
|
var t = CodeMirror.fromTextArea(document.getElementById("textBody"), {
|
|
extraKeys: {
|
|
"Ctrl-F": "findPersistent",
|
|
"Ctrl-H": "replaceAll",
|
|
"Ctrl-S": function() {
|
|
$("#textBody").text(t.getValue());
|
|
bt.pub.on_edit_file(2, fileName)
|
|
}
|
|
},
|
|
mode: doctype,
|
|
lineNumbers: true,
|
|
matchBrackets: true,
|
|
matchtags: true,
|
|
autoMatchParens: true
|
|
});
|
|
t.focus();
|
|
t.setSize("auto", q - 150);
|
|
$("#OnlineEditFileBtn").click(function() {
|
|
$("#textBody").text(t.getValue());
|
|
bt.pub.on_edit_file(1, fileName);
|
|
});
|
|
$(".btn-editor-close").click(function() {
|
|
r.close();
|
|
});
|
|
})
|
|
}
|
|
};
|
|
|
|
bt.index = {
|
|
rec_install:function(){
|
|
bt.send('GetSoftList','ajax/GetSoftList',{},function(l){
|
|
|
|
var c = "";
|
|
var g = "";
|
|
var e = "";
|
|
for(var h = 0; h < l.length; h++) {
|
|
if(l[h].name == "Tomcat") {
|
|
continue
|
|
}
|
|
var o = "";
|
|
var m = "<input id='data_" + l[h].name + "' data-info='" + l[h].name + " " + l[h].versions[0].version + "' type='checkbox' checked>";
|
|
for(var b = 0; b < l[h].versions.length; b++) {
|
|
var d = "";
|
|
if((l[h].name == "PHP" && (l[h].versions[b].version == "5.6" || l[h].versions[b].version == "5.6")) || (l[h].name == "MySQL" && l[h].versions[b].version == "5.6") || (l[h].name == "phpMyAdmin" && l[h].versions[b].version == "4.4")) {
|
|
d = "selected";
|
|
m = "<input id='data_" + l[h].name + "' data-info='" + l[h].name + " " + l[h].versions[b].version + "' type='checkbox' checked>"
|
|
}
|
|
o += "<option value='" + l[h].versions[b].version + "' " + d + ">" + l[h].name + " " + l[h].versions[b].version + "</option>"
|
|
}
|
|
var f = "<li><span class='ico'><img src='/static/img/" + l[h].name.toLowerCase() + ".png'></span><span class='name'><select id='select_" + l[h].name + "' class='sl-s-info'>" + o + "</select></span><span class='pull-right'>" + m + "</span></li>";
|
|
if(l[h].name == "Nginx") {
|
|
c = f
|
|
} else {
|
|
if(l[h].name == "Apache") {
|
|
g = f
|
|
} else {
|
|
e += f
|
|
}
|
|
}
|
|
}
|
|
c += e;
|
|
g += e;
|
|
|
|
g = g.replace(new RegExp(/(data_)/g), "apache_").replace(new RegExp(/(select_)/g), "apache_select_");
|
|
var k = layer.open({
|
|
type: 1,
|
|
title: lan.bt.install_title,
|
|
area: ["658px", "428px"],
|
|
closeBtn: 2,
|
|
shadeClose: false,
|
|
content: "<div class='rec-install'><div class='important-title'><p><span class='glyphicon glyphicon-alert' style='color: #f39c12; margin-right: 10px;'></span>" + lan.bt.install_ps + " <a href='javascript:jump()' style='color:#20a53a'>" + lan.bt.install_s + "</a> " + lan.bt.install_s1 + "</p></div><div class='rec-box'><h3>" + lan.bt.install_lnmp + "</h3><div class='rec-box-con'><ul class='rec-list'>" + c + "</ul><p class='fangshi'>" + lan.bt.install_type + ":<label data-title='" + lan.bt.install_rpm_title + "' style='margin-right:0'>" + lan.bt.install_rpm + "<input type='checkbox' checked></label><label data-title='" + lan.bt.install_src_title + "'>" + lan.bt.install_src + "<input type='checkbox'></label></p><div class='onekey'>" + lan.bt.install_key + "</div></div></div><div class='rec-box' style='margin-left:16px'><h3>LAMP</h3><div class='rec-box-con'><ul class='rec-list'>" + g + "</ul><p class='fangshi'>" + lan.bt.install_type + ":<label data-title='" + lan.bt.install_rpm_title + "' style='margin-right:0'>" + lan.bt.install_rpm + "<input type='checkbox' checked></label><label data-title='" + lan.bt.install_src_title + "'>" + lan.bt.install_src + "<input type='checkbox'></label></p><div class='onekey'>一键安装</div></div></div></div>"
|
|
});
|
|
|
|
$(".fangshi input").click(function () {
|
|
$(this).attr("checked", "checked").parent().siblings().find("input").removeAttr("checked")
|
|
});
|
|
|
|
$(".sl-s-info").change(function() {
|
|
var p = $(this).find("option:selected").text();
|
|
var n = $(this).attr("id");
|
|
p = p.toLowerCase();
|
|
$(this).parents("li").find("input").attr("data-info", p)
|
|
});
|
|
$("#apache_select_PHP").change(function() {
|
|
var n = $(this).val();
|
|
j(n, "apache_select_", "apache_")
|
|
});
|
|
$("#select_PHP").change(function() {
|
|
var n = $(this).val();
|
|
j(n, "select_", "data_")
|
|
});
|
|
|
|
function j(p, r, q) {
|
|
var n = "4.4";
|
|
switch(p) {
|
|
case "5.2":
|
|
n = "4.0";
|
|
break;
|
|
case "5.3":
|
|
n = "4.0";
|
|
break;
|
|
case "5.4":
|
|
n = "4.4";
|
|
break;
|
|
case "5.5":
|
|
n = "4.4";
|
|
break;
|
|
default:
|
|
n = "4.7"
|
|
}
|
|
$("#" + r + "phpMyAdmin option[value='" + n + "']").attr("selected", "selected").siblings().removeAttr("selected");
|
|
$("#"+q+"phpMyAdmin").attr("data-info", "phpmyadmin " + n)
|
|
}
|
|
$("#select_MySQL,#apache_select_MySQL").change(function() {
|
|
var n = $(this).val();
|
|
a(n)
|
|
});
|
|
|
|
$("#apache_select_Apache").change(function(){
|
|
var apacheVersion = $(this).val();
|
|
if(apacheVersion == '2.2'){
|
|
layer.msg(lan.bt.install_apache22);
|
|
}else{
|
|
layer.msg(lan.bt.install_apache24);
|
|
}
|
|
});
|
|
|
|
$("#apache_select_PHP").change(function(){
|
|
var apacheVersion = $("#apache_select_Apache").val();
|
|
var phpVersion = $(this).val();
|
|
if(apacheVersion == '2.2'){
|
|
if(phpVersion != '5.2' && phpVersion != '5.3' && phpVersion != '5.4'){
|
|
layer.msg(lan.bt.insatll_s22+'PHP-' + phpVersion,{icon:5});
|
|
$(this).val("5.4");
|
|
$("#apache_PHP").attr('data-info','php 5.4');
|
|
return false;
|
|
}
|
|
}else{
|
|
if(phpVersion == '5.2'){
|
|
layer.msg(lan.bt.insatll_s24+'PHP-' + phpVersion,{icon:5});
|
|
$(this).val("5.4");
|
|
$("#apache_PHP").attr('data-info','php 5.4');
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
function a(n) {
|
|
memSize = bt.get_cookie("memSize");
|
|
max = 64;
|
|
msg = "64M";
|
|
switch(n) {
|
|
case "5.1":
|
|
max = 256;
|
|
msg = "256M";
|
|
break;
|
|
case "5.7":
|
|
max = 1500;
|
|
msg = "2GB";
|
|
break;
|
|
case "8.0":
|
|
max = 5000;
|
|
msg = "6GB";
|
|
break;
|
|
case "5.6":
|
|
max = 800;
|
|
msg = "1GB";
|
|
break;
|
|
case "AliSQL":
|
|
max = 800;
|
|
msg = "1GB";
|
|
break;
|
|
case "mariadb_10.0":
|
|
max = 800;
|
|
msg = "1GB";
|
|
break;
|
|
case "mariadb_10.1":
|
|
max = 1500;
|
|
msg = "2GB";
|
|
break
|
|
}
|
|
if(memSize < max) {
|
|
layer.msg( lan.bt.insatll_mem.replace("{1}",msg).replace("{2}",n), {
|
|
icon: 5
|
|
})
|
|
}
|
|
}
|
|
var de = null;
|
|
$(".onekey").click(function() {
|
|
if(de) return;
|
|
var v = $(this).prev().find("input").eq(0).prop("checked") ? "1" : "0";
|
|
var r = $(this).parents(".rec-box-con").find(".rec-list li").length;
|
|
var n = "";
|
|
var q = "";
|
|
var p = "";
|
|
var x = "";
|
|
var s = "";
|
|
de = true;
|
|
for(var t = 0; t < r; t++) {
|
|
var w = $(this).parents(".rec-box-con").find("ul li").eq(t);
|
|
var u = w.find("input");
|
|
if(u.prop("checked")) {
|
|
n += u.attr("data-info") + ","
|
|
}
|
|
}
|
|
q = n.split(",");
|
|
loadT = layer.msg(lan.bt.install_to, {
|
|
icon: 16,
|
|
time: 0,
|
|
shade: [0.3, "#000"]
|
|
});
|
|
|
|
install_plugin(q);
|
|
|
|
function install_plugin(q){
|
|
if(!q[0]) return;
|
|
p = q[0].split(" ")[0].toLowerCase();
|
|
x = q[0].split(" ")[1];
|
|
if(p=='pure-ftpd') p = 'pureftpd';
|
|
if(p=='php') p = 'php-'+x;
|
|
|
|
s = "sName=" + p + "&version=" + x + "&type=" + v + "&id=" + (t + 1);
|
|
bt.send('install_plugin','plugin/install_plugin',s,function(){
|
|
q.splice(0,1);
|
|
install_plugin(q);
|
|
});
|
|
}
|
|
|
|
layer.close(loadT);
|
|
layer.close(k);
|
|
setTimeout(function() {
|
|
GetTaskCount()
|
|
}, 2000);
|
|
layer.msg(lan.bt.install_ok, {
|
|
icon: 1
|
|
});
|
|
setTimeout(function() {
|
|
task()
|
|
}, 1000)
|
|
});
|
|
//InstallTips();
|
|
fly("onekey")
|
|
})
|
|
}
|
|
}
|
|
|
|
bt.weixin = {
|
|
settiming:'',
|
|
relHeight:500,
|
|
relWidth:500,
|
|
userLength:'',
|
|
get_user_info:function(callback){
|
|
bt.send('get_user_info','panel_wxapp/get_user_info',{},function(rdata){
|
|
if(callback) callback(rdata);
|
|
},1)
|
|
},
|
|
init:function(){
|
|
var _this = this;
|
|
$('.layui-layer-page').css('display', 'none');
|
|
$('.layui-layer-page').width(_this.relWidth);
|
|
$('.layui-layer-page').height(_this.relHeight);
|
|
$('.bt-w-menu').height((_this.relWidth - 1) - $('.layui-layer-title').height());
|
|
var width = $(document).width();
|
|
var height = $(document).height();
|
|
var boxwidth = (width / 2) - (_this.relWidth / 2);
|
|
var boxheight = (height / 2) - (_this.relHeight / 2);
|
|
$('.layui-layer-page').css({
|
|
'left':boxwidth +'px',
|
|
'top':boxheight+'px'
|
|
});
|
|
$('.boxConter,.layui-layer-page').css('display', 'block');
|
|
$('.layui-layer-close').click(function(event) {
|
|
window.clearInterval(_this.settiming);
|
|
});
|
|
this.get_user_details();
|
|
$('.iconCode').hide();
|
|
$('.personalDetails').show();
|
|
},
|
|
// 获取二维码
|
|
get_qrcode:function(){
|
|
var _this = this;
|
|
var qrLoading = bt.load(lan.config.config_qrcode);
|
|
|
|
bt.send('blind_qrcode','panel_wxapp/blind_qrcode',{},function(res){
|
|
qrLoading.close();
|
|
if (res.status){
|
|
$('#QRcode').empty();
|
|
$('#QRcode').qrcode({
|
|
render: "canvas", //也可以替换为table
|
|
width: 200,
|
|
height: 200,
|
|
text:res.msg
|
|
});
|
|
_this.settiming = setInterval(function(){
|
|
_this.verify_binding();
|
|
},2000);
|
|
}else{
|
|
bt.msg(res);
|
|
}
|
|
})
|
|
},
|
|
// 获取用户信息
|
|
get_user_details:function(type){
|
|
var _this = this;
|
|
var conter = '';
|
|
_this.get_user_info(function(res){
|
|
clearInterval(_this.settiming);
|
|
if (!res.status){
|
|
res.time = 3000;
|
|
bt.msg(res);
|
|
|
|
$('.iconCode').hide();
|
|
return false;
|
|
}
|
|
if (JSON.stringify(res.msg) =='{}'){
|
|
if (type){
|
|
bt.msg({msg:lan.config.qrcode_no_list,icon:2})
|
|
}else{
|
|
_this.get_qrcode();
|
|
}
|
|
$('.iconCode').show();
|
|
$('.personalDetails').hide();
|
|
return false;
|
|
}
|
|
$('.iconCode').hide();
|
|
$('.personalDetails').show();
|
|
var datas = res.msg;
|
|
for(var item in datas){
|
|
conter += '<li class="item">\
|
|
<div class="head_img"><img src="'+datas[item].avatarUrl+'" title="用户头像" /></div>\
|
|
<div class="nick_name"><span>昵称:</span><span class="nick"></span>'+datas[item].nickName+'</div>\
|
|
<div class="cancelBind">\
|
|
<a href="javascript:;" class="btlink" title="取消当前微信小程序的绑定" onclick="bt.weixin.cancel_bind('+ item +')">取消绑定</a>\
|
|
</div>\
|
|
</li>'
|
|
}
|
|
conter += '<li class="item addweChat" style="height:45px;"><a href="javascript:;" class="btlink" onclick="bt.weixin.add_wx_view()"><span class="glyphicon glyphicon-plus"></span>添加绑定账号</a></li>'
|
|
$('.userList').empty().append(conter);
|
|
})
|
|
},
|
|
// 添加绑定视图
|
|
add_wx_view:function(){
|
|
$('.iconCode').show();
|
|
$('.personalDetails').hide();
|
|
this.get_qrcode();
|
|
},
|
|
// 取消当前绑定
|
|
cancel_bind:function(uid){
|
|
var _this = this;
|
|
var bdinding = layer.confirm('您确定要取消当前绑定吗?',{
|
|
btn:['确认','取消'],
|
|
icon:3,
|
|
title:'取消绑定'
|
|
},function(){
|
|
bt.send("blind_del","panel_wxapp/blind_del",{uid:uid},function(res){
|
|
bt.msg(res);
|
|
_this.get_user_details();
|
|
})
|
|
},function(){
|
|
layer.close(bdinding);
|
|
});
|
|
},
|
|
// 监听是否绑定
|
|
verify_binding:function(){
|
|
var _this = this;
|
|
bt.send('blind_result','panel_wxapp/blind_result',{},function(res){
|
|
if(res){
|
|
bt.msg({status:true,msg:'绑定成功!'});
|
|
clearInterval(_this.settiming);
|
|
_this.get_user_details();
|
|
}
|
|
})
|
|
},
|
|
open_wxapp : function(){
|
|
var rhtml = '<div class="boxConter" style="display: none">\
|
|
<div class="iconCode" >\
|
|
<div class="box-conter">\
|
|
<div id="QRcode"></div>\
|
|
<div class="codeTip">\
|
|
<ul>\
|
|
<li>1、打开宝塔面板小程序<span class="btlink weChat">小程序二维码<div class="weChatSamll"><img src="https://app.bt.cn/static/app.png"></div></span></li>\
|
|
<li>2、使用宝塔小程序扫描当前二维码,绑定该面板</li>\
|
|
</ul>\
|
|
<span><a href="javascript:;" title="返回面板绑定列表" class="btlink" style="margin: 0 auto" onclick="bt.weixin.get_user_details(true)">查看绑定列表</a></span>\
|
|
</div>\
|
|
</div>\
|
|
</div>\
|
|
<div class="personalDetails" style="display: none">\
|
|
<ul class="userList"></ul>\
|
|
</div>\
|
|
</div>'
|
|
|
|
bt.open({
|
|
type: 1,
|
|
title: "绑定微信",
|
|
area: '500px',
|
|
shadeClose: false,
|
|
content:rhtml
|
|
})
|
|
bt.weixin.init();
|
|
}
|
|
};
|
|
|
|
|
|
|
|
bt.ftp = {
|
|
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=ftp.get_list&table=ftps&limit=15&p='+page+'&search='+search + order;
|
|
bt.pub.get_data(data,function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
add:function(callback)
|
|
{
|
|
bt.data.ftp.add.list[1].items[0].value = bt.get_random(16);
|
|
var bs = bt.render_form(bt.data.ftp.add,function(rdata){
|
|
if(callback) callback(rdata);
|
|
});
|
|
$('.path' + bs).val($("#defaultPath").text());
|
|
},
|
|
set_password : function(callback){
|
|
var bs = bt.render_form(bt.data.ftp.set_password,function(rdata){
|
|
if(callback) callback(rdata);
|
|
});
|
|
return bs;
|
|
},
|
|
del: function(id,username,callback)
|
|
{
|
|
var loading = bt.load(lan.get('del_all_task_the',[username]));
|
|
bt.send('DeleteUser','ftp/DeleteUser',{id:id,username:username},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
set_status: function(id, username,status,callback){
|
|
var loadT = bt.load(lan.public.the);
|
|
var data='id=' + id + '&username=' + username + '&status='+status;
|
|
bt.send('SetStatus','ftp/SetStatus',data,function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
bt.msg(rdata);
|
|
})
|
|
},
|
|
set_port:function(callback)
|
|
{
|
|
var bs = bt.render_form(bt.data.ftp.set_port,function(rdata){
|
|
if(callback) callback(rdata);
|
|
});
|
|
return bs;
|
|
}
|
|
}
|
|
|
|
bt.recycle_bin = {
|
|
open_recycle_bin:function(type){
|
|
if(type==undefined) type = 1;
|
|
bt.files.get_recycle_bin(type,function(rdata){
|
|
var data = [];
|
|
switch(type){
|
|
case 2:
|
|
data = rdata.dirs;
|
|
break;
|
|
case 3:
|
|
data = rdata.files;
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
for (var i=0;i< rdata.files.length;i++) {
|
|
if(type==6 && bt.contains(rdata.files[i].name,'BTDB_')){
|
|
data.push(rdata.files[i]);
|
|
}
|
|
else{
|
|
if(type==4 && bt.check_img(rdata.files[i].name)){
|
|
data.push(rdata.files[i]);
|
|
}
|
|
else if(type==5 && !bt.check_img(rdata.files[i].name)){
|
|
data.push(rdata.files[i]);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
data = rdata.dirs.concat(rdata.files);
|
|
break;
|
|
}
|
|
if($('#tab_recycle_bin').length <= 0)
|
|
{
|
|
bt.open({
|
|
type: 1,
|
|
skin: 'demo-class',
|
|
area: ['80%','606px'],
|
|
title: lan.files.recycle_bin_title,
|
|
closeBtn: 2,
|
|
shift: 5,
|
|
shadeClose: false,
|
|
content: '<div class="re-head">\
|
|
<div style="margin-left: 3px;" class="ss-text">\
|
|
<em>'+lan.files.recycle_bin_on+'</em>\
|
|
<div class="ssh-item">\
|
|
<input class="btswitch btswitch-ios" id="Set_Recycle_bin" type="checkbox" '+(rdata.status?'checked':'')+'>\
|
|
<label class="btswitch-btn" for="Set_Recycle_bin" onclick="bt.files.set_recycle_bin()"></label>\
|
|
</div>\
|
|
<em style="margin-left: 20px;">'+lan.files.recycle_bin_on_db+'</em>\
|
|
<div class="ssh-item">\
|
|
<input class="btswitch btswitch-ios" id="Set_Recycle_bin_db" type="checkbox" '+(rdata.status_db?'checked':'')+'>\
|
|
<label class="btswitch-btn" for="Set_Recycle_bin_db" onclick="bt.files.set_recycle_bin(1)"></label>\
|
|
</div>\
|
|
</div>\
|
|
<span style="line-height: 32px; margin-left: 30px;">'+lan.files.recycle_bin_ps+'</span>\
|
|
<button style="float: right" class="btn btn-default btn-sm" onclick="bt.recycle_bin.clear_recycle_bin();">'+lan.files.recycle_bin_close+'</button>\
|
|
</div>\
|
|
<div class="re-con">\
|
|
<div class="re-con-menu"></div>\
|
|
<div class="re-con-con">\
|
|
<div style="margin: 15px;" class="divtable">\
|
|
<table id="tab_recycle_bin" width="100%" class="table table-hover"></table>\
|
|
</div></div></div>'
|
|
});
|
|
}
|
|
|
|
setTimeout(function(){
|
|
var menus = [
|
|
{title:lan.files.recycle_bin_type1,click:'bt.recycle_bin.open_recycle_bin(1)'},
|
|
{title:lan.files.recycle_bin_type2,click:'bt.recycle_bin.open_recycle_bin(2)'},
|
|
{title:lan.files.recycle_bin_type3,click:'bt.recycle_bin.open_recycle_bin(3)'},
|
|
{title:lan.files.recycle_bin_type4,click:'bt.recycle_bin.open_recycle_bin(4)'},
|
|
{title:lan.files.recycle_bin_type5,click:'bt.recycle_bin.open_recycle_bin(5)'},
|
|
{title:lan.files.recycle_bin_type6,click:'bt.recycle_bin.open_recycle_bin(6)'}
|
|
];
|
|
var m_html = '';
|
|
for (var i=0;i<menus.length;i++) {
|
|
var c = type==(i+1)?'class="on"':'';
|
|
m_html+='<p '+c+' onclick="'+menus[i].click+'" >'+menus[i].title+'</p>';
|
|
}
|
|
$('.re-con-menu').html(m_html);
|
|
var _tab = bt.render({
|
|
table:'#tab_recycle_bin',
|
|
columns:[
|
|
{field:'name',title:lan.files.recycle_bin_th1},
|
|
{field:'dname',title:lan.files.recycle_bin_th2},
|
|
{field:'size',title:lan.files.recycle_bin_th3,templet:function(item){
|
|
return bt.format_size(item.size)
|
|
}},
|
|
{field:'time',title:lan.files.recycle_bin_th4,templet:function(item){
|
|
return bt.format_data(item.time);
|
|
}},
|
|
{field:'opt',title:lan.files.recycle_bin_th5,align:'right',templet:function(item){
|
|
var opt = '<a class="btlink" href="javascript:;" onclick="bt.recycle_bin.re_recycle_bin(\''+item.rname+'\','+type+')">恢复</a> | ';
|
|
opt += '<a class="btlink" href="javascript:;" onclick="bt.recycle_bin.del_recycle_bin(\''+item.rname+'\','+type+')">永久删除</a>';
|
|
return opt;
|
|
}},
|
|
],
|
|
data:data
|
|
});
|
|
},100)
|
|
})
|
|
},
|
|
clear_recycle_bin:function(){
|
|
var _this = this;
|
|
bt.files.clear_recycle_bin(function(rdata){
|
|
_this.open_recycle_bin(1);
|
|
bt.msg(rdata);
|
|
})
|
|
},
|
|
del_recycle_bin:function(path,type){
|
|
var _this = this;
|
|
bt.files.del_recycle_bin(path,function(rdata){
|
|
if(rdata.status) _this.open_recycle_bin(type);
|
|
bt.msg(rdata);
|
|
})
|
|
},
|
|
re_recycle_bin:function(path,type){
|
|
var _this = this;
|
|
bt.files.re_recycle_bin(path,function(rdata){
|
|
if(rdata.status) _this.open_recycle_bin(type);
|
|
bt.msg(rdata);
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bt.files = {
|
|
get_path:function()
|
|
{
|
|
path = path = bt.get_cookie('Path');
|
|
if(!path)
|
|
{
|
|
bt.msg({msg:lan.get('lack_param',['response'])});
|
|
return;
|
|
}
|
|
},
|
|
get_files:function(Path,searchV,callback){
|
|
var searchtype = Path;
|
|
if(isNaN(Path)){
|
|
var p = '1';
|
|
}else{
|
|
var p = Path;
|
|
Path = bt.get_cookie('Path');
|
|
}
|
|
var search = '';
|
|
if(searchV.length > 1 && searchtype == "1"){
|
|
search = "&search="+searchV;
|
|
}
|
|
var showRow = bt.get_cookie('showRow');
|
|
if(!showRow) showRow = '500';
|
|
var totalSize = 0;
|
|
var loadT = bt.load(lan.public.the);
|
|
bt.send('get_files','files/GetDir','tojs=GetFiles&p=' + p + '&showRow=' + showRow + search+'&path='+ Path,function(rdata){
|
|
loadT.close();
|
|
//bt.set_cookie('Path',rdata.PATH);
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_recycle_bin:function(type,callback)
|
|
{
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('Get_Recycle_bin','files/Get_Recycle_bin',{},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
re_recycle_bin:function(path,callback)
|
|
{
|
|
bt.confirm({msg:lan.files.recycle_bin_re_msg,title:lan.files.recycle_bin_re_title},function(){
|
|
var loadT = bt.load(lan.files.recycle_bin_re_the);
|
|
bt.send('Re_Recycle_bin','files/Re_Recycle_bin','path='+path,function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
});
|
|
},
|
|
del_recycle_bin:function(path,callback)
|
|
{
|
|
bt.confirm({msg:lan.files.recycle_bin_del_msg,title:lan.files.recycle_bin_del_title},function(){
|
|
var loadT = bt.load(lan.files.recycle_bin_del_the);
|
|
bt.send('Re_Recycle_bin','files/Del_Recycle_bin','path='+path,function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
});
|
|
},
|
|
clear_recycle_bin:function(callback)
|
|
{
|
|
bt.confirm({msg:lan.files.recycle_bin_close_msg,title:lan.files.recycle_bin_close},function(){
|
|
var loadT = bt.load("<div class='myspeed'>"+lan.files.recycle_bin_close_the+"</div>");
|
|
bt.send('Re_Recycle_bin','files/Close_Recycle_bin',{},function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
});
|
|
},
|
|
set_recycle_bin:function(db)
|
|
{
|
|
var loadT = bt.load(lan.public.the);
|
|
var data = {};
|
|
if(db) data = {db:db}
|
|
bt.send('Recycle_bin','files/Recycle_bin',data,function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
})
|
|
},
|
|
rename:function(fileName,type,callback)
|
|
{
|
|
if(type==undefined) type = 0;
|
|
_this = this;
|
|
path = _this.get_path();
|
|
if(type)
|
|
{
|
|
var newFileName = path + '/' + $("#newFileName").val();
|
|
var oldFileName = path + '/' + fileName;
|
|
var loading = bt.load(lan.public.the);
|
|
bt.send('MvFile','files/MvFile','sfile=' + oldFileName + '&dfile=' + newFileName,function(rdata) {
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
return;
|
|
}
|
|
bt.open({
|
|
type: 1,
|
|
shift: 5,
|
|
closeBtn: 2,
|
|
area: '320px',
|
|
title: lan.files.file_menu_rename,
|
|
content: '<div class="bt-form pd20 pb70">\
|
|
<div class="line">\
|
|
<input type="text" class="bt-input-text" name="Name" id="newFileName" value="' + fileName + '" placeholder="'+lan.files.file_name+'" style="width:100%" />\
|
|
</div>\
|
|
<div class="bt-form-submit-btn">\
|
|
<button type="button" class="btn btn-danger btn-sm btn-title" onclick="layer.closeAll()">'+lan.public.close+'</button>\
|
|
<button type="button" id="ReNameBtn" class="btn btn-success btn-sm btn-title">'+lan.public.save+'</button>\
|
|
</div>\
|
|
</div>'
|
|
});
|
|
setTimeout(function(){
|
|
$("#ReNameBtn").click(function(){
|
|
_this.rename(fileName,1,callback);
|
|
})
|
|
$("#newFileName").focus().keyup(function(e){
|
|
if(e.keyCode == 13) $("#ReNameBtn").click();
|
|
});
|
|
},100)
|
|
|
|
},
|
|
get_file_body:function(path,callback){
|
|
bt.send('GetFileBody','files/GetFileBody','path='+path,function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
set_file_body:function(path,data,encoding,callback){
|
|
var loading = bt.load(lan.site.saving_txt);
|
|
bt.send('SaveFileBody','files/SaveFileBody',{path:path,data:data,encoding:encoding},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
del_file:function(path,callback)
|
|
{
|
|
bt.confirm({msg:lan.get('recycle_bin_confirm',[fileName]),title:lan.files.del_file},function(){
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('del_file','files/DeleteFile','path='+path,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
})
|
|
},
|
|
del_dir:function(path,callback)
|
|
{
|
|
bt.confirm({msg:lan.get('recycle_bin_confirm_dir',[fileName]),title:lan.files.del_file},function(){
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('DeleteDir','files/DeleteDir','path='+path,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
})
|
|
},
|
|
cut_file:function(fileName,callback) //裁剪
|
|
{
|
|
bt.set_cookie('cutFileName', fileName);
|
|
bt.set_cookie('copyFileName', null);
|
|
bt.msg({msg:lan.files.mv_ok,icon:1,time:1})
|
|
if(callback) callback(rdata);
|
|
},
|
|
copy_file:function(fileName,callback)
|
|
{
|
|
bt.set_cookie('cutFileName', null);
|
|
bt.set_cookie('copyFileName', fileName);
|
|
bt.msg({msg:lan.files.copy_ok,icon:1,time:1})
|
|
if(callback) callback(rdata);
|
|
},
|
|
paste_file:function(fileName,callback) //粘贴
|
|
{
|
|
_this = this;
|
|
path = _this.get_path();
|
|
var copyName = bt.get_cookie('copyFileName');
|
|
var cutName = bt.get_cookie('cutFileName');
|
|
var filename = copyName;
|
|
if(cutName != 'null' && cutName != undefined) filename=cutName;
|
|
filename = filename.split('/').pop();
|
|
|
|
bt.send('CheckExistsFiles','files/CheckExistsFiles',{dfile:path,filename:filename},function(rdata){
|
|
if(rdata.length > 0){
|
|
var tbody = '';
|
|
for(var i=0;i<rdata.length;i++){
|
|
tbody += '<tr><td>'+rdata[i].filename+'</td><td>'+bt.format_size(rdata[i].size)+'</td><td>'+bt.format_data(rdata[i].mtime)+'</td></tr>';
|
|
}
|
|
var mbody = '<div class="divtable"><table class="table table-hover" width="100%" border="0" cellpadding="0" cellspacing="0"><thead><th>'+lan.bt.filename+'</th><th>'+lan.bt.file_size+'</th><th>'+lan.bt.etime+'</th></thead>\
|
|
<tbody>'+tbody+'</tbody>\
|
|
</table></div>';
|
|
bt.show_confirm(bt.files.file_conver_msg,mbody,function(){
|
|
_this.paste_to(path,copyName,cutName,fileName,callback);
|
|
})
|
|
}else{
|
|
_this.paste_to(path,copyName,cutName,fileName,callback);
|
|
}
|
|
})
|
|
},
|
|
paste_to:function(path,copyName,cutName,fileName,callback)
|
|
{
|
|
if (copyName != 'null' && copyName != undefined) {
|
|
var loading = bt.msg({msg:lan.files.copy_the,icon:16});
|
|
bt.send('CopyFile','files/CopyFile','sfile=' + copyName + '&dfile=' + path +'/'+ fileName,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
bt.set_cookie('copyFileName',null);
|
|
bt.set_cookie('cutFileName',null);
|
|
return;
|
|
}
|
|
|
|
if (cutName != 'null' && cutName != undefined) {
|
|
var loading = bt.msg({msg:lan.files.copy_the,icon:16});
|
|
bt.send('MvFile','files/MvFile','sfile=' + copyName + '&dfile=' + path +'/'+ fileName,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
bt.set_cookie('copyFileName',null);
|
|
bt.set_cookie('cutFileName',null);
|
|
return;
|
|
}
|
|
},
|
|
zip:function(dirName,submits,callback)
|
|
{
|
|
_this = this;
|
|
if(submits != undefined)
|
|
{
|
|
if(dirName.indexOf(',') == -1){
|
|
tmp = $("#sfile").val().split('/');
|
|
sfile = tmp[tmp.length-1];
|
|
}else{
|
|
sfile = dirName;
|
|
}
|
|
dfile = $("#dfile").val();
|
|
layer.closeAll();
|
|
var loading = bt.load(lan.files.zip_the);
|
|
bt.send('Zip','files/Zip','sfile=' + sfile + '&dfile=' + dfile + '&type=tar&path='+path, function(rdata) {
|
|
loading.close();
|
|
if(rdata == null || rdata == undefined){
|
|
bt.msg({msg:lan.files.zip_ok,icon:1})
|
|
if(callback) callback(rdata);
|
|
return;
|
|
}
|
|
bt.msg(rdata);
|
|
if(rdata.status) if(callback) callback(rdata);;
|
|
});
|
|
return;
|
|
}
|
|
var ext = '.zip';
|
|
if(bt.os=='Linux') ext = '.tar.gz';
|
|
|
|
param = dirName;
|
|
if(dirName.indexOf(',') != -1){
|
|
tmp = path.split('/')
|
|
dirName = path + '/' + tmp[tmp.length-1]
|
|
}
|
|
bt.open({
|
|
type: 1,
|
|
shift: 5,
|
|
closeBtn: 2,
|
|
area: '650px',
|
|
title: lan.files.zip_title,
|
|
content: '<div class="bt-form pd20 pb70">'
|
|
+'<div class="line noborder">'
|
|
+'<input type="text" class="form-control" id="sfile" value="' +param + '" placeholder="" style="display:none" />'
|
|
+'<span>'+lan.files.zip_to+'</span><input type="text" class="bt-input-text" id="dfile" value="'+dirName + ext + '" placeholder="'+lan.files.zip_to+'" style="width: 75%; display: inline-block; margin: 0px 10px 0px 20px;" /><span class="glyphicon glyphicon-folder-open cursor" onclick="ChangePath(\'dfile\')"></span>'
|
|
+'</div>'
|
|
+'<div class="bt-form-submit-btn">'
|
|
+'<button type="button" class="btn btn-danger btn-sm btn-title" onclick="layer.closeAll()">'+lan.public.close+'</button>'
|
|
+'<button type="button" id="ReNameBtn" class="btn btn-success btn-sm btn-title"'+lan.files.file_menu_zip+'</button>'
|
|
+'</div>'
|
|
+'</div>'
|
|
});
|
|
|
|
setTimeout(function(){
|
|
$("#dfile").change(function(){
|
|
var dfile = bt.rtrim($(this).val(),'/');
|
|
if(bt.check_zip(dfile)===-1)
|
|
{
|
|
dfile += ext;
|
|
$(this).val(dfile)
|
|
}
|
|
});
|
|
$("#ReNameBtn").click(function(){
|
|
_this.zip(param,1,callback);
|
|
})
|
|
},100);
|
|
},
|
|
un_zip : function(fileName ,type ,callback) // type: zip|tar
|
|
{
|
|
_this = this;
|
|
if(type.length == 3){
|
|
var sfile = encodeURIComponent($("#sfile").val());
|
|
var dfile = encodeURIComponent($("#dfile").val());
|
|
var password = encodeURIComponent($("#unpass").val());
|
|
coding = $("select[name='coding']").val();
|
|
layer.closeAll();
|
|
var loading = bt.load(lan.files.unzip_the);
|
|
bt.send('UnZip','files/UnZip','sfile=' + sfile + '&dfile=' + dfile +'&type=' + type + '&coding=' + coding + '&password=' + password, function(rdata) {
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
return
|
|
}
|
|
var path = bt.get_file_path(fileName);
|
|
type = (type == 1) ? 'tar':'zip'
|
|
var umpass = '';
|
|
if(type == 'zip'){
|
|
umpass = '<div class="line"><span class="tname">'+lan.files.zip_pass_title+'</span><input type="text" class="bt-input-text" id="unpass" value="" placeholder="'+lan.files.zip_pass_msg+'" style="width:330px" /></div>'
|
|
}
|
|
bt.open({
|
|
type: 1,
|
|
shift: 5,
|
|
closeBtn: 2,
|
|
area: '490px',
|
|
title: lan.files.unzip_title,
|
|
content: '<div class="bt-form pd20 pb70">'
|
|
+'<div class="line unzipdiv">'
|
|
+'<span class="tname">'+lan.files.unzip_name+'</span><input type="text" class="bt-input-text" id="sfile" value="' +fileName + '" placeholder="'+lan.files.unzip_name_title+'" style="width:330px" /></div>'
|
|
+'<div class="line"><span class="tname">'+lan.files.unzip_to+'</span><input type="text" class="bt-input-text" id="dfile" value="'+path + '" placeholder="'+lan.files.unzip_to+'" style="width:330px" /></div>' + umpass
|
|
+'<div class="line"><span class="tname">'+lan.files.unzip_coding+'</span><select class="bt-input-text" name="coding">'
|
|
+'<option value="UTF-8">UTF-8</option>'
|
|
+'<option value="gb18030">GBK</option>'
|
|
+'</select>'
|
|
+'</div>'
|
|
+'<div class="bt-form-submit-btn">'
|
|
+'<button type="button" class="btn btn-danger btn-sm btn-title" onclick="layer.closeAll()">'+lan.public.close+'</button>'
|
|
+'<button type="button" id="ReNameBtn" class="btn btn-success btn-sm btn-title" >'+lan.files.file_menu_unzip+'</button>'
|
|
+'</div>'
|
|
+'</div>'
|
|
});
|
|
setTimeout(function(){
|
|
|
|
$("#ReNameBtn").click(function(){
|
|
_this.un_zip(fileName,type,callback);
|
|
})
|
|
},100);
|
|
},
|
|
show_img:function(fileName)
|
|
{
|
|
var imgUrl = '/download?filename='+fileName;
|
|
bt.open({
|
|
type:1,
|
|
closeBtn: 2,
|
|
title:false,
|
|
area: '500px',
|
|
shadeClose: true,
|
|
content: '<div class="showpicdiv"><img width="100%" src="'+imgUrl+'"></div>'
|
|
});
|
|
$(".layui-layer").css("top", "30%");
|
|
},
|
|
get_files_bytes:function(fileName, fileSize)
|
|
{
|
|
window.open('/download?filename='+encodeURIComponent(fileName));
|
|
},
|
|
upload_files : function()
|
|
{
|
|
path = this.get_path();
|
|
bt.open({
|
|
type:1,
|
|
closeBtn: 2,
|
|
title:lan.files.up_title,
|
|
area: ['500px','500px'],
|
|
shadeClose:false,
|
|
content:'<div class="fileUploadDiv"><input type="hidden" id="input-val" value="'+path+'" />\
|
|
<input type="file" id="file_input" multiple="true" autocomplete="off" />\
|
|
<button type="button" id="opt" autocomplete="off">'+lan.files.up_add+'</button>\
|
|
<button type="button" id="up" autocomplete="off" >'+lan.files.up_start+'</button>\
|
|
<span id="totalProgress" style="position: absolute;top: 7px;right: 147px;"></span>\
|
|
<span style="float:right;margin-top: 9px;">\
|
|
<font>'+lan.files.up_coding+':</font>\
|
|
<select id="fileCodeing" >\
|
|
<option value="byte">'+lan.files.up_bin+'</option>\
|
|
<option value="utf-8">UTF-8</option>\
|
|
<option value="gb18030">GB2312</option>\
|
|
</select>\
|
|
</span>\
|
|
<button type="button" id="filesClose" autocomplete="off" onClick="layer.closeAll()" >'+lan.public.close+'</button>\
|
|
<ul id="up_box"></ul></div>'
|
|
});
|
|
UploadStart();
|
|
},
|
|
set_chmod:function(action,fileName,callback)
|
|
{
|
|
_this = this;
|
|
if(action == 1){
|
|
var chmod = $("#access").val();
|
|
var chown = $("#chown").val();
|
|
var data = 'filename='+ fileName+'&user='+chown+'&access='+chmod;
|
|
var loadT = bt.load(lan.public.config);
|
|
bt.send('SetFileAccess','files/SetFileAccess',data,function(rdata){
|
|
loadT.close();
|
|
if(rdata.status) layer.closeAll();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
return;
|
|
}
|
|
|
|
var toExec = fileName == lan.files.all?'Batch(3,1)':'_this.set_chmod(1,\''+fileName+'\',callback)';
|
|
|
|
bt.send('GetFileAccess','files/GetFileAccess', 'filename='+fileName,function(rdata){
|
|
if(bt.os=='Linux')
|
|
{
|
|
bt.open({
|
|
type:1,
|
|
title: lan.files.set_auth + '['+fileName+']',
|
|
area: '400px',
|
|
shadeClose:false,
|
|
content:'<div class="setchmod bt-form ptb15 pb70">\
|
|
<fieldset>\
|
|
<legend>'+lan.files.file_own+'</legend>\
|
|
<p><input type="checkbox" id="owner_r" />'+lan.files.file_read+'</p>\
|
|
<p><input type="checkbox" id="owner_w" />'+lan.files.file_write+'</p>\
|
|
<p><input type="checkbox" id="owner_x" />'+lan.files.file_exec+'</p>\
|
|
</fieldset>\
|
|
<fieldset>\
|
|
<legend>'+lan.files.file_group+'</legend>\
|
|
<p><input type="checkbox" id="group_r" />'+lan.files.file_read+'</p>\
|
|
<p><input type="checkbox" id="group_w" />'+lan.files.file_write+'</p>\
|
|
<p><input type="checkbox" id="group_x" />'+lan.files.file_exec+'</p>\
|
|
</fieldset>\
|
|
<fieldset>\
|
|
<legend>'+lan.files.file_public+'</legend>\
|
|
<p><input type="checkbox" id="public_r" />'+lan.files.file_read+'</p>\
|
|
<p><input type="checkbox" id="public_w" />'+lan.files.file_write+'</p>\
|
|
<p><input type="checkbox" id="public_x" />'+lan.files.file_exec+'</p>\
|
|
</fieldset>\
|
|
<div class="setchmodnum"><input class="bt-input-text" type="text" id="access" maxlength="3" value="'+rdata.chmod+'">'+lan.files.file_menu_auth+',\
|
|
<span>'+lan.files.file_own+'\
|
|
<select id="chown" class="bt-input-text">\
|
|
<option value="www" '+(rdata.chown=='www'?'selected="selected"':'')+'>www</option>\
|
|
<option value="mysql" '+(rdata.chown=='mysql'?'selected="selected"':'')+'>mysql</option>\
|
|
<option value="root" '+(rdata.chown=='root'?'selected="selected"':'')+'>root</option>\
|
|
</select></span></div>\
|
|
<div class="bt-form-submit-btn">\
|
|
<button type="button" class="btn btn-danger btn-sm btn-title" onclick="layer.closeAll()">'+lan.public.close+'</button>\
|
|
<button type="button" class="btn btn-success btn-sm btn-title" onclick="'+toExec+'" >'+lan.public.ok+'</button>\
|
|
</div>\
|
|
</div>'
|
|
});
|
|
|
|
settimeout(function(){
|
|
_this.on_linux_access();
|
|
$("#access").keyup(function(){
|
|
_this.on_linux_access();
|
|
});
|
|
|
|
$("input[type=checkbox]").change(function(){
|
|
var idName = ['owner','group','public'];
|
|
var onacc = '';
|
|
for(var n=0;n<idName.length;n++){
|
|
var access = 0;
|
|
access += $("#"+idName[n]+"_x").prop('checked')?1:0;
|
|
access += $("#"+idName[n]+"_w").prop('checked')?2:0;
|
|
access += $("#"+idName[n]+"_r").prop('checked')?4:0;
|
|
onacc += access;
|
|
}
|
|
$("#access").val(onacc);
|
|
});
|
|
},100)
|
|
}
|
|
})
|
|
},
|
|
on_linux_access:function()
|
|
{
|
|
var access = $("#access").val();
|
|
var idName = ['owner','group','public'];
|
|
for(var n=0;n<idName.length;n++){
|
|
$("#"+idName[n]+"_x").prop('checked',false);
|
|
$("#"+idName[n]+"_w").prop('checked',false);
|
|
$("#"+idName[n]+"_r").prop('checked',false);
|
|
}
|
|
for(var i=0;i<access.length;i++){
|
|
var onacc = access.substr(i,1);
|
|
if(i > idName.length) continue;
|
|
if(onacc > 7) $("#access").val(access.substr(0,access.length-1));
|
|
switch(onacc){
|
|
case '1':
|
|
$("#"+idName[i]+"_x").prop('checked',true);
|
|
break;
|
|
case '2':
|
|
$("#"+idName[i]+"_w").prop('checked',true);
|
|
break;
|
|
case '3':
|
|
$("#"+idName[i]+"_x").prop('checked',true);
|
|
$("#"+idName[i]+"_w").prop('checked',true);
|
|
break;
|
|
case '4':
|
|
$("#"+idName[i]+"_r").prop('checked',true);
|
|
break;
|
|
case '5':
|
|
$("#"+idName[i]+"_r").prop('checked',true);
|
|
$("#"+idName[i]+"_x").prop('checked',true);
|
|
break;
|
|
case '6':
|
|
$("#"+idName[i]+"_r").prop('checked',true);
|
|
$("#"+idName[i]+"_w").prop('checked',true);
|
|
break;
|
|
case '7':
|
|
$("#"+idName[i]+"_r").prop('checked',true);
|
|
$("#"+idName[i]+"_w").prop('checked',true);
|
|
$("#"+idName[i]+"_x").prop('checked',true);
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
on_win_access:function()
|
|
{
|
|
|
|
},
|
|
get_right_click:function(type,path,name){
|
|
_this = this;
|
|
var displayZip = bt.check_zip(type);
|
|
var options = {items:[
|
|
{text: lan.files.file_menu_copy, onclick: function() {_this.copy_file(path)}},
|
|
{text: lan.files.file_menu_mv, onclick: function() {_this.cut_file(path)}},
|
|
{text: lan.files.file_menu_rename, onclick: function() {_this.rename(path,name)}},
|
|
{text: lan.files.file_menu_auth, onclick: function() {_this.set_chmod(0,path)}},
|
|
{text: lan.files.file_menu_zip, onclick: function() {_this.zip(path)}}
|
|
|
|
]};
|
|
if(type == "dir"){
|
|
options.items.push({text: lan.files.file_menu_del, onclick: function() {_this.del_dir(path)}});
|
|
}
|
|
else if(isText(type)){
|
|
options.items.push({text: lan.files.file_menu_edit, onclick: function() {bt.on_edit_file(0,path)}},{text: lan.files.file_menu_down, onclick: function() {_this.get_files_bytes(path)}},{text: lan.files.file_menu_del, onclick: function() {_this.del_file(path)}});
|
|
}
|
|
else if(displayZip != -1){
|
|
options.items.push({text: lan.files.file_menu_unzip, onclick: function() {_this.un_zip(path,displayZip)}},{text: lan.files.file_menu_down, onclick: function() {_this.get_files_bytes(path)}},{text: lan.files.file_menu_del, onclick: function() {_this.del_file(path)}});
|
|
}
|
|
else if(isImage(type)){
|
|
options.items.push({text: lan.files.file_menu_img, onclick: function() {_this.show_img(path)}},{text: lan.files.file_menu_down, onclick: function() {_this.get_files_bytes(path)}},{text: lan.files.file_menu_del, onclick: function() {_this.del_file(path)}});
|
|
}
|
|
else{
|
|
options.items.push({text: lan.files.file_menu_down, onclick: function() {_this.get_files_bytes(path)}},{text: lan.files.file_menu_del, onclick: function() {_this.del_file(path)}});
|
|
}
|
|
return options;
|
|
},
|
|
get_dir_size:function(path,callback){
|
|
if(!path) path = this.get_path();
|
|
var loading = bt.load(lan.public.the);
|
|
bt.send('GetDirSize','files/GetDirSize',{path:path},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
batch:function(type,access,callback)
|
|
{
|
|
_this = this;
|
|
|
|
var el = document.getElementsByTagName('input');
|
|
var len = el.length;
|
|
var data='path='+path+'&type='+type;
|
|
var name = 'data';
|
|
|
|
var oldType = bt.get_cookie('BatchPaste');
|
|
|
|
for(var i=0;i<len;i++){
|
|
if(el[i].checked == true && el[i].value != 'on'){
|
|
data += '&'+name+'='+el[i].value;
|
|
}
|
|
}
|
|
|
|
if(type == 3 && access == undefined){
|
|
_this.set_chmod(0,lan.files.all);
|
|
return;
|
|
}
|
|
|
|
if(type < 3) bt.set_cookie('BatchSelected', '1');
|
|
bt.set_cookie('BatchPaste',type);
|
|
|
|
if(access == 1){
|
|
var access = $("#access").val();
|
|
var chown = $("#chown").val();
|
|
data += '&access='+access+'&user='+chown;
|
|
layer.closeAll();
|
|
}
|
|
if(type == 4){
|
|
AllDeleteFileSub(data,path);
|
|
bt.set_cookie('BatchPaste',oldType);
|
|
return;
|
|
}
|
|
|
|
if(type == 5){
|
|
var names = '';
|
|
for(var i=0;i<len;i++){
|
|
if(el[i].checked == true && el[i].value != 'on'){
|
|
names += el[i].value + ',';
|
|
}
|
|
}
|
|
_this.zip(names);
|
|
return;
|
|
}
|
|
|
|
myloadT = bt.load("<div class='myspeed'>"+lan.public.the+"</div>");
|
|
setTimeout(function(){getSpeed('.myspeed');},1000);
|
|
bt.send('SetBatchData','files/SetBatchData',data,function(rdata){
|
|
myloadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
download_file:function(action,callback)
|
|
{
|
|
path = bt.get_cookie('Path');
|
|
if(action == 1){
|
|
var fUrl = $("#mUrl").val();
|
|
fUrl = fUrl;
|
|
fpath = $("#dpath").val();
|
|
fname = $("#dfilename").val();
|
|
layer.closeAll();
|
|
loading = bt.load(lan.files.down_task);
|
|
bt.send('DownloadFile','files/DownloadFile','path='+fpath+'&url='+fUrl+'&filename='+fname,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
return;
|
|
}
|
|
layer.open({
|
|
type: 1,
|
|
shift: 5,
|
|
closeBtn: 2,
|
|
area: '500px',
|
|
title: lan.files.down_title,
|
|
content: '<form class="bt-form pd20 pb70">\
|
|
<div class="line">\
|
|
<span class="tname">'+lan.files.down_url+':</span><input type="text" class="bt-input-text" name="url" id="mUrl" value="" placeholder="'+lan.files.down_url+'" style="width:330px" />\
|
|
</div>\
|
|
<div class="line">\
|
|
<span class="tname ">'+lan.files.down_to+':</span><input type="text" class="bt-input-text" name="path" id="dpath" value="'+path+'" placeholder="'+lan.files.down_to+'" style="width:330px" />\
|
|
</div>\
|
|
<div class="line">\
|
|
<span class="tname">'+lan.files.file_name+':</span><input type="text" class="bt-input-text" name="filename" id="dfilename" value="" placeholder="'+lan.files.down_save+'" style="width:330px" />\
|
|
</div>\
|
|
<div class="bt-form-submit-btn">\
|
|
<button type="button" class="btn btn-danger btn-sm" onclick="layer.closeAll()">'+lan.public.close+'</button>\
|
|
<button type="button" id="dlok" class="btn btn-success btn-sm dlok" onclick="DownloadFile(1)">'+lan.public.ok+'</button>\
|
|
</div>\
|
|
</form>'
|
|
});
|
|
fly("dlok");
|
|
$("#mUrl").keyup(function(){
|
|
durl = $(this).val()
|
|
tmp = durl.split('/')
|
|
$("#dfilename").val(tmp[tmp.length-1])
|
|
});
|
|
}
|
|
}
|
|
// 任务管理器
|
|
bt.crontab = {
|
|
// 执行计划任务请求
|
|
start_task_send:function(id,name){
|
|
var that = this,loading = bt.load();
|
|
bt.send('start_task_send','crontab/StartTask',{id:id},function (rdata) {
|
|
loading.close();
|
|
rdata.time = 2000;
|
|
bt.msg(rdata);
|
|
});
|
|
},
|
|
|
|
// 删除计划任务
|
|
del_task_send:function(id,name){
|
|
bt.show_confirm('删除['+ name +']','您确定要删除该任务吗?',function(){
|
|
bt.send('del_task_send','crontab/DelCrontab',{id:id},function (rdata) {
|
|
loading.close();
|
|
rdata.time = 2000;
|
|
bt.msg(rdata);
|
|
that.get_crontab_list();
|
|
});
|
|
});
|
|
},
|
|
|
|
// 设置计划任务状态
|
|
set_crontab_status:function(id,status,callback){
|
|
var that = this,loading = bt.load();
|
|
bt.confirm({title:'提示',msg:status?'计划任务暂停后将无法继续运行,您真的要停用这个计划任务吗?':'该计划任务已停用,是否要启用这个计划任务?'},function () {
|
|
bt.send('set_crontab_status','crontab/set_cron_status',{id:id},function (rdata) {
|
|
loading.close();
|
|
if(callback) callback(rdata)
|
|
});
|
|
});
|
|
},
|
|
|
|
// 编辑计划任务脚本
|
|
edit_crontab_file:function(echo){
|
|
bt.pub.on_edit_file(0,'/www/server/cron/'+ echo);
|
|
},
|
|
|
|
// 编辑计划任务
|
|
edit_crontab:function(id,data){
|
|
var that = this,loading = bt.load('提交数据中...');
|
|
bt.send('edit_crontab','crontab/modify_crond',data,function(rdata){
|
|
loading.close();
|
|
if(rdata.status){
|
|
// that.get_crontab_list();
|
|
layer.msg(rdata.msg,{icon:1});
|
|
}else{
|
|
layer.msg(rdata.msg,{icon:2});
|
|
}
|
|
});
|
|
},
|
|
|
|
// 获取计划任务日志
|
|
get_logs_crontab:function(id,name){
|
|
var that = this;
|
|
bt.send('get_logs_crontab','crontab/GetLogs',{id:id},function (rdata) {
|
|
if(!rdata.status) {
|
|
rdata.time = 1000;
|
|
bt.msg(rdata);
|
|
}else{
|
|
bt.open({
|
|
type:1,
|
|
title:'查看日志-['+name+']',
|
|
area: ['700px','520px'],
|
|
shadeClose:false,
|
|
closeBtn:1,
|
|
content:'<div class="setchmod bt-form pd20 pb70">'
|
|
+'<pre class="crontab-log" style="overflow: auto; border: 0px none; line-height:28px;padding: 15px; margin: 0px; height: 405px; background-color: rgb(51,51,51);color:#f1f1f1;font-family: \"微软雅黑\"">'+ (rdata.msg == '' ? '当前日志为空':rdata.msg) +'</pre>'
|
|
+'<div class="bt-form-submit-btn" style="margin-top: 0px;">'
|
|
+'<button type="button" class="layui-btn layui-btn-sm" onclick="bt.crontab.del_logs_crontab('+id+')">'+lan.public.empty+'</button>'
|
|
+'<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" onclick="layer.closeAll()">'+lan.public.close+'</button>'
|
|
+'</div>'
|
|
+'</div>'
|
|
})
|
|
setTimeout(function () {
|
|
var div = document.getElementsByClassName('crontab-log')[0]
|
|
div.scrollTop = div.scrollHeight;
|
|
},200);
|
|
}
|
|
})
|
|
},
|
|
|
|
// 删除计划任务日志
|
|
del_logs_crontab:function(id,name){
|
|
var that = this,loading = bt.load();
|
|
bt.send('del_logs_crontab','crontab/DelLogs',{id:id},function (rdata) {
|
|
loading.close();
|
|
layer.closeAll();
|
|
rdata.time = 2000;
|
|
bt.msg(rdata);
|
|
});
|
|
},
|
|
|
|
// 获取计划任务列表
|
|
get_crontab_list:function(status,callback){
|
|
var that = this;
|
|
var loading = bt.load();
|
|
bt.send('get_crontab_list','crontab/GetCrontab',{},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
|
|
// 获取站点和备份位置信息
|
|
get_data_list:function(type,name){
|
|
var that = this;
|
|
bt.send('get_data_list','crontab/GetDataList',{type:type},function(rdata){
|
|
that.backupsList.siteList = [{'name': 'ALL','ps':'所有'}]
|
|
that.backupsList.optList =[{'name':'服务器磁盘','value':'localhost'}]
|
|
that.backupsList.siteList = that.backupsList.siteList.concat(rdata.data);
|
|
that.backupsList.optList = that.backupsList.optList.concat(rdata.orderOpt);
|
|
that.initFrom["crontab-name"] = name + "["+ that.backupsList.siteList[that.initFrom['crontab-site']].name +"]";
|
|
that.insert_control_from(that.initFrom['crontab-submit']);
|
|
});
|
|
},
|
|
|
|
// 添加计划任务请求
|
|
add_control_send:function(data){
|
|
var that = this,loading = bt.load('提交数据中...');
|
|
bt.send('addCrontab','crontab/AddCrontab',data,function(rdata){
|
|
loading.close();
|
|
if(rdata.status){
|
|
that.insert_control_from(true,true);
|
|
that.get_crontab_list();
|
|
layer.msg(rdata.msg,{icon:1});
|
|
}else{
|
|
layer.msg(rdata.msg,{icon:2});
|
|
}
|
|
});
|
|
},
|
|
get_crontab_find:function(id,callback){
|
|
bt.send('get_crontab_find','crontab/get_crontab_find',{id:id},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
|
|
}
|
|
|
|
|
|
bt.config =
|
|
{
|
|
close_panel:function(callback)
|
|
{
|
|
layer.confirm(lan.config.close_panel_msg,{title:lan.config.close_panel_title,closeBtn:2,icon:13,cancel:function(){
|
|
if(callback) callback(false);
|
|
}}, function() {
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('ClosePanel','config/ClosePanel',{},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},function(){
|
|
if(callback) callback(false);
|
|
});
|
|
},
|
|
set_auto_update:function(callback)
|
|
{
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('AutoUpdatePanel','config/AutoUpdatePanel',{},function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
sync_data:function(callback)
|
|
{
|
|
var loadT = bt.load(lan.config.config_sync);
|
|
bt.send('syncDate','config/syncDate',{},function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
save_config:function(data,callback)
|
|
{
|
|
loading = bt.load(lan.config.config_save);
|
|
bt.send('setPanel','config/setPanel',data,function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
set_template:function(template,callback)
|
|
{
|
|
var loadT = bt.load(lan.public.the);
|
|
bt.send('SetTemplates','config/SetTemplates',{templates:template},function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
set_panel_ssl:function(status,callback)
|
|
{
|
|
var msg = status?lan.config.ssl_close_msg:'<a style="font-weight: bolder;font-size: 16px;">'+lan.config.ssl_open_ps+'</a><li style="margin-top: 12px;color:red;">'+lan.config.ssl_open_ps_1+'</li><li>'+lan.config.ssl_open_ps_2+'</li><li>'+lan.config.ssl_open_ps_3+'</li><p style="margin-top: 10px;"><input type="checkbox" id="checkSSL" /><label style="font-weight: 400;margin: 3px 5px 0px;" for="checkSSL">'+lan.config.ssl_open_ps_4+'</label><a target="_blank" class="btlink" href="https://www.bt.cn/bbs/thread-4689-1-1.html" style="float: right;">'+lan.config.ssl_open_ps_5+'</a></p>';
|
|
layer.confirm(msg,{title:lan.config.ssl_title,closeBtn:2,icon:3,area:'550px',cancel:function(){
|
|
if(callback) {
|
|
if(status == 0){
|
|
callback(false);
|
|
}
|
|
else{
|
|
callback(true);
|
|
}
|
|
}
|
|
}},function(){
|
|
if(window.location.protocol.indexOf('https') == -1){
|
|
if(!$("#checkSSL").prop('checked')){
|
|
bt.msg({msg:lan.config.ssl_ps,icon:2});
|
|
if(callback) callback(false);
|
|
}
|
|
}
|
|
var loadT = bt.load(lan.config.ssl_msg);
|
|
bt.send('SetPanelSSL','config/SetPanelSSL',{},function(rdata){
|
|
loadT.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
},function(){
|
|
if(callback) {
|
|
if(status == 0){
|
|
callback(false);
|
|
}
|
|
else{
|
|
callback(true);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
get_panel_ssl:function()
|
|
{
|
|
_this = this;
|
|
loading = bt.load('正在获取证书信息...');
|
|
bt.send('GetPanelSSL','config/GetPanelSSL',{},function(cert){
|
|
loading.close();
|
|
var certBody = '<div class="tab-con">\
|
|
<div class="myKeyCon ptb15">\
|
|
<div class="ssl-con-key pull-left mr20">密钥(KEY)<br>\
|
|
<textarea id="key" class="bt-input-text">'+cert.privateKey+'</textarea>\
|
|
</div>\
|
|
<div class="ssl-con-key pull-left">证书(PEM格式)<br>\
|
|
<textarea id="csr" class="bt-input-text">'+cert.certPem+'</textarea>\
|
|
</div>\
|
|
<div class="ssl-btn pull-left mtb15" style="width:100%">\
|
|
<button class="btn btn-success btn-sm" id="btn_submit">保存</button>\
|
|
</div>\
|
|
</div>\
|
|
<ul class="help-info-text c7 pull-left">\
|
|
<li>粘贴您的*.key以及*.pem内容,然后保存即可<a href="http://www.bt.cn/bbs/thread-704-1-1.html" class="btlink" target="_blank">[帮助]</a>。</li>\
|
|
<li>如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书</li><li>PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt</li>\
|
|
</ul>\
|
|
</div>'
|
|
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: "<div class='bt-form pd20 pb70'><div class='line'><span class='tname'>"+lan.bt.user+"</span><div class='info-r'><input class='bt-input-text' type='text' name='password1' id='p1' value='' placeholder='"+lan.bt.user_new+"' style='width:100%'/></div></div><div class='line'><span class='tname'>"+lan.bt.pass_re+"</span><div class='info-r'><input class='bt-input-text' type='text' name='password2' id='p2' value='' placeholder='"+lan.bt.pass_re_title+"' style='width:100%'/></div></div><div class='bt-form-submit-btn'><button type='button' class='btn btn-danger btn-sm' onclick=\"layer.closeAll()\">"+lan.public.close+"</button> <button type='button' class='btn btn-success btn-sm' onclick=\"bt.config.set_username(1)\">"+lan.public.edit+"</button></div></div>"
|
|
})
|
|
},
|
|
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<pchecks.length;i++){
|
|
checks.push(pchecks[i]+pchecks[i]+pchecks[i]+pchecks[i]+pchecks[i]+pchecks[i]+pchecks[i]+pchecks[i]);
|
|
}
|
|
|
|
//检查弱口令
|
|
cps = p1.toLowerCase();
|
|
var isError = "";
|
|
for(var i=0;i<checks.length;i++){
|
|
if(cps == checks[i]){
|
|
isError += '['+checks[i]+'] ';
|
|
}
|
|
}
|
|
if(isError != ""){
|
|
bt.msg({msg:lan.bt.pass_err+isError,icon:2})
|
|
return;
|
|
}
|
|
|
|
if(p1 != p2) {
|
|
bt.msg({msg:lan.bt.pass_err_re,icon:2})
|
|
return
|
|
}
|
|
bt.send('setPassword','config/setPassword',{password1:p1,password2:p2},function(rdata){
|
|
layer.closeAll();
|
|
bt.msg(rdata);
|
|
})
|
|
return
|
|
}
|
|
layer.open({
|
|
type: 1,
|
|
area: "290px",
|
|
title: lan.bt.pass_title,
|
|
closeBtn: 2,
|
|
shift: 5,
|
|
shadeClose: false,
|
|
content: "<div class='bt-form pd20 pb70'><div class='line'><span class='tname'>"+lan.public.pass+"</span><div class='info-r'><input class='bt-input-text' type='text' name='password1' id='p1' value='' placeholder='"+lan.bt.pass_new_title+"' style='width:100%'/></div></div><div class='line'><span class='tname'>"+lan.bt.pass_re+"</span><div class='info-r'><input class='bt-input-text' type='text' name='password2' id='p2' value='' placeholder='"+lan.bt.pass_re_title+"' style='width:100%' /></div></div><div class='bt-form-submit-btn'><span style='float: left;' title='"+lan.bt.pass_rep+"' class='btn btn-default btn-sm' onclick='randPwd(10)'>"+lan.bt.pass_rep_btn+"</span><button type='button' class='btn btn-danger btn-sm' onclick=\"layer.closeAll()\">"+lan.public.close+"</button> <button type='button' class='btn btn-success btn-sm' onclick=\"bt.config.set_password(1)\">"+lan.public.edit+"</button></div></div>"
|
|
});
|
|
}
|
|
}
|
|
|
|
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<obj.list.length;i++)
|
|
{
|
|
var item = obj.list[i];
|
|
series = {
|
|
name : item.name,
|
|
type : item.type?item.type:'line',
|
|
smooth : item.smooth ? item.smooth : true,
|
|
symbol : item.symbol ? item.symbol : 'none',
|
|
showSymbol:item.showSymbol?item.showSymbol:false,
|
|
sampling : item.sampling ? item.sampling : 'average',
|
|
areaStyle : item.areaStyle ? item.areaStyle : {},
|
|
lineStyle : item.lineStyle ? item.lineStyle : {},
|
|
itemStyle : item.itemStyle ? item.itemStyle : { normal:{ color: 'rgb(0, 153, 238)'}},
|
|
symbolSize:6,
|
|
symbol: 'circle',
|
|
data : item.data
|
|
}
|
|
option.series.push(series);
|
|
}
|
|
return option;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bt.firewall = {
|
|
get_log_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=firewall.get_log_list&table=logs&limit=10&p='+page+'&search='+search + order;
|
|
bt.pub.get_data(data,function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
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=firewall.get_list&table=firewall&limit=10&p='+page+'&search='+search + order;
|
|
bt.pub.get_data(data,function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_logs_size:function(callback){
|
|
if(bt.os=='Linux'){
|
|
bt.files.get_dir_size('/www/wwwlogs',function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
},
|
|
get_ssh_info : function(callback){
|
|
bt.send('GetSshInfo','firewall/GetSshInfo',{},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
set_mstsc : function(port,callback){
|
|
bt.confirm({msg:lan.firewall.ssh_port_msg,title:lan.firewall.ssh_port_title},function(){
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('SetSshPort','firewall/SetSshPort',{port:port},function(rdata){
|
|
loading.close();
|
|
bt.msg(rdata);
|
|
if(callback) callback(rdata);
|
|
})
|
|
})
|
|
},
|
|
ping : function(status,callback){
|
|
var msg = status==0?lan.firewall.ping_msg:lan.firewall.ping_un_msg;
|
|
layer.confirm(msg,{closeBtn:2,title:lan.firewall.ping_title,cancel:function(){
|
|
if(callback) callback(-1); //取消
|
|
}},function(){
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('SetPing','firewall/SetPing',{status:status},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},function(){
|
|
if(callback) callback(-1); //关闭
|
|
})
|
|
},
|
|
set_mstsc_status : function(status,callback){
|
|
var msg = status==1?lan.firewall.ssh_off_msg:lan.firewall.ssh_on_msg;
|
|
layer.confirm(msg,{closeBtn:2,title:lan.public.warning,cancel:function(){
|
|
if(callback) callback(-1); //取消
|
|
}},function(){
|
|
loading = bt.load(lan.public.the);
|
|
bt.send('SetSshStatus','firewall/SetSshStatus',{status:status},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},function(){
|
|
if(callback) callback(-1); //关闭
|
|
})
|
|
},
|
|
add_accept_port : function(type,port,ps,callback){
|
|
var action = "AddDropAddress";
|
|
if(type == 'port'){
|
|
ports = port.split(':');
|
|
if (port.indexOf('-') != -1) ports = port.split('-');
|
|
for(var i=0;i<ports.length;i++){
|
|
if(!bt.check_port(ports[i])){
|
|
layer.msg(lan.firewall.port_err,{icon:5});
|
|
return;
|
|
}
|
|
}
|
|
action = "AddAcceptPort";
|
|
}
|
|
|
|
if(ps.length < 1){
|
|
layer.msg(lan.firewall.ps_err,{icon:2});
|
|
return -1;
|
|
}
|
|
loading = bt.load();
|
|
bt.send(action,'firewall/'+action,{port:port,type:type,ps:ps},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
del_accept_port : function(id,port,callback){
|
|
var action = "DelDropAddress";
|
|
if(port.indexOf('.') == -1){
|
|
action = "DelAcceptPort";
|
|
}
|
|
bt.confirm({msg:lan.get('confirm_del',[port]),title: lan.firewall.del_title}, function(index) {
|
|
var loadT = bt.load(lan.public.the_del);
|
|
bt.send(action,'firewall/'+action,{id:id,port:port},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
});
|
|
},
|
|
clear_logs_files:function(callback){
|
|
var loadT = bt.load(lan.firewall.close_the);
|
|
bt.send('CloseLogs', 'files/CloseLogs', {}, function (rdata) {
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
clear_logs : function(callback){
|
|
bt.confirm({msg:lan.firewall.close_log_msg,title:lan.firewall.close_log},function(){
|
|
var loadT = bt.load(lan.firewall.close_the);
|
|
bt.send('delClose', 'ajax/delClose', {}, function (rdata) {
|
|
loadT.close();
|
|
if (callback) {
|
|
callback(rdata);
|
|
} else {
|
|
bt.msg(rdata)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
bt.soft = {
|
|
pub :{
|
|
wxpayTimeId : 0
|
|
},
|
|
php : {
|
|
get_config:function(version,callback){ //获取禁用函数,扩展列表
|
|
//var loading = bt.load();
|
|
bt.send('GetPHPConfig','ajax/GetPHPConfig',{version:version},function(rdata){
|
|
//loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_limit_config:function(version,callback){ //获取超时限制,上传限制
|
|
var loading = bt.load();
|
|
bt.send('get_php_config','config/get_php_config',{version:version},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_php_config:function(version,callback){
|
|
var loading = bt.load();
|
|
bt.send('GetPHPConf','config/GetPHPConf',{version:version},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
install_php_lib:function(version,name,title,callback){
|
|
bt.confirm({msg:lan.soft.php_ext_install_confirm.replace('{1}',name),title:'安装【'+ name +'】'},function(){
|
|
name = name.toLowerCase();
|
|
var loadT = bt.load(lan.soft.add_install);
|
|
bt.send('InstallSoft','files/InstallSoft',{name:name,version:version,type:"1"},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
bt.msg(rdata);
|
|
});
|
|
fly("bi-btn");
|
|
});
|
|
},
|
|
un_install_php_lib:function(version,name,title,callback){
|
|
bt.confirm({msg:lan.soft.php_ext_uninstall_confirm.replace('{1}',name),title:'卸载【'+ name +'】'},function(){
|
|
name = name.toLowerCase();
|
|
var data = 'name='+name+'&version='+version;
|
|
var loadT = bt.load();
|
|
bt.send('UninstallSoft','files/UninstallSoft',{name:name,version:version},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
bt.msg(rdata);
|
|
});
|
|
});
|
|
},
|
|
set_upload_max:function(version,max,callback){
|
|
var loadT = bt.load(lan.soft.the_save);
|
|
bt.send('setPHPMaxSize','config/setPHPMaxSize',{version:version,max:max},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
set_php_timeout:function(version,time,callback){
|
|
var loadT = bt.load(lan.soft.the_save);
|
|
bt.send('setPHPMaxTime','config/setPHPMaxTime',{version:version,time:time},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
disable_functions:function(version,fs,callback){
|
|
var loadT = bt.load();
|
|
bt.send('setPHPDisable','config/setPHPDisable',{version:version,disable_functions:fs},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
});
|
|
},
|
|
get_fpm_config:function(version,callback){
|
|
var loadT = bt.load();
|
|
bt.send('getFpmConfig','config/getFpmConfig',{version:version},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
set_fpm_config:function(version,data,callback){
|
|
var loadT = bt.load();
|
|
data.version = version;
|
|
bt.send('setFpmConfig','config/setFpmConfig',data,function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_php_status:function(version,callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetPHPStatus','ajax/GetPHPStatus',{version:version},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
// 获取PHP_session
|
|
get_php_session:function(version,callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetSessionConf','config/GetSessionConf',{version:version},function(res){
|
|
loadT.close();
|
|
if(callback) callback(res);
|
|
});
|
|
},
|
|
// 设置PHP_session文件
|
|
set_php_session:function (obj,callback){
|
|
var loadT = bt.load();
|
|
bt.send('SetSessionConf','config/SetSessionConf',obj,function(res){
|
|
loadT.close();
|
|
if(callback) callback(res);
|
|
});
|
|
},
|
|
// 获取PHP_session清理信息
|
|
get_session_count:function(callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetSessionCount','config/GetSessionCount',{},function(res){
|
|
loadT.close();
|
|
if(callback) callback(res);
|
|
});
|
|
},
|
|
// 清理php_session
|
|
clear_session_count:function(obj,callback){
|
|
bt.confirm({msg:obj.msg,title:obj.title},function(){
|
|
var loadT = bt.load();
|
|
bt.send('DelOldSession','config/DelOldSession',{},function(res){
|
|
loadT.close();
|
|
if(callback) callback(res);
|
|
})
|
|
});
|
|
},
|
|
get_fpm_logs:function(version,callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetFpmLogs','ajax/GetFpmLogs',{version:version},function(logs){
|
|
loadT.close();
|
|
if(logs.status !== true){
|
|
logs.msg = '';
|
|
}
|
|
if (logs.msg == '') logs.msg = '当前没有fpm日志.';
|
|
if(callback) callback(logs);
|
|
})
|
|
},
|
|
get_slow_logs:function(version,callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetFpmSlowLogs','ajax/GetFpmSlowLogs',{version:version},function(logs){
|
|
loadT.close();
|
|
if(logs.status !== true){
|
|
logs.msg = '';
|
|
}
|
|
if (logs.msg == '') logs.msg = '当前没有慢日志.';
|
|
if(callback) callback(logs);
|
|
})
|
|
}
|
|
},
|
|
redis : {
|
|
get_redis_status:function(callback){
|
|
var loadT = bt.load();
|
|
bt.send('GetRedisStatus','ajax/GetRedisStatus',{},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
});
|
|
}
|
|
},
|
|
pro : {
|
|
conver_unit:function(name){
|
|
var unit= '';
|
|
switch (name){
|
|
case "year":
|
|
unit = "年";
|
|
break;
|
|
case "month":
|
|
unit = "个月";
|
|
break;
|
|
case "day":
|
|
unit = "天";
|
|
break;
|
|
case "1":
|
|
unit = "1个月";
|
|
break;
|
|
case "3":
|
|
unit = "3个月";
|
|
break;
|
|
case "6":
|
|
unit = "6个月";
|
|
break;
|
|
case "12":
|
|
unit = "1年";
|
|
break;
|
|
case "24":
|
|
unit = "2年";
|
|
break;
|
|
case "36":
|
|
unit = "3年";
|
|
break;
|
|
case "999":
|
|
unit = "永久";
|
|
break;
|
|
}
|
|
return unit;
|
|
},
|
|
get_product_discount_by:function(pluginName,callback){
|
|
if(pluginName){
|
|
bt.send('get_plugin_price','auth/get_plugin_price',{pluginName:pluginName},function(rdata){
|
|
if(callback) callback(rdata)
|
|
})
|
|
}
|
|
else{
|
|
bt.send('get_product_discount_by','auth/get_product_discount_by',{},function(rdata){
|
|
if(callback) callback(rdata)
|
|
})
|
|
}
|
|
|
|
},
|
|
get_plugin_coupon:function(pid,callback){
|
|
bt.send('check_pay_status','auth/check_pay_status',{id:pid},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_re_order_status:function(callback){
|
|
bt.send('get_re_order_status','auth/get_re_order_status',{},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_voucher:function(pid,callback){
|
|
if(pid){
|
|
bt.send('get_voucher_plugin','auth/get_voucher_plugin',{pid:pid},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
else{
|
|
bt.send('get_voucher','auth/get_voucher',{},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
},
|
|
create_order_voucher:function(pid,code,callback){
|
|
var loading = bt.load();
|
|
if(pid){
|
|
bt.send('create_order_voucher_plugin','auth/create_order_voucher_plugin',{pid:pid,code:code},function(rdata){
|
|
loading.close();
|
|
if(callback) callback(rdata);
|
|
bt.msg(rdata);
|
|
})
|
|
}
|
|
else{
|
|
bt.send('create_order_voucher','auth/create_order_voucher',{code:code},function(rdata){
|
|
loading.close();
|
|
if(callback){
|
|
callback(rdata);
|
|
}else{
|
|
bt.soft.pro.update();
|
|
}
|
|
})
|
|
}
|
|
},
|
|
create_order:function(pid,cycle,callback){
|
|
if(pid){
|
|
bt.send('get_buy_code','auth/get_buy_code',{pid:pid,cycle:cycle},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
else{
|
|
bt.send('create_order','auth/create_order',{cycle:cycle},function(rdata){
|
|
if(callback) callback(rdata);
|
|
})
|
|
}
|
|
}
|
|
},
|
|
updata_pro:function(){
|
|
bt.pub.get_user_info(function(rdata){
|
|
if(!rdata.status)
|
|
{
|
|
bt.pub.bind_btname(0,function(rdata){
|
|
if(rdata.status) bt.soft.updata_pro();
|
|
})
|
|
return;
|
|
}
|
|
var payhtml = '<div class="libPay" style="padding:15px 30px 30px 30px">\
|
|
<div class="libpay-con">\
|
|
</div>\
|
|
<p style="position:absolute;bottom:17px;left:0;width:100%;text-align:center;color:red">注:如需购买多台永久授权,请登录宝塔官网购买。<a class="btlink" href="https://www.bt.cn/download/linuxpro.html#price" target="_blank">去宝塔官网</a></p>\
|
|
</div>';
|
|
|
|
bt.open({
|
|
type: 1,
|
|
title: '升级专业版,所有插件,免费使用',
|
|
area: ['616px','540px'],
|
|
closeBtn: 2,
|
|
shadeClose: false,
|
|
content:payhtml
|
|
});
|
|
setTimeout(function(){
|
|
bt.soft.get_product_discount('',0);
|
|
$(".pay-btn-group > 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 = '<div class="libPay" style="padding:15px 30px 30px 30px">\
|
|
<div class="libPay-item f14 plr15 libPay-select">\
|
|
<div class="li-tit c3">类型</div>\
|
|
<div class="li-con c6">\
|
|
<ul class="li-c-item">\
|
|
<li class="active"><span class="item-name pull-left">'+pluginName+'</span><span class="item-info f12 pull-right c7">1款插件</span></li>\
|
|
<li><span class="item-name">升级为专业版</span><span class="item-info f12 pull-right c7">十多款付费插件免费用</span></li>\
|
|
</ul>\
|
|
</div>\
|
|
</div>\
|
|
<div class="libpay-con">\
|
|
</div>\
|
|
</div>';
|
|
|
|
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 = '<div class="libPay" style="padding:15px 30px 30px 30px">\
|
|
<div class="libpay-con">\
|
|
<div class="payment-con">\
|
|
<div class="pay-weixin">\
|
|
<div class="libPay-item f14 plr15">\
|
|
<div class="li-tit c4">'+txt+'时长</div>\
|
|
<div class="li-con c6" id="PayCycle"><ul class="pay-btn-group">\
|
|
<li class="pay-cycle-btn active" onclick="bt.soft.get_rscode_other('+pid+','+price+',1,'+type+')"><span>1个月</span></li>\
|
|
<li class="pay-cycle-btn" onclick="bt.soft.get_rscode_other('+ pid + ',' + price + ',3,' + type +')"><span>3个月</span></li>\
|
|
<li class="pay-cycle-btn" onclick="bt.soft.get_rscode_other('+ pid + ',' + price + ',6,' + type +')"><span>6个月</span></li>\
|
|
<li class="pay-cycle-btn" onclick="bt.soft.get_rscode_other('+ pid + ',' + price + ',12,' + type +')"><span>1年</span></li>\
|
|
</ul></div>\
|
|
</div>\
|
|
<div class="lib-price-box text-center"><span class="lib-price-name f14"><b>总计</b></span><span class="price-txt"><b class="sale-price"></b>元</span><s class="cost-price"></s></div>\
|
|
<div class="paymethod">\
|
|
<div class="pay-wx"></div>\
|
|
<div class="pay-wx-info f16 text-center"><span class="wx-pay-ico mr5"></span>微信扫码支付</div>\
|
|
</div>\
|
|
</div>\
|
|
</div>\
|
|
</div>\
|
|
</div>';
|
|
|
|
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("<div class='cloading'>加载中,请稍后</div>");
|
|
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<len; i++){
|
|
if(rdata[i].status !=1){
|
|
var cyc = rdata[i].cycle+bt.soft.pro.conver_unit(rdata[i].unit);
|
|
if(rdata[i].cycle == 999){
|
|
cyc = "永久"
|
|
}
|
|
con += '<li class="pay-cycle-btn" data-code="'+rdata[i].code+'"><span>'+cyc+'</span></li>';
|
|
}
|
|
}
|
|
$("#couponlist").html('<ul class="pay-btn-group">'+con+'</ul>');
|
|
$(".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("<p class='text-center' style='margin-top:70px'>暂无代金券</p>");
|
|
}
|
|
})
|
|
},
|
|
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('<span class="loading">加载中,请稍后</span>');
|
|
$(".libPay").append('<div class="payloadingmask" style="height:100%;width:100%;position:absolute;top:0;left:0;z-index:1"></div>');
|
|
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 = '<div class="libPay-item f14 plr15">\
|
|
<div class="li-tit c4">付款方式</div>\
|
|
<div class="li-con c6" id="Payment"><ul class="pay-btn-group pay-cycle"><li class="pay-cycle-btn active"><span>微信支付</span></li><li class="pay-cycle-btn" onclick="bt.soft.get_voucher_list('+pid+')"><span>代金券</span></li></ul></div>\
|
|
</div>\
|
|
<div class="payment-con">\
|
|
<div class="pay-weixin">\
|
|
<div class="libPay-item f14 plr15">\
|
|
<div class="li-tit c4">开通时长</div>\
|
|
<div class="li-con c6" id="PayCycle"></div>\
|
|
</div>\
|
|
<div class="lib-price-box text-center"><span class="lib-price-name f14"><b>总计</b></span><span class="price-txt"><b class="sale-price"></b>元</span><s class="cost-price"></s></div>\
|
|
<div class="paymethod">\
|
|
<div class="pay-wx"></div>\
|
|
<div class="pay-wx-info f16 text-center"><span class="wx-pay-ico mr5"></span>微信扫码支付</div>\
|
|
</div>\
|
|
</div>\
|
|
<div class="pay-coupon" style="display:none">\
|
|
<div class="libPay-item f14 plr15">\
|
|
<div class="li-tit c4 ">代金券列表</div>\
|
|
<div class="li-con c6" id="couponlist"><div class="btn-group"></div></div>\
|
|
</div>\
|
|
<div class="paymethod-submit text-center">\
|
|
<button class="btn btn-success btn-sm f16" style="width:200px;height:40px;background-color:#999;border-color:#888">提交</button>\
|
|
</div>\
|
|
</div>\
|
|
</div>'
|
|
$(".libpay-con").html("<div class='cloading'>加载中,请稍后</div>");
|
|
|
|
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<qlen;i++){
|
|
var j = qarr[i];
|
|
var a = rdata[j].price.toFixed(2);
|
|
var b = rdata[j].sprice.toFixed(2);
|
|
var c = rdata[j].discount;
|
|
coucon +='<li class="pay-cycle-btn" onclick="bt.soft.get_rscode('+pid+','+a+','+b+','+j+')"><span>'+bt.soft.pro.conver_unit(j)+'</span>'+(c==1?"":'<em>'+c*10+'折</em>')+'</li>';
|
|
}
|
|
$(".libpay-con").html(con);
|
|
$("#PayCycle").html('<ul class="pay-btn-group">'+coucon+'</ul>');
|
|
$(".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 += '<option>' + name + ' ' + item.m_version + '</option>';
|
|
}
|
|
shtml = "<select id='SelectVersion' class='bt-input-text' style='margin-left:30px'>" + SelectVersion + "</select>";
|
|
}
|
|
else {
|
|
shtml = "<span id='SelectVersion'>" + name + "</span>";
|
|
}
|
|
var loadOpen = bt.open({
|
|
type: 1,
|
|
title: name + lan.soft.install_title,
|
|
area: '350px',
|
|
content: "<div class='bt-form pd20 pb70 c6'>\
|
|
<div class='version line'>"+ lan.soft.install_version + ":" + shtml+"</div>\
|
|
<div class='fangshi line'>"+ lan.bt.install_type + ":<label data-title='" + lan.bt.install_rpm_title + "'>" + lan.bt.install_rpm + "<input type='checkbox' checked></label><label data-title='" + lan.bt.install_src_title + "'>" + lan.bt.install_src + "<input type='checkbox'></label></div>\
|
|
<div class='bt-form-submit-btn'>\
|
|
<button type='button' class='btn btn-danger btn-sm btn-title' onclick='layer.closeAll()'>"+ lan.public.close + "</button>\
|
|
<button type='button' id='bi-btn' class='btn btn-success btn-sm btn-title bi-btn'>"+ lan.public.submit + "</button>\
|
|
</div>\
|
|
</div>"
|
|
})
|
|
|
|
$('.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<rdata.versions.length; i++){
|
|
var item = rdata.versions[i];
|
|
SelectVersion += '<option>'+name+' '+item.m_version+'</option>';
|
|
}
|
|
var loadOpen = bt.open({
|
|
type: 1,
|
|
title: name + lan.soft.install_title,
|
|
area: '350px',
|
|
content:"<div class='bt-form pd20 pb70 c6'>\
|
|
<div class='version line'>"+ lan.soft.install_version + ":<select id='SelectVersion' class='bt-input-text' style='margin-left:30px'>" + SelectVersion +"</select></div>\
|
|
<div class='bt-form-submit-btn'>\
|
|
<button type='button' class='btn btn-danger btn-sm btn-title' onclick='layer.closeAll()'>"+lan.public.close+"</button>\
|
|
<button type='button' id='bi-btn' class='btn btn-success btn-sm btn-title bi-btn'>"+lan.public.submit+"</button>\
|
|
</div>\
|
|
</div>"
|
|
})
|
|
$("#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: '<style>\
|
|
.install_three_plugin{padding:25px;padding-bottom:70px}\
|
|
.plugin_user_info p { font-size: 14px;}\
|
|
.plugin_user_info {padding: 15px 30px;line-height: 26px;background: #f5f6fa;border-radius: 5px;border: 1px solid #efefef;}\
|
|
.btn-content{text-align: center;margin-top: 25px;}\
|
|
</style>\
|
|
<div class="bt-form c7 install_three_plugin pb70">\
|
|
<div class="plugin_user_info">\
|
|
<p><b>名称:</b>'+ data.title + '</p>\
|
|
<p><b>版本:</b>' + data.versions + '</p>\
|
|
<p><b>描述:</b>' + (data.update?data.update:data.ps) + '</p>\
|
|
<p><b>大小:</b>' + bt.format_size(data.size, true) + '</p>\
|
|
<p><b>开发商:</b>' + data.author + '</p>\
|
|
<p><b>来源:</b><a class="btlink" href="'+ data.home + '" target="_blank">' + data.home + '</a></p>\
|
|
</div>\
|
|
<ul class="help-info-text c7">\
|
|
'+ (data.update ? "<li>更新过程可能需要几分钟时间,请耐心等候!</li>" : "<li>安装过程可能需要几分钟时间,请耐心等候!</li><li>如果已存在此插件,将被替换!</li>")+'\
|
|
</ul>\
|
|
<div class="bt-form-submit-btn"><button type="button" class="btn btn-sm btn-danger mr5" onclick="layer.closeAll()">取消</button><button type="button" class="btn btn-sm btn-success" onclick="soft.input_zip(\''+ data.name + '\',\'' + data.tmp_path + '\')">确定' + (data.update ? "更新" : "安装")+'</button></div>\
|
|
</div>'
|
|
});
|
|
},
|
|
update_soft: function (name,title, version, min_version,update_msg) {
|
|
var _this = this;
|
|
var msg = "<li style='color:red;'>建议您在服务器负载闲时进行软件更新.</li>";
|
|
if(name == 'mysql') msg = "<ul style='color:red;'><li>更新数据库有风险,建议在更新前,先备份您的数据库.</li><li>如果您的是云服务器,强烈建议您在更新前做一个快照.</li><li>建议您在服务器负载闲时进行软件更新.</li></ul>";
|
|
if (update_msg) msg += '<div style=" margin-top: 10px;"><span style="font-size: 14px;font-weight: 900;">本次更新说明: </span><hr style="margin-top: 5px; margin-bottom: 5px;" /><pre>' + update_msg.replace(/(_bt_)/g, "\n") +'</pre><hr style="margin-top: -5px; margin-bottom: -5px;" /></div>';
|
|
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<item.versions.length;i++){
|
|
if(item.versions[i].setup && bt.contains(item.version,item.versions[i].m_version)){
|
|
version = item.versions[i].m_version;
|
|
if(version.indexOf('.') < 0) version += '.' + item.versions[i].version;
|
|
break;
|
|
}
|
|
}
|
|
var title = bt.replace_all(item.title,'-'+version,'');
|
|
bt.confirm({msg:lan.soft.uninstall_confirm.replace('{1}',title).replace('{2}',version), title:lan.soft.uninstall,icon:3,closeBtn:2}, function() {
|
|
var loadT = bt.load(lan.soft.lib_uninstall_the);
|
|
bt.send('uninstall_plugin','plugin/uninstall_plugin',{sName:name,version:version},function(rdata){
|
|
loadT.close();
|
|
bt.pub.get_task_count();
|
|
if(soft) soft.get_list();
|
|
bt.msg(rdata);
|
|
})
|
|
})
|
|
})
|
|
|
|
},
|
|
get_soft_find:function(name,callback){
|
|
var loadT = bt.load();
|
|
bt.send('get_soft_find','plugin/get_soft_find',{sName:name},function(rdata){
|
|
loadT.close();
|
|
if(callback) callback(rdata);
|
|
})
|
|
},
|
|
get_config_path:function(name){
|
|
var fileName = '';
|
|
if(bt.os=='Linux'){
|
|
switch (name) {
|
|
case 'mysql':
|
|
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.replace('"javascript/text"', '"text/javascript"')
|
|
});
|
|
/*rtmp = rhtml.split('<script type="javascript/text">')
|
|
if (rtmp.length < 2) {
|
|
rtmp = rhtml.split('<script type="text/javascript">')
|
|
}
|
|
rcode = rtmp[1].replace('</script>','');
|
|
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: "<pre style='margin-bottom: 0px;height:250px;text-align: left;background-color: #000;color: #fff;white-space: pre-wrap;' id='create_lst'>正在准备申请证书...</pre>",
|
|
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('<input id="'+subid+'" class="bt-input-text mr5" type="text" name="address" placeholder="多个IP使用逗号(,)分隔" style="width: 203px; display: inline-block;">');
|
|
}
|
|
}
|
|
}
|
|
]},
|
|
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端口<br>泛解析添加方法 *.domain.com<br>如另加端口格式为 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('<div class="line" id='+subid+'>'+_tr.html+'</div>');
|
|
}
|
|
}}
|
|
]},
|
|
{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('<div class="line" id='+subid+'>'+_tr.html+'</div>');
|
|
}
|
|
}},
|
|
{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;i<arrs.length;i++) {
|
|
if(arrs[i]){
|
|
var temp = arrs[i].split(':');
|
|
var item = {};
|
|
item['name'] = temp[0]
|
|
item['port'] = temp.length>1?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);
|
|
})
|
|
})
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|