pull/109/head
midoks 6 years ago
parent a29ec6398e
commit 31b12b8934
  1. 42
      class/core/site_api.py
  2. 65
      route/static/app/site.js

@ -22,6 +22,8 @@ class site_api:
setupPath = None # 安装路径 setupPath = None # 安装路径
isWriteLogs = None # 是否写日志 isWriteLogs = None # 是否写日志
sslDir = None
def __init__(self): def __init__(self):
self.setupPath = public.getServerDir() self.setupPath = public.getServerDir()
path = self.setupPath + '/openresty/nginx/conf/vhost' path = self.setupPath + '/openresty/nginx/conf/vhost'
@ -31,9 +33,22 @@ class site_api:
if not os.path.exists(path): if not os.path.exists(path):
public.execShell("mkdir -p " + path + " && chmod -R 755 " + path) public.execShell("mkdir -p " + path + " && chmod -R 755 " + path)
self.sslDir = public.getServerDir() + '/letsencrypt'
##### ----- start ----- ### ##### ----- start ----- ###
def listApi(self): def listApi(self):
return self.list() _list = public.M('sites').where('', ()).field(
'id,name,path,status,ps,addtime,edate').limit('0,5').order('id desc').select()
_ret = {}
_ret['data'] = _list
count = public.M('sites').where('', ()).count()
_page = {}
_page['count'] = count
_page['tojs'] = 'getWeb'
_ret['page'] = public.getPage(_page)
return public.getJson(_ret)
def getPhpVersionApi(self): def getPhpVersionApi(self):
return self.getPhpVersion() return self.getPhpVersion()
@ -130,7 +145,7 @@ class site_api:
if siteConf.find('301-START') != -1: if siteConf.find('301-START') != -1:
return public.returnJson(False, '检测到您的站点做了301重定向设置,请先关闭重定向!') return public.returnJson(False, '检测到您的站点做了301重定向设置,请先关闭重定向!')
letpath = '/etc/letsencrypt/live/' + siteName letpath = public.getServerDir() + '/letsencrypt/live/' + siteName
csrpath = letpath + "/fullchain.pem" # 生成证书路径 csrpath = letpath + "/fullchain.pem" # 生成证书路径
keypath = letpath + "/privkey.pem" # 密钥文件路径 keypath = letpath + "/privkey.pem" # 密钥文件路径
@ -212,11 +227,11 @@ class site_api:
home_cert = home_path + '/fullchain.cer' home_cert = home_path + '/fullchain.cer'
home_key = home_path + '/' + domains[0] + '.key' home_key = home_path + '/' + domains[0] + '.key'
print home_cert
cmd = 'export ACCOUNT_EMAIL=' + email + ' && ' + execStr cmd = 'export ACCOUNT_EMAIL=' + email + ' && ' + execStr
result = public.execShell(cmd) result = public.execShell(cmd)
print home_cert
if not os.path.exists(home_cert.replace("\*", "*")): if not os.path.exists(home_cert.replace("\*", "*")):
data = {} data = {}
data['err'] = result data['err'] = result
@ -253,11 +268,6 @@ class site_api:
result['key'] = public.readFile(keypath) result['key'] = public.readFile(keypath)
public.restartWeb() public.restartWeb()
print execStr
print domains
print file
print result[0]
print result[1]
return public.getJson(True, 'OK') return public.getJson(True, 'OK')
def getIndexApi(self): def getIndexApi(self):
@ -507,20 +517,6 @@ class site_api:
def getIndexConf(self): def getIndexConf(self):
return public.getServerDir() + '/openresty/nginx/conf/nginx.conf' return public.getServerDir() + '/openresty/nginx/conf/nginx.conf'
def list(self):
_list = public.M('sites').where('', ()).field(
'id,name,path,status,ps,addtime,edate').limit('0,5').order('id desc').select()
_ret = {}
_ret['data'] = _list
count = public.M('sites').where('', ()).count()
_page = {}
_page['count'] = count
_page['tojs'] = 'getWeb'
_ret['page'] = public.getPage(_page)
return public.getJson(_ret)
def getDomain(self, pid): def getDomain(self, pid):
_list = public.M('domain').where("pid=?", (pid,)).field( _list = public.M('domain').where("pid=?", (pid,)).field(
'id,pid,name,port,addtime').select() 'id,pid,name,port,addtime').select()

@ -1564,32 +1564,42 @@ function setSSL(id,siteName){
// } // }
// }); // });
} }
//关闭SSL //关闭SSL
function closeSSL(siteName){ function closeSSL(siteName){
var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']}); var txt = "<div class='mtb15' style='line-height:30px'>本站点未设置SSL如需设置SSL请选择切换类目申请开启SSL<br/>\
$.post('site?action=GetSSL','siteName='+siteName,function(rdata){ <p style='color:red;'>关闭SSL以后,请务必清除浏览器缓存再访问站点</p>\
layer.close(loadT); </div>";
switch(rdata.type){ setCookie('letssl',0);
case -1: $(".tab-con").html(txt);
var txt = "<div class='mtb15' style='line-height:30px'>"+lan.site.ssl_help_1+"</div>"; }
setCookie('letssl',0);
$(".tab-con").html(txt); // function closeSSL(siteName){
break; // var loadT = layer.msg(lan.site.the_msg,{icon:16,time:0,shade: [0.3, '#000']});
case 1: // $.post('site?action=GetSSL','siteName='+siteName,function(rdata){
var txt = "Let's Encrypt"; // layer.close(loadT);
closeSSLHTML(txt,siteName); // switch(rdata.type){
break; // case -1:
case 0: // var txt = "<div class='mtb15' style='line-height:30px'>"+lan.site.ssl_help_1+"</div>";
var txt = lan.site.other; // setCookie('letssl',0);
closeSSLHTML(txt,siteName); // $(".tab-con").html(txt);
break; // break;
case 2: // case 1:
var txt = lan.site.bt_ssl; // var txt = "Let's Encrypt";
closeSSLHTML(txt,siteName); // closeSSLHTML(txt,siteName);
break; // 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 //设置httpToHttps
function httpToHttps(siteName){ function httpToHttps(siteName){
@ -1619,11 +1629,6 @@ function opSSL(type,id,siteName){
+ '<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>域名</th><th>到期时间</th><th>状态<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">操作</th></tr></thead><tbody id="ssllist"></tbody></table></div></div></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>域名</th><th>到期时间</th><th>状态<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">操作</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>' + '<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>'; + '</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 lets = '<div class="btssl"><div class="label-input-group">' var lets = '<div class="btssl"><div class="label-input-group">'
+ '<div class="line mtb10"><form><span class="tname text-center">验证方式</span><div style="margin-top:7px;display:inline-block"><input type="radio" name="c_type" onclick="file_check()" id="check_file" checked="checked" /><label class="mr20" for="check_file" style="font-weight:normal">文件验证</label><input type="radio" onclick="dns_check()" name="c_type" id="check_dns" /><label class="mr20" for="check_dns" style="font-weight:normal">DNS验证</label></div></form></div>' + '<div class="line mtb10"><form><span class="tname text-center">验证方式</span><div style="margin-top:7px;display:inline-block"><input type="radio" name="c_type" onclick="file_check()" id="check_file" checked="checked" /><label class="mr20" for="check_file" style="font-weight:normal">文件验证</label><input type="radio" onclick="dns_check()" name="c_type" id="check_dns" /><label class="mr20" for="check_dns" style="font-weight:normal">DNS验证</label></div></form></div>'

Loading…
Cancel
Save