pull/632/head
Mr Chen 5 months ago
parent e3070b618f
commit 3894eebfb5
  1. 2
      cli.sh
  2. 20
      panel_task.py
  3. 17
      web/admin/setting/panel_ssl.py
  4. 2
      web/core/mw.py
  5. 20
      web/setting.py
  6. 2
      web/templates/default/setting.html
  7. 3
      web/thisdb/option.py
  8. 2
      web/utils/config.py
  9. 26
      web/utils/setting.py

@ -110,7 +110,7 @@ case "$1" in
mw_start_panel
;;
'task')
mw_stop
# mw_stop
mw_start_bgtask
;;
esac

@ -47,19 +47,6 @@ def writeLogs(data):
except:
pass
def mw_async(f):
def wrapper(*args, **kwargs):
thr = threading.Thread(target=f, args=args, kwargs=kwargs)
thr.start()
return wrapper
@mw_async
def restartMw():
time.sleep(1)
cmd = mw.getPanelDir() + '/scripts/init.d/mw reload &'
mw.execShell(cmd)
def downloadFile(url, filename):
# 下载文件
try:
@ -298,10 +285,11 @@ def openrestyRestartAtOnce():
# --------------------------------------Panel Restart Start --------------------------------------------- #
def restartPanelService():
restartTip = mw.getPanelDir()+'/data/restart.pl'
restart_tip = mw.getPanelDir()+'/data/restart.pl'
while True:
if os.path.exists(restartTip):
os.remove(restartTip)
if os.path.exists(restart_tip):
print("restart panel")
os.remove(restart_tip)
mw.panelCmd('restart_panel')
time.sleep(1)
# --------------------------------------Panel Restart End --------------------------------------------- #

@ -50,3 +50,20 @@ def del_panel_ssl():
choose = request.form.get('choose', '').strip()
return MwSetting.instance().delPanelSsl(choose)
# 开启面板证书
@blueprint.route('/set_panel_local_ssl', endpoint='set_panel_local_ssl', methods=['POST'])
@panel_login_required
def set_panel_local_ssl():
cert_type = request.form.get('cert_type', '').strip()
return MwSetting.instance().setPanelLocalSsl(cert_type)
@blueprint.route('/close_panel_ssl', endpoint='close_panel_ssl', methods=['POST'])
@panel_login_required
def close_panel_ssl():
return MwSetting.instance().closePanelSsl()

@ -1298,7 +1298,7 @@ def panelCmd(method):
execShell(cmd + ' ' + method)
return
cmd = mw.getPanelDir() + '/scripts/init.d/mw'
cmd = getPanelDir() + '/scripts/init.d/mw'
if os.path.exists(cmd):
data = execShell(cmd + ' ' + method)
return

@ -21,6 +21,7 @@ import os
import core.mw as mw
import utils.system as system
import thisdb
cpu_info = system.getCpuInfo()
workers = cpu_info[1]
@ -50,16 +51,15 @@ if os.path.exists(default_ipv6_file):
else:
bind.append('0.0.0.0:%s' % panel_port)
ssl_choose_file = panel_dir+'/ssl/choose.pl'
if os.path.exists(ssl_choose_file):
ssl_choose = mw.readFile(ssl_choose_file).strip()
if mw.inArray(['local','nginx'],ssl_choose):
tmp_cert = panel_dir+'/ssl/'+ssl_choose+'/cert.pem'
tmp_private = panel_dir+'/ssl/'+ssl_choose+'/private.pem'
if os.path.exists(tmp_cert) and os.path.exists(tmp_private):
certfile = tmp_cert
keyfile = tmp_private
panel_ssl_data = thisdb.getOptionByJson('panel_ssl', default={'open':False})
if panel_ssl_data['open']:
choose = panel_ssl_data['choose']
if mw.inArray(['local','nginx'],choose):
panel_cert = panel_dir+'/ssl/'+choose+'/cert.pem'
panel_private = panel_dir+'/ssl/'+choose+'/private.pem'
if os.path.exists(panel_cert) and os.path.exists(panel_private):
certfile = panel_cert
keyfile = panel_private
ciphers = 'TLSv1 TLSv1.1 TLSv1.2 TLSv1.3'
ssl_version = 2

@ -113,7 +113,7 @@
<p class="mtb15">
<span class="set-tit text-right" title="面板SSL" style="float: left;">面板SSL</span>
<input id="cfg_ssl" name="bind_ssl" class="btswitch btswitch-ios" type="checkbox" {{data['ssl']}}>
<input id="cfg_ssl" name="bind_ssl" class="btswitch btswitch-ios" type="checkbox" {% if data['panel_ssl']['open'] %}checked{% endif %}>
<label class="btswitch-btn ml5" for="cfg_ssl" style="float: left;margin-top:4px;"></label>
<button ype="button" class="btn btn-default btn-xs panel_api_btn" style="vertical-align: middle; margin-left: 10px" onclick="getPanelSSL();">面板SSL配置</button>
<span class="set-info c7">为面板设置https协议访问,提升面板访问<b style="color: red;">安全性</b></span>

@ -63,5 +63,4 @@ def setOption(name, value,
'type':type,
'value':value
}
mw.M('option').insert(add_option)
return True
return mw.M('option').insert(add_option)

@ -83,5 +83,7 @@ def getGlobalVar():
# 邮件通知设置
data['notify_email'] = thisdb.getOptionByJson('notify_email', default={'open':False}, type='notify')
data['notify_tgbot'] = thisdb.getOptionByJson('notify_tgbot', default={'open':False}, type='notify')
data['panel_ssl'] = thisdb.getOptionByJson('panel_ssl', default={'open':False})
return data

@ -13,6 +13,7 @@ import re
import threading
import re
import time
import json
import core.mw as mw
import thisdb
@ -164,21 +165,34 @@ class setting(object):
return mw.returnData(False, '未知类型!')
# 面板本地SSL设置
def setPanelLocalSsl(self):
pdir = mw.getPanelDir()
def setPanelLocalSsl(self, cert_type):
panel_ssl_data = thisdb.getOptionByJson('panel_ssl', default={'open':False})
if not panel_ssl_data['open']:
panel_ssl_data['open'] = True
pdir = mw.getPanelDir()
cert = {}
keyPath = pdir+'/ssl/local/private.pem'
certPath = pdir+'/ssl/local/cert.pem'
if not os.path.exists(certPath):
mw.createLocalSSL()
choose_file = self.__file['ssl']
mw.writeFile(choose_file, 'local')
panel_ssl_data['choose'] = 'local'
thisdb.setOption('panel_ssl', json.dumps(panel_ssl_data))
mw.restartMw()
return mw.returnData(True, '设置成功')
def closePanelSsl(self):
panel_ssl_data = thisdb.getOptionByJson('panel_ssl', default={'open':False})
if panel_ssl_data['open']:
panel_ssl_data['open'] = False
thisdb.setOption('panel_ssl', json.dumps(panel_ssl_data))
mw.restartMw()
return mw.returnJson(True, '设置成功')
return mw.returnData(True, '设置成功')
# 申请面板let证书
# def applyPanelAcmeSsl(self):

Loading…
Cancel
Save