Compare commits

..
71 Commits
Author SHA1 Message Date
Mr Chen b31d30bb31 Merge pull request #542 from midoks/dev
0.16.6
2024-04-17 01:52:02 +08:00
Mr Chen 0670b7f338 Update README.md 2024-04-17 01:49:06 +08:00
Mr Chen c25ecc9db2 Update config_api.py 2024-04-17 01:41:21 +08:00
Mr Chen d0d75f4526 Update site_api.py 2024-04-17 01:37:50 +08:00
Mr Chen 539857919a Update site_api.py 2024-04-17 01:20:34 +08:00
Mr Chen 5139cacce8 Update install.sh 2024-04-17 00:59:06 +08:00
Mr Chen 222c4c6d58 Update site_api.py 2024-04-17 00:53:33 +08:00
Mr Chen c2d6f5408d Update site_api.py 2024-04-17 00:50:06 +08:00
Mr Chen d3a5b9874b Update site_api.py 2024-04-17 00:43:23 +08:00
Mr Chen 87da2b9fc5 443同时开启tcp/udp 2024-04-16 23:41:06 +08:00
Mr Chen a3a40c830b Update install.sh 2024-04-16 23:11:17 +08:00
Mr Chen d30ff5b882 Update install.sh 2024-04-16 23:10:30 +08:00
Mr Chen 8a0e4122f3 Update install.sh 2024-04-16 23:00:42 +08:00
Mr Chen 0766ad0063 update 2024-04-16 22:58:18 +08:00
Mr Chen 04823f656a Update site_api.py 2024-04-16 22:19:05 +08:00
Mr Chen 5d50b3664d Update install.sh 2024-04-16 21:43:16 +08:00
Mr Chen 889c5d96e5 Update bcmath.sh 2024-04-16 21:25:29 +08:00
Mr Chen c6ac7e90df Revert "Update requirements.txt"
This reverts commit 28fe1950c4.
2024-04-16 19:38:51 +08:00
Mr Chen 28fe1950c4 Update requirements.txt 2024-04-16 19:38:25 +08:00
Mr Chen 4a9baeb924 Merge pull request #541 from midoks/dev
修复
2024-04-16 15:59:38 +08:00
Mr Chen 3e6a2e148c Update files.js 2024-04-16 15:58:46 +08:00
Mr Chen 79ec3b2ec0 Update push_notice_msg.py 2024-04-16 14:47:57 +08:00
Mr Chen 4b7b8aa801 Update args.json 2024-04-15 22:38:53 +08:00
Mr Chen 66ea1b7f5b Update cookie.json 2024-04-15 22:37:53 +08:00
Mr Chen a9b703c6ee Update post.json 2024-04-15 22:36:45 +08:00
Mr Chen 00b57bc1c0 Update user_agent.json 2024-04-15 22:34:50 +08:00
Mr Chen 47cfe6ee04 Update user_agent.json 2024-04-15 22:34:10 +08:00
Mr Chen 2b9c47b79c Update user_agent.json 2024-04-15 22:33:52 +08:00
Mr Chen 540fb5a11f Merge pull request #539 from midoks/dev
0.16.5
2024-04-15 17:02:43 +08:00
Mr Chen 5dca6bfb80 update 2024-04-15 17:01:23 +08:00
Mr Chen 8439fcbe98 Update config_api.py 2024-04-15 16:58:13 +08:00
Mr Chen 6cee6f4785 Update info.json 2024-04-15 16:48:20 +08:00
Mr Chen 6a067ad457 Update README.md 2024-04-15 14:23:42 +08:00
Mr Chen 691aba1f2a Update config_api.py 2024-04-15 14:12:45 +08:00
Mr Chen 6446a7053e https://github.com/midoks/mdserver-web/discussions/536 2024-04-15 14:11:45 +08:00
Mr Chen 040c66cdc3 Update site.css 2024-04-15 02:01:57 +08:00
Mr Chen c8d02eaa85 Update files.html 2024-04-15 02:01:52 +08:00
Mr Chen 59bbd99ba4 Update cert_api.py 2024-04-15 00:42:38 +08:00
Mr Chen c8d86fa835 Update cert_api.py 2024-04-15 00:27:46 +08:00
Mr Chen e629a82ed9 Update cert_api.py 2024-04-15 00:21:58 +08:00
Mr Chen fb0a771c81 Update cert_request.py 2024-04-15 00:11:02 +08:00
Mr Chen 891cd56163 Update config.json 2024-04-13 11:56:49 +08:00
Mr Chen 0714780938 Update zip.sh 2024-04-12 21:36:52 +08:00
Mr Chen 0a11f17d90 Update phplib.conf 2024-04-12 21:34:44 +08:00
Mr Chen e22722f40e Update cert_api.py 2024-04-10 22:07:09 +08:00
Mr Chen 519544715f Update README.md 2024-04-09 16:00:09 +08:00
Mr Chen 6d34061402 Merge pull request #535 from midoks/dev
优化
2024-04-05 02:31:50 +08:00
Mr Chen 119928d9df 优化
* 任务日志查看优化。
* 优化MySQL打开phpMyAdmin速度。
2024-04-05 02:31:05 +08:00
Mr Chen 022dfe31d4 update 2024-04-05 02:28:03 +08:00
Mr Chen c2011eedf9 Update mysql.js 2024-04-05 02:23:01 +08:00
Mr Chen b77d549b34 Update mysql.js 2024-04-05 02:19:24 +08:00
Mr Chen 0b3bcafec7 update 2024-04-05 02:18:02 +08:00
Mr Chen 4e12548978 Update mysql.js 2024-04-05 02:08:00 +08:00
Mr Chen bf7de761c8 update 2024-04-05 02:06:19 +08:00
Mr Chen bfc96e925f Update mysql.js 2024-04-05 01:57:06 +08:00
Mr Chen de1da98e92 Update index.py 2024-04-05 01:55:35 +08:00
Mr Chen d4edc449a2 Update index.py 2024-04-05 01:53:41 +08:00
Mr Chen a03d4e7dda Update index.py 2024-04-05 01:50:27 +08:00
Mr Chen 4351367e32 update 2024-04-05 01:49:34 +08:00
Mr Chen 0ec628f5e2 update 2024-04-05 01:28:47 +08:00
Mr Chen a94ef37b49 Update config_api.py 2024-04-05 01:17:19 +08:00
Mr Chen cf8729a6ac Update crontab.js 2024-04-05 01:16:49 +08:00
Mr Chen 3688456ea0 Update install.sh 2024-04-04 18:14:42 +08:00
Mr Chen 47c64e7212 Update site_api.py 2024-04-04 17:59:35 +08:00
Mr Chen e653f76608 Update info.json 2024-04-04 17:48:41 +08:00
Mr Chen d40d0001bf Update install.sh 2024-04-04 12:45:27 +08:00
Mr Chen 793a236641 Update install.sh 2024-04-04 12:42:11 +08:00
Mr Chen 07996a3fe5 Merge pull request #533 from midoks/dev
Update README.md
2024-04-04 12:35:37 +08:00
Mr Chen a826f784fc Update README.md 2024-04-04 12:35:16 +08:00
Mr Chen 1561768524 Merge pull request #532 from midoks/dev
Update README.md
2024-04-04 12:34:32 +08:00
Mr Chen 1d899fe330 Update README.md 2024-04-04 12:34:09 +08:00
50 changed files with 754 additions and 493 deletions
+6 -6
View File
@@ -37,7 +37,7 @@ Talk is cheap, show me the code. -- linus
```
- [兼容性测试报告](/compatibility.md)
- [常用命令说明](/cmd.md) [ mw default ]
- [常用命令说明](/cmd.md) [ mw default ] [ mw update_dev ]
### 主要插件介绍
@@ -110,10 +110,10 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
```
### 版本更新 0.16.4
### 版本更新 0.16.6
* 二次验证。
* OP防火墙修复。
- openresty【1.25.3.1】配置更新,支持h3;
- 修复php83的扩展bcmath在centos7安装出错。
### JSDelivr安装地址
@@ -189,9 +189,9 @@ TVbNgrpeGBGZVm5gTLa21ADP7RpnPFhjya
日行一善,以后必定大富大贵
### 微信赞助
### 支付宝赞助
[![截图](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.jpg)](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.jpg)
[![截图](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.png)](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.png)
### 无图不真相
+2 -97
View File
@@ -441,19 +441,7 @@ fi
return None
if not os.path.exists(site_path):
return None
args = mw.dict_obj()
args.id = site_id
import panelSite
run_path = panelSite.panelSite().GetRunPath(args)
if run_path in ['/']:
run_path = ''
if run_path:
if run_path[0] == '/':
run_path = run_path[1:]
site_run_path = os.path.join(site_path, run_path)
if not os.path.exists(site_run_path):
return site_path
return site_run_path
return site_path
else:
return False
@@ -1283,85 +1271,6 @@ fullchain.pem 粘贴到证书输入框
root = old_domain_name
return root, zone
# 获取当前正在使用此证书的网站目录
def getSslUsedSite(self, save_path):
pkey_file = '{}/privkey.pem'.format(save_path)
pkey = mw.readFile(pkey_file)
if not pkey:
return False
cert_paths = 'vhost/cert'
import panelSite
args = mw.dict_obj()
args.siteName = ''
for c_name in os.listdir(cert_paths):
skey_file = '{}/{}/privkey.pem'.format(cert_paths, c_name)
skey = mw.readFile(skey_file)
if not skey:
continue
if skey == pkey:
args.siteName = c_name
run_path = panelSite.panelSite().GetRunPath(args)
if not run_path:
continue
sitePath = mw.M('sites').where(
'name=?', c_name).getField('path')
if not sitePath:
continue
to_path = "{}/{}".format(sitePath, run_path)
return to_path
return False
def renewCertOther(self):
cert_path = "{}/vhost/cert".format(mw.getRunDir())
if not os.path.exists(cert_path):
return
new_time = time.time() + (86400 * 30)
n = 0
if not 'orders' in self.__config:
self.__config['orders'] = {}
import panelSite
siteObj = panelSite.panelSite()
args = mw.dict_obj()
for siteName in os.listdir(cert_path):
try:
cert_file = '{}/{}/fullchain.pem'.format(cert_path, siteName)
if not os.path.exists(cert_file):
continue # 无证书文件
siteInfo = mw.M('sites').where('name=?', siteName).find()
if not siteInfo:
continue # 无网站信息
cert_init = self.getCertInit(cert_file)
if not cert_init:
continue # 无法获取证书
end_time = time.mktime(time.strptime(
cert_init['notAfter'], '%Y-%m-%d'))
if end_time > new_time:
continue # 未到期
try:
if not cert_init['issuer'] in ['R3', "Let's Encrypt"] and cert_init['issuer'].find("Let's Encrypt") == -1:
continue # 非同品牌证书
except:
continue
if isinstance(cert_init['dns'], str):
cert_init['dns'] = [cert_init['dns']]
index = self.getIndex(cert_init['dns'])
if index in self.__config['orders'].keys():
continue # 已在订单列表
n += 1
writeLog(
"|-正在续签第 {} 张其它证书,域名: {}..".format(n, cert_init['subject']))
writeLog("|-正在创建订单..")
args.id = siteInfo['id']
runPath = siteObj.GetRunPath(args)
if runPath and not runPath in ['/']:
path = siteInfo['path'] + '/' + runPath
else:
path = siteInfo['path']
except:
writeLog("|-[{}]续签失败".format(siteName))
# 外部API - START ----------------------------------------------------------
def getHostConf(self, siteName):
return mw.getServerDir() + '/web_conf/nginx/vhost/' + siteName + '.conf'
@@ -1509,8 +1418,7 @@ fullchain.pem 粘贴到证书输入框
# 已删除的网站直接跳过续签
if self.__config['orders'][i]['auth_to'].find('|') == -1 and self.__config['orders'][i]['auth_to'].find('/') != -1:
if not os.path.exists(self.__config['orders'][i]['auth_to']):
auth_to = self.getSslUsedSite(
self.__config['orders'][i]['save_path'])
auth_to = self.__config['orders'][i]['auth_to']
if not auth_to:
continue
@@ -1549,9 +1457,6 @@ fullchain.pem 粘贴到证书输入框
# 加入到续签订单
order_index.append(i)
if not order_index:
writeLog("|-没有找到30天内到期的SSL证书,正在尝试去寻找其它可续签证书!")
# self.getApis()
# self.renewCertOther()
writeLog("|-所有任务已处理完成!")
return
writeLog("|-共需要续签 {} 张证书".format(len(order_index)))
+1 -1
View File
@@ -242,7 +242,7 @@ class cert_request:
# 注册acme帐户
def register(self, existing=False):
if not 'email' in self.__config:
self.__config['email'] = 'mdioks@163.com'
self.__config['email'] = 'xxxx.xxxx@gmail.com'
if existing:
payload = {"onlyReturnExisting": True}
elif self.__config['email']:
+1 -1
View File
@@ -28,7 +28,7 @@ from flask import request
class config_api:
__version = '0.16.4'
__version = '0.16.6'
__api_addr = 'data/api.json'
# 统一默认配置文件
+66 -13
View File
@@ -161,15 +161,12 @@ class files_api:
search = request.args.get('search', '').strip().lower()
search_all = request.args.get('all', '').strip().lower()
page = request.args.get('p', '1').strip().lower()
row = request.args.get('showRow', '10')
disk = request.form.get('disk', '')
if disk == 'True':
row = 1000
row = request.args.get('row', '10')
order = request.form.get('order', '')
# return self.getAllDir(path, int(page), int(row), "wp-inlcude")
if search_all == 'yes' and search != '':
return self.getAllDir(path, int(page), int(row), search)
return self.getDir(path, int(page), int(row), search)
return self.getAllDir(path, int(page), int(row), order, search)
return self.getDir(path, int(page), int(row), order, search)
def createFileApi(self):
file = request.form.get('path', '')
@@ -948,16 +945,64 @@ class files_api:
i += 1
return i
def getAllDir(self, path, page=1, page_size=10, search=None):
def getAllDir(self, path, page=1, page_size=10, order='', search=None):
# print("search:", search)
data = {}
dirnames = []
filenames = []
info = {}
i = 0
n = 0
count = 0
max_limit = 3000
order_arr = order.split(' ')
if len(order_arr) < 2:
plist = mw.sortAllFileList(path, order_arr[0],'',search, max_limit)
else:
plist = mw.sortAllFileList(path, order_arr[0], order_arr[1], search,max_limit)
info['count'] = len(plist)
info['row'] = page_size
info['p'] = page
info['tojs'] = 'getFiles'
pageObj = mw.getPageObject(info, '1,2,3,4,5,6,7,8')
data['PAGE'] = pageObj[0]
for dst_file in plist:
if not os.path.exists(dst_file):
continue
i += 1
if n >= pageObj[1].ROW:
break
if i < pageObj[1].SHIFT:
continue
if os.path.isdir(dst_file):
dirnames.append(self.__get_stats(dst_file, path))
else:
filenames.append(self.__get_stats(dst_file, path))
n += 1
data['DIR'] = dirnames
data['FILES'] = filenames
data['PATH'] = path.replace('//', '/')
return mw.getJson(data)
#备份
def getAllDirBk(self, path, page=1, page_size=10, order='', search=None):
data = {}
dirnames = []
filenames = []
count = 0
max_limit = 3000
for d_list in os.walk(path):
if count >= max_limit:
break
@@ -996,7 +1041,7 @@ class files_api:
return mw.getJson(data)
def getDir(self, path, page=1, page_size=10, search=None):
def getDir(self, path, page=1, page_size=10, order = '', search=None):
data = {}
dirnames = []
filenames = []
@@ -1011,7 +1056,14 @@ class files_api:
i = 0
n = 0
for filename in os.listdir(path):
order_arr = order.split(' ')
if len(order_arr) < 2:
plist = mw.sortFileList(path, order_arr[0],'')
else:
plist = mw.sortFileList(path, order_arr[0],order_arr[1])
for filename in plist:
if search:
if filename.lower().find(search) == -1:
continue
@@ -1033,8 +1085,8 @@ class files_api:
n += 1
except Exception as e:
continue
data['DIR'] = sorted(dirnames)
data['FILES'] = sorted(filenames)
data['DIR'] = dirnames
data['FILES'] = filenames
data['PATH'] = path.replace('//', '/')
return mw.getJson(data)
@@ -1067,6 +1119,7 @@ cd %s
return mw.returnJson(status, mw.getNumLines(fileName, 200))
def __get_stats(self, filename, path=None):
# print(filename,path)
filename = filename.replace('//', '/')
try:
stat = os.stat(filename)
+57
View File
@@ -1598,6 +1598,63 @@ def checkCert(certPath='ssl/certificate.pem'):
return True
def sortFileList(path, ftype = 'mtime', sort = 'desc'):
flist = os.listdir(path)
if ftype == 'mtime':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getmtime(os.path.join(path,f)), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getmtime(os.path.join(path,f)), reverse=False)
if ftype == 'size':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getsize(os.path.join(path,f)), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getsize(os.path.join(path,f)), reverse=False)
return flist
def sortAllFileList(path, ftype = 'mtime', sort = 'desc', search = '',limit = 3000):
count = 0
flist = []
for d_list in os.walk(path):
if count >= limit:
break
for d in d_list[1]:
if count >= limit:
break
if d.lower().find(search) != -1:
filename = d_list[0] + '/' + d
if not os.path.exists(filename):
continue
count += 1
flist.append(filename)
for f in d_list[2]:
if count >= limit:
break
if f.lower().find(search) != -1:
filename = d_list[0] + '/' + f
if not os.path.exists(filename):
continue
count += 1
flist.append(filename)
if ftype == 'mtime':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getmtime(f), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getmtime(f), reverse=False)
if ftype == 'size':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getsize(f), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getsize(f), reverse=False)
return flist
def getPathSize(path):
# 取文件或目录大小
if not os.path.exists(path):
+25 -4
View File
@@ -2767,24 +2767,41 @@ location ^~ {from} {\n\
mw.writeLog('TYPE_SITE', '设置成功,站点到期后将自动停止!', (siteName, edate))
return mw.returnJson(True, '设置成功,站点到期后将自动停止!')
# ssl相关方法 start
# ssl相关方法 start
def setSslConf(self, siteName):
file = self.getHostConf(siteName)
conf = mw.readFile(file)
version = ''
version_file_pl = mw.getServerDir() + '/openresty/version.pl'
if os.path.exists(version_file_pl):
version = mw.readFile(version_file_pl)
version = version.strip()
keyPath = self.sslDir + '/' + siteName + '/privkey.pem'
certPath = self.sslDir + '/' + siteName + '/fullchain.pem'
if conf:
if conf.find('ssl_certificate') == -1:
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
http3Header = """
add_header Strict-Transport-Security "max-age=63072000";
add_header Alt-Svc 'h3=":443";ma=86400,h3-29=":443";ma=86400';
"""
if version != '1.25.3.1':
http3Header = '';
sslStr = """#error_page 404/404.html;
ssl_certificate %s;
ssl_certificate_key %s;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;""" % (certPath, keyPath)
%s
error_page 497 https://$host$request_uri;""" % (certPath, keyPath, http3Header)
if(conf.find('ssl_certificate') != -1):
return mw.returnData(True, 'SSL开启成功!')
@@ -2796,6 +2813,10 @@ location ^~ {from} {\n\
listen = re.search(rep, conf).group()
http_ssl = "\n\tlisten 443 ssl http2;"
http_ssl = http_ssl + "\n\tlisten [::]:443 ssl http2;"
if version == '1.25.3.1':
http_ssl = http_ssl + "\n\tlisten 443 quic;"
conf = conf.replace(listen, listen + http_ssl)
mw.backFile(file)
+1 -1
View File
@@ -49,7 +49,7 @@ ALTER TABLE `firewall` ADD COLUMN `protocol` TEXT DEFAULT 'tcp';
INSERT INTO `firewall` (`id`, `port`, `protocol`, `ps`, `addtime`) VALUES
(1, '80', 'tcp','网站默认端口', '0000-00-00 00:00:00'),
(2, '443', 'tcp', 'HTTPS', '0000-00-00 00:00:00');
(2, '443', 'tcp/udp', 'HTTPS', '0000-00-00 00:00:00');
+40 -55
View File
@@ -860,68 +860,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mariadb'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mariadb'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var phpmyadmin_cfg = rdata;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var home_page = rdata.data;
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@");
$("#toPHPMyAdmin").attr('action',home_page);
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0]
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=10.11.6
MY_VER=10.11.7
Install_app()
{
+1 -1
View File
@@ -13,7 +13,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=10.6.16
MY_VER=10.6.17
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.0.4
MY_VER=11.0.5
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.1.3
MY_VER=11.1.4
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.2.2
MY_VER=11.2.3
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.3.1
MY_VER=11.3.2
Install_app()
{
+40 -55
View File
@@ -856,68 +856,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql-apt'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql-apt'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
+40 -55
View File
@@ -857,68 +857,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql-yum'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql-yum'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
+40 -55
View File
@@ -857,68 +857,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
},'json');
}
function delBackup(filename, name, path){
+28 -1
View File
@@ -1 +1,28 @@
[[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0], [1, "/\\*", "\u76ee\u5f55\u4fdd\u62a42", 0], [1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0], [1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0], [1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0], [1, "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee44", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0], [1, "\\s+(or|xor|and)\\s+.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0], [1, "(invokefunction|call_user_func_array|\\\\think\\\\)", "ThinkPHP payload\u5c01\u5835", 0], [1, "^url_array\\[.*\\]$", "Metinfo6.x XSS\u6f0f\u6d1e", 0], [1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0], [1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0], [1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "\\|+\\s+[\\w\\W]+=[\\w\\W]+", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0]]
[
[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0],
[1, "/\\*", "\u76ee\u5f55\u4fdd\u62a42", 0],
[1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0],
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0],
[1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0],
[1, "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee44", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0],
[1, "\\s+(or|xor|and)\\s+.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0],
[1, "(invokefunction|call_user_func_array|\\\\think\\\\)", "ThinkPHP payload\u5c01\u5835", 0],
[1, "^url_array\\[.*\\]$", "Metinfo6.x XSS\u6f0f\u6d1e", 0],
[1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0],
[1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0],
[1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "\\|+\\s+[\\w\\W]+=[\\w\\W]+", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0]
]
+21 -1
View File
@@ -1 +1,21 @@
[[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0], [1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0], [1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0], [1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0], [1, "\\b(or|xor|and)\\b.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [0, "having|load_file", "SQL\u6ce8\u5165\u8fc7\u6ee44", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [1, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0]]
[
[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0],
[1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0],
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0],
[1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0],
[1, "\\b(or|xor|and)\\b.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[0, "having|load_file", "SQL\u6ce8\u5165\u8fc7\u6ee44", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[1, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0]
]
+23 -1
View File
@@ -1 +1,23 @@
[[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee41", 0], [1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 0], [1, "\\s+(or|xor|and)\\s+(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select\\s+.+(from|limit)\\s+", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0], [1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0], [1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0], [1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\))", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 0], [1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0]]
[
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee41", 0],
[1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 0], [1, "\\s+(or|xor|and)\\s+(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select\\s+.+(from|limit)\\s+", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0],
[1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0],
[1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0],
[1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\))", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 0],
[1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0]
]
+6 -1
View File
@@ -1 +1,6 @@
[[1,"(HTTrack|Apache-HttpClient|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/)","关键词过滤1",0],[1,"(ApacheBench)","AB测试",0]]
[
[1,"(HTTrack|Apache-HttpClient|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/)","关键词过滤1",0],
[1,"(ApacheBench)","AB测试",0],
[1,"(Amazonbot)","Amazon爬虫",0],
[1,"(SemrushBot)","Semrush爬虫",0]
]
+3 -3
View File
@@ -8,10 +8,10 @@
"install_pre_inspection":true,
"checks":"server/openresty",
"path":"server/openresty",
"author":"agentzh",
"author":"nginx/agentzh",
"home":"http://openresty.org",
"date":"2017-11-24",
"pid": "1",
"versions": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3"],
"updates": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3"]
"versions": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3","1.25.3.1"],
"updates": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3","1.25.3.1"]
}
+35
View File
@@ -91,6 +91,7 @@ Install_openresty()
opensslVersion="1.1.1p"
libresslVersion="3.9.1"
pcreVersion='8.38'
if [ "$sysName" == "Darwin" ];then
@@ -119,8 +120,38 @@ Install_openresty()
# brew info openssl@1.1 | grep /opt/homebrew/Cellar/openssl@1.1 | cut -d \ -f 1 | awk 'END {print}'
# OPENSSL_LIB_DEPEND_DIR=`brew info openssl@1.1 | grep ${BREW_DIR}/Cellar/openssl@1.1 | cut -d \ -f 1 | awk 'END {print}'`
# OPTIONS="${OPTIONS} --with-openssl=${OPENSSL_LIB_DEPEND_DIR}"
else
if [ "$VERSION" == "1.25.3.1" ]; then
OPTIONS="${OPTIONS} --with-http_v3_module"
if [ ! -f ${openrestyDir}/libressl-${libresslVersion}.tar.gz ];then
wget --no-check-certificate -O ${openrestyDir}/libressl-${libresslVersion}.tar.gz https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${libresslVersion}.tar.gz
fi
if [ ! -d ${openrestyDir}/libressl-${libresslVersion} ];then
cd ${openrestyDir} && tar -zxvf libressl-${libresslVersion}.tar.gz
fi
if [ ! -f ${openrestyDir}/openssl-${opensslVersion}.tar.gz ];then
wget --no-check-certificate -O ${openrestyDir}/openssl-${opensslVersion}.tar.gz https://www.openssl.org/source/openssl-${opensslVersion}.tar.gz
fi
if [ ! -d ${openrestyDir}/openssl-${opensslVersion} ];then
cd ${openrestyDir} && tar -zxvf openssl-${opensslVersion}.tar.gz
fi
OPTIONS="${OPTIONS} --with-openssl=${openrestyDir}/openssl-${opensslVersion}"
OPTIONS="${OPTIONS} --with-cc-opt=-I${openrestyDir}/libressl-${libresslVersion}/libressl/build/include"
OPTIONS="${OPTIONS} --with-cc-opt=-I${openrestyDir}/libressl-${libresslVersion}/libressl/build/lib"
# --with-cc-opt="-I../libressl/build/include"
# --with-ld-opt="-L../libressl/build/lib"
fi
fi
# --with-openssl=$serverPath/source/lib/openssl-1.0.2q
cd ${openrestyDir}/openresty-${VERSION} && ./configure \
--prefix=$serverPath/openresty \
@@ -162,6 +193,10 @@ Install_openresty()
if [ -d ${openrestyDir}/openssl-${opensslVersion} ];then
rm -rf ${openrestyDir}/openssl-${opensslVersion}
fi
if [ -d ${openrestyDir}/libressl-${libresslVersion} ];then
rm -rf ${openrestyDir}/libressl-${libresslVersion}
fi
echo '安装完成'
}
+2 -2
View File
@@ -16,7 +16,7 @@ function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)"
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
version=8.2.15
version=8.2.17
PHP_VER=82
Install_php()
{
@@ -57,7 +57,7 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
fi
#检测文件是否损坏.
md5_file_ok=eca5deac02d77d806838275f8a3024b38b35ac0a5d9853dcc71c6cbe3f1f8765
md5_file_ok=1cc4ef733ba58f6557db648012471f1916e5bac316303aa165535bedab08ee35
if [ -f $sourcePath/php/php-${version}.tar.xz ];then
md5_file=`sha256sum $sourcePath/php/php-${version}.tar.xz | awk '{print $1}'`
if [ "${md5_file}" != "${md5_file_ok}" ]; then
+2 -2
View File
@@ -15,7 +15,7 @@ function version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)"
function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; }
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
version=8.3.2
version=8.3.4
PHP_VER=83
Install_php()
{
@@ -56,7 +56,7 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
fi
#检测文件是否损坏.
md5_file_ok=4ffa3e44afc9c590e28dc0d2d31fc61f0139f8b335f11880a121b9f9b9f0634e
md5_file_ok=39a337036a546e5c28aea76cf424ac172db5156bd8a8fd85252e389409a5ba63
if [ -f $sourcePath/php/php-${version}.tar.xz ];then
md5_file=`sha256sum $sourcePath/php/php-${version}.tar.xz | awk '{print $1}'`
if [ "${md5_file}" != "${md5_file_ok}" ]; then
+6 -1
View File
@@ -60,8 +60,13 @@ Install_lib()
fi
$serverPath/php/$version/bin/phpize
./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
if [ "$version" == "83" ];then
CFLAGS="-std=c99" ./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
else
./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
fi
make clean && make && make install && make clean
if [ -d $sourcePath/php${version} ];then
+1 -1
View File
@@ -20,7 +20,7 @@ LIBNAME=zip
LIBV=0
if [ "$version" -lt "73" ];then
if [ "$version" -lt "72" ];then
echo "not need"
exit 1
fi
+1
View File
@@ -724,6 +724,7 @@
{
"name": "zip",
"versions": [
"72",
"83"
],
"type": "压缩",
+32 -2
View File
@@ -446,9 +446,37 @@ def errorLog():
return getServerDir() + '/error.log'
def Version():
def installVersion():
return mw.readFile(getServerDir() + '/version.pl')
def pluginsDbSupport():
data = {}
data['installed'] = 'no'
install_path = getServerDir()
if not os.path.exists(install_path):
return mw.returnJson(True, 'ok', data)
data['installed'] = 'ok'
data['status'] = status()
if (data['status'] == 'stop'):
return mw.returnJson(True, 'ok', data)
data['cfg'] = getCfg()
port = getPort()
ip = '127.0.0.1'
if not mw.isAppleSystem():
ip = mw.getLocalIp()
cfg = data['cfg']
auth = cfg['username']+':'+cfg['password']
rand_path = cfg['path']
home_page = 'http://' + auth + '@' + ip + ':' + port + '/' + rand_path + '/index.php'
data['home_page'] = home_page
data['version'] = installVersion().strip()
return mw.returnJson(True, 'ok', data)
if __name__ == "__main__":
func = sys.argv[1]
@@ -465,7 +493,7 @@ if __name__ == "__main__":
elif func == 'conf':
print(getConf())
elif func == 'version':
print(Version())
print(installVersion())
elif func == 'get_cfg':
print(returnCfg())
elif func == 'config_inc':
@@ -494,5 +522,7 @@ if __name__ == "__main__":
print(accessLog())
elif func == 'error_log':
print(errorLog())
elif func == 'plugins_db_support':
print(pluginsDbSupport())
else:
print('error')
@@ -55,6 +55,7 @@ def send_msg(bot, tag='ad', trigger_time=300):
# 综合包网/NG接口开户 | 28/m | 3m | next,4/28 | @aabbcx888
# 实名认证/过人脸🕵️‍♀️各种账号处理✅ | 30/m| next,6/30 | @nngzs
# 海外服务器 高防CDN 解决移动屏蔽 | 19/m | next,4/19 | @YYCDNFW
# 群内置顶AD| 16/m | @YYCDNFW
keyboard = [
[
types.InlineKeyboardButton(
+1 -1
View File
@@ -1,7 +1,7 @@
{
"global": {
"monitor": true,
"save_day": 180,
"save_day": 1,
"autorefresh": false,
"refresh_interval": 3,
"cdn": true,
+67 -28
View File
@@ -1,33 +1,73 @@
var num = 0;
//查看任务日志
function getLogs(id){
layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='&id='+id;
$.post('/crontab/logs', data, function(rdata){
layer.closeAll();
if(!rdata.status) {
layer.msg(rdata.msg,{icon:2, time:2000});
return;
};
layer.open({
type:1,
title:lan.crontab.task_log_title,
area: ['60%','500px'],
shadeClose:false,
closeBtn:1,
content:'<div class="setchmod bt-form pd20 pb70">'
+'<pre id="crontab-log" style="overflow: auto; border: 0px none; line-height:23px;padding: 15px; margin: 0px; white-space: pre-wrap; height: 405px; background-color: rgb(51,51,51);color:#f1f1f1;border-radius:0px;font-family:"></pre>'
+'<div class="bt-form-submit-btn" style="margin-top: 0px;">'
+'<button type="button" class="btn btn-success btn-sm" onclick="closeLogs('+id+')">清空</button>'
+'<button type="button" class="btn btn-danger btn-sm" onclick="layer.closeAll()">关闭</button>'
+'</div>'
+'</div>'
});
setTimeout(function(){
$("#crontab-log").html(rdata.msg);
},200);
},'json');
var reqTimer = null;
var reqCount = 0;
var tips = layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var req_log_args = 'id='+id;
function requestLogs(layerIndex){
$.post('/crontab/logs', req_log_args, function(rdata){
if (reqCount == 0){
layer.close(tips);
}
if(!rdata.status) {
layer.close(layerIndex);
layer.msg(rdata.msg,{icon:2, time:2000});
clearInterval(reqTimer);
return;
};
if (rdata.msg == ''){
rdata.msg = '暂无数据!';
}
$("#crontab_log").html(rdata.msg);
//滚动到最低
var ob = document.getElementById('crontab_log');
ob.scrollTop = ob.scrollHeight;
reqCount++;
},'json');
}
layer.open({
type:1,
title:"任务执行日志",
area: ['60%','500px'],
shadeClose:false,
btn:["清空","关闭"],
closeBtn:1,
end: function(){
if (reqTimer){
clearInterval(reqTimer);
}
},
content:'<div class="setchmod bt-form" style="padding:5px;">'
+'<pre id="crontab_log" style="overflow: auto; border: 0px none; line-height:23px;padding: 5px; margin: 0px; white-space: pre-wrap; height: 395px; background-color: rgb(51,51,51);color:#f1f1f1;border-radius:0px;font-family:"></pre>'
// +'<div class="bt-form-submit-btn" style="margin-top: 0px;">'
// +'<button type="button" class="btn btn-success btn-sm" onclick="closeLogs('+id+')">清空</button>'
// +'<button type="button" class="btn btn-danger btn-sm" onclick="layer.closeAll()">关闭</button>'
// +'</div>'
+'</div>',
success:function(index,layer_index){
requestLogs(layer_index);
reqTimer = setInterval(function(){
requestLogs(layer_index);
},3000);
},
yes:function(index){
clearInterval(reqTimer);
closeLogs(id);
layer.close(index);
},
});
}
@@ -119,7 +159,6 @@ function startTask(id){
var data='id='+id;
$.post('/crontab/start_task',data,function(rdata){
showMsg(rdata.msg, function(){
layer.closeAll();
},{icon:rdata.status?1:2,time:2000});
},'json');
}
@@ -131,7 +170,7 @@ function closeLogs(id){
var data='id='+id;
$.post('/crontab/del_logs',data,function(rdata){
showMsg(rdata.msg, function(){
layer.closeAll();
// layer.closeAll();
},{icon:rdata.status?1:2,time:2000});
},'json');
}
+174 -94
View File
@@ -26,15 +26,15 @@ function recycleBin(type){
if(shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "...";
if(shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "...";
body += '<tr>\
<td><span class=\'ico ico-folder\'></span><span class="tname" title="'+rdata.dirs[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.dirs[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.dirs[i].size)+'</td>\
<td>'+getLocalTime(rdata.dirs[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
<td><span class=\'ico ico-folder\'></span><span class="tname" title="'+rdata.dirs[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.dirs[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.dirs[i].size)+'</td>\
<td>'+getLocalTime(rdata.dirs[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>';
}
for(var i=0;i<rdata.files.length;i++){
if(rdata.files[i].name.indexOf('BTDB_') != -1){
@@ -43,15 +43,15 @@ function recycleBin(type){
if(shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "...";
if(shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "...";
body += '<tr>\
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname.replace('BTDB_','')+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">mysql://'+shortpath.replace('BTDB_','')+'</span></td>\
<td>-</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname.replace('BTDB_','')+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">mysql://'+shortpath.replace('BTDB_','')+'</span></td>\
<td>-</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>';
continue;
}
@@ -80,15 +80,15 @@ function recycleBin(type){
if(shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "...";
if(shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "...";
body += '<tr>\
<td><span class=\'ico ico-folder\'></span><span class="tname" title="'+rdata.dirs[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.dirs[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.dirs[i].size)+'</td>\
<td>'+getLocalTime(rdata.dirs[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
<td><span class=\'ico ico-folder\'></span><span class="tname" title="'+rdata.dirs[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.dirs[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.dirs[i].size)+'</td>\
<td>'+getLocalTime(rdata.dirs[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.dirs[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
}
$("#RecycleBody").html(body);
return;
@@ -101,15 +101,15 @@ function recycleBin(type){
if(shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "...";
if(shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "...";
body += '<tr>\
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.files[i].size)+'</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.files[i].size)+'</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>';
}
$("#RecycleBody").html(body);
return;
@@ -122,15 +122,15 @@ function recycleBin(type){
if(shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "...";
if(shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "...";
body += '<tr>\
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.files[i].size)+'</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>'
<td><span class="ico ico-'+(getExtName(rdata.files[i].name))+'"></span><span class="tname" title="'+rdata.files[i].name+'">'+shortwebname+'</span></td>\
<td><span title="'+rdata.files[i].dname+'">'+shortpath+'</span></td>\
<td>'+toSize(rdata.files[i].size)+'</td>\
<td>'+getLocalTime(rdata.files[i].time)+'</td>\
<td style="text-align: right;">\
<a class="btlink" href="javascript:;" onclick="reRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_re+'</a>\
| <a class="btlink" href="javascript:;" onclick="delRecycleBin(\'' + rdata.files[i].rname.replace(/'/,"\\'") + '\',this)">'+lan.files.recycle_bin_del+'</a>\
</td>\
</tr>';
}
}
$("#RecycleBody").html(body);
@@ -222,6 +222,7 @@ function getFileName(name){
text = text[n];
return text;
}
//判断图片文件
function reisImage(fileName){
var exts = ['jpg','jpeg','png','bmp','gif','tiff','ico'];
@@ -328,87 +329,141 @@ function searchFile(p){
getFiles(p);
}
//处理排序
function listFileOrder(skey, obj){
var or = getCookie('file_order');
var orderType = 'desc';
if(or){
var or_arr = or.split('|');
if(or.split('|')[1] == 'desc'){
orderType = 'asc';
} else if (or_arr[1] == 'asc'){
orderType = 'none';
} else {
orderType = 'desc';
}
}
setCookie('file_order',skey + '|' + orderType);
getFiles(1);
// console.log(obj,orderType);
// if(orderType == 'desc'){
// $(obj).find(".glyphicon-triangle-top").remove();
// $(obj).append("<span class='glyphicon glyphicon-triangle-bottom' style='margin-left:5px;color:#bbb'></span>");
// } else {
// $(obj).find(".glyphicon-triangle-bottom").remove();
// $(obj).append("<span class='glyphicon glyphicon-triangle-top' style='margin-left:5px;color:#bbb'></span>");
// }
}
function makeFilePage(showRow, page = ''){
var rows = ['10','50','100','200','500','1000','2000'];
var rowOption = '';
for(var i=0;i<rows.length;i++){
var rowSelected = '';
if(showRow == rows[i]) rowSelected = 'selected';
rowOption += '<option value="'+rows[i]+'" '+rowSelected+'>'+rows[i]+'</option>';
}
//分页
$("#filePage").html(page);
$("#filePage div").append("<span class='Pcount-item'>每页<select style='margin-left: 3px;margin-right: 3px;border:#ddd 1px solid' class='showRow'>"+rowOption+"</select>条</span>");
$("#filePage .Pcount").css("left","16px");
}
//取数据
function getFiles(Path) {
var searchtype = Path;
if(isNaN(Path)){
var p = 1;
Path = encodeURIComponent(Path);
} else {
var p = Path;
Path = getCookie('open_dir_path');
Path = encodeURIComponent(Path);
}
var search = '';
var searchV = $("#SearchValue").val();
if(searchV.length > 1 && searchtype == '1'){
search = "&search="+searchV;
}
var showRow = getCookie('showRow');
if(!showRow) {
showRow = '100';
var args = {};
args['p'] = p;
var post = {};
post['path'] = Path;
var file_row = $.cookie('file_row');
if(!file_row) {
file_row = '100';
}
args['row'] = file_row;
var body = '';
var data = 'path=' + Path;
var totalSize = 0;
var search = '';
var search_file = $("#search_file").val();
if(search_file.length > 0){
args['search'] = search_file;
}
var search_all = '';
var all = $('#search_all').hasClass('active');
if(all){
search_all = "&all=yes";
args['all'] = 'yes';
}
var file_order = $.cookie('file_order');
if (file_order){
post['order'] = file_order.replace('|',' ');
}
var query_str = toUrlParam(args);
var loadT = layer.load();
$.post('/files/get_dir?p=' + p + '&showRow=' + showRow + search + search_all, data, function(rdata) {
$.post('/files/get_dir?' + query_str, post, function(rdata) {
layer.close(loadT);
var rows = ['10','50','100','200','500','1000','2000'];
var rowOption = '';
for(var i=0;i<rows.length;i++){
var rowSelected = '';
if(showRow == rows[i]) rowSelected = 'selected';
rowOption += '<option value="'+rows[i]+'" '+rowSelected+'>'+rows[i]+'</option>';
//构建分页
makeFilePage(file_row,rdata.PAGE);
if(rdata.DIR == null) {
rdata.DIR = [];
}
$("#filePage").html(rdata.PAGE);
$("#filePage div").append("<span class='Pcount-item'>每页<select style='margin-left: 3px;margin-right: 3px;border:#ddd 1px solid' class='showRow'>"+rowOption+"</select>条</span>");
$("#filePage .Pcount").css("left","16px");
if(rdata.DIR == null) rdata.DIR = [];
for (var i = 0; i < rdata.DIR.length; i++) {
var fmp = rdata.DIR[i].split(";");
var cnametext =fmp[0] + fmp[5];
fmp[0] = fmp[0].replace(/'/, "\\'");
if(cnametext.length>20){
cnametext = cnametext.substring(0,20) + '...';
}
if(isChineseChar(cnametext)){
if(cnametext.length>10){
cnametext = cnametext.substring(0,10) + '...';
}
}
var timetext ='--';
if(getCookie('rank') == 'a'){
$("#set_list").addClass("active");
$("#set_icon").removeClass("active");
body += "<tr class='folderBoxTr' data-path='" + rdata.PATH + "/" + fmp[0] + "' filetype='dir'>\
<td><input type='checkbox' name='id' value='"+fmp[0]+"'></td>\
<td class='column-name'><span class='cursor' onclick=\"getFiles('" + rdata.PATH + "/" + fmp[0] + "')\">\
<span class='ico ico-folder'></span><a class='text' title='" + fmp[0] + fmp[5] + "'>" + cnametext + "</a></span></td>\
<td>"+toSize(fmp[1])+"</td>\
<td>"+getLocalTime(fmp[2])+"</td>\
<td>"+fmp[3]+"</td>\
<td>"+fmp[4]+"</td>\
<td class='editmenu'><span>\
<a class='btlink' href='javascript:;' onclick=\"copyFile('" + rdata.PATH +"/"+ fmp[0] + "')\">复制</a> | \
<a class='btlink' href='javascript:;' onclick=\"cutFile('" + rdata.PATH +"/"+ fmp[0]+ "')\">剪切</a> | \
<a class='btlink' href='javascript:;' onclick=\"reName(0,'" + fmp[0] + "');\">重命名</a> | \
<a class='btlink' href='javascript:;' onclick=\"setChmod(0,'" + rdata.PATH + "/"+fmp[0] + "');\">权限</a> | \
<a class='btlink' href='javascript:;' onclick=\"zip('" + rdata.PATH +"/" +fmp[0] + "');\">压缩</a> | \
<a class='btlink' href='javascript:;' onclick=\"deleteDir('" + rdata.PATH +"/"+ fmp[0] + "')\">删除</a></span>\
</td>\
</tr>";
//列表展示
$("#set_list").addClass("active");
$("#set_icon").removeClass("active");
body += "<tr class='folderBoxTr' data-path='" + rdata.PATH + "/" + fmp[0] + "' filetype='dir'>\
<td><input type='checkbox' name='id' value='"+fmp[0]+"'></td>\
<td class='column-name'><span class='cursor' onclick=\"getFiles('" + rdata.PATH + "/" + fmp[0] + "')\">\
<span class='ico ico-folder'></span><a class='text' title='" + fmp[0] + fmp[5] + "'>" + cnametext + "</a></span></td>\
<td>"+toSize(fmp[1])+"</td>\
<td>"+getLocalTime(fmp[2])+"</td>\
<td>"+fmp[3]+"</td>\
<td>"+fmp[4]+"</td>\
<td class='editmenu'><span>\
<a class='btlink' href='javascript:;' onclick=\"copyFile('" + rdata.PATH +"/"+ fmp[0] + "')\">复制</a> | \
<a class='btlink' href='javascript:;' onclick=\"cutFile('" + rdata.PATH +"/"+ fmp[0]+ "')\">剪切</a> | \
<a class='btlink' href='javascript:;' onclick=\"reName(0,'" + fmp[0] + "');\">重命名</a> | \
<a class='btlink' href='javascript:;' onclick=\"setChmod(0,'" + rdata.PATH + "/"+fmp[0] + "');\">权限</a> | \
<a class='btlink' href='javascript:;' onclick=\"zip('" + rdata.PATH +"/" +fmp[0] + "');\">压缩</a> | \
<a class='btlink' href='javascript:;' onclick=\"deleteDir('" + rdata.PATH +"/"+ fmp[0] + "')\">删除</a></span>\
</td>\
</tr>";
} else {
//图标展示
$("#set_icon").addClass("active");
$("#set_list").removeClass("active");
body += "<div class='file folderBox menufolder' data-path='" + rdata.PATH + "/" + fmp[0] + "' filetype='dir' title='"+lan.files.file_name+":" + fmp[0]+"&#13;"+lan.files.file_size+":"
@@ -421,6 +476,7 @@ function getFiles(Path) {
</div>";
}
}
for (var i = 0; i < rdata.FILES.length; i++) {
if(rdata.FILES[i] == null) continue;
var fmp = rdata.FILES[i].split(";");
@@ -490,13 +546,37 @@ function getFiles(Path) {
+ (toSize(totalSize))+'<a class="btlink ml5" onClick="getPathSize()">获取</a></font>)';
$("#dir_info").html(dirInfo);
if( getCookie('rank') == 'a' ){
// console.log(post['order']);
var size_icon = '<span class="glyphicon glyphicon-triangle-top" style="margin-left:5px;color:#bbb">';
if (post['order'] == 'size desc'){
size_icon = '<span class="glyphicon glyphicon-triangle-bottom" style="margin-left:5px;color:#bbb">';
} else if (post['order'] == 'size asc'){
size_icon = '<span class="glyphicon glyphicon-triangle-top" style="margin-left:5px;color:#bbb">';
} else {
size_icon = '<span class="glyphicon glyphicon-option-horizontal" style="top:3px;margin-left:5px;color:#bbb">';
}
var mtime_icon = '<span class="glyphicon glyphicon-triangle-top" style="margin-left:5px;color:#bbb">';
if (post['order'] == 'mtime desc'){
mtime_icon = '<span class="glyphicon glyphicon-triangle-bottom" style="margin-left:5px;color:#bbb">';
} else if (post['order'] == 'mtime asc'){
mtime_icon = '<span class="glyphicon glyphicon-triangle-top" style="margin-left:5px;color:#bbb">';
} else {
mtime_icon = '<span class="glyphicon glyphicon-option-horizontal" style="top:3px;margin-left:5px;color:#bbb">';
}
var tablehtml = '<table width="100%" border="0" cellpadding="0" cellspacing="0" class="table table-hover">\
<thead>\
<tr>\
<th width="30"><input type="checkbox" id="setBox" placeholder=""></th>\
<th>文件名</th>\
<th>大小</th>\
<th>修改时间</th>\
<th onclick="listFileOrder(\'size\',this)" style="cursor: pointer;">大小\
'+size_icon+'\
</th>\
<th onclick="listFileOrder(\'mtime\',this)" style="cursor: pointer;">修改时间\
'+mtime_icon+'\
</th>\
<th>权限</th>\
<th>所有者</th>\
<th style="text-align: right;" width="330">操作</th>\
@@ -613,12 +693,12 @@ function getFiles(Path) {
//每页行数
$(".showRow").change(function(){
setCookie('showRow',$(this).val());
setCookie('file_row',$(this).val());
getFiles(p);
});
pathPlaceBtn(rdata.PATH);
},'json');
setTimeout(function(){getCookie('open_dir_path');},200);
// setTimeout(function(){getCookie('open_dir_path');},200);
}
+5
View File
@@ -825,6 +825,7 @@ function isAction() {
}
$("#memuA" + name).addClass("current")
}
var W_window = $(window).width();
if(W_window <= 980) {
$(window).scroll(function() {
@@ -1868,6 +1869,10 @@ function showSpeedWindow(msg, speed_log_func_name, callback){
/*** 其中功能,针对插件通过库使用 start ***/
function toUrlParam(json) {
return Object.keys(json).map(key => key + '=' + json[key]).join('&');
}
//字符串转数组对象
function toArrayObject(str){
var data = {};
+4 -3
View File
@@ -1094,20 +1094,21 @@ html .menu .menu_exit:hover {
}
.table .btlinkbed:hover {
border: #ddd 1px solid
border: #ddd 1px solid;
}
.dataTables_paginate {
display: block;
height: 30px;
height: 35px;
margin-bottom: 0px;
margin-top: 0px;
margin-top: 5px;
position:relative;
}
#filePage{
margin-bottom: 10px;
}
.page {
/* line-height: 16px; */
text-align: right;
+2
View File
@@ -0,0 +1,2 @@
/*! jquery.cookie v1.4.1 | MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
+3 -2
View File
@@ -16,7 +16,7 @@
<div class="pull-left mlr15" style="line-height:26px"><span id='dir_info'></span></div>
<div class="search pull-right" style="position: absolute; top: 6px; right: 5px;">
<form target="hid">
<input type="text" id="SearchValue" class="ser-text pull-left" placeholder="搜索文件/目录" />
<input type="text" id="search_file" class="ser-text pull-left" placeholder="搜索文件/目录" />
<button type="button" class="ser-sub pull-left" onclick='searchFile(1)'></button>
<div class="file_search" draggable="false">
<div id="search_all" class="file_search_checked"></div>
@@ -43,6 +43,7 @@
</div>
</div>
</div>
<!-- 文件展示 -->
<div class="divtable pd15" id="fileCon"></div>
<div class="dataTables_paginate paging_bootstrap pagination plr15" style="position: relative; top: -6px;">
<ul id="filePage" class="page"></ul>
@@ -65,7 +66,7 @@
<script type="text/javascript">
$("#SearchValue").focus().keyup(function(e){
$("#search_file").focus().keyup(function(e){
if(e.keyCode == 13) searchFile(1);
});
+1 -1
View File
@@ -73,6 +73,7 @@
<link rel="stylesheet" href="/static/build/xterm.css?v={{config.version}}">
<link rel="stylesheet" href="/static/build/addons/fullscreen/fullscreen.css?v={{config.version}}">
<script src="/static/js/jquery-1.10.2.min.js"></script>
<script src="/static/js/jquery.cookie-1.4.1.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/layer/layer.js"></script>
<script src="/static/js/jquery.fly.min.js"></script>
@@ -89,7 +90,6 @@
<script src="/static/js/echarts.min.js"></script>
<!-- <script src="//cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/js/echarts.min.js"></script> -->
<!-- <script src="//unpkg.com/echarts@5.4.3/dist/echarts.min.js"></script> -->
<script src="/static/js/jquery.dragsort-0.5.2.min.js"></script>
<script src="/static/js/jquery-qrcode-0.18.0.min.js?v={{config.version}}"></script>
+1
View File
@@ -53,6 +53,7 @@ if [ ! -f /usr/sbin/iptables ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
sed -i 's#AllowZoneDrifting=yes#AllowZoneDrifting=no#g' /etc/firewalld/firewalld.conf
+1
View File
@@ -62,6 +62,7 @@ if [ ! -f /usr/sbin/firewalld ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
sed -i 's#AllowZoneDrifting=yes#AllowZoneDrifting=no#g' /etc/firewalld/firewalld.conf
+1
View File
@@ -94,6 +94,7 @@ if [ ! -f /usr/sbin/firewalld ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
sed -i 's#AllowZoneDrifting=yes#AllowZoneDrifting=no#g' /etc/firewalld/firewalld.conf
+1
View File
@@ -66,6 +66,7 @@ if [ ! -f /usr/sbin/firewalld ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
+1
View File
@@ -92,6 +92,7 @@ if [ ! -f /usr/sbin/ufw ];then
fi
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
systemctl start firewalld
+1
View File
@@ -65,6 +65,7 @@ if [ ! -f /usr/sbin/firewalld ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
+1
View File
@@ -58,6 +58,7 @@ if [ ! -f /usr/sbin/iptables ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
firewall-cmd --reload
fi
+1
View File
@@ -74,6 +74,7 @@ if [ ! -f /usr/sbin/firewalld ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
sed -i 's#AllowZoneDrifting=yes#AllowZoneDrifting=no#g' /etc/firewalld/firewalld.conf
+1
View File
@@ -125,6 +125,7 @@ if [ -f /usr/sbin/firewalld ];then
fi
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
# firewall-cmd --permanent --zone=public --add-port=7200/tcp
# firewall-cmd --permanent --zone=public --add-port=3306/tcp
+1
View File
@@ -49,6 +49,7 @@ if [ ! -f /usr/sbin/iptables ];then
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
# firewall-cmd --permanent --zone=public --add-port=7200/tcp
# firewall-cmd --permanent --zone=public --add-port=3306/tcp
+1
View File
@@ -62,6 +62,7 @@ if [ ! -f /usr/sbin/ufw ];then
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp
# firewall-cmd --permanent --zone=public --add-port=888/tcp
systemctl start firewalld