mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
- 吹水组 - https://t.me/mdserver_web
|
- 吹水组 - https://t.me/mdserver_web
|
||||||
- 交流论坛 - https://bbs.midoks.icu
|
- 交流论坛 - https://bbs.midoks.icu
|
||||||
|
- WhatApp - https://chat.whatsapp.com/LmlwFSzah8EAIHbnVT4aWV
|
||||||
|
|
||||||
```
|
```
|
||||||
如果出现问题,最好私给我面板信息。不要让我猜。如果不提供,不要提出问题,自行解决。 — 座右铭
|
如果出现问题,最好私给我面板信息。不要让我猜。如果不提供,不要提出问题,自行解决。 — 座右铭
|
||||||
|
|||||||
+21
-21
@@ -241,7 +241,7 @@ class config_api:
|
|||||||
backup_path = request.form.get('backup_path', '')
|
backup_path = request.form.get('backup_path', '')
|
||||||
|
|
||||||
if domain != '':
|
if domain != '':
|
||||||
reg = "^([\w\-\*]{1,100}\.){1,4}(\w{1,10}|\w{1,10}\.\w{1,10})$"
|
reg = "^([\\w\\-\\*]{1,100}\\.){1,4}(\\w{1,10}|\\w{1,10}\\.\\w{1,10})$"
|
||||||
if not re.match(reg, domain):
|
if not re.match(reg, domain):
|
||||||
return mw.returnJson(False, '主域名格式不正确')
|
return mw.returnJson(False, '主域名格式不正确')
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@ class config_api:
|
|||||||
return mw.returnJson(False, '安全入口地址长度不能小于6位!')
|
return mw.returnJson(False, '安全入口地址长度不能小于6位!')
|
||||||
if admin_path in admin_path_checks:
|
if admin_path in admin_path_checks:
|
||||||
return mw.returnJson(False, '该入口已被面板占用,请使用其它入口!')
|
return mw.returnJson(False, '该入口已被面板占用,请使用其它入口!')
|
||||||
if not re.match("^/[\w\./-_]+$", admin_path):
|
if not re.match("^/[\\w\\./-_]+$", admin_path):
|
||||||
return mw.returnJson(False, '入口地址格式不正确,示例: /mw_rand')
|
return mw.returnJson(False, '入口地址格式不正确,示例: /mw_rand')
|
||||||
# else:
|
# else:
|
||||||
# domain = mw.readFile('data/bind_domain.pl')
|
# domain = mw.readFile('data/bind_domain.pl')
|
||||||
@@ -447,9 +447,9 @@ class config_api:
|
|||||||
else:
|
else:
|
||||||
conf = mw.readFile(panel_ssl)
|
conf = mw.readFile(panel_ssl)
|
||||||
if conf:
|
if conf:
|
||||||
rep = "\n\s*#HTTP_TO_HTTPS_START(.|\n){1,300}#HTTP_TO_HTTPS_END"
|
rep = "\n\\s*#HTTP_TO_HTTPS_START(.|\n){1,300}#HTTP_TO_HTTPS_END"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+if.+server_port.+\n.+\n\s+\s*}"
|
rep = "\\s+if.+server_port.+\n.+\n\\s+\\s*}"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
mw.writeFile(panel_ssl, conf)
|
mw.writeFile(panel_ssl, conf)
|
||||||
|
|
||||||
@@ -586,35 +586,35 @@ class config_api:
|
|||||||
|
|
||||||
conf = mw.readFile(dst_panel_path)
|
conf = mw.readFile(dst_panel_path)
|
||||||
if conf:
|
if conf:
|
||||||
rep = "\s+ssl_certificate\s+.+;\s+ssl_certificate_key\s+.+;"
|
rep = "\\s+ssl_certificate\\s+.+;\\s+ssl_certificate_key\\s+.+;"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_protocols\s+.+;\n"
|
rep = "\\s+ssl_protocols\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_ciphers\s+.+;\n"
|
rep = "\\s+ssl_ciphers\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_prefer_server_ciphers\s+.+;\n"
|
rep = "\\s+ssl_prefer_server_ciphers\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_session_cache\s+.+;\n"
|
rep = "\\s+ssl_session_cache\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_session_timeout\s+.+;\n"
|
rep = "\\s+ssl_session_timeout\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_ecdh_curve\s+.+;\n"
|
rep = "\\s+ssl_ecdh_curve\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_session_tickets\s+.+;\n"
|
rep = "\\s+ssl_session_tickets\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_stapling\s+.+;\n"
|
rep = "\\s+ssl_stapling\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl_stapling_verify\s+.+;\n"
|
rep = "\\s+ssl_stapling_verify\\s+.+;\n"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+ssl\s+on;"
|
rep = "\\s+ssl\\s+on;"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+error_page\s497.+;"
|
rep = "\\s+error_page\\s497.+;"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+if.+server_port.+\n.+\n\s+\s*}"
|
rep = "\\s+if.+server_port.+\n.+\n\\s+\\s*}"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+listen\s+443.*;"
|
rep = "\\s+listen\\s+443.*;"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
rep = "\s+listen\s+\[\:\:\]\:443.*;"
|
rep = "\\s+listen\\s+\\[\\:\\:\\]\\:443.*;"
|
||||||
conf = re.sub(rep, '', conf)
|
conf = re.sub(rep, '', conf)
|
||||||
mw.writeFile(dst_panel_path, conf)
|
mw.writeFile(dst_panel_path, conf)
|
||||||
|
|
||||||
@@ -645,7 +645,7 @@ class config_api:
|
|||||||
|
|
||||||
conf = conf.replace('#error_page 404/404.html;', sslStr)
|
conf = conf.replace('#error_page 404/404.html;', sslStr)
|
||||||
|
|
||||||
rep = "listen\s+([0-9]+)\s*[default_server]*;"
|
rep = "listen\\s+([0-9]+)\\s*[default_server]*;"
|
||||||
tmp = re.findall(rep, conf)
|
tmp = re.findall(rep, conf)
|
||||||
if not mw.inArray(tmp, '443'):
|
if not mw.inArray(tmp, '443'):
|
||||||
listen = re.search(rep, conf).group()
|
listen = re.search(rep, conf).group()
|
||||||
@@ -761,7 +761,7 @@ class config_api:
|
|||||||
|
|
||||||
def setStatusCodeApi(self):
|
def setStatusCodeApi(self):
|
||||||
status_code = request.form.get('status_code', '').strip()
|
status_code = request.form.get('status_code', '').strip()
|
||||||
if re.match("^\d+$", status_code):
|
if re.match("^\\d+$", status_code):
|
||||||
status_code = int(status_code)
|
status_code = int(status_code)
|
||||||
if status_code != 0:
|
if status_code != 0:
|
||||||
if status_code < 100 or status_code > 999:
|
if status_code < 100 or status_code > 999:
|
||||||
|
|||||||
+7
-7
@@ -246,7 +246,7 @@ def isInstalledWeb():
|
|||||||
|
|
||||||
def isIpAddr(ip):
|
def isIpAddr(ip):
|
||||||
check_ip = re.compile(
|
check_ip = re.compile(
|
||||||
'^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
|
'^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$')
|
||||||
if check_ip.match(ip):
|
if check_ip.match(ip):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -1176,10 +1176,10 @@ def getLocalIpBack():
|
|||||||
url = 'http://pv.sohu.com/cityjson?ie=utf-8'
|
url = 'http://pv.sohu.com/cityjson?ie=utf-8'
|
||||||
req = urllib.request.urlopen(url, timeout=10)
|
req = urllib.request.urlopen(url, timeout=10)
|
||||||
content = req.read().decode('utf-8')
|
content = req.read().decode('utf-8')
|
||||||
ipaddress = re.search('\d+.\d+.\d+.\d+', content).group(0)
|
ipaddress = re.search('\\d+.\\d+.\\d+.\\d+', content).group(0)
|
||||||
writeFile(filename, ipaddress)
|
writeFile(filename, ipaddress)
|
||||||
|
|
||||||
ipaddress = re.search('\d+.\d+.\d+.\d+', ipaddress).group(0)
|
ipaddress = re.search('\\d+.\\d+.\\d+.\\d+', ipaddress).group(0)
|
||||||
return ipaddress
|
return ipaddress
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
# print(ex)
|
# print(ex)
|
||||||
@@ -1244,7 +1244,7 @@ def checkIp(ip):
|
|||||||
# 检查是否为IPv4地址
|
# 检查是否为IPv4地址
|
||||||
import re
|
import re
|
||||||
p = re.compile(
|
p = re.compile(
|
||||||
'^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')
|
'^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$')
|
||||||
if p.match(ip):
|
if p.match(ip):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -1382,13 +1382,13 @@ def getCpuType():
|
|||||||
|
|
||||||
# 取CPU类型
|
# 取CPU类型
|
||||||
cpuinfo = open('/proc/cpuinfo', 'r').read()
|
cpuinfo = open('/proc/cpuinfo', 'r').read()
|
||||||
rep = "model\s+name\s+:\s+(.+)"
|
rep = "model\\s+name\\s+:\\s+(.+)"
|
||||||
tmp = re.search(rep, cpuinfo, re.I)
|
tmp = re.search(rep, cpuinfo, re.I)
|
||||||
if tmp:
|
if tmp:
|
||||||
cpuType = tmp.groups()[0]
|
cpuType = tmp.groups()[0]
|
||||||
else:
|
else:
|
||||||
cpuinfo = execShell('LANG="en_US.UTF-8" && lscpu')[0]
|
cpuinfo = execShell('LANG="en_US.UTF-8" && lscpu')[0]
|
||||||
rep = "Model\s+name:\s+(.+)"
|
rep = "Model\\s+name:\\s+(.+)"
|
||||||
tmp = re.search(rep, cpuinfo, re.I)
|
tmp = re.search(rep, cpuinfo, re.I)
|
||||||
if tmp:
|
if tmp:
|
||||||
cpuType = tmp.groups()[0]
|
cpuType = tmp.groups()[0]
|
||||||
@@ -1772,7 +1772,7 @@ def getSSHPort():
|
|||||||
try:
|
try:
|
||||||
file = '/etc/ssh/sshd_config'
|
file = '/etc/ssh/sshd_config'
|
||||||
conf = readFile(file)
|
conf = readFile(file)
|
||||||
rep = "(#*)?Port\s+([0-9]+)\s*\n"
|
rep = "(#*)?Port\\s+([0-9]+)\\s*\n"
|
||||||
port = re.search(rep, conf).groups(0)[1]
|
port = re.search(rep, conf).groups(0)[1]
|
||||||
return int(port)
|
return int(port)
|
||||||
except:
|
except:
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ if [ ! -d $GIT_PROJECT_DIR ];then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
unset GIT_DIR
|
unset GIT_DIR
|
||||||
git config pull.rebase false
|
|
||||||
|
git config pull.rebase true
|
||||||
|
git config credential.helper store
|
||||||
|
|
||||||
cd $GIT_PROJECT_DIR && git pull
|
cd $GIT_PROJECT_DIR && git pull
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,8 @@
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
resetPluginWinWidth(700);
|
resetPluginWinWidth(800);
|
||||||
|
resetPluginWinHeight(400);
|
||||||
// $.getScript("/plugins/file?name=rsyncd&f=js/base64.js", function() {
|
// $.getScript("/plugins/file?name=rsyncd&f=js/base64.js", function() {
|
||||||
// console.log('base64 load');
|
// console.log('base64 load');
|
||||||
// });
|
// });
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
|
|||||||
# 信号只在一个周期内执行一次|end
|
# 信号只在一个周期内执行一次|end
|
||||||
|
|
||||||
# https://t.me/gjgzs2022 | 22/m | @GJ_gzs
|
# https://t.me/gjgzs2022 | 22/m | @GJ_gzs
|
||||||
# zhaoziyuan1.cc | web | 15/m | 2m | next,5/15 | @baleite
|
# https://zhaoziyuan1.cc | web | 15/m | 2m | next,5/15 | @baleite
|
||||||
# 综合包网/NG接口开户 | 28/m | 3m | next,4/28 | @aabbcx888
|
# 综合包网/NG接口开户 | 28/m | 3m | next,4/28 | @aabbcx888
|
||||||
# 实名认证/过人脸🕵️♀️各种账号处理✅ | 30/m| next,6/30 | @nngzs
|
# 实名认证/过人脸🕵️♀️各种账号处理✅ | 30/m| next,6/30 | @nngzs
|
||||||
# 海外服务器 高防CDN 解决移动屏蔽 | 19/m | next,2/19 | @YYCDNFW
|
# 海外服务器 高防CDN 解决移动屏蔽 | 19/m | next,2/19 | @YYCDNFW
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ def mwcli(mw_input=0):
|
|||||||
|
|
||||||
def open_ssh_port():
|
def open_ssh_port():
|
||||||
import firewall_api
|
import firewall_api
|
||||||
find_ssh_port_cmd = "cat /etc/ssh/sshd_config | grep '^Port \d*' | tail -1"
|
find_ssh_port_cmd = "cat /etc/ssh/sshd_config | grep '^Port \\d*' | tail -1"
|
||||||
cmd_data = mw.execShell(find_ssh_port_cmd)
|
cmd_data = mw.execShell(find_ssh_port_cmd)
|
||||||
ssh_port = cmd_data[0].replace("Port ", '').strip()
|
ssh_port = cmd_data[0].replace("Port ", '').strip()
|
||||||
if ssh_port == '':
|
if ssh_port == '':
|
||||||
|
|||||||
Reference in New Issue
Block a user