Simple Linux Panel
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.
mdserver-web/static/app/site.js

2326 lines
94 KiB

7 years ago
/**
* 取回网站数据列表
* @param {Number} page 当前页
* @param {String} search 搜索条件
*/
function getWeb(page, search) {
search = $("#SearchValue").prop("value");
page = page == undefined ? '1':page;
order = getCookie('order');
if(order){
order = '&order=' + order;
}else{
order = '';
}
7 years ago
var sUrl = '/site/list';
7 years ago
var pdata = 'tojs=getWeb&table=sites&limit=15&p=' + page + '&search=' + search + order;
var loadT = layer.load();
//取回数据
7 years ago
$.post(sUrl, pdata, function(data) {
7 years ago
layer.close(loadT);
//构造数据列表
6 years ago
var body = '';
$("#webBody").html(body);
7 years ago
for (var i = 0; i < data.data.length; i++) {
//当前站点状态
if (data.data[i].status == lan.site.running || data.data[i].status == '1') {
var status = "<a href='javascript:;' title='"+lan.site.running_title+"' onclick=\"webStop(" + data.data[i].id + ",'" + data.data[i].name + "')\" class='btn-defsult'><span style='color:rgb(92, 184, 92)'>"+lan.site.running_text+" </span><span style='color:rgb(92, 184, 92)' class='glyphicon glyphicon-play'></span></a>";
} else {
var status = "<a href='javascript:;' title='"+lan.site.stopped_title+"' onclick=\"webStart(" + data.data[i].id + ",'" + data.data[i].name + "')\" class='btn-defsult'><span style='color:red'>"+lan.site.stopped+" </span><span style='color:rgb(255, 0, 0);' class='glyphicon glyphicon-pause'></span></a>";
}
//是否有备份
if (data.data[i].backup_count > 0) {
var backup = "<a href='javascript:;' class='btlink' onclick=\"getBackup(" + data.data[i].id + ",'" + data.data[i].name + "')\">"+lan.site.backup_yes+"</a>";
} else {
var backup = "<a href='javascript:;' class='btlink' onclick=\"getBackup(" + data.data[i].id + ",'" + data.data[i].name + "')\">"+lan.site.backup_no+"</a>";
}
//是否设置有效期
var web_end_time = (data.data[i].edate == "0000-00-00") ? lan.site.web_end_time : data.data[i].edate;
//表格主体
var shortwebname = data.data[i].name;
var shortpath = data.data[i].path;
6 years ago
if(data.data[i].name.length > 30) {
shortwebname = data.data[i].name.substring(0, 30) + "...";
}
if(data.data[i].path.length > 30){
shortpath = data.data[i].path.substring(0, 30) + "...";
}
var idname = data.data[i].name.replace(/\./g,'_');
7 years ago
6 years ago
body = "<tr><td><input type='checkbox' name='id' title='"+data.data[i].name+"' onclick='checkSelect();' value='" + data.data[i].id + "'></td>\
7 years ago
<td><a class='btlink webtips' href='javascript:;' onclick=\"webEdit(" + data.data[i].id + ",'" + data.data[i].name + "','" + data.data[i].edate + "','" + data.data[i].addtime + "')\" title='"+data.data[i].name+"'>" + shortwebname + "</td>\
<td>" + status + "</td>\
<td>" + backup + "</td>\
<td><a class='btlink' title='"+lan.site.open_path_txt+data.data[i].path+"' href=\"javascript:openPath('"+data.data[i].path+"');\">" + shortpath + "</a></td>\
<td><a class='btlink setTimes' id='site_"+data.data[i].id+"' data-ids='"+data.data[i].id+"'>" + web_end_time + "</a></td>\
<td><a class='btlinkbed' href='javascript:;' data-id='"+data.data[i].id+"'>" + data.data[i].ps + "</a></td>\
6 years ago
<td><input class='btswitch btswitch-ios' id='closewaf_"+idname+"' type='checkbox'><label class='btswitch-btn' for='closewaf_"+idname+"' onclick=\"set_site_obj_state('" + data.data[i].name + "','open')\" style='width:2.4em;height:1.4em;margin-bottom: 0'></label></td>\
7 years ago
<td style='text-align:right; color:#bbb'>\
<a href='javascript:;' class='btlink' onclick=\"webEdit(" + data.data[i].id + ",'" + data.data[i].name + "','" + data.data[i].edate + "','" + data.data[i].addtime + "')\">"+lan.site.set+" </a>\
| <a href='javascript:;' class='btlink' onclick=\"webDelete('" + data.data[i].id + "','" + data.data[i].name + "')\" title='"+lan.site.site_del_title+"'>"+lan.public.del+"</a>\
</td></tr>"
6 years ago
$("#webBody").append(body);
7 years ago
//setEdate(data.data[i].id,data.data[i].edate);
//设置到期日期
function getDate(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);
}
$('#webBody').on('click','#site_'+ data.data[i].id,function(){
var _this = $(this);
var id = $(this).attr('data-ids');
laydate.render({
elem: '#site_'+ id //指定元素
,min:getDate(1)
,max:'2099-12-31'
,vlue:getDate(365)
,type:'date'
,format :'yyyy-MM-dd'
,trigger:'click'
,btns:['perpetual', 'confirm']
,theme:'#20a53a'
,done:function(dates){
if(_this.html() == '永久'){
dates = '0000-00-00';
}
var loadT = layer.msg(lan.site.saving_txt, { icon: 16, time: 0, shade: [0.3, "#000"]});
6 years ago
$.post('/site/set_end_date','id='+id+'&edate='+dates,function(rdata){
7 years ago
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:5});
6 years ago
},'json');
7 years ago
}
});
this.click();
});
}
6 years ago
if(body.length < 10){
body = "<tr><td colspan='8'>"+lan.site.site_no_data+"</td></tr>";
7 years ago
$(".dataTables_paginate").hide();
6 years ago
$("#webBody").html(body);
7 years ago
}
//输出数据列表
$(".btn-more").hover(function(){
$(this).addClass("open");
},function(){
$(this).removeClass("open");
});
//输出分页
$("#webPage").html(data.page);
$(".btlinkbed").click(function(){
var dataid = $(this).attr("data-id");
var databak = $(this).text();
if(databak==lan.site.site_null){
databak='';
}
$(this).hide().after("<input class='baktext' type='text' data-id='"+dataid+"' name='bak' value='" + databak + "' placeholder='"+lan.site.site_bak+"' onblur='GetBakPost(\"sites\")' />");
$(".baktext").focus();
});
7 years ago
},'json');
7 years ago
}
//添加站点
function webAdd(type) {
if (type == 1) {
var array;
var str="";
var domainlist='';
var domain = array = $("#mainDomain").val().replace('http://','').replace('https://','').split("\n");
6 years ago
var webport=[];
7 years ago
var checkDomain = domain[0].split('.');
if(checkDomain.length < 1){
layer.msg(lan.site.domain_err_txt,{icon:2});
return;
}
for(var i=1; i<domain.length; i++){
domainlist += '"'+domain[i]+'",';
}
6 years ago
webport = domain[0].split(":")[1];//主域名端口
if(webport == undefined){
webport="80";
7 years ago
}
6 years ago
7 years ago
domainlist = domainlist.substring(0,domainlist.length-1);//子域名json
domain ='{"domain":"'+domain[0]+'","domainlist":['+domainlist+'],"count":'+domain.length+'}';//拼接joson
var loadT = layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, "#000"]})
6 years ago
var data = $("#addweb").serialize()+"&port="+webport+"&webinfo="+domain;
6 years ago
$.post('/site/add', data, function(ret) {
7 years ago
if(ret.status === false){
layer.msg(ret.msg,{icon:ret.status?1:2})
6 years ago
return;
7 years ago
}
if (ret.siteStatus == true) {
getWeb(1);
layer.closeAll();
layer.msg('成功创建站点',{icon:1})
7 years ago
} else {
6 years ago
layer.msg(ret.msg, {icon: 2});
7 years ago
}
layer.close(loadT);
6 years ago
},'json');
7 years ago
return;
}
6 years ago
$.post('/site/get_php_version',function(rdata){
7 years ago
var defaultPath = $("#defaultPath").html();
var php_version = "<div class='line'><span class='tname'>"+lan.site.php_ver+"</span><select class='bt-input-text' name='version' id='c_k3' style='width:100px'>";
for(var i=rdata.length-1;i>=0;i--){
php_version += "<option value='"+rdata[i].version+"'>"+rdata[i].name+"</option>";
}
6 years ago
var www = syncPost('/site/get_root_dir');
7 years ago
php_version += "</select><span id='php_w' style='color:red;margin-left: 10px;'></span></div>";
layer.open({
type: 1,
skin: 'demo-class',
area: '640px',
6 years ago
title: '添加网站',
7 years ago
closeBtn: 2,
shift: 0,
shadeClose: false,
content: "<form class='bt-form pd20 pb70' id='addweb'>\
<div class='line'>\
<span class='tname'>"+lan.site.domain+"</span>\
<div class='info-r c4'>\
<textarea id='mainDomain' class='bt-input-text' name='webname' style='width:458px;height:100px;line-height:22px' /></textarea>\
</div>\
</div>\
<div class='line'>\
6 years ago
<span class='tname'>备注</span>\
7 years ago
<div class='info-r c4'>\
<input id='Wbeizhu' class='bt-input-text' type='text' name='ps' placeholder='"+lan.site.note_ph+"' style='width:458px' />\
</div>\
</div>\
<div class='line'>\
6 years ago
<span class='tname'>根目录</span>\
7 years ago
<div class='info-r c4'>\
6 years ago
<input id='inputPath' class='bt-input-text mr5' type='text' name='path' value='"+www['dir']+"/' placeholder='"+www['dir']+"' style='width:458px' />\
<span class='glyphicon glyphicon-folder-open cursor' onclick='changePath(\"inputPath\")'></span>\
7 years ago
</div>\
</div>\
"+php_version+"\
<div class='bt-form-submit-btn'>\
6 years ago
<button type='button' class='btn btn-danger btn-sm btn-title' onclick='layer.closeAll()'>取消</button>\
<button type='button' class='btn btn-success btn-sm btn-title' onclick=\"webAdd(1)\">提交</button>\
7 years ago
</div>\
</form>",
});
6 years ago
7 years ago
$(function() {
var placeholder = "<div class='placeholder c9' style='top:10px;left:10px'>"+lan.site.domain_help+"</div>";
$('#mainDomain').after(placeholder);
$(".placeholder").click(function(){
$(this).hide();
$('#mainDomain').focus();
})
$('#mainDomain').focus(function() {
$(".placeholder").hide();
});
$('#mainDomain').blur(function() {
if($(this).val().length==0){
$(".placeholder").show();
}
});
//验证PHP版本
$("select[name='version']").change(function(){
if($(this).val() == '52'){
var msgerr = 'PHP5.2在您的站点有漏洞时有跨站风险,请尽量使用PHP5.3以上版本!';
$('#php_w').text(msgerr);
}else{
$('#php_w').text('');
}
})
6 years ago
$('#mainDomain').on('input', function() {
6 years ago
var array;
var res,ress;
var str = $(this).val().replace('http://','').replace('https://','');
var len = str.replace(/[^\x00-\xff]/g, "**").length;
array = str.split("\n");
ress =array[0].split(":")[0];
res = ress.replace(new RegExp(/([-.])/g), '_');
if(res.length > 15){
res = res.substr(0,15);
}
var placeholder = $("#inputPath").attr('placeholder');
$("#inputPath").val(placeholder+'/'+ress);
if(res.length > 15){
res = res.substr(0,15);
}
$("#Wbeizhu").val(ress);
6 years ago
})
6 years ago
//备注
7 years ago
$('#Wbeizhu').on('input', function() {
var str = $(this).val();
var len = str.replace(/[^\x00-\xff]/g, "**").length;
if (len > 20) {
str = str.substring(0, 20);
$(this).val(str);
6 years ago
layer.msg('不能超出20个字符!', {
7 years ago
icon: 0
});
}
})
//获取当前时间时间戳,截取后6位
var timestamp = new Date().getTime().toString();
var dtpw = timestamp.substring(7);
});
6 years ago
}, 'json');
7 years ago
}
//修改网站目录
function webPathEdit(id){
$.post("/data?action=getKey","table=sites&key=path&id="+id,function(rdata){
$.post('/site?action=GetDirUserINI','path='+rdata+'&id='+id,function(userini){
var userinicheckeds = userini.userini?'checked':'';
var logscheckeds = userini.logs?'checked':'';
var opt = ''
var selected = '';
for(var i=0;i<userini.runPath.dirs.length;i++){
selected = '';
if(userini.runPath.dirs[i] == userini.runPath.runPath) selected = 'selected';
opt += '<option value="'+ userini.runPath.dirs[i] +'" '+selected+'>'+ userini.runPath.dirs[i] +'</option>'
}
var webPathHtml = "<div class='webedit-box soft-man-con'>\
<div class='label-input-group ptb10'>\
<input type='checkbox' name='userini' id='userini'"+userinicheckeds+" /><label class='mr20' for='userini' style='font-weight:normal'>"+lan.site.anti_XSS_attack+"(open_basedir)</label>\
<input type='checkbox' name='logs' id='logs'"+logscheckeds+" /><label for='logs' style='font-weight:normal'>"+lan.site.write_access_log+"</label>\
</div>\
<div class='line mt10'>\
<span class='mr5'>"+lan.site.web_dir+"</span>\
<input class='bt-input-text mr5' type='text' style='width:50%' placeholder='"+lan.site.web_root_dir+"' value='"+rdata+"' name='webdir' id='inputPath'>\
6 years ago
<span onclick='changePath(&quot;inputPath&quot;)' class='glyphicon glyphicon-folder-open cursor mr20'></span>\
7 years ago
<button class='btn btn-success btn-sm' onclick='SetSitePath("+id+")'>"+lan.public.save+"</button>\
</div>\
<div class='line mtb15'>\
<span class='mr5'>"+lan.site.run_dir+"</span>\
<select class='bt-input-text' type='text' style='width:50%; margin-right:41px' name='runPath' id='runPath'>"+opt+"</select>\
<button class='btn btn-success btn-sm' onclick='SetSiteRunPath("+id+")' style='margin-top: -1px;'>"+lan.public.save+"</button>\
</div>\
<ul class='help-info-text c7 ptb10'>\
<li>"+lan.site.site_help_1+"</li>\
<li>"+lan.site.site_help_2+"</li>\
</ul>"
+'<div class="user_pw_tit" style="margin-top: -8px;padding-top: 11px;">'
+'<span class="tit">'+lan.soft.pma_pass+'</span>'
+'<span class="btswitch-p"><input '+(userini.pass?'checked':'')+' class="btswitch btswitch-ios" id="pathSafe" type="checkbox">'
6 years ago
+'<label class="btswitch-btn phpmyadmin-btn" for="pathSafe" onclick="pathSafe('+id+')"></label>'
7 years ago
+'</span>'
+'</div>'
+'<div class="user_pw" style="margin-top: 10px;display:'+(userini.pass?'block;':'none;')+'">'
+'<p><span>'+lan.soft.pma_user+'</span><input id="username_get" class="bt-input-text" name="username_get" value="" type="text" placeholder="'+lan.soft.edit_empty+'"></p>'
+'<p><span>'+lan.soft.pma_pass1+'</span><input id="password_get_1" class="bt-input-text" name="password_get_1" value="" type="password" placeholder="'+lan.soft.edit_empty+'"></p>'
+'<p><span>'+lan.soft.pma_pass2+'</span><input id="password_get_2" class="bt-input-text" name="password_get_1" value="" type="password" placeholder="'+lan.soft.edit_empty+'"></p>'
+'<p><button class="btn btn-success btn-sm" onclick="SetPathSafe('+id+')">'+lan.public.save+'</button></p>'
+'</div>'
+'</div>';
$("#webedit-con").html(webPathHtml);
$("#userini").change(function(){
$.post('/site?action=SetDirUserINI','path='+rdata,function(userini){
layer.msg(userini.msg+'<p style="color:red;">注意:设置防跨站需要重启PHP才能生效!</p>',{icon:userini.status?1:2});
});
});
$("#logs").change(function(){
$.post('/site?action=logsOpen','id='+id,function(userini){
layer.msg(userini.msg,{icon:userini.status?1:2});
});
});
});
});
}
//是否设置访问密码
6 years ago
function pathSafe(id){
7 years ago
var isPass = $('#pathSafe').prop('checked');
if(!isPass){
$(".user_pw").show();
}else{
var loadT = layer.msg(lan.public.the,{icon:16,time:10000,shade: [0.3, '#000']});
$.post('/site?action=CloseHasPwd',{id:id},function(rdata){
layer.close(loadT);
var ico = rdata.status?1:2;
layer.msg(rdata.msg,{icon:ico});
$(".user_pw").hide();
});
}
}
//设置访问密码
function SetPathSafe(id){
var username = $("#username_get").val();
var pass1 = $("#password_get_1").val();
var pass2 = $("#password_get_2").val();
if(pass1 != pass2){
layer.msg(lan.bt.pass_err_re,{icon:2});
return;
}
var loadT = layer.msg(lan.public.the,{icon:16,time:10000,shade: [0.3, '#000']});
$.post('/site?action=SetHasPwd',{id:id,username:username,password:pass1},function(rdata){
layer.close(loadT);
var ico = rdata.status?1:2;
layer.msg(rdata.msg,{icon:ico});
});
}
//提交运行目录
function SetSiteRunPath(id){
var NewPath = $("#runPath").val();
var loadT = layer.msg(lan.public.the,{icon:16,time:10000,shade: [0.3, '#000']});
$.post('/site?action=SetSiteRunPath','id='+id+'&runPath='+NewPath,function(rdata){
layer.close(loadT);
var ico = rdata.status?1:2;
layer.msg(rdata.msg,{icon:ico});
});
}
//提交网站目录
function SetSitePath(id){
var NewPath = $("#inputPath").val();
var loadT = layer.msg(lan.public.the,{icon:16,time:10000,shade: [0.3, '#000']});
$.post('/site?action=SetPath','id='+id+'&path='+NewPath,function(rdata){
layer.close(loadT);
var ico = rdata.status?1:2;
layer.msg(rdata.msg,{icon:ico});
});
}
//修改网站备注
function webBakEdit(id){
$.post("/data?action=getKey','table=sites&key=ps&id="+id,function(rdata){
var webBakHtml = "<div class='webEdit-box padding-10'>\
<div class='line'>\
<label><span>"+lan.site.note_ph+"</span></label>\
<div class='info-r'>\
<textarea name='beizhu' id='webbeizhu' col='5' style='width:96%'>"+rdata+"</textarea>\
<br><br><button class='btn btn-success btn-sm' onclick='SetSitePs("+id+")'>"+lan.public.save+"</button>\
</div>\
</div>";
$("#webedit-con").html(webBakHtml)
});
}
//提交网站备注
function SetSitePs(id){
var myPs = $("#webbeizhu").val();
$.post('/data?action=setPs','table=sites&id='+id+'&ps='+myPs,function(rdata){
layer.msg(rdata?lan.public.edit_ok:lan.public.edit_err,{icon:rdata?1:2});
});
}
//设置默认文档
6 years ago
function setIndexEdit(id){
$.post('/site/get_index','id='+id,function(data){
var rdata = data['index'];
rdata = rdata.replace(new RegExp(/(,)/g), "\n");
7 years ago
var setIndexHtml = "<div id='SetIndex'><div class='SetIndex'>\
<div class='line'>\
<textarea class='bt-input-text' id='Dindex' name='files' style='height: 180px; width:50%; line-height:20px'>"+rdata+"</textarea>\
6 years ago
<button type='button' class='btn btn-success btn-sm pull-right' onclick='setIndexList("+id+")' style='margin: 70px 130px 0px 0px;'>"+lan.public.save+"</button>\
7 years ago
</div>\
<ul class='help-info-text c7 ptb10'>\
6 years ago
<li>默认文档每行一个优先级由上至下</li>\
7 years ago
</ul>\
</div></div>";
$("#webedit-con").html(setIndexHtml);
6 years ago
},'json');
7 years ago
}
/**
* 停止一个站点
* @param {Int} wid 网站ID
* @param {String} wname 网站名称
*/
function webStop(wid, wname) {
layer.confirm(lan.site.site_stop_txt, {icon:3,closeBtn:2},function(index) {
if (index > 0) {
var loadT = layer.load()
$.post("/site?action=SiteStop","id=" + wid + "&name=" + wname, function(ret) {
layer.msg(ret.msg,{icon:ret.status?1:2})
layer.close(loadT);
getWeb(1);
});
}
});
}
/**
* 启动一个网站
* @param {Number} wid 网站ID
* @param {String} wname 网站名称
*/
function webStart(wid, wname) {
layer.confirm(lan.site.site_start_txt,{icon:3,closeBtn:2}, function(index) {
if (index > 0) {
var loadT = layer.load()
$.post("/site?action=SiteStart","id=" + wid + "&name=" + wname, function(ret) {
layer.msg(ret.msg,{icon:ret.status?1:2})
layer.close(loadT);
getWeb(1);
});
}
});
}
/**
* 删除一个网站
* @param {Number} wid 网站ID
* @param {String} wname 网站名称
*/
function webDelete(wid, wname){
var thtml = "<div class='options'>\
<label><input type='checkbox' id='delpath' name='path'><span>"+lan.site.root_dir+"</span></label>\
</div>";
6 years ago
var info = '是否要删除同名根目录';
safeMessage('删除站点'+"["+wname+"]",info, function(){
var path='';
7 years ago
if($("#delpath").is(":checked")){
path='&path=1';
}
var loadT = layer.msg(lan.public.the,{icon:16,time:10000,shade: [0.3, '#000']});
6 years ago
$.post("/site/delete","id=" + wid + "&webname=" + wname + path, function(ret){
7 years ago
layer.closeAll();
layer.msg(ret.msg,{icon:ret.status?1:2})
getWeb(1);
6 years ago
},'json');
7 years ago
},thtml);
}
//批量删除
function allDeleteSite(){
var checkList = $("input[name=id]");
var dataList = new Array();
for(var i=0;i<checkList.length;i++){
if(!checkList[i].checked) continue;
var tmp = new Object();
tmp.name = checkList[i].title;
tmp.id = checkList[i].value;
dataList.push(tmp);
}
var thtml = "<div class='options'>\
<label style=\"width:100%;\"><input type='checkbox' id='delpath' name='path'><span>"+lan.site.all_del_info+"</span></label>\
</div>";
6 years ago
safeMessage(lan.site.all_del_site,"<a style='color:red;'>"+lan.get('del_all_site',[dataList.length])+"</a>",function(){
7 years ago
layer.closeAll();
var path = '';
if($("#delpath").is(":checked")){
path='&path=1';
}
syncDeleteSite(dataList,0,'',path);
},thtml);
}
//模拟同步开始批量删除
function syncDeleteSite(dataList,successCount,errorMsg,path){
if(dataList.length < 1) {
layer.msg(lan.get('del_all_site_ok',[successCount]),{icon:1});
return;
}
var loadT = layer.msg(lan.get('del_all_task_the',[dataList[0].name]),{icon:16,time:0,shade: [0.3, '#000']});
$.ajax({
type:'POST',
url:'/site?action=DeleteSite',
data:'id='+dataList[0].id+'&webname='+dataList[0].name+path,
async: true,
success:function(frdata){
layer.close(loadT);
if(frdata.status){
successCount++;
$("input[title='"+dataList[0].name+"']").parents("tr").remove();
}else{
if(!errorMsg){
errorMsg = '<br><p>'+lan.site.del_err+':</p>';
}
errorMsg += '<li>'+dataList[0].name+' -> '+frdata.msg+'</li>'
}
dataList.splice(0,1);
syncDeleteSite(dataList,successCount,errorMsg,path);
}
});
}
/**
* 域名管理
* @param {Int} id 网站ID
*/
6 years ago
function domainEdit(id, name, msg, status) {
$.post('/site/get_domain' ,{pid:id}, function(domain) {
7 years ago
var echoHtml = "";
for (var i = 0; i < domain.length; i++) {
echoHtml += "<tr><td><a title='"+lan.site.click_access+"' target='_blank' href='http://" + domain[i].name + ":" + domain[i].port + "' class='btlinkbed'>" + domain[i].name + "</a></td><td><a class='btlinkbed'>" + domain[i].port + "</a></td><td class='text-center'><a class='table-btn-del' href='javascript:;' onclick=\"delDomain(" + id + ",'" + name + "','" + domain[i].name + "','" + domain[i].port + "',1)\"><span class='glyphicon glyphicon-trash'></span></a></td></tr>";
}
var bodyHtml = "<textarea id='newdomain' class='bt-input-text' style='height: 100px; width: 340px;padding:5px 10px;line-height:20px'></textarea>\
<input type='hidden' id='newport' value='80' />\
6 years ago
<button type='button' class='btn btn-success btn-sm pull-right' style='margin:30px 35px 0 0' onclick=\"domainAdd(" + id + ",'" + name + "',1)\">"+lan.public.add+"</button>\
7 years ago
<div class='divtable mtb15' style='height:350px;overflow:auto'>\
<table class='table table-hover' width='100%'>\
<thead><tr><th>"+lan.site.domain+"</th><th width='70px'>"+lan.site.port+"</th><th width='50px' class='text-center'>"+lan.site.operate+"</th></tr></thead>\
<tbody id='checkDomain'>" + echoHtml + "</tbody>\
</table>\
</div>";
$("#webedit-con").html(bodyHtml);
if(msg != undefined){
layer.msg(msg,{icon:status?1:5});
}
var placeholder = "<div class='placeholder c9' style='left:28px;width:330px;top:16px;'>"+lan.site.domain_help+"</div>";
$('#newdomain').after(placeholder);
$(".placeholder").click(function(){
$(this).hide();
$('#newdomain').focus();
})
$('#newdomain').focus(function() {
$(".placeholder").hide();
});
$('#newdomain').blur(function() {
if($(this).val().length==0){
$(".placeholder").show();
}
});
$("#newdomain").on("input",function(){
var str = $(this).val();
6 years ago
if(isChineseChar(str)) {
$('.btn-zhm').show();
} else{
$('.btn-zhm').hide();
}
7 years ago
})
//checkDomain();
6 years ago
},'json');
7 years ago
}
function DomainRoot(id, name,msg) {
$.get('/data?action=getData&table=domain&list=True&search=' + id, function(domain) {
var echoHtml = "";
for (var i = 0; i < domain.length; i++) {
echoHtml += "<tr><td><a title='"+lan.site.click_access+"' target='_blank' href='http://" + domain[i].name + ":" + domain[i].port + "' class='btlinkbed'>" + domain[i].name + "</a></td><td><a class='btlinkbed'>" + domain[i].port + "</a></td><td class='text-center'><a class='table-btn-del' href='javascript:;' onclick=\"delDomain(" + id + ",'" + name + "','" + domain[i].name + "','" + domain[i].port + "',1)\"><span class='glyphicon glyphicon-trash'></span></a></td></tr>";
}
var index = layer.open({
type: 1,
skin: 'demo-class',
area: '450px',
title: lan.site.domain_man,
closeBtn: 2,
shift: 0,
shadeClose: true,
content: "<div class='divtable padding-10'>\
<textarea id='newdomain'></textarea>\
<input type='hidden' id='newport' value='80' />\
6 years ago
<button type='button' class='btn btn-success btn-sm pull-right' style='margin:30px 35px 0 0' onclick=\"domainAdd(" + id + ",'" + name + "')\">添加</button>\
7 years ago
<table class='table table-hover' width='100%' style='margin-bottom:0'>\
<thead><tr><th>"+lan.site.domain+"</th><th width='70px'>"+lan.site.port+"</th><th width='50px' class='text-center'>"+lan.site.operate+"</th></tr></thead>\
<tbody id='checkDomain'>" + echoHtml + "</tbody>\
</table></div>"
});
if(msg != undefined){
layer.msg(msg,{icon:1});
}
var placeholder = "<div class='placeholder'>"+lan.site.domain_help+"</div>";
$('#newdomain').after(placeholder);
$(".placeholder").click(function(){
$(this).hide();
$('#newdomain').focus();
})
$('#newdomain').focus(function() {
$(".placeholder").hide();
});
$('#newdomain').blur(function() {
if($(this).val().length==0){
$(".placeholder").show();
}
});
$("#newdomain").on("input",function(){
var str = $(this).val();
if(isChineseChar(str)) $('.btn-zhm').show();
else $('.btn-zhm').hide();
})
//checkDomain();
});
}
//编辑域名/端口
function cancelSend(){
$(".changeDomain,.changePort").hide().prev().show();
$(".changeDomain,.changePort").remove();
}
//遍历域名
function checkDomain() {
$("#checkDomain tr").each(function() {
var $this = $(this);
var domain = $(this).find("td:first-child").text();
$(this).find("td:first-child").append("<i class='lading'></i>");
checkDomainWebsize($this,domain);
})
}
//检查域名是否解析备案
function checkDomainWebsize(obj,domain){
var gurl = "http://api.bt.cn/ipaddess";
var ip = getCookie('iplist');
var data = "domain=" + domain+"&ip="+ip;
$.ajax({ url: gurl,data:data,type:"get",dataType:"jsonp",async:true ,success: function(rdata){
obj.find("td:first-child").find(".lading").remove();
if (rdata.code == -1) {
obj.find("td:first-child").append("<i class='yf' data-title='"+lan.site.this_domain_un+"'>"+lan.site.unresolved+"</i>");
} else {
obj.find("td:first-child").append("<i class='f' data-title='"+lan.site.analytic_ip+":" + rdata.data.ip + "<br>"+lan.site.current_server_ip+":" + rdata.data.main_ip + "("+lan.site.parsed_info+")'>"+lan.site.parsed+"</i>");
}
obj.find("i").mouseover(function() {
var tipsTitle = $(this).attr("data-title");
layer.tips(tipsTitle, this, {
tips: [1, '#3c8dbc'],
time: 0
})
})
obj.find("i").mouseout(function() {
$(".layui-layer-tips").remove();
})
}})
}
/**
* 添加域名
* @param {Int} id 网站ID
* @param {String} webname 主域名
*/
6 years ago
function domainAdd(id, webname,type) {
7 years ago
var Domain = $("#newdomain").val().split("\n");
var domainlist="";
for(var i=0; i<Domain.length; i++){
domainlist += Domain[i]+",";
}
if(domainlist.length < 3){
layer.msg(lan.site.domain_empty,{icon:5});
return;
}
domainlist = domainlist.substring(0,domainlist.length-1);
var loadT = layer.load();
var data = "domain=" + domainlist + "&webname=" + webname + "&id=" + id;
$.post('/site?action=AddDomain', data, function(retuls) {
layer.close(loadT);
6 years ago
domainEdit(id,webname,retuls.msg,retuls.status);
7 years ago
});
}
/**
* 删除域名
* @param {Number} wid 网站ID
* @param {String} wname 主域名
* @param {String} domain 欲删除的域名
* @param {Number} port 对应的端口
*/
function delDomain(wid, wname, domain, port,type) {
var num = $("#checkDomain").find("tr").length;
if(num==1){
layer.msg(lan.site.domain_last_cannot);
}
layer.confirm(lan.site.domain_del_confirm,{icon:3,closeBtn:2}, function(index) {
var url = "/site?action=DelDomain"
var data = "id=" + wid + "&webname=" + wname + "&domain=" + domain + "&port=" + port;
var loadT = layer.msg(lan.public.the_del,{time:0,icon:16});
$.post(url,data, function(ret) {
layer.close(loadT);
layer.msg(ret.msg,{icon:ret.status?1:2})
if(type == 1){
layer.close(loadT);
6 years ago
domainEdit(wid,wname)
7 years ago
}else{
layer.closeAll();
DomainRoot(wid, wname);
}
});
});
}
/**
* 判断IP/域名格式
* @param {String} domain 源文本
* @return bool
*/
6 years ago
function isDomain(domain) {
//domain = 'http://'+domain;
var re = new RegExp();
re.compile("^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
if (re.test(domain)) {
return (true);
} else {
return (false);
7 years ago
}
6 years ago
}
7 years ago
/**
*设置数据库备份
* @param {Number} sign 操作标识
* @param {Number} id 编号
* @param {String} name 主域名
*/
function WebBackup(id, name) {
6 years ago
var loadT =layer.msg(lan.database.backup_the, {icon:16,time:0,shade: [0.3, '#000']});
var data = "id="+id;
$.post('/site?action=ToBackup', data, function(rdata) {
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:2})
getBackup(id);
});
7 years ago
}
/**
*删除网站备份
* @param {Number} webid 网站编号
* @param {Number} id 文件编号
* @param {String} name 主域名
*/
function WebBackupDelete(id,pid){
layer.confirm(lan.site.webback_del_confirm,{title:lan.site.del_bak_file,icon:3,closeBtn:2},function(index){
var loadT =layer.msg(lan.public.the_del, {icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=DelBackup','id='+id, function(rdata){
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:2});
getBackup(pid);
});
})
}
function getBackup(id,name,page) {
if(page == undefined){
page = '1';
}
$.post('/data?action=getFind','table=sites&id=' + id, function(rdata) {
$.post('/data?action=getData','table=backup&search=' + id + '&limit=5&p='+page+'&type=0&tojs=getBackup',function(frdata){
var body = '';
for (var i = 0; i < frdata.data.length; i++) {
if(frdata.data[i].type == '1') continue;
if(frdata.data[i].filename.length < 15){
var ftpdown = "<a class='btlink' href='/cloud?filename="+frdata.data[i].filename+"&name="+ frdata.data[i].name+"' target='_blank'>下载</a> | ";
}else{
var ftpdown = "<a class='btlink' href='/download?filename="+frdata.data[i].filename+"&name="+frdata.data[i].name+"' target='_blank'>下载</a> | ";
}
body += "<tr><td><span class='glyphicon glyphicon-file'></span>"+frdata.data[i].name+"</td>\
<td>" + (ToSize(frdata.data[i].size)) + "</td>\
<td>" + frdata.data[i].addtime + "</td>\
<td class='text-right' style='color:#ccc'>"+ ftpdown + "<a class='btlink' href='javascript:;' onclick=\"WebBackupDelete('" + frdata.data[i].id + "',"+id+")\">"+lan.public.del+"</a></td>\
</tr>"
}
var ftpdown = '';
frdata.page = frdata.page.replace(/'/g,'"').replace(/getBackup\(/g,"getBackup(" + id + ",0,");
if(name == 0){
var sBody = "<table width='100%' id='WebBackupList' class='table table-hover'>\
<thead><tr><th>"+lan.site.filename+"</th><th>"+lan.site.filesize+"</th><th>"+lan.site.backuptime+"</th><th width='140px' class='text-right'>"+lan.site.operate+"</th></tr></thead>\
<tbody id='WebBackupBody' class='list-list'>"+body+"</tbody>\
</table>"
$("#WebBackupList").html(sBody);
$(".page").html(frdata.page);
return;
}
layer.closeAll();
layer.open({
type: 1,
skin: 'demo-class',
area: '700px',
title: lan.site.backup_title,
closeBtn: 2,
shift: 0,
shadeClose: false,
content: "<div class='bt-form ptb15 mlr15' id='WebBackup'>\
<button class='btn btn-default btn-sm' style='margin-right:10px' type='button' onclick=\"WebBackup('" + rdata.id + "','" + rdata.name + "')\">"+lan.site.backup_title+"</button>\
<div class='divtable mtb15' style='margin-bottom:0'><table width='100%' id='WebBackupList' class='table table-hover'>\
<thead><tr><th>"+lan.site.filename+"</th><th>"+lan.site.filesize+"</th><th>"+lan.site.backuptime+"</th><th width='140px' class='text-right'>"+lan.site.operate+"</th></tr></thead>\
<tbody id='WebBackupBody' class='list-list'>"+body+"</tbody>\
</table><div class='page'>"+frdata.page+"</div></div></div>"
});
});
});
}
function goSet(num) {
//取选中对象
var el = document.getElementsByTagName('input');
var len = el.length;
var data = '';
var a = '';
var count = 0;
//构造POST数据
for (var i = 0; i < len; i++) {
if (el[i].checked == true && el[i].value != 'on') {
data += a + count + '=' + el[i].value;
a = '&';
count++;
}
}
//判断操作类别
if(num==1){
reAdd(data);
}
else if(num==2){
shift(data);
}
}
//设置默认文档
7 years ago
function setIndex(id){
7 years ago
var quanju = (id==undefined)?lan.site.public_set:lan.site.local_site;
var data=id==undefined?"":"id="+id;
$.post('/site?action=GetIndex',data,function(rdata){
rdata= rdata.replace(new RegExp(/(,)/g), "\n");
layer.open({
type: 1,
area: '500px',
title: lan.site.setindex,
closeBtn: 2,
shift: 5,
shadeClose: true,
content:"<form class='bt-form' id='SetIndex'><div class='SetIndex'>"
+"<div class='line'>"
+" <span class='tname' style='padding-right:2px'>"+lan.site.default_doc+"</span>"
+" <div class='info-r'>"
+" <textarea id='Dindex' name='files' style='line-height:20px'>"+rdata+"</textarea>"
+" <p>"+quanju+lan.site.default_doc_help+"</p>"
+" </div>"
+"</div>"
+"<div class='bt-form-submit-btn'>"
+" <button type='button' id='web_end_time' class='btn btn-danger btn-sm btn-title' onclick='layer.closeAll()'>"+lan.public.cancel+"</button>"
6 years ago
+" <button type='button' class='btn btn-success btn-sm btn-title' onclick='setIndexList("+id+")'>"+lan.public.ok+"</button>"
7 years ago
+"</div>"
+"</div></form>"
});
});
}
//设置默认站点
function SetDefaultSite(){
var name = $("#defaultSite").val();
var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=SetDefaultSite','name='+name,function(rdata){
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:5});
});
}
//默认站点
function GetDefaultSite(){
$.post('/site?action=GetDefaultSite','',function(rdata){
var opt = '<option value="off">'+lan.site.default_site_no+'</option>';
var selected = '';
for(var i=0;i<rdata.sites.length;i++){
selected = '';
if(rdata.defaultSite == rdata.sites[i].name) selected = 'selected';
opt += '<option value="' + rdata.sites[i].name + '" ' + selected + '>' + rdata.sites[i].name + '</option>';
}
layer.open({
type: 1,
area: '430px',
title: lan.site.default_site_yes,
closeBtn: 2,
shift: 5,
shadeClose: true,
content:'<div class="bt-form ptb15 pb70">\
<p class="line">\
<span class="tname text-right">'+lan.site.default_site+'</span>\
<select id="defaultSite" class="bt-input-text" style="width: 300px;">'+opt+'</select>\
</p>\
<ul class="help-info-text c6 plr20">\
<li>'+lan.site.default_site_help_1+'</li>\
<li>'+lan.site.default_site_help_2+'</li>\
</ul>\
<div class="bt-form-submit-btn">\
<button type="button" class="btn btn-danger btn-sm btn-title" onclick="layer.closeAll()">'+lan.public.cancel+'</button>\
<button class="btn btn-success btn-sm btn-title" onclick="SetDefaultSite()">'+lan.public.ok+'</button>\
</div>\
</div>'
});
});
}
6 years ago
function setIndexList(id){
7 years ago
var Dindex = $("#Dindex").val().replace(new RegExp(/(\n)/g), ",");
6 years ago
if(id == undefined ){
var data="id=&index="+Dindex;
} else{
var data="id="+id+"&index="+Dindex;
7 years ago
}
var loadT= layer.load(2);
6 years ago
$.post('/site/set_index',data,function(rdata){
7 years ago
layer.close(loadT);
var ico = rdata.status? 1:5;
layer.msg(rdata.msg,{icon:ico});
6 years ago
},'json');
7 years ago
}
/*站点修改*/
function webEdit(id,website,endTime,addtime){
var system = "{$Think.session.system}";
var eMenu = '';
eMenu = "<p onclick='DirBinding("+id+")' title='"+lan.site.site_menu_1+"'>"+lan.site.site_menu_1+"</p>"
+"<p onclick='webPathEdit("+id+")' title='"+lan.site.site_menu_2+"'>"+lan.site.site_menu_2+"</p>"
+"<p onclick='limitNet("+id+")' title='"+lan.site.site_menu_3+"'>"+lan.site.site_menu_3+"</p>"
+"<p onclick=\"Rewrite('"+website+"')\" title='"+lan.site.site_menu_4+"'>"+lan.site.site_menu_4+"</p>"
6 years ago
+"<p onclick='setIndexEdit("+id+")' title='默认文档'>默认文档</p>"
6 years ago
+"<p onclick=\"configFile('"+website+"')\" title='"+lan.site.site_menu_6+"'>"+lan.site.site_menu_6+"</p>"
+"<p onclick=\"setSSL("+id+",'"+website+"')\" title='"+lan.site.site_menu_7+"'>"+lan.site.site_menu_7+"</p>"
6 years ago
+"<p onclick=\"phpVersion('"+website+"')\" title='"+lan.site.site_menu_8+"'>"+lan.site.site_menu_8+"</p>"
7 years ago
+"<p onclick=\"To301('"+website+"')\" title='"+lan.site.site_menu_10+"'>"+lan.site.site_menu_10+"</p>"
+"<p onclick=\"Proxy('"+website+"')\" title='"+lan.site.site_menu_12+"'>"+lan.site.site_menu_11+"</p>"
+"<p id='site_"+id+"' onclick=\"Security('"+id+"','"+website+"')\" title='"+lan.site.site_menu_12+"'>"+lan.site.site_menu_12+"</p>"
6 years ago
+"<p id='site_"+id+"' onclick=\"getSiteLogs('"+website+"')\" title='查看站点请求日志'>响应日志</p>";
7 years ago
layer.open({
type: 1,
area: '640px',
title: lan.site.website_change+'['+website+'] -- '+lan.site.addtime+'['+addtime+']',
closeBtn: 2,
shift: 0,
content: "<div class='bt-form'>"
+"<div class='bt-w-menu pull-left' style='height: 565px;'>"
6 years ago
+" <p class='bgw' onclick=\"domainEdit(" + id + ",'" + website + "')\">"+lan.site.domain_man+"</p>"
7 years ago
+" "+eMenu+""
+"</div>"
+"<div id='webedit-con' class='bt-w-con webedit-con pd15'></div>"
+"</div>"
});
6 years ago
domainEdit(id,website);
7 years ago
//域名输入提示
var placeholder = "<div class='placeholder'>"+lan.site.domain_help+"</div>";
$('#newdomain').after(placeholder);
$(".placeholder").click(function(){
$(this).hide();
$('#newdomain').focus();
});
$('#newdomain').focus(function() {
$(".placeholder").hide();
});
$('#newdomain').blur(function() {
if($(this).val().length==0){
$(".placeholder").show();
}
});
//切换
var $p = $(".bt-w-menu p");
$p.click(function(){
$(this).addClass("bgw").siblings().removeClass("bgw");
});
}
//取网站日志
6 years ago
function getSiteLogs(siteName){
var loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site/get_logs',{siteName:siteName},function(logs){
console.log(logs);
7 years ago
layer.close(loadT);
if(logs.status !== true){
logs.msg = '';
}
if (logs.msg == '') logs.msg = '当前没有日志.';
var phpCon = '<textarea wrap="off" readonly="" style="white-space: pre;margin: 0px;width: 500px;height: 520px;background-color: #333;color:#fff; padding:0 5px" id="error_log">'+logs.msg+'</textarea>';
$("#webedit-con").html(phpCon);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
6 years ago
},'json');
7 years ago
}
//防盗链
function Security(id,name){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=GetSecurity',{id:id,name:name},function(rdata){
layer.close(loadT);
var mbody = '<div>'
+'<p style="margin-bottom:8px"><span style="display: inline-block; width: 60px;">URL后缀</span><input class="bt-input-text" type="text" name="sec_fix" value="'+rdata.fix+'" style="margin-left: 5px;width: 425px;height: 30px;margin-right:10px;'+(rdata.status?'background-color: #eee;':'')+'" placeholder="多个请用逗号隔开,例:png,jpeg,jpg,gif,zip" '+(rdata.status?'readonly':'')+'></p>'
+'<p style="margin-bottom:8px"><span style="display: inline-block; width: 60px;">许可域名</span><input class="bt-input-text" type="text" name="sec_domains" value="'+rdata.domains+'" style="margin-left: 5px;width: 425px;height: 30px;margin-right:10px;'+(rdata.status?'background-color: #eee;':'')+'" placeholder="支持通配符,多个域名请用逗号隔开,例:*.test.com,test.com" '+(rdata.status?'readonly':'')+'></p>'
+'<div class="label-input-group ptb10"><label style="font-weight:normal"><input type="checkbox" name="sec_status" onclick="SetSecurity(\''+name+'\','+id+')" '+(rdata.status?'checked':'')+'>启用防盗链</label></div>'
+'<ul class="help-info-text c7 ptb10">'
+'<li>默认允许资源被直接访问,即不限制HTTP_REFERER为空的请求</li>'
+'<li>多个URL后缀与域名请使用逗号(,)隔开,如: png,jpeg,zip,js</li>'
+'<li>当触发防盗链时,将直接返回404状态</li>'
+'</ul>'
+'</div>'
$("#webedit-con").html(mbody);
});
}
//设置防盗链
function SetSecurity(name,id){
var data = {
fix:$("input[name='sec_fix']").val(),
domains:$("input[name='sec_domains']").val(),
status:$("input[name='sec_status']").val(),
name:name,
id:id
}
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=SetSecurity',data,function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
if(rdata.status) setTimeout(function(){Security(id,name);},1000);
});
}
//木马扫描
function CheckSafe(id,act){
if(act != undefined){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=CheckSafe','id='+id,function(rdata){
$(".btnStart").hide()
setTimeout(function(){
CheckSafe(id);
},3000);
GetTaskCount();
layer.close(loadT)
layer.msg(rdata.msg,{icon:rdata.status?1:5});
});
return;
}
$.post('/site?action=GetCheckSafe','id='+id,function(rdata){
var done = "<button type='button' class='btn btn-success btn-sm btnStart mr5' onclick=\"CheckSafe("+id+",1)\">"+lan.site.start_scan+"</button>\
<button type='button' class='btn btn-default btn-sm btnStart mr20' onclick=\"UpdateRulelist()\">"+lan.site.update_lib+"</button>\
<a class='f14 mr20' style='color:green;'>"+lan.site.scanned+""+rdata.count+"</a><a class='f14' style='color:red;'>"+lan.site.risk_quantity+""+rdata.error+"</a>";
if(rdata['scan']) done = "<a class='f14 mr20' style='color:green;'>"+lan.site.scanned+":"+rdata.count+"</a><a class='f14' style='color:red;'>"+lan.site.risk_quantity+":"+rdata.error+"</a>";
var echoHtml = "<div class='mtb15'>"
+ done
+"</div>"
for(var i=0;i<rdata.phpini.length;i++){
echoHtml += "<tr><td>"+lan.site.danger_fun+"</td><td>"+lan.site.danger+"</td><td>"+lan.site.danger_fun_no+":"+rdata.phpini[i].function+"<br>"+lan.site.file+":<a style='color: red;' href='javascript:;' onclick=\"OnlineEditFile(0,'/www/server/php/"+rdata.phpini[i].version+"/etc/php.ini')\">/www/server/php/"+rdata.phpini[i].version+"/etc/php.ini</a></td></tr>";
}
if(!rdata.sshd){
echoHtml += "<tr><td>"+lan.site.ssh_port+"</td><td>"+lan.site.high_risk+"</td><td>"+lan.site.sshd_tampering+"</td></tr>";
}
if(!rdata.userini){
echoHtml += "<tr><td>"+lan.site.xss_attack+"</td><td>"+lan.site.danger+"</td><td>"+lan.site.site_xss_attack+"</td></tr>";
}
for(var i=0;i<rdata.data.length;i++){
echoHtml += "<tr><td>"+rdata.data[i].msg+"</td><td>"+rdata.data[i].level+"</td><td>文件:<a style='color: red;' href='javascript:;' onclick=\"OnlineEditFile(0,'"+rdata.data[i].filename+"')\">"+rdata.data[i].filename+"</a><br>"+lan.site.mod_time+":"+rdata.data[i].etime+"<br>"+lan.site.code+":"+rdata.data[i].code+"</td></tr>";
}
var body = "<div>"
+"<div class='divtable mtb15'><table class='table table-hover' width='100%' style='margin-bottom:0'>"
+"<thead><tr><th width='100px'>"+lan.site.behavior+"</th><th width='70px'>"+lan.site.risk+"</th><th>"+lan.site.details+"</th></tr></thead>"
+"<tbody id='checkDomain'>" + echoHtml + "</tbody>"
+"</table></div>"
$("#webedit-con").html(body);
$(".btnStart").click(function(){
fly('btnStart');
});
if(rdata['scan']){
c = $("#site_"+id).attr('class');
if(c != 'active') return;
setTimeout(function(){
CheckSafe(id);
},1000);
}
});
}
function UpdateRulelist(){
var loadT = layer.msg(lan.site.to_update,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=UpdateRulelist','',function(rdata){
layer.close(loadT)
layer.msg(rdata.msg,{icon:rdata.status?1:5});
});
}
//流量限制
function limitNet(id){
$.post('/site/get_limit_net','id='+id, function(rdata){
7 years ago
var status_selected = rdata.perserver != 0?'checked':'';
if(rdata.perserver == 0){
rdata.perserver = 300;
rdata.perip = 25;
rdata.limit_rate = 512;
}
var limitList = "<option value='1' "+((rdata.perserver == 0 || rdata.perserver == 300)?'selected':'')+">"+lan.site.limit_net_1+"</option>"
+"<option value='2' "+((rdata.perserver == 200)?'selected':'')+">"+lan.site.limit_net_2+"</option>"
+"<option value='3' "+((rdata.perserver == 50)?'selected':'')+">"+lan.site.limit_net_3+"</option>"
+"<option value='4' "+((rdata.perserver == 500)?'selected':'')+">"+lan.site.limit_net_4+"</option>"
+"<option value='5' "+((rdata.perserver == 400)?'selected':'')+">"+lan.site.limit_net_5+"</option>"
+"<option value='6' "+((rdata.perserver == 60)?'selected':'')+">"+lan.site.limit_net_6+"</option>"
+"<option value='7' "+((rdata.perserver == 150)?'selected':'')+">"+lan.site.limit_net_7+"</option>"
var body = "<div class='dirBinding flow c4'>"
+'<p class="label-input-group ptb10"><label style="font-weight:normal"><input type="checkbox" name="status" '+status_selected+' onclick="saveLimitNet('+id+')" style="width:15px;height:15px;margin-right:5px" />'+lan.site.limit_net_8+'</label></p>'
7 years ago
+"<p class='line' style='padding:10px 0'><span class='span_tit mr5'>"+lan.site.limit_net_9+":</span><select class='bt-input-text mr20' name='limit' style='width:90px'>"+limitList+"</select></p>"
+"<p class='line' style='padding:10px 0'><span class='span_tit mr5'>"+lan.site.limit_net_10+":</span><input class='bt-input-text mr20' style='width: 90px;' type='number' name='perserver' value='"+rdata.perserver+"' /></p>"
+"<p class='line' style='padding:10px 0'><span class='span_tit mr5'>"+lan.site.limit_net_12+":</span><input class='bt-input-text mr20' style='width: 90px;' type='number' name='perip' value='"+rdata.perip+"' /></p>"
+"<p class='line' style='padding:10px 0'><span class='span_tit mr5'>"+lan.site.limit_net_14+":</span><input class='bt-input-text mr20' style='width: 90px;' type='number' name='limit_rate' value='"+rdata.limit_rate+"' /></p>"
+"<button class='btn btn-success btn-sm mt10' onclick='saveLimitNet("+id+",1)'>"+lan.public.save+"</button>"
7 years ago
+"</div>"
+"<ul class='help-info-text c7 mtb15'><li>"+lan.site.limit_net_11+"</li><li>"+lan.site.limit_net_13+"</li><li>"+lan.site.limit_net_15+"</li></ul>"
$("#webedit-con").html(body);
$("select[name='limit']").change(function(){
var type = $(this).val();
perserver = 300;
perip = 25;
limit_rate = 512;
switch(type){
case '1':
perserver = 300;
perip = 25;
limit_rate = 512;
break;
case '2':
perserver = 200;
perip = 10;
limit_rate = 1024;
break;
case '3':
perserver = 50;
perip = 3;
limit_rate = 2048;
break;
case '4':
perserver = 500;
perip = 10;
limit_rate = 2048;
break;
case '5':
perserver = 400;
perip = 15;
limit_rate = 1024;
break;
case '6':
perserver = 60;
perip = 10;
limit_rate = 512;
break;
case '7':
perserver = 150;
perip = 4;
limit_rate = 1024;
break;
}
$("input[name='perserver']").val(perserver);
$("input[name='perip']").val(perip);
$("input[name='limit_rate']").val(limit_rate);
});
},'json');
7 years ago
}
//保存流量限制配置
function saveLimitNet(id, type){
7 years ago
var isChecked = $("input[name='status']").attr('checked');
if(isChecked == undefined || type == 1 ){
7 years ago
var data = 'id='+id+'&perserver='+$("input[name='perserver']").val()+'&perip='+$("input[name='perip']").val()+'&limit_rate='+$("input[name='limit_rate']").val();
var loadT = layer.msg(lan.public.config,{icon:16,time:10000})
$.post('/site/save_limit_net',data,function(rdata){
7 years ago
layer.close(loadT);
limitNet(id);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
},'json');
7 years ago
}else{
var loadT = layer.msg(lan.public.config,{icon:16,time:10000})
$.post('/site/close_limit_net',{id:id},function(rdata){
7 years ago
layer.close(loadT);
limitNet(id);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
},'json');
7 years ago
}
}
//子目录绑定
function DirBinding(id){
$.post('/site?action=GetDirBinding&id='+id,function(rdata){
var echoHtml = '';
for(var i=0;i<rdata.binding.length;i++){
echoHtml += "<tr><td>"+rdata.binding[i].domain+"</td><td>"+rdata.binding[i].port+"</td><td>"+rdata.binding[i].path+"</td><td class='text-right'><a class='btlink' href='javascript:SetDirRewrite("+rdata.binding[i].id+");'>"+lan.site.site_menu_4+"</a> | <a class='btlink' href='javascript:DelBinding("+rdata.binding[i].id+","+id+");'>"+lan.public.del+"</a></td></tr>";
}
var dirList = '';
for(var n=0;n<rdata.dirs.length;n++){
dirList += "<option value='"+rdata.dirs[n]+"'>"+rdata.dirs[n]+"</option>";
}
var body = "<div class='dirBinding c5'>"
+lan.site.domain+":<input class='bt-input-text mr20' type='text' name='domain' />"
+lan.site.subdirectories+":<select class='bt-input-text mr20' name='dirName'>"+dirList+"</select>"
+"<button class='btn btn-success btn-sm' onclick='AddDirBinding("+id+")'>"+lan.public.add+"</button>"
+"</div>"
+"<div class='divtable mtb15' style='height:470px;overflow:auto'><table class='table table-hover' width='100%' style='margin-bottom:0'>"
+"<thead><tr><th>"+lan.site.domain+"</th><th width='70'>"+lan.site.port+"</th><th width='100'>"+lan.site.subdirectories+"</th><th width='100' class='text-right'>"+lan.site.operate+"</th></tr></thead>"
+"<tbody id='checkDomain'>" + echoHtml + "</tbody>"
+"</table></div>"
$("#webedit-con").html(body);
})
}
//子目录伪静态
function SetDirRewrite(id){
$.post('/site?action=GetDirRewrite&id='+id,function(rdata){
if(!rdata.status){
var confirmObj = layer.confirm(lan.site.url_rewrite_alter,{icon:3,closeBtn:2},function(){
$.post('/site?action=GetDirRewrite&id='+id+'&add=1',function(rdata){
layer.close(confirmObj);
ShowRewrite(rdata);
});
});
return;
}
ShowRewrite(rdata);
});
}
//显示伪静态
function ShowRewrite(rdata){
var rList = '';
for(var i=0;i<rdata.rlist.length;i++){
rList += "<option value='"+rdata.rlist[i]+"'>"+rdata.rlist[i]+"</option>";
}
var webBakHtml = "<div class='c5 plr15'>\
<div class='line'>\
<select class='bt-input-text mr20' id='myRewrite' name='rewrite' style='width:30%;'>"+rList+"</select>\
<span>"+lan.site.rule_cov_tool+"<a class='btlink' href='https://www.bt.cn/Tools' target='_blank'>"+lan.site.a_c_n+"</a>\</span>\
<textarea class='bt-input-text mtb15' style='height: 260px; width: 470px; line-height:18px;padding:5px;' id='rewriteBody'>"+rdata.data+"</textarea></div>\
<button id='SetRewriteBtn' class='btn btn-success btn-sm' onclick=\"SetRewrite('"+rdata.filename+"')\">"+lan.public.save+"</button>\
<ul class='help-info-text c7 ptb10'>\
<li>"+lan.site.url_rw_help_1+"</li>\
<li>"+lan.site.url_rw_help_2+"</li>\
</ul>\
</div>";
layer.open({
type: 1,
area: '500px',
title: lan.site.config_url,
closeBtn: 2,
shift: 5,
shadeClose: true,
content:webBakHtml
});
$("#myRewrite").change(function(){
var rewriteName = $(this).val();
$.post('/files?action=GetFileBody','path=/www/server/panel/rewrite/'+getCookie('serverType')+'/'+rewriteName+'.conf',function(fileBody){
$("#rewriteBody").val(fileBody.data);
});
});
}
//添加子目录绑定
function AddDirBinding(id){
var domain = $("input[name='domain']").val();
var dirName = $("select[name='dirName']").val();
if(domain == '' || dirName == '' || dirName == null){
layer.msg(lan.site.d_s_empty,{icon:2});
return;
}
var data = 'id='+id+'&domain='+domain+'&dirName='+dirName
$.post('site?action=AddDirBinding',data,function(rdata){
DirBinding(id);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
//删除子目录绑定
function DelBinding(id,siteId){
layer.confirm(lan.site.s_bin_del,{icon:3,closeBtn:2},function(){
$.post('site?action=DelDirBinding','id='+id,function(rdata){
DirBinding(siteId);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
});
}
//反向代理
function Proxy(siteName,type){
if(type == 1){
type = $("input[name='status']").attr('checked')?'0':'1';
toUrl = encodeURIComponent($("input[name='toUrl']").val());
toDomain = encodeURIComponent($("input[name='toDomain']").val());
var sub1 = encodeURIComponent($("input[name='sub1']").val());
var sub2 = encodeURIComponent($("input[name='sub2']").val());
var data = 'name='+siteName+'&type='+type+'&proxyUrl='+toUrl+'&toDomain=' + toDomain + '&sub1=' + sub1 + '&sub2=' + sub2;
var loadT = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=SetProxy',data,function(rdata){
layer.close(loadT);
if(rdata.status) {
Proxy(siteName);
}else{
$("input[name='status']").attr('checked',false)
}
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
return;
}
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=GetProxy','name='+siteName,function(rdata){
layer.close(loadT);
if(rdata.proxyUrl == null) rdata.proxyUrl = '';
var status_selected = rdata.status?'checked':'';
var disabled = rdata.status?'disabled':'';
var body = "<div>"
+"<p style='margin-bottom:8px'><span style='display: inline-block; width: 104px;'>"+lan.site.proxy_url+"</span><input "+disabled+" class='bt-input-text' type='text' name='toUrl' value='"+rdata.proxyUrl+"' style='margin-left: 5px;width: 380px;height: 30px;margin-right:10px;' placeholder='"+lan.site.proxy_url_info+"' /></p>"
+"<p style='margin-bottom:8px'><span style='display: inline-block; width: 104px;'>"+lan.site.proxy_domain+"</span><input "+disabled+" class='bt-input-text' type='text' name='toDomain' value='"+rdata.toDomain+"' style='margin-left: 5px;width: 380px;height: 30px;margin-right:10px;' placeholder='"+lan.site.proxy_domian_info+"' /></p>"
+"<p style='margin-bottom:8px'><span style='display: inline-block; width: 104px;'>"+lan.site.con_rep+"</span><input "+disabled+" class='bt-input-text' type='text' name='sub1' value='"+rdata.sub1+"' style='margin-left: 5px;width: 182px;height: 30px;margin-right:10px;' placeholder='"+lan.site.con_rep_info+"' />"
+"<input class='bt-input-text' type='text' name='sub2' "+disabled+" value='"+rdata.sub2+"' style='margin-left: 5px;width: 183px;height: 30px;margin-right:10px;' placeholder='"+lan.site.to_con+"' /></p>"
+'<div class="label-input-group ptb10"><label style="font-weight:normal"><input type="checkbox" name="status" '+status_selected+' onclick="Proxy(\''+siteName+'\',1)" />'+lan.site.proxy_enable+'</label><label style="margin-left: 18px;"><input '+(rdata.cache?'checked':'')+' type="checkbox" name="status" onclick="OpenCache(\''+siteName+'\',1)" />'+lan.site.proxy_cache+'</label></div>'
+'<ul class="help-info-text c7 ptb10">'
+'<li>'+lan.site.proxy_help_1+'</li>'
+'<li>'+lan.site.proxy_help_2+'</li>'
+'<li>'+lan.site.proxy_help_3+'</li>'
+'<li>'+lan.site.proxy_help_4+'</li>'
+'<li>'+lan.site.proxy_help_5+'</li>'
+'</ul>'
+"</div>";
$("#webedit-con").html(body);
});
}
//开启缓存
function OpenCache(siteName){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=ProxyCache',{siteName:siteName},function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
//301重定向
function To301(siteName,type){
if(type == 1){
type = $("input[name='status']").attr('checked')?'0':'1';
toUrl = encodeURIComponent($("input[name='toUrl']").val());
srcDomain = encodeURIComponent($("select[name='srcDomain']").val());
var data = 'siteName='+siteName+'&type='+type+'&toDomain='+toUrl+'&srcDomain='+srcDomain;
$.post('site?action=Set301Status',data,function(rdata){
To301(siteName);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
return;
}
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=Get301Status','siteName='+siteName,function(rdata){
layer.close(loadT);
var domain_tmp = rdata.domain.split(',');
var domains = '';
var selected = '';
for(var i=0;i<domain_tmp.length;i++){
selected = '';
if(domain_tmp[i] == rdata.src) selected = 'selected';
domains += "<option value='"+domain_tmp[i]+"' "+selected+">"+domain_tmp[i]+"</option>";
}
if(rdata.url == null) rdata.url = '';
var status_selected = rdata.status?'checked':'';
var isRead = rdata.status?'readonly':'';
var body = "<div>"
+"<p style='margin-bottom:8px'><span style='display: inline-block; width: 90px;'>"+lan.site.access_domain+"</span><select class='bt-input-text' name='srcDomain' style='margin-left: 5px;width: 380px;height: 30px;margin-right:10px;"+(rdata.status?'background-color: #eee;':'')+"' "+(rdata.status?'disabled':'')+"><option value='all'>"+lan.site.all_site+"</option>"+domains+"</select></p>"
+"<p style='margin-bottom:8px'><span style='display: inline-block; width: 90px;'>"+lan.site.target_url+"</span><input class='bt-input-text' type='text' name='toUrl' value='"+rdata.url+"' style='margin-left: 5px;width: 380px;height: 30px;margin-right:10px;"+(rdata.status?'background-color: #eee;':'')+"' placeholder='"+lan.site.eg_url+"' "+isRead+" /></p>"
+'<div class="label-input-group ptb10"><label style="font-weight:normal"><input type="checkbox" name="status" '+status_selected+' onclick="To301(\''+siteName+'\',1)" />'+lan.site.enable_301+'</label></div>'
+'<ul class="help-info-text c7 ptb10">'
+'<li>'+lan.site.to301_help_1+'</li>'
+'<li>'+lan.site.to301_help_2+'</li>'
+'</ul>'
+"</div>";
$("#webedit-con").html(body);
});
}
//验证IP地址
function isValidIP(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);
}
function isContains(str, substr) {
return str.indexOf(substr) >= 0;
}
//证书夹
function ssl_admin(siteName){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.get('/ssl?action=GetCertList',function(rdata){
layer.close(loadT);
var tbody = '';
for(var i=0;i<rdata.length;i++){
tbody += '<tr><td>'+rdata[i].subject+'</td><td>'+rdata[i].dns.join('<br>')+'</td><td>'+rdata[i].notAfter+'</td><td>'+rdata[i].issuer+'</td><td style="text-align: right;"><a onclick="set_cert_ssl(\''+rdata[i].subject+'\',\''+siteName+'\')" class="btlink">部署</a> | <a onclick="remove_ssl(\''+rdata[i].subject+'\')" class="btlink">删除</a></td></tr>'
}
var txt = '<div class="mtb15" style="line-height:30px">\
<button style="margin-bottom: 7px;display:none;" class="btn btn-success btn-sm">添加</button>\
<div class="divtable"><table class="table table-hover"><thead><tr><th>域名</th><th></th><th></th><th></th><th class="text-right" width="75"></th></tr></thead>\
<tbody>'+tbody+'</tbody>\
</table></div></div>';
$(".tab-con").html(txt);
});
}
//删除证书
function remove_ssl(certName){
SafeMessage('删除证书','您真的要从证书夹删除证书吗?',function(){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/ssl?action=RemoveCert',{certName:certName},function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
$("#ssl_admin").click();
});
});
}
//从证书夹部署
function set_cert_ssl(certName,siteName){
var loadT = layer.msg('正在部署证书...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/ssl?action=SetCertToSite',{certName:certName,siteName:siteName},function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
//宝塔ssl
function setSSL(id,siteName){
7 years ago
var mBody = '<div class="tab-nav">\
<span onclick="BTssl(\'a\','+id+',\''+siteName+'\')">'+lan.site.bt_ssl+'</span>\
<span class="on" onclick="BTssl(\'lets\','+id+',\''+siteName+'\')">Let\'s Encrypt</span>\
7 years ago
<span onclick="BTssl(\'other\','+id+',\''+siteName+'\')">'+lan.site.other_ssl+'</span>\
<span class="sslclose" onclick="closeSSL(\''+siteName+'\')">'+lan.public.close+'</span>\
<span id="ssl_admin" onclick="ssl_admin(\''+siteName+'\')">证书夹</span>'
+ '<div class="ss-text pull-right mr30" style="position: relative;top:-4px">\
<em>强制HTTPS</em>\
<div class="ssh-item">\
<input class="btswitch btswitch-ios" id="toHttps" type="checkbox">\
<label class="btswitch-btn" for="toHttps" onclick="httpToHttps(\''+siteName+'\')"></label>\
</div>\
</div></div>'
+ '<div class="tab-con" style="padding: 0px;"></div>'
$("#webedit-con").html(mBody);
//BTssl('a',id,siteName);
$(".tab-nav span").click(function(){
$(this).addClass("on").siblings().removeClass("on");
});
// var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
// $.post('/site?action=GetSSL','siteName='+siteName,function(rdata){
// layer.close(loadT);
// $("#toHttps").attr('checked',rdata.httpTohttps);
// switch(rdata.type){
// case -1:
// $(".tab-nav span").eq(3).addClass("on").siblings().removeClass("on");
// var txt = "<div class='mtb15' style='line-height:30px'>"+lan.site.ssl_help_1+"</div>";
// $(".tab-con").html(txt);
// break;
// case 1:
// $(".tab-nav span").eq(1).addClass("on").siblings().removeClass("on");
// setCookie('letssl',1);
// var lets = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.key+'</textarea></div>'
// + '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.csr+'</textarea></div>'
// + '</div>'
// + '<ul class="help-info-text c7 pull-left"><li>'+lan.site.ssl_help_2+'</li><li>'+lan.site.ssl_help_3+'</li></ul>'
// $(".tab-con").html(lets);
// $(".help-info-text").after("<div class='line mtb15'><button class='btn btn-default btn-sm' onclick=\"OcSSL('CloseSSLConf','"+siteName+"')\" style='margin-left:10px'>"+lan.site.ssl_close+"</button></div>");
// break;
// case 0:
// $(".tab-nav span").eq(2).addClass("on").siblings().removeClass("on");
// BTssl('other',id,siteName);
// break;
// case 2:
// $(".tab-nav span").eq(0).addClass("on").siblings().removeClass("on");
// BTssl('a',id,siteName);
// break;
// }
// });
7 years ago
}
//关闭SSL
function closeSSL(siteName){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('site?action=GetSSL','siteName='+siteName,function(rdata){
layer.close(loadT);
switch(rdata.type){
case -1:
var txt = "<div class='mtb15' style='line-height:30px'>"+lan.site.ssl_help_1+"</div>";
setCookie('letssl',0);
$(".tab-con").html(txt);
break;
case 1:
var txt = "Let's Encrypt";
closeSSLHTML(txt,siteName);
break;
case 0:
var txt = lan.site.other;
closeSSLHTML(txt,siteName);
break;
case 2:
var txt = lan.site.bt_ssl;
closeSSLHTML(txt,siteName);
break;
}
})
}
//设置httpToHttps
function httpToHttps(siteName){
var isHttps = $("#toHttps").attr('checked');
if(isHttps){
layer.confirm('关闭强制HTTPS后需要清空浏览器缓存才能看到效果,继续吗?',{icon:3,title:"关闭强制HTTPS"},function(){
$.post('site?action=CloseToHttps','siteName='+siteName,function(rdata){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
});
}else{
$.post('site?action=HttpToHttps','siteName='+siteName,function(rdata){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
}
//关闭SSL内容
function closeSSLHTML(txt,siteName){
$(".tab-con").html("<div class='line mtb15'>"+lan.get('ssl_enable',[txt])+"</div><div class='line mtb15'><button class='btn btn-success btn-sm' onclick=\"OcSSL('CloseSSLConf','"+siteName+"')\">"+lan.site.ssl_close+"</button></div>");
}
//宝塔SSL
function BTssl(type,id,siteName){
var a = '<div class="btssl"><div class="alert alert-warning" style="padding:10px">'+lan.site.bt_bind_no+'</div>'
+ '<div class="line mtb10"><span class="tname text-right mr20">'+lan.site.bt_user+'</span><input id="btusername" class="bt-input-text" type="text" name="bt_panel_username" maxlength="11" style="width:200px" ><i style="font-style:normal;margin-left:10px;color:#999"></i></div>'
+ '<div class="line mtb10"><span class="tname text-right mr20">'+lan.site.password+'</span><input id="btpassword" class="bt-input-text" type="password" name="bt_panel_password" style="width:200px" ></div>'
+ '<div class="line mtb15" style="margin-left:100px"><button class="btn btn-success btn-sm mr20 btlogin">'+lan.site.login+'</button><button class="btn btn-success btn-sm" onclick="javascript:window.open(\'https://www.bt.cn/register.html\')">'+lan.site.bt_reg+'</button></div>'
+ '<ul class="help-info-text c7 ptb15"><li style="color:red">'+lan.site.bt_ssl_help_1+'</li><li>'+lan.site.bt_ssl_help_2+'</li><li>'+lan.site.bt_ssl_help_3+'</li><li>'+lan.site.bt_ssl_help_4+'</li></ul>'
+ '</div>';
var b = '<div class="btssl"><div class="line mtb15"><span class="tname text-center">'+lan.site.domain+'</span><select id="domainlist" class="bt-input-text" style="width:220px"></select></div>'
+ '<div class="line mtb15" style="margin-left:80px"><button class="btn btn-success btn-sm btsslApply">'+lan.site.btapply+'</button></div>'
+ '<div class="btssllist mtb15"><div class="divtable"><div id="btssl_table_list" style="max-height:205px;border:#ddd 1px solid;overflow:auto"><table class="table table-hover" style="border:none"><thead><tr><th>'+lan.site.domain+'</th><th>'+lan.site.endtime+'</th><th>'+lan.site.status+'<a href="https://www.bt.cn/bbs/thread-7860-1-1.html" class="bt-ico-ask" title="查看说明" target="_blank">?</a></th><th class="text-right" width="120">'+lan.site.operate+'</th></tr></thead><tbody id="ssllist"></tbody></table></div></div></div>'
+ '<ul class="help-info-text c7 ptb15"><li>'+lan.site.bt_ssl_help_5+'(包括根域名)</li><li>'+lan.site.bt_ssl_help_6+'</li><li>'+lan.site.bt_ssl_help_7+'</li><li>建议使用二级域名为www的域名申请证书,此时系统会默认赠送顶级域名为可选名称</li><li>在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点</li></ul>'
+ '</div>';
var lets = '<div class="btssl"><div class="label-input-group" style="margin-left: 110px;margin-top: 10px;"><input type="checkbox" name="checkDomain" id="checkDomain" checked=""><label class="mr20" for="checkDomain" style="font-weight:normal">提前校验域名(提前发现问题,减少失败率)</label></div><div class="line mtb15"><span class="tname text-center">管理员邮箱</span><input class="bt-input-text" style="width:240px;" type="text" name="admin_email" /></div><div class="line mtb15"><span class="tname text-center">'+lan.site.domain+'</span><ul id="ymlist" style="padding: 5px 10px;max-height:180px;overflow:auto; width:240px;border:#ccc 1px solid;border-radius:3px"></ul></div>'
+ '<div class="line mtb15" style="margin-left:80px"><button class="btn btn-success btn-sm letsApply">'+lan.site.btapply+'</button></div>'
+ '<ul class="help-info-text c7 ptb15"><li>'+lan.site.bt_ssl_help_5+'</li><li>'+lan.site.bt_ssl_help_8+'</li><li>'+lan.site.bt_ssl_help_9+'</li><li>在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点</li></ul>'
+ '</div>';
var other = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text"></textarea></div>'
+ '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text"></textarea></div>'
+ '<div class="ssl-btn pull-left mtb15" style="width:100%"><button class="btn btn-success btn-sm" onclick="SaveSSL(\''+siteName+'\')">'+lan.public.save+'</button></div></div>'
+ '<ul class="help-info-text c7 pull-left"><li>'+lan.site.bt_ssl_help_10+'</li><li>如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书</li><li>PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt</li><li>在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点</li></ul>';
switch(type){
case 'a':
$.get("/ssl?action=GetUserInfo",function(rdata){
if(rdata.status){
BTssl('b',id,siteName);
}
else{
$(".tab-con").html(a);
$("#btusername").blur(function(){
if(!(/^1(3|4|5|7|8)\d{9}$/.test($(this).val()))){
$("#btusername").css("border","1px solid #e53451");
$("#btusername").next("i").html(lan.site.phone_input);
}
else{
$("#btusername").removeAttr("style").css("width","200px");
$("#btusername").next("i").empty();
}
});
$(".btlogin").click(function(){
var data = "username="+$("#btusername").val()+"&password="+$("#btpassword").val();
$.post("/ssl?action=GetToken",data,function(tdata){
if(tdata.status){
layer.msg(tdata.msg,{icon:1});
BTssl('b',id,siteName);
}
else{
layer.msg(tdata.msg,{icon:2})
}
})
})
}
});
break;
case 'b':
$(".tab-con").html(b);
var opt = '';
$.get('/data?action=getData&table=domain&list=True&search=' + id, function(rdata) {
for(var i=0;i<rdata.length;i++){
var isIP = isValidIP(rdata[i].name);
var x = isContains(rdata[i].name, '*');
if(!isIP && !x){
opt+='<option>'+rdata[i].name+'</option>'
}
}
$("#domainlist").html(opt);
})
getSSLlist(siteName);
$(".btsslApply").click(function(){
var ym = $("#domainlist").val();
if(ym.indexOf('www.') != -1){
var len = $("#domainlist")[0].length;
var rootDomain = ym.split(/www\./)[1];
var mn = 0;
for(var i=0;i<len;i++){
if($("#domainlist")[0][i].innerText == rootDomain) mn++;
}
if(mn < 1){
layer.msg('您为域名['+ym+']申请证书,但程序检测到您没有将其根域名['+rootDomain+']绑定并解析到站点,这会导致证书签发失败!',{icon:2,time:5000});
return;
}
}
$.post("/data?action=getKey","table=sites&key=path&id="+id,function(rdata){
//第一步
var loadT = layer.msg(lan.site.ssl_apply_1,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=GetDVSSL","domain="+ym+"&path="+rdata,function(tdata){
layer.close(loadT);
if(tdata.status){
layer.msg(tdata.msg,{icon:1});
var partnerOrderId = tdata.data.partnerOrderId;
//第二步
var loadT = layer.msg(lan.site.ssl_apply_2,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=Completed","partnerOrderId="+partnerOrderId+"&siteName="+siteName,function(ydata){
layer.close(loadT);
if(!ydata.status){
layer.msg(ydata.msg,{icon:2});
getSSLlist(siteName);
return;
}
//第三步
var loadT = layer.msg(lan.site.ssl_apply_3,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=GetSSLInfo","partnerOrderId="+partnerOrderId+"&siteName="+siteName,function(zdata){
layer.close(loadT);
layer.msg(zdata.msg,{icon:zdata.status?1:2});
getSSLlist(siteName);
});
});
}
else{
layer.msg(tdata.msg,{icon:2})
}
})
})
});
break;
case 'lets':
/*
$.get("/ssl?action=GetUserInfo",function(sdata){
if(!sdata.status){
$(".tab-con").html(a);
$(".help-info-text").html("<li>"+lan.site.+"</li><li>let's Encrypt证书有效期为3个月</li><li>3个月有效期后自动续签</li>");
$("#btusername").blur(function(){
if(!(/^1(3|4|5|7|8)\d{9}$/.test($(this).val()))){
$("#btusername").css("border","1px solid #e53451");
$("#btusername").next("i").html(lan.site.phone_input);
}
else{
$("#btusername").removeAttr("style").css("width","200px");
$("#btusername").next("i").empty();
}
});
$(".btlogin").click(function(){
var data = "username="+$("#btusername").val()+"&password="+$("#btpassword").val();
$.post("/ssl?action=GetToken",data,function(tdata){
if(tdata.status){
layer.msg(tdata.msg,{icon:1});
BTssl('lets',id,siteName);
}
else{
layer.msg(tdata.msg,{icon:2})
}
})
})
}
else{}
});*/
if(getCookie('letssl') == 1){
$.post('site?action=GetSSL','siteName='+siteName,function(rdata){
if(rdata.csr === false){
setCookie('letssl',0);
BTssl(type,id,siteName);
return;
}
var lets = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.key+'</textarea></div>'
+ '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.csr+'</textarea></div>'
+ '</div>'
+ '<ul class="help-info-text c7 pull-left"><li>'+lan.site.ssl_help_2+'</li><li>'+lan.site.ssl_help_3+'</li></ul>';
$(".tab-con").html(lets);
$(".help-info-text").after("<div class='line mtb15'><button class='btn btn-default btn-sm' onclick=\"OcSSL('CloseSSLConf','"+siteName+"')\" style='margin-left:10px'>"+lan.site.ssl_close+"</button></div>");
});
return;
}
$(".tab-con").html(lets);
var opt='';
$.post('/site?action=GetSiteDomains',{id:id}, function(rdata) {
for(var i=0;i<rdata.domains.length;i++){
var isIP = isValidIP(rdata.domains[i].name);
var x = isContains(rdata.domains[i].name, '*');
if(!isIP && !x){
opt+='<li style="line-height:26px"><input type="checkbox" style="margin-right:5px; vertical-align:-2px" value="'+rdata.domains[i].name+'">'+rdata.domains[i].name+'</li>'
}
}
$("input[name='admin_email']").val(rdata.email);
$("#ymlist").html(opt);
$("#ymlist li input").click(function(e){
e.stopPropagation();
})
$("#ymlist li").click(function(){
var o = $(this).find("input");
if(o.prop("checked")){
o.prop("checked",false)
}
else{
o.prop("checked",true);
}
})
$(".letsApply").click(function(){
var c = $("#ymlist input[type='checkbox']");
var str = [];
var domains = '';
for(var i=0; i<c.length; i++){
if(c[i].checked){
str.push(c[i].value);
}
}
domains = JSON.stringify(str);
newSSL(siteName,domains);
})
});
break;
case 'other':
$(".tab-con").html(other);
var key = '';
var csr = '';
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('site?action=GetSSL','siteName='+siteName,function(rdata){
layer.close(loadT);
if(rdata.status){
$(".ssl-btn").append("<button class='btn btn-default btn-sm' onclick=\"OcSSL('CloseSSLConf','"+siteName+"')\" style='margin-left:10px'>"+lan.site.ssl_close+"</button>");
}
if(rdata.key == false) rdata.key = '';
if(rdata.csr == false) rdata.csr = '';
$("#key").val(rdata.key);
$("#csr").val(rdata.csr);
});
break;
}
table_fixed("btssl_table_list")
}
//取证书列表
function getSSLlist(siteName){
var tr='';
var loadT = layer.msg(lan.site.get_ssl_list,{icon:16,time:0,shade:0.3});
$.get("/ssl?action=GetOrderList&siteName="+siteName,function(rdata){
layer.close(loadT);
if(rdata.status){
for(var i=0;i<rdata.data.length;i++){
var txt = '';
var tips = '';
var icoask = '';
txt = (rdata.data[i].stateName == lan.site.order_success) ? '<a href="javascript:onekeySSl(\''+rdata.data[i].partnerOrderId+'\',\''+siteName+'\');" class="btlink">'+lan.site.deploy+'</a>' : '';
if(rdata.data[i].stateName == lan.site.domain_wait) {
txt = '<a href="javascript:VerifyDomain(\''+rdata.data[i].partnerOrderId+'\',\''+siteName+'\');" class="btlink">'+lan.site.domain_validate+'</a>';
//tips = lan.site.domain_check;
//icoask = '<i class="ico-font-ask" title="'+tips+'">?</i>';
}
if(rdata.data[i].setup){
txt = lan.site.deployed+' | <a class="btlink" href="javascript:OcSSL(\'CloseSSLConf\',\''+siteName+'\')">'+lan.public.close+'</a></div>';
}
tr += '<tr><td>'+rdata.data[i].commonName+'</td><td>'+getLocalTime(rdata.data[i].endtime).split(" ")[0]+'</td><td title='+tips+'>'+rdata.data[i].stateName+icoask+'</td><td class="text-right">'+txt+'</td></tr>'
}
$("#ssllist").html(tr);
}
});
}
//一键部署证书
function onekeySSl(partnerOrderId,siteName){
var loadT = layer.msg(lan.site.ssl_apply_3,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=GetSSLInfo","partnerOrderId="+partnerOrderId+"&siteName="+siteName,function(zdata){
layer.close(loadT);
layer.msg(zdata.msg,{icon:zdata.status?1:2});
getSSLlist(siteName);
})
}
//验证域名
function VerifyDomain(partnerOrderId,siteName){
var loadT = layer.msg(lan.site.ssl_apply_2,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=Completed","partnerOrderId="+partnerOrderId+'&siteName='+siteName,function(ydata){
layer.close(loadT);
if(!ydata.status){
layer.msg(ydata.msg,{icon:2});
return;
}
//第三步
var loadT = layer.msg(lan.site.ssl_apply_3,{icon:16,time:0,shade:0.3});
$.post("/ssl?action=GetSSLInfo","partnerOrderId="+partnerOrderId+"&siteName="+siteName,function(zdata){
layer.close(loadT);
if(zdata.status) getSSLlist();
layer.msg(zdata.msg,{icon:zdata.status?1:2});
});
});
}
//旧的设置SSL
function setSSL_old(siteName){
7 years ago
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
$.post('site?action=GetSSL','siteName='+siteName,function(rdata){
layer.close(loadT);
var status_selecteda ="";
var status_selectedb ="";
var status_selectedc ="";
if(rdata.key == false) rdata.key = '';
if(rdata.csr == false) rdata.csr = '';
switch(rdata.type){
case -1:
status_selecteda = "checked='checked'";
break;
case 1:
status_selectedb = "checked='checked'";
break
case 0:
status_selectedc = "checked='checked'";
default:
status_selecteda = "checked='checked'";
}
var mBody = '<div class="ssl-con c4">'
+ '<div class="ssl-type label-input-group ptb10"><label class="mr20"><input type="radio" name="type" value="0" '+status_selecteda+'/>'+lan.site.ssl_close+'</label><label class="mr20"><input type="radio" name="type" value="1" '+status_selectedb+'/>'+lan.site.lets_ssl+'</label><label><input class="otherssl" name="type" type="radio" value="2" '+status_selectedc+'>'+lan.site.use_other_ssl+'</label></div>'
+ '<div class="ssl-type-con"></div>'
+ '</div>';
var mykeyhtml = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.key+'</textarea></div>'
+ '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.csr+'</textarea></div>'
+ '<div class="ssl-btn pull-left mtb15" style="width:100%"><button class="btn btn-success btn-sm" onclick="ChangeSaveSSL(\''+siteName+'\')">'+lan.site.update_ssl+'</button></div></div>'
+ '<ul class="help-info-text c7 pull-left"><li>'+lan.site.ssl_help_2+'</li><li>'+lan.site.ssl_help_3+'</li></ul>';
var othersslhtml = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text">'+rdata.key+'</textarea></div>'
+ '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text">'+rdata.csr+'</textarea></div>'
+ '<div class="ssl-btn pull-left mtb15" style="width:100%"><button class="btn btn-success btn-sm" onclick="SaveSSL(\''+siteName+'\')">'+lan.public.save+'</button></div></div>'
+ '<ul class="help-info-text c7 pull-left"><li>'+lan.site.bt_ssl_help_10+'</li></ul>';
$("#webedit-con").html(mBody);
if(rdata.type == 1){
$(".ssl-type-con").html(mykeyhtml);
}
if(rdata.type == 0){
$(".ssl-type-con").html(othersslhtml);
}
$("input[type='radio']").click(function(){
var val = $(this).val();
if(val == 0){
OcSSL('CloseSSLConf',siteName)
}
if(val == 1){
OcSSL("CreateLet",siteName);
}
if(val == 2){
//OcSSL("CreateLet",siteName);
$(".ssl-type-con").html(othersslhtml);
}
});
});
}
//开启与关闭SSL
function OcSSL(action,siteName){
var loadT = layer.msg(lan.site.get_ssl_list,{icon:16,time:0,shade: [0.3, '#000']});
$.post("site?action="+action,'siteName='+siteName+'&updateOf=1',function(rdata){
layer.close(loadT)
if(!rdata.status){
if(!rdata.out){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
//setSSL(siteName);
7 years ago
return;
}
data = "<p>"+lan.site.get_ssl_err+":</p><hr />"
for(var i=0;i<rdata.out.length;i++){
data += "<p>"+lan.site.domain+": "+rdata.out[i].Domain+"</p>"
+ "<p>"+lan.site.err_type+": "+rdata.out[i].Type+"</p>"
+ "<p>"+lan.site.details+": "+rdata.out[i].Detail+"</p>"
+ "<hr />"
}
layer.msg(data,{icon:2,time:0,shade:0.3,shadeClose:true});
return;
}
setCookie('letssl',0);
$.post('/system?action=ServiceAdmin','name='+getCookie('serverType')+'&type=reload',function(result){
//setSSL(siteName);
7 years ago
if(!result.status) layer.msg(result.msg,{icon:2});
});
layer.msg(rdata.msg,{icon:rdata.status?1:2});
if(action == 'CloseSSLConf'){
layer.msg(lan.site.ssl_close_info,{icon:1,time:5000});
}
$(".bt-w-menu .bgw").click();
})
}
//生成SSL
function newSSL(siteName,domains){
var loadT = layer.msg(lan.site.ssl_apply_2,{icon:16,time:0,shade: [0.3, '#000']});
var force = '';
if($("#checkDomain").prop("checked")) force = '&force=true';
var email = $("input[name='admin_email']").val();
$.post('site?action=CreateLet','siteName='+siteName+'&domains='+domains+'&updateOf=1&email='+email + force,function(rdata){
layer.close(loadT)
if(rdata.status){
var mykeyhtml = '<div class="myKeyCon ptb15"><div class="ssl-con-key pull-left mr20">'+lan.site.ssl_key+'<br><textarea id="key" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.key+'</textarea></div>'
+ '<div class="ssl-con-key pull-left">'+lan.site.ssl_crt+'<br><textarea id="csr" class="bt-input-text" readonly="" style="background-color:#f6f6f6">'+rdata.csr+'</textarea></div>'
+ '</div>'
+ '<ul class="help-info-text c7 pull-left"><li>'+lan.site.ssl_help_2+'</li><li>'+lan.site.ssl_help_3+'</li></ul>';
$(".btssl").html(mykeyhtml);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
setCookie('letssl',1);
return;
}
if(!rdata.out){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
//setSSL(siteName);
7 years ago
return;
}
data = "<p>"+rdata.msg+"</p><hr />"
if(rdata.err[0].length > 10) data += '<p style="color:red;">' + rdata.err[0].replace(/\n/g,'<br>') + '</p>';
if(rdata.err[1].length > 10) data += '<p style="color:red;">' + rdata.err[1].replace(/\n/g,'<br>') + '</p>';
setCookie('letssl',0);
layer.msg(data,{icon:2,area:'500px',time:0,shade:0.3,shadeClose:true});
});
}
//保存SSL
function SaveSSL(siteName){
var data = 'type=1&siteName='+siteName+'&key='+encodeURIComponent($("#key").val())+'&csr='+encodeURIComponent($("#csr").val());
var loadT = layer.msg(lan.site.saving_txt,{icon:16,time:20000,shade: [0.3, '#000']})
$.post('site?action=setSSL',data,function(rdata){
7 years ago
layer.close(loadT);
if(rdata.status){
layer.msg(rdata.msg,{icon:1});
$(".ssl-btn").find(".btn-default").remove();
$(".ssl-btn").append("<button class='btn btn-default btn-sm' onclick=\"OcSSL('CloseSSLConf','"+siteName+"')\" style='margin-left:10px'>"+lan.site.ssl_close+"</button>");
}else{
layer.msg(rdata.msg,{icon:2,time:0,shade:0.3,shadeClose:true});
}
});
}
//更新SSL
function ChangeSaveSSL(siteName){
var loadT = layer.msg(lan.site.ssl_apply_4,{icon:16,time:0,shade: [0.3, '#000']});
$.post('site?action=CreateLet','siteName='+siteName+'&updateOf=2',function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
//PHP版本
6 years ago
function phpVersion(siteName){
6 years ago
$.post('/site/get_site_php_version','siteName='+siteName,function(version){
console.log(version);
7 years ago
if(version.status === false){
layer.msg(version.msg,{icon:5});
return;
}
6 years ago
$.post('/site/get_php_version',function(rdata){
7 years ago
var versionSelect = "<div class='webEdit-box'>\
<div class='line'>\
<span class='tname' style='width:100px'>"+lan.site.php_ver+"</span>\
<div class='info-r'>\
<select id='phpVersion' class='bt-input-text mr5' name='phpVersion' style='width:110px'>";
var optionSelect = '';
for(var i=0;i<rdata.length;i++){
optionSelect = version.phpversion == rdata[i].version?'selected':'';
versionSelect += "<option value='"+ rdata[i].version +"' "+ optionSelect +">"+ rdata[i].name +"</option>"
}
versionSelect += "</select>\
<button class='btn btn-success btn-sm' onclick=\"SetPHPVersion('"+siteName+"')\">"+lan.site.switch+"</button>\
</div>\
<span id='php_w' style='color:red;margin-left: 32px;'></span>\
</div>\
<ul class='help-info-text c7 ptb10'>\
<li>"+lan.site.switch_php_help1+"</li>\
<li>"+lan.site.switch_php_help2+"</li>\
<li>"+lan.site.switch_php_help3+"</li>\
</ul>\
</div>\
</div>";
if(version.nodejsversion){
var nodejs_checked = '';
if(version.nodejs != -1) nodejs_checked = 'checked';
versionSelect += '<div class="webEdit-box padding-10">\
<div class="linex">\
<label style="font-weight:normal">\
<input type="checkbox" name="status" onclick="Nodejs(\''+siteName+'\')" style="width:15px;height:15px;" '+nodejs_checked+' />'+lan.site.enable_nodejs+'\
</label>\
</div>\
<ul class="help-info-text c7 ptb10">\
<li>'+lan.site.nodejs_help1+' '+version.nodejsversion+'</li>\
<li>'+lan.site.nodejs_help2+'</li>\
<li>'+lan.site.nodejs_help3+'</li>\
</ul>\
</div>'
}
$("#webedit-con").html(versionSelect);
//验证PHP版本
$("select[name='phpVersion']").change(function(){
if($(this).val() == '52'){
var msgerr = 'PHP5.2在您的站点有漏洞时有跨站风险,请尽量使用PHP5.3以上版本!';
$('#php_w').text(msgerr);
}else{
$('#php_w').text('');
}
})
6 years ago
},'json');
},'json');
7 years ago
}
//设置PHP版本
function SetPHPVersion(siteName){
var data = 'version='+$("#phpVersion").val()+'&siteName='+siteName;
var loadT = layer.msg(lan.site.saving_txt,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=SetPHPVersion',data,function(rdata){
layer.close(loadT);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
});
}
//配置文件
6 years ago
function configFile(webSite){
var info = syncPost('/site/get_host_conf', {siteName:webSite});
$.post('/files/get_body','path='+info['host'],function(rdata){
7 years ago
var mBody = "<div class='webEdit-box padding-10'>\
6 years ago
<textarea style='height: 320px; width: 445px; margin-left: 20px;line-height:18px' id='configBody'>"+rdata.data.data+"</textarea>\
7 years ago
<div class='info-r'>\
6 years ago
<button id='SaveConfigFileBtn' class='btn btn-success btn-sm' style='margin-top:15px;'>保存</button>\
7 years ago
<ul class='help-info-text c7 ptb10'>\
6 years ago
<li>此处为站点主配置文件,若您不了解配置规则,请勿随意修改.</li>\
7 years ago
</ul>\
</div>\
</div>";
$("#webedit-con").html(mBody);
var editor = CodeMirror.fromTextArea(document.getElementById("configBody"), {
extraKeys: {"Ctrl-Space": "autocomplete"},
lineNumbers: true,
matchBrackets:true,
});
$(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0});
$("#SaveConfigFileBtn").click(function(){
$("#configBody").empty();
$("#configBody").text(editor.getValue());
6 years ago
saveConfigFile(webSite,rdata.data.encoding, info['host']);
7 years ago
})
6 years ago
},'json');
7 years ago
}
//保存配置文件
6 years ago
function saveConfigFile(webSite,encoding,path){
var data = 'encoding='+encoding+'&data='+encodeURIComponent($("#configBody").val())+'&path='+path;
var loadT = layer.msg('保存中...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/files/save_body',data,function(rdata){
7 years ago
layer.close(loadT);
if(rdata.status){
layer.msg(rdata.msg,{icon:1});
}else{
layer.msg(rdata.msg,{icon:2,time:0,shade:0.3,shadeClose:true});
}
6 years ago
},'json');
7 years ago
}
//伪静态
function Rewrite(siteName){
$.post("/site?action=GetRewriteList&siteName="+siteName,function(rdata){
var filename = '/www/server/panel/vhost/rewrite/'+siteName+'.conf';
if(getCookie('serverType') == 'apache') filename = rdata.sitePath+'/.htaccess';
$.post('/files?action=GetFileBody','path='+filename,function(fileBody){
var rList = '';
for(var i=0;i<rdata.rewrite.length;i++){
rList += "<option value='"+rdata.rewrite[i]+"'>"+rdata.rewrite[i]+"</option>";
}
var webBakHtml = "<div class='bt-form'>\
<div class='line'>\
<select id='myRewrite' class='bt-input-text mr20' name='rewrite' style='width:30%;'>"+rList+"</select>\
<span>"+lan.site.rule_cov_tool+"<a href='https://www.bt.cn/Tools' target='_blank' style='color:#20a53a'>"+lan.site.a_c_n+"</a>\</span></div><div class='line'>\
<textarea class='bt-input-text' style='height: 260px; width: 480px; line-height:18px;margin-top:10px;padding:5px;' id='rewriteBody'>"+fileBody.data+"</textarea></div>\
<button id='SetRewriteBtn' class='btn btn-success btn-sm'>"+lan.public.save+"</button>\
<button id='SetRewriteBtnTel' class='btn btn-success btn-sm'>"+lan.site.save_as_template+"</button>\
<ul class='help-info-text c7 ptb15'>\
<li>"+lan.site.url_rw_help_1+"</li>\
<li>"+lan.site.url_rw_help_2+"</li>\
</ul>\
</div>";
$("#webedit-con").html(webBakHtml);
var editor = CodeMirror.fromTextArea(document.getElementById("rewriteBody"), {
extraKeys: {"Ctrl-Space": "autocomplete"},
lineNumbers: true,
matchBrackets:true,
});
$(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0});
$("#SetRewriteBtn").click(function(){
$("#rewriteBody").empty();
$("#rewriteBody").text(editor.getValue());
SetRewrite(filename);
});
$("#SetRewriteBtnTel").click(function(){
$("#rewriteBody").empty();
$("#rewriteBody").text(editor.getValue());
SetRewriteTel();
});
$("#myRewrite").change(function(){
var rewriteName = $(this).val();
if(rewriteName == lan.site.rewritename){
rpath = '/www/server/panel/vhost/rewrite/'+siteName+'.conf';
if(getCookie('serverType') == 'apache') filename = rdata.sitePath+'/.htaccess';
}else{
rpath = '/www/server/panel/rewrite/' + getCookie('serverType')+'/' + rewriteName + '.conf';
}
$.post('/files?action=GetFileBody','path='+rpath,function(fileBody){
$("#rewriteBody").val(fileBody.data);
editor.setValue(fileBody.data);
});
});
});
});
}
//设置伪静态
function SetRewrite(filename){
var data = 'data='+encodeURIComponent($("#rewriteBody").val())+'&path='+filename+'&encoding=utf-8';
var loadT = layer.msg(lan.site.saving_txt,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/files?action=SaveFileBody',data,function(rdata){
layer.close(loadT);
if(rdata.status){
layer.msg(rdata.msg,{icon:1});
}else{
layer.msg(rdata.msg,{icon:2,time:0,shade:0.3,shadeClose:true});
}
});
}
var aindex = null;
//保存为模板
function SetRewriteTel(act){
if(act != undefined){
name = $("#rewriteName").val();
if(name == ''){
layer.msg(lan.site.template_empty,{icon:5});
return;
}
var data = 'data='+encodeURIComponent($("#rewriteBody").val())+'&name='+name;
var loadT = layer.msg(lan.site.saving_txt,{icon:16,time:0,shade: [0.3, '#000']});
$.post('/site?action=SetRewriteTel',data,function(rdata){
layer.close(loadT);
layer.close(aindex);
layer.msg(rdata.msg,{icon:rdata.status?1:5});
});
return;
}
aindex = layer.open({
type: 1,
shift: 5,
closeBtn: 2,
area: '320px', //宽高
title: lan.site.save_rewrite_temp,
content: '<div class="bt-form pd20 pb70">\
<div class="line">\
<input type="text" class="bt-input-text" name="rewriteName" id="rewriteName" value="" placeholder="'+lan.site.template_name+'" style="width:100%" />\
</div>\
<div class="bt-form-submit-btn">\
<button type="button" class="btn btn-danger btn-sm">'+lan.public.cancel+'</button>\
<button type="button" id="rewriteNameBtn" class="btn btn-success btn-sm" onclick="SetRewriteTel(1)">'+lan.public.ok+'</button>\
</div>\
</div>'
});
$(".btn-danger").click(function(){
layer.close(aindex);
});
$("#rewriteName").focus().keyup(function(e){
if(e.keyCode == 13) $("#rewriteNameBtn").click();
});
}
//修改默认页
7 years ago
function siteDefaultPage(){
7 years ago
stype = getCookie('serverType');
layer.open({
type: 1,
area: '460px',
title: lan.site.change_defalut_page,
closeBtn: 2,
shift: 0,
content: '<div class="changeDefault pd20">\
<button class="btn btn-default btn-sm mg10" style="width:188px" onclick="changeDefault(1)">'+lan.site.default_doc+'</button>\
<button class="btn btn-default btn-sm mg10" style="width:188px" onclick="changeDefault(2)">'+lan.site.err_404+'</button>\
<button class="btn btn-default btn-sm mg10" style="width:188px" onclick="changeDefault('+(stype=='nginx'?3:4)+')">'+(stype=='nginx'?'Nginx':'Apache')+lan.site.empty_page+'</button>\
<button class="btn btn-default btn-sm mg10" style="width:188px" onclick="changeDefault(5)">'+lan.site.default_page_stop+'</button>\
</div>'
});
}
7 years ago
7 years ago
function changeDefault(type){
var vhref='';
switch(type){
case 1:
vhref = '/www/server/panel/data/defaultDoc.html';
break;
case 2:
vhref = '/www/server/panel/data/404.html';
break;
case 3:
vhref = '/www/server/nginx/html/index.html';
break;
case 4:
vhref = '/www/server/apache/htdocs/index.html';
break;
case 5:
vhref = '/www/server/stop/index.html';
break;
}
7 years ago
onlineEditFile(0,vhref);
7 years ago
}