mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
up
This commit is contained in:
@@ -117,6 +117,10 @@ def requestCheck():
|
||||
basic_pwd = mw.md5(auth.password.strip() + salt)
|
||||
if basic_user != basic_auth['basic_user'] or basic_pwd != basic_auth['basic_pwd']:
|
||||
return sendAuthenticated()
|
||||
|
||||
domain_check = mw.checkDomainPanel()
|
||||
if domain_check:
|
||||
return domain_check
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -57,11 +57,22 @@ 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()
|
||||
|
||||
# 设置面板域名
|
||||
@blueprint.route('/set_panel_domain', endpoint='set_panel_domain', methods=['POST'])
|
||||
@panel_login_required
|
||||
def set_panel_domain():
|
||||
domain = request.form.get('domain', '').strip()
|
||||
return MwSetting.instance().setPanelDomain(domain)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -420,10 +420,62 @@ def getFileMd5(filename):
|
||||
return myhash.hexdigest()
|
||||
|
||||
|
||||
def getHost(port=False):
|
||||
from flask import request
|
||||
host_tmp = request.headers.get('host')
|
||||
if not host_tmp:
|
||||
if request.url_root:
|
||||
tmp = re.findall(r"(https|http)://([\w:\.-]+)", request.url_root)
|
||||
if tmp:
|
||||
host_tmp = tmp[0][1]
|
||||
if not host_tmp:
|
||||
host_tmp = getLocalIp() + ':' + readFile('data/port.pl').strip()
|
||||
try:
|
||||
if host_tmp.find(':') == -1:
|
||||
host_tmp += ':80'
|
||||
except:
|
||||
host_tmp = "127.0.0.1:8888"
|
||||
h = host_tmp.split(':')
|
||||
if port:
|
||||
return h[-1]
|
||||
return ':'.join(h[0:-1])
|
||||
|
||||
def getClientIp():
|
||||
from flask import request
|
||||
return request.remote_addr.replace('::ffff:', '')
|
||||
|
||||
def checkDomainPanel():
|
||||
import thisdb
|
||||
from flask import Flask, redirect, request, url_for
|
||||
current_host = getHost()
|
||||
|
||||
domain = thisdb.getOption('panel_domain', default='')
|
||||
port = getPanelPort()
|
||||
scheme = 'http'
|
||||
|
||||
panel_ssl_data = thisdb.getOptionByJson('panel_ssl', default={'open':False})
|
||||
if panel_ssl_data['open']:
|
||||
choose = panel_ssl_data['choose']
|
||||
if not inArray(['local','nginx'], choose):
|
||||
return False
|
||||
scheme = 'https'
|
||||
|
||||
client_ip = getClientIp()
|
||||
if client_ip in ['127.0.0.1', 'localhost', '::1']:
|
||||
return False
|
||||
|
||||
ip = getHostAddr()
|
||||
if domain == '':
|
||||
if current_host.strip().lower() != ip.strip().lower():
|
||||
to = scheme + "://" + ip + ":" + str(port)
|
||||
return redirect(to, code=302)
|
||||
return False
|
||||
else:
|
||||
if current_host.strip().lower() != domain.strip().lower():
|
||||
to = scheme + "://" + domain + ":" + str(port)
|
||||
return redirect(to, code=302)
|
||||
return False
|
||||
|
||||
def getLocalIp():
|
||||
filename = getPanelDir()+'/data/iplist.txt'
|
||||
try:
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
<p class="mtb15">
|
||||
<span class="set-tit text-right" title="绑定域名" style="float: left;">绑定域名</span>
|
||||
<input name="bind_domain" class="inputtxt bt-input-text" type="text" value="{{data['bind_domain']}}">
|
||||
<input name="bind_domain" class="inputtxt bt-input-text" type="text" value="{{data['panel_domain']}}">
|
||||
<button type="button" class="btn btn-success btn-sm ml5 btn_bind_domain" disabled>保存</button>
|
||||
<span class="set-info c7">为面板绑定一个访问域名,<b style="color: red;">注意:一旦绑定域名,只能通过域名访问面板</b></span>
|
||||
</p>
|
||||
|
||||
@@ -85,5 +85,7 @@ def getGlobalVar():
|
||||
data['notify_tgbot'] = thisdb.getOptionByJson('notify_tgbot', default={'open':False}, type='notify')
|
||||
|
||||
data['panel_ssl'] = thisdb.getOptionByJson('panel_ssl', default={'open':False})
|
||||
data['panel_domain'] = thisdb.getOption('panel_domain', default='')
|
||||
|
||||
|
||||
return data
|
||||
+19
-1
@@ -270,4 +270,22 @@ class setting(object):
|
||||
|
||||
# if is_already_apply:
|
||||
# return mw.returnJson(True, '重复申请!', data)
|
||||
# return mw.returnJson(True, '申请成功!', data)
|
||||
# return mw.returnJson(True, '申请成功!', data)
|
||||
|
||||
def setPanelDomain(self, domain):
|
||||
port = mw.getPanelPort()
|
||||
ip = mw.getLocalIp()
|
||||
|
||||
panel_domain = thisdb.getOption('panel_domain', default='')
|
||||
if domain == '':
|
||||
to_panel_url = 'http://'+ip+":"+str(port)+'/setting/index'
|
||||
thisdb.setOption('panel_domain', '')
|
||||
mw.restartMw()
|
||||
return mw.returnData(True, '清空域名成功!', to_panel_url)
|
||||
|
||||
thisdb.setOption('panel_domain', domain)
|
||||
to_panel_url = 'http://'+domain+":"+str(port)+'/setting/index'
|
||||
mw.restartMw()
|
||||
return mw.returnData(True, '设置域名成功!',to_panel_url)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user