mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
535f6ddc77 | ||
|
|
aa3950ccfe | ||
|
|
8a81f8bb83 | ||
|
|
55d987c0bd | ||
|
|
416e9e7cda | ||
|
|
eedaef7eec | ||
|
|
3265deed3d | ||
|
|
1c7db0e2ec | ||
|
|
7872891797 | ||
|
|
8b074090a7 | ||
|
|
50f198e2d3 | ||
|
|
07e017c9a7 | ||
|
|
ca0aed7240 | ||
|
|
0126bcb68c | ||
|
|
7c37df5dec | ||
|
|
33bc6e19e7 | ||
|
|
35d42a5603 | ||
|
|
8a79beab89 | ||
|
|
cafff1d522 | ||
|
|
e266d85c91 | ||
|
|
e873ea8639 | ||
|
|
0cdc23a096 | ||
|
|
2c0231155d | ||
|
|
5583db0c70 | ||
|
|
2eeef4d8bd | ||
|
|
5a93b07968 | ||
|
|
b5195ba685 | ||
|
|
4c05747942 | ||
|
|
3722f57347 | ||
|
|
b7a3c32d3f | ||
|
|
6c0cb42e35 | ||
|
|
a84e7a16a3 | ||
|
|
fab1cb1bbe | ||
|
|
b46d7c1dee | ||
|
|
8f4dda2d65 | ||
|
|
e21d17e342 | ||
|
|
87eab46ed6 | ||
|
|
e0ebed3080 | ||
|
|
372dbc8995 | ||
|
|
33faf1e54c | ||
|
|
47f67275d5 | ||
|
|
e45ebc5f11 | ||
|
|
9ee570e3bb | ||
|
|
cc80ec7839 | ||
|
|
e7174a2111 | ||
|
|
ef6adfd82d | ||
|
|
daf6c9bff8 | ||
|
|
9f02092788 | ||
|
|
b314ebeed3 | ||
|
|
38f8fe9a38 | ||
|
|
c0e1512195 | ||
|
|
b616854baa | ||
|
|
1ad9546ae4 | ||
|
|
fb3aac37ec | ||
|
|
598f964e91 | ||
|
|
d9e46f1065 | ||
|
|
565d011191 | ||
|
|
6ae6e5fafc | ||
|
|
eb1c0efda1 | ||
|
|
98bc816b21 | ||
|
|
85735287c3 | ||
|
|
d59022ae44 | ||
|
|
70a17af9d8 | ||
|
|
09feeb11d2 | ||
|
|
d95e1e68c4 | ||
|
|
6e484babe9 | ||
|
|
d37ff296f6 | ||
|
|
f95d25f080 | ||
|
|
fd35db3dd8 | ||
|
|
f22e10a496 | ||
|
|
52f80ec3b7 | ||
|
|
41fd11c0f4 | ||
|
|
f8a5e7dab5 | ||
|
|
4b71d6b3d7 | ||
|
|
becb7f8c7f | ||
|
|
3da7b57242 | ||
|
|
42e8057356 | ||
|
|
e082baabe8 | ||
|
|
74d565c99a | ||
|
|
750efbf430 | ||
|
|
68112ba978 | ||
|
|
e994375fc8 | ||
|
|
998f677ee7 | ||
|
|
8b1b50938d | ||
|
|
3dbece0b5e | ||
|
|
e9f1e522de | ||
|
|
8a815159c1 | ||
|
|
c8af676d6f | ||
|
|
3bee84a52f | ||
|
|
82828aacf6 | ||
|
|
e4de3cff61 | ||
|
|
4ed7f5d7fd | ||
|
|
7b956c73e4 | ||
|
|
8535dd2306 | ||
|
|
e13df3ae58 | ||
|
|
44fa68f52d | ||
|
|
d72abb1e30 | ||
|
|
aad4343a59 | ||
|
|
6b5717b04f | ||
|
|
655946a467 | ||
|
|
80f3d98162 | ||
|
|
d73be680e2 | ||
|
|
ad9595b3b2 | ||
|
|
8a337fcfd6 | ||
|
|
38b1dba395 | ||
|
|
7195de0418 | ||
|
|
20cb30ba51 | ||
|
|
2a7c96b0f5 | ||
|
|
8503e6ebe9 | ||
|
|
be2c2a2436 | ||
|
|
8a247c93d4 | ||
|
|
b4cdc7fc2d | ||
|
|
cc3f1ed01a | ||
|
|
4db4284362 | ||
|
|
3c2e517c61 | ||
|
|
1d712d1f84 | ||
|
|
f1e1e3c82c | ||
|
|
8e587cf055 | ||
|
|
277b95f74b | ||
|
|
b89b180ee9 | ||
|
|
3e89c35111 | ||
|
|
52f7939b06 | ||
|
|
13d038e855 | ||
|
|
325046d3c2 | ||
|
|
8cb3b578e0 | ||
|
|
3b5a5206fc | ||
|
|
1517d8d2d7 | ||
|
|
ba55477492 | ||
|
|
e363833437 | ||
|
|
6ec51baedb | ||
|
|
0fdf62499b | ||
|
|
1498e23b48 | ||
|
|
106ce839d8 | ||
|
|
eed561dadc | ||
|
|
c97ec1cbba | ||
|
|
29802d8066 | ||
|
|
9a51bc4b4e | ||
|
|
082f697706 | ||
|
|
6e026f2998 | ||
|
|
c647f0c02d | ||
|
|
da99297253 | ||
|
|
4ab982827e | ||
|
|
d3a4db511a | ||
|
|
fa9e4e3b06 | ||
|
|
e7cd941f0f | ||
|
|
c641606ecd | ||
|
|
021a360462 | ||
|
|
9104280ff1 | ||
|
|
0ea0f2d13d | ||
|
|
289e251480 | ||
|
|
ce421cfb89 | ||
|
|
bec41f2c63 | ||
|
|
3a34974ec9 | ||
|
|
a7c9fff283 | ||
|
|
c36cca61a1 | ||
|
|
42edf12d01 | ||
|
|
d6799e89c4 | ||
|
|
4b4006c9da | ||
|
|
33bb042b41 | ||
|
|
be2e91b9ce | ||
|
|
db424f8912 | ||
|
|
bfca2e313a | ||
|
|
1de51747e6 | ||
|
|
8a623b490b | ||
|
|
b5b8ef7e46 | ||
|
|
daa561b6c4 | ||
|
|
9bc30db1ad | ||
|
|
1a9d506d61 | ||
|
|
62b5d812e2 | ||
|
|
433c9ab5ea | ||
|
|
a7a6976204 |
@@ -5,9 +5,9 @@ name: MW APP MySQL55
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ name: MW APP MySQL56
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ name: MW APP MySQL57
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ name: MW APP MySQL80
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ name: MW APP PHP
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master" ]
|
branches: [ "run_test" ]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
+6
-2
@@ -122,12 +122,14 @@ data/datadir.pl
|
|||||||
data/502Task.pl
|
data/502Task.pl
|
||||||
data/default.pl
|
data/default.pl
|
||||||
data/backup.pl
|
data/backup.pl
|
||||||
|
data/debug.pl
|
||||||
data/default_site.pl
|
data/default_site.pl
|
||||||
lib/python*
|
lib/python*
|
||||||
|
|
||||||
bin
|
bin
|
||||||
pyvenv.cfg
|
pyvenv.cfg
|
||||||
include
|
include
|
||||||
|
share
|
||||||
pip-selfcheck.json
|
pip-selfcheck.json
|
||||||
|
|
||||||
scripts/mdserver-web
|
scripts/mdserver-web
|
||||||
@@ -140,16 +142,18 @@ data/restart.pl
|
|||||||
data/ssl.pl
|
data/ssl.pl
|
||||||
data/edate.pl
|
data/edate.pl
|
||||||
data/osname.pl
|
data/osname.pl
|
||||||
|
data/only_netio_counters.pl
|
||||||
data/system.db-journal
|
data/system.db-journal
|
||||||
|
data/hook_*.json
|
||||||
|
|
||||||
plugins/l2tp
|
plugins/l2tp
|
||||||
plugins/openlitespeed
|
plugins/openlitespeed
|
||||||
plugins/gdrive
|
plugins/gdrive
|
||||||
plugins/mtproxy
|
plugins/mtproxy
|
||||||
plugins/zimg
|
plugins/zimg
|
||||||
|
plugins/bk_demo
|
||||||
|
plugins/mail
|
||||||
debug.out
|
debug.out
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
### mdserver-web 0.9.5
|
<p align="center">
|
||||||
|
<img alt="logo" src="https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/logo.png" height="140" />
|
||||||
|
<h3 align="center">mdserver-web</h3>
|
||||||
|
<p align="center">一款简单Linux面板服务</p>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
### 简介
|
||||||
|
|
||||||
简单的Linux面板,感谢BT.CN写出如此好的web管理软件。我一看到,就知道这是我一直想要的页面化管理方式。
|
简单的Linux面板,感谢BT.CN写出如此好的web管理软件。我一看到,就知道这是我一直想要的页面化管理方式。
|
||||||
复制了后台管理界面,按照自己想要的方式写了一版。
|
复制了后台管理界面,按照自己想要的方式写了一版。
|
||||||
@@ -61,6 +67,19 @@ PHP[53-72]支持phpMyAdmin[4.4.15]
|
|||||||
PHP[72-81]支持phpMyAdmin[5.2.0]
|
PHP[72-81]支持phpMyAdmin[5.2.0]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# 特别赞助
|
||||||
|
|
||||||
|
- [找资源 - 阿里云盘资源搜索引擎](https://zhaoziyuan.la/)
|
||||||
|
|
||||||
|
# AD - VPS推荐 - 🙏
|
||||||
|
|
||||||
|
- [ZZZ评测](https://www.zzzvps.com/)
|
||||||
|
|
||||||
|
| 服务商 | LOGO | 推广地址 | 优惠码 |
|
||||||
|
| ------------- |----------|-----------|-------|
|
||||||
|
| digitalvirt |[](https://digitalvirt.com/aff.php?aff=154) | https://digitalvirt.com/aff.php?aff=154 | 9SYDY7UH0U |
|
||||||
|
| 搬瓦工 |[](https://bandwagonhost.com/aff.php?aff=54161) | https://bandwagonhost.com/aff.php?aff=54161 | BWH3HYATVBJW |
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
|
|
||||||
- 由[DDSRem](https://github.com/DDSRem)开发维护。
|
- 由[DDSRem](https://github.com/DDSRem)开发维护。
|
||||||
@@ -71,13 +90,14 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### 版本更新 0.9.5
|
### 版本更新 0.9.10
|
||||||
|
|
||||||
* 页面更新优化[2].
|
* 防跨站攻击(open_basedir)功能优化。
|
||||||
* 修复maridb的用户管理[2].
|
* 创建站点域名批量添加优化。
|
||||||
* Gogs初始化提示更人性.
|
* 首页CPU显示tip添加。
|
||||||
* MySQL&&MariaDB修改密码修复.
|
* 优化日志读取。
|
||||||
* MySQL&&MariaDB导入修复.
|
* 加入开发模式开关。
|
||||||
|
* redis添加性能调整功能。
|
||||||
|
|
||||||
|
|
||||||
### JSDelivr安装地址
|
### JSDelivr安装地址
|
||||||
@@ -124,16 +144,25 @@ curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/qu
|
|||||||
```
|
```
|
||||||
curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/install_dev.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/install_dev.sh | bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/update_dev.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/update_dev.sh | bash
|
||||||
|
|
||||||
|
|
||||||
|
curl -fsSL https://gitee.com/midoks/mdserver-web/raw/master/scripts/install_dev.sh | bash
|
||||||
|
curl -fsSL https://gitee.com/midoks/mdserver-web/raw/master/scripts/update_dev.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 捐赠地址 USDT(TRC20)
|
||||||
|
|
||||||
|
TVbNgrpeGBGZVm5gTLa21ADP7RpnPFhjya
|
||||||
|
|
||||||
|
|
||||||
### 微信赞助
|
### 微信赞助
|
||||||
[](/route/static/img/weixin_zz.jpg)
|
|
||||||
|
[](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/weixin_zz.jpg)
|
||||||
|
|
||||||
|
|
||||||
### 无图不真相
|
### 无图不真相
|
||||||
|
|
||||||
[](/route/static/mdw.jpg)
|
[](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/mdw.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Stargazers over time
|
### Stargazers over time
|
||||||
@@ -143,7 +172,7 @@ curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/up
|
|||||||
|
|
||||||
### 感谢开发赞助
|
### 感谢开发赞助
|
||||||
|
|
||||||
[](https://digitalvirt.com/)
|
[](https://digitalvirt.com/aff.php?aff=154)
|
||||||
|
|
||||||
### 授权许可
|
### 授权许可
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from flask import request
|
|||||||
|
|
||||||
class config_api:
|
class config_api:
|
||||||
|
|
||||||
__version = '0.9.5'
|
__version = '0.9.10'
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
@@ -207,6 +207,14 @@ class config_api:
|
|||||||
mw.execShell("chown root.root " + filename)
|
mw.execShell("chown root.root " + filename)
|
||||||
return mw.returnJson(True, '面板已关闭!')
|
return mw.returnJson(True, '面板已关闭!')
|
||||||
|
|
||||||
|
def openDebugApi(self):
|
||||||
|
filename = 'data/debug.pl'
|
||||||
|
if os.path.exists(filename):
|
||||||
|
os.remove(filename)
|
||||||
|
return mw.returnJson(True, '开发模式关闭!')
|
||||||
|
mw.writeFile(filename, 'True')
|
||||||
|
return mw.returnJson(True, '开发模式开启!')
|
||||||
|
|
||||||
def setIpv6StatusApi(self):
|
def setIpv6StatusApi(self):
|
||||||
ipv6_file = 'data/ipv6.pl'
|
ipv6_file = 'data/ipv6.pl'
|
||||||
if os.path.exists('data/ipv6.pl'):
|
if os.path.exists('data/ipv6.pl'):
|
||||||
@@ -316,11 +324,17 @@ class config_api:
|
|||||||
data['admin_path'] = mw.readFile(admin_path_file)
|
data['admin_path'] = mw.readFile(admin_path_file)
|
||||||
|
|
||||||
ipv6_file = 'data/ipv6.pl'
|
ipv6_file = 'data/ipv6.pl'
|
||||||
if os.path.exists('data/ipv6.pl'):
|
if os.path.exists(ipv6_file):
|
||||||
data['ipv6'] = 'checked'
|
data['ipv6'] = 'checked'
|
||||||
else:
|
else:
|
||||||
data['ipv6'] = ''
|
data['ipv6'] = ''
|
||||||
|
|
||||||
|
debug_file = 'data/debug.pl'
|
||||||
|
if os.path.exists(debug_file):
|
||||||
|
data['debug'] = 'checked'
|
||||||
|
else:
|
||||||
|
data['debug'] = ''
|
||||||
|
|
||||||
ssl_file = 'data/ssl.pl'
|
ssl_file = 'data/ssl.pl'
|
||||||
if os.path.exists('data/ssl.pl'):
|
if os.path.exists('data/ssl.pl'):
|
||||||
data['ssl'] = 'checked'
|
data['ssl'] = 'checked'
|
||||||
|
|||||||
+19
-12
@@ -167,7 +167,7 @@ class crontab_api:
|
|||||||
logFile = mw.getServerDir() + '/cron/' + echo['echo'] + '.log'
|
logFile = mw.getServerDir() + '/cron/' + echo['echo'] + '.log'
|
||||||
if not os.path.exists(logFile):
|
if not os.path.exists(logFile):
|
||||||
return mw.returnJson(False, '当前日志为空!')
|
return mw.returnJson(False, '当前日志为空!')
|
||||||
log = mw.getNumLines(logFile, 500)
|
log = mw.getLastLine(logFile, 500)
|
||||||
return mw.returnJson(True, log)
|
return mw.returnJson(True, log)
|
||||||
|
|
||||||
def addApi(self):
|
def addApi(self):
|
||||||
@@ -295,9 +295,18 @@ class crontab_api:
|
|||||||
# 取数据列表
|
# 取数据列表
|
||||||
def getDataListApi(self):
|
def getDataListApi(self):
|
||||||
stype = request.form.get('type', '')
|
stype = request.form.get('type', '')
|
||||||
|
|
||||||
|
bak_data = []
|
||||||
|
|
||||||
|
if stype == 'sites' or stype == 'databases':
|
||||||
|
hookPath = mw.getPanelDataDir() + "/hook_backup.json"
|
||||||
|
if os.path.exists(hookPath):
|
||||||
|
t = mw.readFile(hookPath)
|
||||||
|
bak_data = json.loads(t)
|
||||||
|
|
||||||
if stype == 'databases':
|
if stype == 'databases':
|
||||||
db_list = {}
|
db_list = {}
|
||||||
db_list['orderOpt'] = []
|
db_list['orderOpt'] = bak_data
|
||||||
path = mw.getServerDir() + '/mysql'
|
path = mw.getServerDir() + '/mysql'
|
||||||
if not os.path.exists(path + '/mysql.db'):
|
if not os.path.exists(path + '/mysql.db'):
|
||||||
db_list['data'] = []
|
db_list['data'] = []
|
||||||
@@ -307,8 +316,9 @@ class crontab_api:
|
|||||||
return mw.getJson(db_list)
|
return mw.getJson(db_list)
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
|
data['orderOpt'] = bak_data
|
||||||
|
|
||||||
data['data'] = mw.M(stype).field('name,ps').select()
|
data['data'] = mw.M(stype).field('name,ps').select()
|
||||||
data['orderOpt'] = []
|
|
||||||
return mw.getJson(data)
|
return mw.getJson(data)
|
||||||
##### ----- start ----- ###
|
##### ----- start ----- ###
|
||||||
|
|
||||||
@@ -411,16 +421,13 @@ class crontab_api:
|
|||||||
'rememory': head + "/bin/bash " + script_dir + '/rememory.sh'
|
'rememory': head + "/bin/bash " + script_dir + '/rememory.sh'
|
||||||
}
|
}
|
||||||
if param['backup_to'] != 'localhost':
|
if param['backup_to'] != 'localhost':
|
||||||
cfile = mw.getServerDir() + "/mdserver-web/plugin/" + \
|
cfile = mw.getPluginDir() + "/" + \
|
||||||
param['backup_to'] + "/" + param['backup_to'] + "_main.py"
|
param['backup_to'] + "/index.py"
|
||||||
if not os.path.exists(cfile):
|
|
||||||
cfile = script_dir + "/backup_" + \
|
|
||||||
param['backup_to'] + ".py"
|
|
||||||
wheres = {
|
wheres = {
|
||||||
'path': head + "python " + cfile + " path " + param['sname'] + " " + str(param['save']),
|
'path': head + "python3 " + cfile + " path " + param['sname'] + " " + str(param['save']),
|
||||||
'site': head + "python " + cfile + " site " + param['sname'] + " " + str(param['save']),
|
'site': head + "python3 " + cfile + " site " + param['sname'] + " " + str(param['save']),
|
||||||
'database': head + "python " + cfile + " database " + param['sname'] + " " + str(param['save']),
|
'database': head + "python3 " + cfile + " database " + param['sname'] + " " + str(param['save']),
|
||||||
'logs': head + "python " + script_dir + "/logs_backup.py " + param['sname'] + log + " " + str(param['save']),
|
'logs': head + "python3 " + script_dir + "/logs_backup.py " + param['sname'] + log + " " + str(param['save']),
|
||||||
'rememory': head + "/bin/bash " + script_dir + '/rememory.sh'
|
'rememory': head + "/bin/bash " + script_dir + '/rememory.sh'
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class files_api:
|
|||||||
return mw.returnJson(False, '文件不存在', (path,))
|
return mw.returnJson(False, '文件不存在', (path,))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = mw.getNumLines(path, int(line))
|
data = mw.getLastLine(path, int(line))
|
||||||
return mw.returnJson(True, 'OK', data)
|
return mw.returnJson(True, 'OK', data)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
return mw.returnJson(False, u'无法正确读取文件!' + str(ex))
|
return mw.returnJson(False, u'无法正确读取文件!' + str(ex))
|
||||||
@@ -676,8 +676,7 @@ class files_api:
|
|||||||
data['encoding'] = 'utf-8'
|
data['encoding'] = 'utf-8'
|
||||||
if char['encoding'] == 'Big5':
|
if char['encoding'] == 'Big5':
|
||||||
data['encoding'] = 'BIG5'
|
data['encoding'] = 'BIG5'
|
||||||
if not char['encoding'] in ['GBK', 'utf-8',
|
if not char['encoding'] in ['GBK', 'utf-8', 'BIG5']:
|
||||||
'BIG5']:
|
|
||||||
data['encoding'] = 'utf-8'
|
data['encoding'] = 'utf-8'
|
||||||
try:
|
try:
|
||||||
if sys.version_info[0] == 2:
|
if sys.version_info[0] == 2:
|
||||||
|
|||||||
+37
-22
@@ -57,10 +57,22 @@ def getPluginDir():
|
|||||||
return getRunDir() + '/plugins'
|
return getRunDir() + '/plugins'
|
||||||
|
|
||||||
|
|
||||||
|
def getPanelDataDir():
|
||||||
|
return getRunDir() + '/data'
|
||||||
|
|
||||||
|
|
||||||
def getServerDir():
|
def getServerDir():
|
||||||
return getRootDir() + '/server'
|
return getRootDir() + '/server'
|
||||||
|
|
||||||
|
|
||||||
|
def getLogsDir():
|
||||||
|
return getRootDir() + '/wwwlogs'
|
||||||
|
|
||||||
|
|
||||||
|
def getBackupDir():
|
||||||
|
return getRootDir() + '/backup'
|
||||||
|
|
||||||
|
|
||||||
def getWwwDir():
|
def getWwwDir():
|
||||||
file = getRunDir() + '/data/site.pl'
|
file = getRunDir() + '/data/site.pl'
|
||||||
if os.path.exists(file):
|
if os.path.exists(file):
|
||||||
@@ -73,14 +85,6 @@ def setWwwDir(wdir):
|
|||||||
return writeFile(file, wdir)
|
return writeFile(file, wdir)
|
||||||
|
|
||||||
|
|
||||||
def getLogsDir():
|
|
||||||
return getRootDir() + '/wwwlogs'
|
|
||||||
|
|
||||||
|
|
||||||
def getBackupDir():
|
|
||||||
return getRootDir() + '/backup'
|
|
||||||
|
|
||||||
|
|
||||||
def setBackupDir(bdir):
|
def setBackupDir(bdir):
|
||||||
file = getRunDir() + '/data/backup.pl'
|
file = getRunDir() + '/data/backup.pl'
|
||||||
return writeFile(file, bdir)
|
return writeFile(file, bdir)
|
||||||
@@ -163,13 +167,13 @@ def restartWeb():
|
|||||||
# systemd
|
# systemd
|
||||||
systemd = '/lib/systemd/system/openresty.service'
|
systemd = '/lib/systemd/system/openresty.service'
|
||||||
if os.path.exists(systemd):
|
if os.path.exists(systemd):
|
||||||
execShell('systemctl restart openresty')
|
execShell('systemctl reload openresty')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# initd
|
# initd
|
||||||
initd = getServerDir() + '/openresty/init.d/openresty'
|
initd = getServerDir() + '/openresty/init.d/openresty'
|
||||||
if os.path.exists(initd):
|
if os.path.exists(initd):
|
||||||
execShell(initd + ' ' + 'restart')
|
execShell(initd + ' ' + 'reload')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
@@ -605,7 +609,7 @@ def getNumLines(path, num, p=1):
|
|||||||
break
|
break
|
||||||
fp.close()
|
fp.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return ''
|
return str(e)
|
||||||
|
|
||||||
return "\n".join(data)
|
return "\n".join(data)
|
||||||
|
|
||||||
@@ -646,16 +650,14 @@ def getLocalIp():
|
|||||||
try:
|
try:
|
||||||
ipaddress = readFile(filename)
|
ipaddress = readFile(filename)
|
||||||
if not ipaddress or ipaddress == '127.0.0.1':
|
if not ipaddress or ipaddress == '127.0.0.1':
|
||||||
raise Exception("ip is empty!")
|
cmd = "curl -4 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text"
|
||||||
|
ip = execShell(cmd)
|
||||||
|
result = ip[0].strip()
|
||||||
|
if result == '':
|
||||||
|
raise Exception("ipv4 is empty!")
|
||||||
|
writeFile(filename, result)
|
||||||
|
return result
|
||||||
return ipaddress
|
return ipaddress
|
||||||
except Exception as e:
|
|
||||||
cmd = "curl -4 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text"
|
|
||||||
ip = execShell(cmd)
|
|
||||||
result = ip[0].strip()
|
|
||||||
if result == '':
|
|
||||||
raise e
|
|
||||||
writeFile(filename, result)
|
|
||||||
return result
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
cmd = "curl -6 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text"
|
cmd = "curl -6 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text"
|
||||||
ip = execShell(cmd)
|
ip = execShell(cmd)
|
||||||
@@ -664,6 +666,8 @@ def getLocalIp():
|
|||||||
return '127.0.0.1'
|
return '127.0.0.1'
|
||||||
writeFile(filename, result)
|
writeFile(filename, result)
|
||||||
return result
|
return result
|
||||||
|
finally:
|
||||||
|
pass
|
||||||
return '127.0.0.1'
|
return '127.0.0.1'
|
||||||
|
|
||||||
|
|
||||||
@@ -710,13 +714,24 @@ def getStrBetween(startStr, endStr, srcStr):
|
|||||||
|
|
||||||
|
|
||||||
def getCpuType():
|
def getCpuType():
|
||||||
|
cpuType = ''
|
||||||
|
if isAppleSystem():
|
||||||
|
cmd = "system_profiler SPHardwareDataType | grep 'Processor Name' | awk -F ':' '{print $2}'"
|
||||||
|
cpuinfo = execShell(cmd)
|
||||||
|
return cpuinfo[0].strip()
|
||||||
|
|
||||||
# 取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)
|
tmp = re.search(rep, cpuinfo, re.I)
|
||||||
cpuType = None
|
|
||||||
if tmp:
|
if tmp:
|
||||||
cpuType = tmp.groups()[0]
|
cpuType = tmp.groups()[0]
|
||||||
|
else:
|
||||||
|
cpuinfo = execShell('LANG="en_US.UTF-8" && lscpu')[0]
|
||||||
|
rep = "Model\s+name:\s+(.+)"
|
||||||
|
tmp = re.search(rep, cpuinfo, re.I)
|
||||||
|
if tmp:
|
||||||
|
cpuType = tmp.groups()[0]
|
||||||
return cpuType
|
return cpuType
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ class plugins_api:
|
|||||||
return mw.returnJson(False, '配置文件不存在!', ())
|
return mw.returnJson(False, '配置文件不存在!', ())
|
||||||
|
|
||||||
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
||||||
|
self.hookInstall(pluginInfo)
|
||||||
|
|
||||||
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
||||||
name + " && /bin/bash " + pluginInfo["shell"] \
|
name + " && /bin/bash " + pluginInfo["shell"] \
|
||||||
@@ -131,6 +132,55 @@ class plugins_api:
|
|||||||
mw.triggerTask()
|
mw.triggerTask()
|
||||||
return mw.returnJson(True, '已将安装任务添加到队列!')
|
return mw.returnJson(True, '已将安装任务添加到队列!')
|
||||||
|
|
||||||
|
def hookInstallFile(self, hook_name, info):
|
||||||
|
hookPath = mw.getPanelDataDir() + "/hook_" + hook_name + ".json"
|
||||||
|
data = []
|
||||||
|
if os.path.exists(hookPath):
|
||||||
|
t = mw.readFile(hookPath)
|
||||||
|
data = json.loads(t)
|
||||||
|
|
||||||
|
isNeedAdd = True
|
||||||
|
for x in range(len(data)):
|
||||||
|
if data[x]['title'] == info['title'] and data[x]['name'] == info['name']:
|
||||||
|
isNeedAdd = False
|
||||||
|
|
||||||
|
if isNeedAdd:
|
||||||
|
tmp = {}
|
||||||
|
tmp['title'] = info['title']
|
||||||
|
tmp['name'] = info['name']
|
||||||
|
data.append(tmp)
|
||||||
|
mw.writeFile(hookPath, json.dumps(data))
|
||||||
|
|
||||||
|
def hookUninstallFile(self, hook_name, info):
|
||||||
|
hookPath = mw.getPanelDataDir() + "/hook_" + hook_name + ".json"
|
||||||
|
data = []
|
||||||
|
if os.path.exists(hookPath):
|
||||||
|
t = mw.readFile(hookPath)
|
||||||
|
data = json.loads(t)
|
||||||
|
|
||||||
|
for idx in range(len(data)):
|
||||||
|
if data[idx]['title'] == info['title'] and data[idx]['name'] == info['name']:
|
||||||
|
data.remove(data[idx])
|
||||||
|
mw.writeFile(hookPath, json.dumps(data))
|
||||||
|
|
||||||
|
def hookInstall(self, info):
|
||||||
|
if 'hook' in info:
|
||||||
|
hooks = info['hook']
|
||||||
|
for x in hooks:
|
||||||
|
if x in ['backup']:
|
||||||
|
self.hookInstallFile(x, info)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def hookUninstall(self, info):
|
||||||
|
if 'hook' in info:
|
||||||
|
hooks = info['hook']
|
||||||
|
for x in hooks:
|
||||||
|
if x in ['backup']:
|
||||||
|
self.hookUninstallFile(x, info)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def uninstallOldApi(self):
|
def uninstallOldApi(self):
|
||||||
rundir = mw.getRunDir()
|
rundir = mw.getRunDir()
|
||||||
name = request.form.get('name', '')
|
name = request.form.get('name', '')
|
||||||
@@ -147,7 +197,6 @@ class plugins_api:
|
|||||||
return mw.returnJson(False, "配置文件不存在!", ())
|
return mw.returnJson(False, "配置文件不存在!", ())
|
||||||
|
|
||||||
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
||||||
|
|
||||||
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
||||||
name + " && /bin/bash " + pluginInfo["shell"] \
|
name + " && /bin/bash " + pluginInfo["shell"] \
|
||||||
+ " uninstall " + version
|
+ " uninstall " + version
|
||||||
@@ -175,13 +224,13 @@ class plugins_api:
|
|||||||
return mw.returnJson(False, "配置文件不存在!", ())
|
return mw.returnJson(False, "配置文件不存在!", ())
|
||||||
|
|
||||||
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
pluginInfo = json.loads(mw.readFile(infoJsonPos))
|
||||||
|
self.hookUninstall(pluginInfo)
|
||||||
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
execstr = "cd " + os.getcwd() + "/plugins/" + \
|
||||||
name + " && /bin/bash " + pluginInfo["shell"] \
|
name + " && /bin/bash " + pluginInfo["shell"] \
|
||||||
+ " uninstall " + version
|
+ " uninstall " + version
|
||||||
|
|
||||||
data = mw.execShell(execstr)
|
data = mw.execShell(execstr)
|
||||||
if mw.isAppleSystem():
|
if mw.isDebugMode():
|
||||||
print(execstr)
|
print(execstr)
|
||||||
print(data[0], data[1])
|
print(data[0], data[1])
|
||||||
self.removeIndex(name, version)
|
self.removeIndex(name, version)
|
||||||
@@ -793,7 +842,7 @@ class plugins_api:
|
|||||||
print('getIndexList:', e)
|
print('getIndexList:', e)
|
||||||
|
|
||||||
# 使用gevent模式时,无法使用多进程
|
# 使用gevent模式时,无法使用多进程
|
||||||
#plist = self.checkStatusMProcess(plist)
|
# plist = self.checkStatusMProcess(plist)
|
||||||
plist = self.checkStatusMThreads(plist)
|
plist = self.checkStatusMThreads(plist)
|
||||||
return plist
|
return plist
|
||||||
|
|
||||||
|
|||||||
+40
-25
@@ -340,10 +340,16 @@ class site_api:
|
|||||||
name = mw.M('sites').where("id=?", (mid,)).getField('name')
|
name = mw.M('sites').where("id=?", (mid,)).getField('name')
|
||||||
data = {}
|
data = {}
|
||||||
data['logs'] = self.getLogsStatus(name)
|
data['logs'] = self.getLogsStatus(name)
|
||||||
|
data['runPath'] = self.getSiteRunPath(mid)
|
||||||
|
|
||||||
data['userini'] = False
|
data['userini'] = False
|
||||||
if os.path.exists(path + '/.user.ini'):
|
if os.path.exists(path + '/.user.ini'):
|
||||||
data['userini'] = True
|
data['userini'] = True
|
||||||
data['runPath'] = self.getSiteRunPath(mid)
|
|
||||||
|
if data['runPath']['runPath'] != '/':
|
||||||
|
if os.path.exists(path + data['runPath']['runPath'] + '/.user.ini'):
|
||||||
|
data['userini'] = True
|
||||||
|
|
||||||
data['pass'] = self.getHasPwd(name)
|
data['pass'] = self.getHasPwd(name)
|
||||||
data['path'] = path
|
data['path'] = path
|
||||||
data['name'] = name
|
data['name'] = name
|
||||||
@@ -351,15 +357,18 @@ class site_api:
|
|||||||
|
|
||||||
def setDirUserIniApi(self):
|
def setDirUserIniApi(self):
|
||||||
path = request.form.get('path', '')
|
path = request.form.get('path', '')
|
||||||
|
runPath = request.form.get('runPath', '')
|
||||||
filename = path + '/.user.ini'
|
filename = path + '/.user.ini'
|
||||||
self.delUserInI(path)
|
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
|
self.delUserInI(path)
|
||||||
mw.execShell("which chattr && chattr -i " + filename)
|
mw.execShell("which chattr && chattr -i " + filename)
|
||||||
os.remove(filename)
|
os.remove(filename)
|
||||||
return mw.returnJson(True, '已清除防跨站设置!')
|
return mw.returnJson(True, '已清除防跨站设置!')
|
||||||
mw.writeFile(filename, 'open_basedir=' + path +
|
|
||||||
'/:/www/server/php:/tmp/:/proc/')
|
self.setDirUserINI(path, runPath)
|
||||||
mw.execShell("which chattr && chattr +i " + filename)
|
mw.execShell("which chattr && chattr +i " + filename)
|
||||||
|
|
||||||
return mw.returnJson(True, '已打开防跨站设置!')
|
return mw.returnJson(True, '已打开防跨站设置!')
|
||||||
|
|
||||||
def logsOpenApi(self):
|
def logsOpenApi(self):
|
||||||
@@ -497,7 +506,7 @@ class site_api:
|
|||||||
certName = request.form.get('certName', '')
|
certName = request.form.get('certName', '')
|
||||||
siteName = request.form.get('siteName', '')
|
siteName = request.form.get('siteName', '')
|
||||||
try:
|
try:
|
||||||
path = self.sslDir + siteName
|
path = self.sslDir + siteName.strip()
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
return mw.returnJson(False, '证书不存在!')
|
return mw.returnJson(False, '证书不存在!')
|
||||||
|
|
||||||
@@ -730,11 +739,11 @@ class site_api:
|
|||||||
if conf.find('ssl_certificate') == -1:
|
if conf.find('ssl_certificate') == -1:
|
||||||
return mw.returnJson(False, '当前未开启SSL')
|
return mw.returnJson(False, '当前未开启SSL')
|
||||||
to = """#error_page 404/404.html;
|
to = """#error_page 404/404.html;
|
||||||
#HTTP_TO_HTTPS_START
|
# HTTP_TO_HTTPS_START
|
||||||
if ($server_port !~ 443){
|
if ($server_port !~ 443){
|
||||||
rewrite ^(/.*)$ https://$host$1 permanent;
|
rewrite ^(/.*)$ https://$host$1 permanent;
|
||||||
}
|
}
|
||||||
#HTTP_TO_HTTPS_END"""
|
# HTTP_TO_HTTPS_END"""
|
||||||
conf = conf.replace('#error_page 404/404.html;', to)
|
conf = conf.replace('#error_page 404/404.html;', to)
|
||||||
mw.writeFile(file, conf)
|
mw.writeFile(file, conf)
|
||||||
|
|
||||||
@@ -1095,6 +1104,7 @@ class site_api:
|
|||||||
sitePath = mw.M('sites').where('id=?', (mid,)).getField('path')
|
sitePath = mw.M('sites').where('id=?', (mid,)).getField('path')
|
||||||
|
|
||||||
newPath = sitePath + runPath
|
newPath = sitePath + runPath
|
||||||
|
|
||||||
# 处理Nginx
|
# 处理Nginx
|
||||||
filename = self.getHostConf(siteName)
|
filename = self.getHostConf(siteName)
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
@@ -1104,8 +1114,7 @@ class site_api:
|
|||||||
conf = conf.replace(path, newPath)
|
conf = conf.replace(path, newPath)
|
||||||
mw.writeFile(filename, conf)
|
mw.writeFile(filename, conf)
|
||||||
|
|
||||||
self.delUserInI(sitePath)
|
self.setDirUserINI(sitePath, runPath)
|
||||||
self.setDirUserINI(newPath)
|
|
||||||
|
|
||||||
mw.restartWeb()
|
mw.restartWeb()
|
||||||
return mw.returnJson(True, '设置成功!')
|
return mw.returnJson(True, '设置成功!')
|
||||||
@@ -1562,7 +1571,7 @@ class site_api:
|
|||||||
|
|
||||||
# location ~* ^{from}(.*)$ {
|
# location ~* ^{from}(.*)$ {
|
||||||
tpl = """
|
tpl = """
|
||||||
# PROXY-START/
|
#PROXY-START/
|
||||||
location ^~ {from} {
|
location ^~ {from} {
|
||||||
proxy_pass {to};
|
proxy_pass {to};
|
||||||
proxy_set_header Host {host};
|
proxy_set_header Host {host};
|
||||||
@@ -1585,7 +1594,7 @@ location ^~ {from} {
|
|||||||
add_header Cache-Control no-cache;
|
add_header Cache-Control no-cache;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# PROXY-END/
|
#PROXY-END/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# replace
|
# replace
|
||||||
@@ -1829,13 +1838,13 @@ location ^~ {from} {
|
|||||||
logPath = mw.getLogsDir() + '/' + siteName + '.log'
|
logPath = mw.getLogsDir() + '/' + siteName + '.log'
|
||||||
if not os.path.exists(logPath):
|
if not os.path.exists(logPath):
|
||||||
return mw.returnJson(False, '日志为空')
|
return mw.returnJson(False, '日志为空')
|
||||||
return mw.returnJson(True, mw.getNumLines(logPath, 100))
|
return mw.returnJson(True, mw.getLastLine(logPath, 100))
|
||||||
|
|
||||||
def getErrorLogs(self, siteName):
|
def getErrorLogs(self, siteName):
|
||||||
logPath = mw.getLogsDir() + '/' + siteName + '.error.log'
|
logPath = mw.getLogsDir() + '/' + siteName + '.error.log'
|
||||||
if not os.path.exists(logPath):
|
if not os.path.exists(logPath):
|
||||||
return mw.returnJson(False, '日志为空')
|
return mw.returnJson(False, '日志为空')
|
||||||
return mw.returnJson(True, mw.getNumLines(logPath, 100))
|
return mw.returnJson(True, mw.getLastLine(logPath, 100))
|
||||||
|
|
||||||
# 取日志状态
|
# 取日志状态
|
||||||
def getLogsStatus(self, siteName):
|
def getLogsStatus(self, siteName):
|
||||||
@@ -2094,12 +2103,16 @@ location ^~ {from} {
|
|||||||
return rewriteList
|
return rewriteList
|
||||||
|
|
||||||
def createRootDir(self, path):
|
def createRootDir(self, path):
|
||||||
|
autoInit = False
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
|
autoInit = True
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
if not mw.isAppleSystem():
|
if not mw.isAppleSystem():
|
||||||
mw.execShell('chown -R www:www ' + path)
|
mw.execShell('chown -R www:www ' + path)
|
||||||
mw.writeFile(path + '/index.html', 'Work has started!!!')
|
|
||||||
mw.execShell('chmod -R 755 ' + path)
|
if autoInit:
|
||||||
|
mw.writeFile(path + '/index.html', 'Work has started!!!')
|
||||||
|
mw.execShell('chmod -R 755 ' + path)
|
||||||
|
|
||||||
def nginxAddDomain(self, webname, domain, port):
|
def nginxAddDomain(self, webname, domain, port):
|
||||||
file = self.getHostConf(webname)
|
file = self.getHostConf(webname)
|
||||||
@@ -2182,19 +2195,16 @@ location ^~ {from} {
|
|||||||
return mw.returnJson(False, '您添加的域名已存在!')
|
return mw.returnJson(False, '您添加的域名已存在!')
|
||||||
mw.M('domain').where('pid=?', (opid,)).delete()
|
mw.M('domain').where('pid=?', (opid,)).delete()
|
||||||
|
|
||||||
|
self.createRootDir(self.sitePath)
|
||||||
|
self.nginxAddConf()
|
||||||
|
|
||||||
# 添加更多域名
|
# 添加更多域名
|
||||||
for domain in siteMenu['domainlist']:
|
for domain in siteMenu['domainlist']:
|
||||||
sdomain = domain
|
self.addDomain(domain, self.siteName, pid)
|
||||||
swebname = self.siteName
|
|
||||||
spid = str(pid)
|
|
||||||
self.addDomain(domain, webname, pid)
|
|
||||||
|
|
||||||
mw.M('domain').add('pid,name,port,addtime',
|
mw.M('domain').add('pid,name,port,addtime',
|
||||||
(pid, self.siteName, self.sitePort, mw.getDate()))
|
(pid, self.siteName, self.sitePort, mw.getDate()))
|
||||||
|
|
||||||
self.createRootDir(self.sitePath)
|
|
||||||
self.nginxAddConf()
|
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
data['siteStatus'] = False
|
data['siteStatus'] = False
|
||||||
mw.restartWeb()
|
mw.restartWeb()
|
||||||
@@ -2350,7 +2360,9 @@ location ^~ {from} {
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
# 设置目录防御
|
# 设置目录防御
|
||||||
def setDirUserINI(self, newPath):
|
def setDirUserINI(self, sitePath, runPath):
|
||||||
|
newPath = sitePath + runPath
|
||||||
|
|
||||||
filename = newPath + '/.user.ini'
|
filename = newPath + '/.user.ini'
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
mw.execShell("chattr -i " + filename)
|
mw.execShell("chattr -i " + filename)
|
||||||
@@ -2358,8 +2370,11 @@ location ^~ {from} {
|
|||||||
return mw.returnJson(True, '已清除防跨站设置!')
|
return mw.returnJson(True, '已清除防跨站设置!')
|
||||||
|
|
||||||
self.delUserInI(newPath)
|
self.delUserInI(newPath)
|
||||||
mw.writeFile(filename, 'open_basedir=' +
|
openPath = 'open_basedir={}/:{}/'.format(newPath, sitePath)
|
||||||
newPath + '/:/www/server/php:/tmp/:/proc/')
|
if runPath == '/':
|
||||||
|
openPath = 'open_basedir={}/'.format(sitePath)
|
||||||
|
|
||||||
|
mw.writeFile(filename, openPath + ':/www/server/php:/tmp/:/proc/')
|
||||||
mw.execShell("chattr +i " + filename)
|
mw.execShell("chattr +i " + filename)
|
||||||
|
|
||||||
return mw.returnJson(True, '已打开防跨站设置!')
|
return mw.returnJson(True, '已打开防跨站设置!')
|
||||||
|
|||||||
+52
-40
@@ -162,7 +162,7 @@ class system_api:
|
|||||||
except:
|
except:
|
||||||
port = mw.readFile('data/port.pl')
|
port = mw.readFile('data/port.pl')
|
||||||
except:
|
except:
|
||||||
port = '8888'
|
port = '7200'
|
||||||
domain = ''
|
domain = ''
|
||||||
if os.path.exists('data/domain.conf'):
|
if os.path.exists('data/domain.conf'):
|
||||||
domain = mw.readFile('data/domain.conf')
|
domain = mw.readFile('data/domain.conf')
|
||||||
@@ -201,9 +201,9 @@ class system_api:
|
|||||||
def getLoadAverage(self):
|
def getLoadAverage(self):
|
||||||
c = os.getloadavg()
|
c = os.getloadavg()
|
||||||
data = {}
|
data = {}
|
||||||
data['one'] = float(c[0])
|
data['one'] = round(float(c[0]), 2)
|
||||||
data['five'] = float(c[1])
|
data['five'] = round(float(c[1]), 2)
|
||||||
data['fifteen'] = float(c[2])
|
data['fifteen'] = round(float(c[2]), 2)
|
||||||
data['max'] = psutil.cpu_count() * 2
|
data['max'] = psutil.cpu_count() * 2
|
||||||
data['limit'] = data['max']
|
data['limit'] = data['max']
|
||||||
data['safe'] = data['max'] * 0.75
|
data['safe'] = data['max'] * 0.75
|
||||||
@@ -276,8 +276,17 @@ class system_api:
|
|||||||
def getCpuInfo(self, interval=1):
|
def getCpuInfo(self, interval=1):
|
||||||
# 取CPU信息
|
# 取CPU信息
|
||||||
cpuCount = psutil.cpu_count()
|
cpuCount = psutil.cpu_count()
|
||||||
|
cpuLogicalNum = psutil.cpu_count(logical=False)
|
||||||
used = psutil.cpu_percent(interval=interval)
|
used = psutil.cpu_percent(interval=interval)
|
||||||
return used, cpuCount
|
|
||||||
|
if os.path.exists('/proc/cpuinfo'):
|
||||||
|
c_tmp = mw.readFile('/proc/cpuinfo')
|
||||||
|
d_tmp = re.findall("physical id.+", c_tmp)
|
||||||
|
cpuLogicalNum = len(set(d_tmp))
|
||||||
|
|
||||||
|
used_all = psutil.cpu_percent(percpu=True)
|
||||||
|
cpu_name = mw.getCpuType() + " * {}".format(cpuLogicalNum)
|
||||||
|
return used, cpuCount, used_all, cpu_name, cpuCount, cpuLogicalNum
|
||||||
|
|
||||||
def getMemInfo(self):
|
def getMemInfo(self):
|
||||||
# 取内存信息
|
# 取内存信息
|
||||||
@@ -437,12 +446,35 @@ class system_api:
|
|||||||
os.system('echo > /tmp/panelBoot.pl')
|
os.system('echo > /tmp/panelBoot.pl')
|
||||||
return total, count
|
return total, count
|
||||||
|
|
||||||
|
def psutilNetIoCounters(self):
|
||||||
|
'''
|
||||||
|
统计网卡流量
|
||||||
|
'''
|
||||||
|
stat_pl = 'data/only_netio_counters.pl'
|
||||||
|
if os.path.exists(stat_pl):
|
||||||
|
local_lo = (0, 0, 0, 0)
|
||||||
|
ioName = psutil.net_io_counters(pernic=True).keys()
|
||||||
|
for x in ioName:
|
||||||
|
|
||||||
|
if x.find("lo") > -1:
|
||||||
|
local_lo = psutil.net_io_counters(
|
||||||
|
pernic=True).get(x)[:4]
|
||||||
|
|
||||||
|
all_io = psutil.net_io_counters()[:4]
|
||||||
|
result_io = tuple([all_io[i] - local_lo[i]
|
||||||
|
for i in range(0, len(all_io))])
|
||||||
|
|
||||||
|
# print(local_lo)
|
||||||
|
# print(all_io)
|
||||||
|
# print(result_io)
|
||||||
|
return result_io
|
||||||
|
return psutil.net_io_counters()[:4]
|
||||||
|
|
||||||
def getNetWork(self):
|
def getNetWork(self):
|
||||||
# return self.GetNetWorkApi(get);
|
|
||||||
# 取网络流量信息
|
# 取网络流量信息
|
||||||
try:
|
try:
|
||||||
# 取网络流量信息
|
# 取网络流量信息
|
||||||
networkIo = psutil.net_io_counters()[:4]
|
networkIo = self.psutilNetIoCounters()
|
||||||
if not "otime" in session:
|
if not "otime" in session:
|
||||||
session['up'] = networkIo[0]
|
session['up'] = networkIo[0]
|
||||||
session['down'] = networkIo[1]
|
session['down'] = networkIo[1]
|
||||||
@@ -470,38 +502,7 @@ class system_api:
|
|||||||
|
|
||||||
return networkInfo
|
return networkInfo
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# print(e)
|
print("getNetWork error:", e)
|
||||||
return None
|
|
||||||
|
|
||||||
def getNetWorkApi(self):
|
|
||||||
# 取网络流量信息
|
|
||||||
try:
|
|
||||||
tmpfile = 'data/network.temp'
|
|
||||||
networkIo = psutil.net_io_counters()[:4]
|
|
||||||
|
|
||||||
if not os.path.exists(tmpfile):
|
|
||||||
mw.writeFile(tmpfile, str(
|
|
||||||
networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
|
|
||||||
|
|
||||||
lastValue = mw.readFile(tmpfile).split('|')
|
|
||||||
|
|
||||||
ntime = time.time()
|
|
||||||
networkInfo = {}
|
|
||||||
networkInfo['upTotal'] = networkIo[0]
|
|
||||||
networkInfo['downTotal'] = networkIo[1]
|
|
||||||
networkInfo['up'] = round(
|
|
||||||
float(networkIo[0] - int(lastValue[0])) / 1024 / (ntime - int(lastValue[2])), 2)
|
|
||||||
networkInfo['down'] = round(
|
|
||||||
float(networkIo[1] - int(lastValue[1])) / 1024 / (ntime - int(lastValue[2])), 2)
|
|
||||||
networkInfo['downPackets'] = networkIo[3]
|
|
||||||
networkInfo['upPackets'] = networkIo[2]
|
|
||||||
|
|
||||||
mw.writeFile(tmpfile, str(
|
|
||||||
networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
|
|
||||||
|
|
||||||
# networkInfo['cpu'] = self.GetCpuInfo(0.1)
|
|
||||||
return networkInfo
|
|
||||||
except:
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def getNetWorkIoData(self, start, end):
|
def getNetWorkIoData(self, start, end):
|
||||||
@@ -567,14 +568,19 @@ class system_api:
|
|||||||
def setControl(self, stype, day):
|
def setControl(self, stype, day):
|
||||||
|
|
||||||
filename = 'data/control.conf'
|
filename = 'data/control.conf'
|
||||||
|
stat_pl = 'data/only_netio_counters.pl'
|
||||||
|
|
||||||
if stype == '0':
|
if stype == '0':
|
||||||
mw.execShell("rm -f " + filename)
|
mw.execShell("rm -rf " + filename)
|
||||||
elif stype == '1':
|
elif stype == '1':
|
||||||
_day = int(day)
|
_day = int(day)
|
||||||
if _day < 1:
|
if _day < 1:
|
||||||
return mw.returnJson(False, "设置失败!")
|
return mw.returnJson(False, "设置失败!")
|
||||||
mw.writeFile(filename, day)
|
mw.writeFile(filename, day)
|
||||||
|
elif stype == '2':
|
||||||
|
mw.execShell("rm -rf " + stat_pl)
|
||||||
|
elif stype == '3':
|
||||||
|
mw.execShell("echo 'True' > " + stat_pl)
|
||||||
elif stype == 'del':
|
elif stype == 'del':
|
||||||
if not mw.isRestart():
|
if not mw.isRestart():
|
||||||
return mw.returnJson(False, '请等待所有安装任务完成再执行')
|
return mw.returnJson(False, '请等待所有安装任务完成再执行')
|
||||||
@@ -597,6 +603,12 @@ class system_api:
|
|||||||
else:
|
else:
|
||||||
data['day'] = 30
|
data['day'] = 30
|
||||||
data['status'] = False
|
data['status'] = False
|
||||||
|
|
||||||
|
if os.path.exists(stat_pl):
|
||||||
|
data['stat_all_status'] = True
|
||||||
|
else:
|
||||||
|
data['stat_all_status'] = False
|
||||||
|
|
||||||
return mw.getJson(data)
|
return mw.getJson(data)
|
||||||
|
|
||||||
return mw.returnJson(True, "设置成功!")
|
return mw.returnJson(True, "设置成功!")
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ class ORM:
|
|||||||
def setPort(self, port):
|
def setPort(self, port):
|
||||||
self.__DB_PORT = port
|
self.__DB_PORT = port
|
||||||
|
|
||||||
|
def setUser(self, user):
|
||||||
|
self.__DB_USER = user
|
||||||
|
|
||||||
def setPwd(self, pwd):
|
def setPwd(self, pwd):
|
||||||
self.__DB_PASS = pwd
|
self.__DB_PASS = pwd
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,12 @@ class ORM:
|
|||||||
def getPwd(self):
|
def getPwd(self):
|
||||||
return self.__DB_PASS
|
return self.__DB_PASS
|
||||||
|
|
||||||
|
def setDbName(self, name):
|
||||||
|
self.__DB_NAME = name
|
||||||
|
|
||||||
|
def setUser(self, user):
|
||||||
|
self.__DB_USER = user
|
||||||
|
|
||||||
def execute(self, sql):
|
def execute(self, sql):
|
||||||
# 执行SQL语句返回受影响行
|
# 执行SQL语句返回受影响行
|
||||||
if not self.__Conn():
|
if not self.__Conn():
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ service mw [start|stop|reload|restart|status]
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] openresty
|
systemctl [start|stop|reload|restart|status] openresty
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ sytemctl [start|stop|reload|restart|status] openresty
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] mysql
|
systemctl [start|stop|reload|restart|status] mysql
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ sytemctl [start|stop|reload|restart|status] mysql
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] mariadb
|
systemctl [start|stop|reload|restart|status] mariadb
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -37,16 +37,16 @@ sytemctl [start|stop|reload|restart|status] mariadb
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] php[54-81]
|
systemctl [start|stop|reload|restart|status] php[54-81]
|
||||||
|
|
||||||
sytemctl start php71
|
systemctl start php71
|
||||||
```
|
```
|
||||||
|
|
||||||
- Redis
|
- Redis
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] redis
|
systemctl [start|stop|reload|restart|status] redis
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ sytemctl [start|stop|reload|restart|status] redis
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] memcached
|
systemctl [start|stop|reload|restart|status] memcached
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -63,6 +63,6 @@ sytemctl [start|stop|reload|restart|status] memcached
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sytemctl [start|stop|reload|restart|status] sphinx
|
systemctl [start|stop|reload|restart|status] sphinx
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
import re
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
# sys.path.append("/usr/local/lib/python3.6/site-packages")
|
|
||||||
|
|
||||||
|
|
||||||
class mysqlDb:
|
|
||||||
__DB_PASS = None
|
|
||||||
__DB_USER = 'root'
|
|
||||||
__DB_PORT = 3306
|
|
||||||
__DB_HOST = 'localhost'
|
|
||||||
__DB_NAME = 'test'
|
|
||||||
__DB_CONN = None
|
|
||||||
__DB_CUR = None
|
|
||||||
__DB_ERR = None
|
|
||||||
__DB_CNF = '/etc/my.cnf'
|
|
||||||
|
|
||||||
def __Conn(self):
|
|
||||||
'''连接MYSQL数据库'''
|
|
||||||
try:
|
|
||||||
socket = '/www/server/mysql/mysql.sock'
|
|
||||||
try:
|
|
||||||
import MySQLdb
|
|
||||||
except Exception as ex:
|
|
||||||
self.__DB_ERR = ex
|
|
||||||
return False
|
|
||||||
try:
|
|
||||||
self.__DB_CONN = MySQLdb.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
|
|
||||||
port=self.__DB_PORT, db=self.__DB_NAME, charset="utf8", connect_timeout=10, unix_socket=socket)
|
|
||||||
except MySQLdb.Error as e:
|
|
||||||
self.__DB_HOST = '127.0.0.1'
|
|
||||||
self.__DB_CONN = MySQLdb.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
|
|
||||||
port=self.__DB_PORT, db=self.__DB_NAME, charset="utf8", connect_timeout=10, unix_socket=socket)
|
|
||||||
self.__DB_CUR = self.__DB_CONN.cursor()
|
|
||||||
return True
|
|
||||||
|
|
||||||
except MySQLdb.Error as e:
|
|
||||||
self.__DB_ERR = e
|
|
||||||
return False
|
|
||||||
|
|
||||||
def setHost(self, host):
|
|
||||||
self.__DB_HOST = host
|
|
||||||
|
|
||||||
def setPwd(self, pwd):
|
|
||||||
self.__DB_PASS = pwd
|
|
||||||
|
|
||||||
def setUser(self, user):
|
|
||||||
self.__DB_USER = user
|
|
||||||
|
|
||||||
def setPort(self, port):
|
|
||||||
self.__DB_PORT = port
|
|
||||||
|
|
||||||
def setDb(self, name):
|
|
||||||
self.__DB_NAME = name
|
|
||||||
|
|
||||||
def getPwd(self):
|
|
||||||
return self.__DB_PASS
|
|
||||||
|
|
||||||
def execute(self, sql):
|
|
||||||
# 执行SQL语句返回受影响行
|
|
||||||
if not self.__Conn():
|
|
||||||
return self.__DB_ERR
|
|
||||||
try:
|
|
||||||
result = self.__DB_CUR.execute(sql)
|
|
||||||
self.__DB_CONN.commit()
|
|
||||||
self.__Close()
|
|
||||||
return result
|
|
||||||
except Exception as ex:
|
|
||||||
return ex
|
|
||||||
|
|
||||||
def query(self, sql):
|
|
||||||
# 执行SQL语句返回数据集
|
|
||||||
if not self.__Conn():
|
|
||||||
return self.__DB_ERR
|
|
||||||
try:
|
|
||||||
self.__DB_CUR.execute(sql)
|
|
||||||
result = self.__DB_CUR.fetchall()
|
|
||||||
# 将元组转换成列表
|
|
||||||
# data = map(list, result)
|
|
||||||
self.__Close()
|
|
||||||
return result
|
|
||||||
except Exception as ex:
|
|
||||||
return "error: " + str(ex)
|
|
||||||
|
|
||||||
# 关闭连接
|
|
||||||
def __Close(self):
|
|
||||||
self.__DB_CUR.close()
|
|
||||||
self.__DB_CONN.close()
|
|
||||||
+13
-18
@@ -31,9 +31,6 @@ def getPluginName():
|
|||||||
def getPluginDir():
|
def getPluginDir():
|
||||||
return mw.getPluginDir() + '/' + getPluginName()
|
return mw.getPluginDir() + '/' + getPluginName()
|
||||||
|
|
||||||
sys.path.append(getPluginDir() + "/class")
|
|
||||||
import mysqlDb
|
|
||||||
|
|
||||||
|
|
||||||
def getServerDir():
|
def getServerDir():
|
||||||
return mw.getServerDir() + '/' + getPluginName()
|
return mw.getServerDir() + '/' + getPluginName()
|
||||||
@@ -235,16 +232,19 @@ def getDbConfValue():
|
|||||||
|
|
||||||
|
|
||||||
def pMysqlDb(conf):
|
def pMysqlDb(conf):
|
||||||
|
|
||||||
host = conf['HOST'].split(':')
|
host = conf['HOST'].split(':')
|
||||||
conn = mysqlDb.mysqlDb()
|
# pymysql
|
||||||
|
db = mw.getMyORM()
|
||||||
|
# MySQLdb |
|
||||||
|
# db = mw.getMyORMDb()
|
||||||
|
|
||||||
conn.setHost(host[0])
|
db.setPort(int(host[1]))
|
||||||
conn.setUser(conf['USER'])
|
db.setUser(conf['USER'])
|
||||||
conn.setPwd(conf['PASSWD'])
|
db.setPwd(conf['PASSWD'])
|
||||||
conn.setPort(int(host[1]))
|
db.setDbName(conf['NAME'])
|
||||||
conn.setDb(conf['NAME'])
|
# db.setSocket(getSocketFile())
|
||||||
return conn
|
db.setCharset("utf8")
|
||||||
|
return db
|
||||||
|
|
||||||
|
|
||||||
def pSqliteDb(conf):
|
def pSqliteDb(conf):
|
||||||
@@ -476,7 +476,7 @@ def userList():
|
|||||||
|
|
||||||
start = (page - 1) * page_size
|
start = (page - 1) * page_size
|
||||||
list_count = pQuery('select count(id) as num from user')
|
list_count = pQuery('select count(id) as num from user')
|
||||||
count = list_count[0][0]
|
count = list_count[0]["num"]
|
||||||
list_data = pQuery(
|
list_data = pQuery(
|
||||||
'select id,name,email from user order by id desc limit ' + str(start) + ',' + str(page_size))
|
'select id,name,email from user order by id desc limit ' + str(start) + ',' + str(page_size))
|
||||||
data['list'] = mw.getPage({'count': count, 'p': page,
|
data['list'] = mw.getPage({'count': count, 'p': page,
|
||||||
@@ -681,12 +681,7 @@ def getTotalStatistics():
|
|||||||
data = {}
|
data = {}
|
||||||
if st.strip() == 'start':
|
if st.strip() == 'start':
|
||||||
list_count = pQuery('select count(id) as num from repository')
|
list_count = pQuery('select count(id) as num from repository')
|
||||||
|
count = list_count[0]["num"]
|
||||||
if list_count.find("error") > -1:
|
|
||||||
data['status'] = False
|
|
||||||
data['count'] = 0
|
|
||||||
return mw.returnJson(False, 'fail', data)
|
|
||||||
|
|
||||||
data['status'] = True
|
data['status'] = True
|
||||||
data['count'] = count
|
data['count'] = count
|
||||||
data['ver'] = mw.readFile(getServerDir() + '/version.pl').strip()
|
data['ver'] = mw.readFile(getServerDir() + '/version.pl').strip()
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ getBit(){
|
|||||||
|
|
||||||
Install_gogs()
|
Install_gogs()
|
||||||
{
|
{
|
||||||
|
pip3 install mysqlclient
|
||||||
|
|
||||||
mkdir -p $serverPath/source/gogs
|
mkdir -p $serverPath/source/gogs
|
||||||
|
|
||||||
echo '正在安装脚本文件...' > $install_tmp
|
echo '正在安装脚本文件...' > $install_tmp
|
||||||
|
|||||||
@@ -163,11 +163,11 @@ function gogsUserList(page, search) {
|
|||||||
|
|
||||||
ulist = rdata['data']['data'];
|
ulist = rdata['data']['data'];
|
||||||
for (i in ulist){
|
for (i in ulist){
|
||||||
email = ulist[i][2] == '' ? '无' : ulist[i][2];
|
email = ulist[i]["email"] == '' ? '无' : ulist[i]["email"];
|
||||||
content += '<tr><td>'+ulist[i][0]+'</td>'+
|
content += '<tr><td>'+ulist[i]["id"]+'</td>'+
|
||||||
'<td>'+ulist[i][1]+'</td>'+
|
'<td>'+ulist[i]["name"]+'</td>'+
|
||||||
'<td>'+email+'</td>'+
|
'<td>'+email+'</td>'+
|
||||||
'<td><a class="btlink" onclick="userProjectList(\''+ulist[i][1]+'\')">项目管理</a></td>'+
|
'<td><a class="btlink" onclick="userProjectList(\''+ulist[i]["name"]+'\')">项目管理</a></td>'+
|
||||||
'</tr>';
|
'</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Executable
+37
@@ -0,0 +1,37 @@
|
|||||||
|
global
|
||||||
|
daemon
|
||||||
|
log 127.0.0.1 local0
|
||||||
|
pidfile /tmp/haproxy.pid
|
||||||
|
maxconn 4000
|
||||||
|
user haproxy
|
||||||
|
group haproxy
|
||||||
|
|
||||||
|
|
||||||
|
defaults
|
||||||
|
mode http
|
||||||
|
log global
|
||||||
|
option httplog
|
||||||
|
timeout connect 10s
|
||||||
|
timeout client 15s
|
||||||
|
timeout server 15s
|
||||||
|
|
||||||
|
|
||||||
|
listen stats
|
||||||
|
mode http
|
||||||
|
bind *:10800
|
||||||
|
stats enable
|
||||||
|
stats uri /haproxy
|
||||||
|
stats realm Haproxy\ Statistics
|
||||||
|
stats auth admin:admin
|
||||||
|
|
||||||
|
frontend http-in
|
||||||
|
bind *:1080
|
||||||
|
default_backend servers
|
||||||
|
option forwardfor
|
||||||
|
option httpclose
|
||||||
|
|
||||||
|
backend servers
|
||||||
|
balance roundrobin
|
||||||
|
server web1 0.0.0.0:9090 check
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
<div class="bt-form">
|
||||||
|
<div class="bt-w-main">
|
||||||
|
<div class="bt-w-menu">
|
||||||
|
<p class="bgw" onclick="pluginService('haproxy');">服务</p>
|
||||||
|
<p onclick="pluginInitD('haproxy');">自启动</p>
|
||||||
|
<p onclick="pluginConfigTpl('haproxy');">配置修改</p>
|
||||||
|
<p onclick="pluginLogs('haproxy','','run_log',30);">运行日志</p>
|
||||||
|
</div>
|
||||||
|
<div class="bt-w-con pd15">
|
||||||
|
<div class="soft-man-con"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$.getScript( "/plugins/file?name=haproxy&f=js/haproxy.js", function(){
|
||||||
|
pluginService('haproxy');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
Executable
+253
@@ -0,0 +1,253 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import io
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
sys.path.append(os.getcwd() + "/class/core")
|
||||||
|
import mw
|
||||||
|
|
||||||
|
app_debug = False
|
||||||
|
if mw.isAppleSystem():
|
||||||
|
app_debug = True
|
||||||
|
|
||||||
|
|
||||||
|
def getPluginName():
|
||||||
|
return 'haproxy'
|
||||||
|
|
||||||
|
|
||||||
|
def getPluginDir():
|
||||||
|
return mw.getPluginDir() + '/' + getPluginName()
|
||||||
|
|
||||||
|
|
||||||
|
def getServerDir():
|
||||||
|
return mw.getServerDir() + '/' + getPluginName()
|
||||||
|
|
||||||
|
|
||||||
|
def getInitDFile():
|
||||||
|
if app_debug:
|
||||||
|
return '/tmp/' + getPluginName()
|
||||||
|
return '/etc/init.d/' + getPluginName()
|
||||||
|
|
||||||
|
|
||||||
|
def getConfTpl():
|
||||||
|
path = getPluginDir() + "/conf/haproxy.conf"
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
def getConf():
|
||||||
|
path = getServerDir() + "/haproxy.conf"
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
def getInitDTpl():
|
||||||
|
path = getPluginDir() + "/init.d/" + getPluginName() + ".tpl"
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
def getArgs():
|
||||||
|
args = sys.argv[2:]
|
||||||
|
tmp = {}
|
||||||
|
args_len = len(args)
|
||||||
|
|
||||||
|
if args_len == 1:
|
||||||
|
t = args[0].strip('{').strip('}')
|
||||||
|
t = t.split(':')
|
||||||
|
tmp[t[0]] = t[1]
|
||||||
|
elif args_len > 1:
|
||||||
|
for i in range(len(args)):
|
||||||
|
t = args[i].split(':')
|
||||||
|
tmp[t[0]] = t[1]
|
||||||
|
return tmp
|
||||||
|
|
||||||
|
|
||||||
|
def checkArgs(data, ck=[]):
|
||||||
|
for i in range(len(ck)):
|
||||||
|
if not ck[i] in data:
|
||||||
|
return (False, mw.returnJson(False, '参数:(' + ck[i] + ')没有!'))
|
||||||
|
return (True, mw.returnJson(True, 'ok'))
|
||||||
|
|
||||||
|
|
||||||
|
def configTpl():
|
||||||
|
path = getPluginDir() + '/tpl'
|
||||||
|
pathFile = os.listdir(path)
|
||||||
|
tmp = []
|
||||||
|
for one in pathFile:
|
||||||
|
file = path + '/' + one
|
||||||
|
tmp.append(file)
|
||||||
|
return mw.getJson(tmp)
|
||||||
|
|
||||||
|
|
||||||
|
def readConfigTpl():
|
||||||
|
args = getArgs()
|
||||||
|
data = checkArgs(args, ['file'])
|
||||||
|
if not data[0]:
|
||||||
|
return data[1]
|
||||||
|
|
||||||
|
content = mw.readFile(args['file'])
|
||||||
|
content = contentReplace(content)
|
||||||
|
return mw.returnJson(True, 'ok', content)
|
||||||
|
|
||||||
|
|
||||||
|
def contentReplace(content):
|
||||||
|
service_path = mw.getServerDir()
|
||||||
|
content = content.replace('{$ROOT_PATH}', mw.getRootDir())
|
||||||
|
content = content.replace('{$SERVER_PATH}', service_path)
|
||||||
|
content = content.replace('{$SERVER_APP}', service_path + '/haproxy')
|
||||||
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
def status():
|
||||||
|
data = mw.execShell(
|
||||||
|
"ps -ef|grep haproxy |grep -v grep | grep -v python | awk '{print $2}'")
|
||||||
|
if data[0] == '':
|
||||||
|
return 'stop'
|
||||||
|
return 'start'
|
||||||
|
|
||||||
|
|
||||||
|
def initDreplace():
|
||||||
|
|
||||||
|
file_tpl = getInitDTpl()
|
||||||
|
service_path = os.path.dirname(os.getcwd())
|
||||||
|
|
||||||
|
initD_path = getServerDir() + '/init.d'
|
||||||
|
if not os.path.exists(initD_path):
|
||||||
|
os.mkdir(initD_path)
|
||||||
|
file_bin = initD_path + '/' + getPluginName()
|
||||||
|
|
||||||
|
# initd replace
|
||||||
|
if not os.path.exists(file_bin):
|
||||||
|
content = mw.readFile(file_tpl)
|
||||||
|
content = contentReplace(content)
|
||||||
|
mw.writeFile(file_bin, content)
|
||||||
|
mw.execShell('chmod +x ' + file_bin)
|
||||||
|
|
||||||
|
# config replace
|
||||||
|
conf_bin = getConf()
|
||||||
|
if not os.path.exists(conf_bin):
|
||||||
|
conf_content = mw.readFile(getConfTpl())
|
||||||
|
conf_content = contentReplace(conf_content)
|
||||||
|
mw.writeFile(getServerDir() + '/haproxy.conf', conf_content)
|
||||||
|
|
||||||
|
# systemd
|
||||||
|
systemDir = mw.systemdCfgDir()
|
||||||
|
systemService = systemDir + '/haproxy.service'
|
||||||
|
systemServiceTpl = getPluginDir() + '/init.d/haproxy.service.tpl'
|
||||||
|
if os.path.exists(systemDir) and not os.path.exists(systemService):
|
||||||
|
service_path = mw.getServerDir()
|
||||||
|
se_content = mw.readFile(systemServiceTpl)
|
||||||
|
se_content = se_content.replace('{$SERVER_PATH}', service_path)
|
||||||
|
mw.writeFile(systemService, se_content)
|
||||||
|
mw.execShell('systemctl daemon-reload')
|
||||||
|
|
||||||
|
return file_bin
|
||||||
|
|
||||||
|
|
||||||
|
def haOp(method):
|
||||||
|
file = initDreplace()
|
||||||
|
|
||||||
|
if not mw.isAppleSystem():
|
||||||
|
data = mw.execShell('systemctl ' + method + ' haproxy')
|
||||||
|
if data[1] == '':
|
||||||
|
return 'ok'
|
||||||
|
return 'fail'
|
||||||
|
|
||||||
|
data = mw.execShell(file + ' ' + method)
|
||||||
|
if data[1] == '':
|
||||||
|
return 'ok'
|
||||||
|
return data[1]
|
||||||
|
|
||||||
|
|
||||||
|
def start():
|
||||||
|
return haOp('start')
|
||||||
|
|
||||||
|
|
||||||
|
def stop():
|
||||||
|
return haOp('stop')
|
||||||
|
|
||||||
|
|
||||||
|
def restart():
|
||||||
|
return haOp('restart')
|
||||||
|
|
||||||
|
|
||||||
|
def reload():
|
||||||
|
return haOp('reload')
|
||||||
|
|
||||||
|
|
||||||
|
def initdStatus():
|
||||||
|
if mw.isAppleSystem():
|
||||||
|
return "Apple Computer does not support"
|
||||||
|
|
||||||
|
shell_cmd = 'systemctl status haproxy | grep loaded | grep "enabled;"'
|
||||||
|
data = mw.execShell(shell_cmd)
|
||||||
|
if data[0] == '':
|
||||||
|
return 'fail'
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
|
def initdInstall():
|
||||||
|
if mw.isAppleSystem():
|
||||||
|
return "Apple Computer does not support"
|
||||||
|
|
||||||
|
mw.execShell('systemctl enable haproxy')
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
|
def initdUinstall():
|
||||||
|
if mw.isAppleSystem():
|
||||||
|
return "Apple Computer does not support"
|
||||||
|
|
||||||
|
mw.execShell('systemctl disable haproxy')
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
|
def runLog():
|
||||||
|
path = getConf()
|
||||||
|
content = mw.readFile(path)
|
||||||
|
rep = 'log\s*=\s*(.*)'
|
||||||
|
tmp = re.search(rep, content)
|
||||||
|
return tmp.groups()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def getPort():
|
||||||
|
path = getConf()
|
||||||
|
content = mw.readFile(path)
|
||||||
|
rep = 'listen\s*=\s*(.*)'
|
||||||
|
tmp = re.search(rep, content)
|
||||||
|
return tmp.groups()[0]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
func = sys.argv[1]
|
||||||
|
if func == 'status':
|
||||||
|
print(status())
|
||||||
|
elif func == 'start':
|
||||||
|
print(start())
|
||||||
|
elif func == 'stop':
|
||||||
|
print(stop())
|
||||||
|
elif func == 'restart':
|
||||||
|
print(restart())
|
||||||
|
elif func == 'reload':
|
||||||
|
print(reload())
|
||||||
|
elif func == 'initd_status':
|
||||||
|
print(initdStatus())
|
||||||
|
elif func == 'initd_install':
|
||||||
|
print(initdInstall())
|
||||||
|
elif func == 'initd_uninstall':
|
||||||
|
print(initdUinstall())
|
||||||
|
elif func == 'conf':
|
||||||
|
print(getConf())
|
||||||
|
elif func == 'config_tpl':
|
||||||
|
print(configTpl())
|
||||||
|
elif func == 'read_config_tpl':
|
||||||
|
print(readConfigTpl())
|
||||||
|
elif func == 'run_log':
|
||||||
|
print(runLog())
|
||||||
|
elif func == 'query_log':
|
||||||
|
print(queryLog())
|
||||||
|
else:
|
||||||
|
print('error')
|
||||||
Executable
+19
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"sort": 7,
|
||||||
|
"ps": "可靠、高性能的TCP/HTTP负载平衡器",
|
||||||
|
"name": "haproxy",
|
||||||
|
"title": "haproxy",
|
||||||
|
"shell": "install.sh",
|
||||||
|
"versions":["2.6"],
|
||||||
|
"updates":["2.6"],
|
||||||
|
"tip": "soft",
|
||||||
|
"checks": "server/haproxy",
|
||||||
|
"path": "server/haproxy",
|
||||||
|
"display": 1,
|
||||||
|
"author": "midoks",
|
||||||
|
"date": "2022-08-26",
|
||||||
|
"home": "https://www.haproxy.org/",
|
||||||
|
"doc1": "https://www.haproxy.org/",
|
||||||
|
"type": 0,
|
||||||
|
"pid": "4"
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=he Reliable, High Performance TCP/HTTP Load Balancer
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
ExecStartPre={$SERVER_PATH}/haproxy/sbin/haproxy -c -f {$SERVER_PATH}/haproxy/haproxy.conf
|
||||||
|
ExecStart={$SERVER_PATH}/haproxy/sbin/haproxy -D -f {$SERVER_PATH}/haproxy/haproxy.conf
|
||||||
|
ExecReload={$SERVER_PATH}/haproxy/sbin/haproxy -f {$SERVER_PATH}/haproxy/haproxy.conf -c -q
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# chkconfig: - 85 15
|
||||||
|
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \
|
||||||
|
# for high availability environments.
|
||||||
|
# processname: haproxy
|
||||||
|
# config: /etc/haproxy/haproxy.cfg
|
||||||
|
# pidfile: /var/run/haproxy.pid
|
||||||
|
# Script Author: Simon Matter <simon.matter@invoca.ch>
|
||||||
|
# Version: 2004060600
|
||||||
|
# Source function library.
|
||||||
|
|
||||||
|
if [ -f /etc/init.d/functions ]; then
|
||||||
|
. /etc/init.d/functions
|
||||||
|
elif [ -f /etc/rc.d/init.d/functions ] ; then
|
||||||
|
. /etc/rc.d/init.d/functions
|
||||||
|
else
|
||||||
|
echo ".."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source networking configuration.
|
||||||
|
if [ -f /etc/sysconfig/network ];then
|
||||||
|
. /etc/sysconfig/network
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check that networking is up.
|
||||||
|
# [ ${NETWORKING} = "no" ] && exit 0
|
||||||
|
|
||||||
|
HAPROXYDIR={$SERVER_PATH}/haproxy
|
||||||
|
BASENAME=haproxy
|
||||||
|
|
||||||
|
# This is our service name
|
||||||
|
|
||||||
|
#BASENAME=`basename $0`
|
||||||
|
#if [ -L $0 ]; then
|
||||||
|
# BASENAME=`find $0 -name $BASENAME -printf %l`
|
||||||
|
# BASENAME=`basename $BASENAME`
|
||||||
|
#fi
|
||||||
|
|
||||||
|
[ -f $HAPROXYDIR/etc/$BASENAME.conf ] || exit 1
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
|
||||||
|
start() {
|
||||||
|
$HAPROXYDIR/sbin/$BASENAME -c -q -f $HAPROXYDIR/etc/$BASENAME.conf
|
||||||
|
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Errors found in configuration file, check it with '$BASENAME check'."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Starting $BASENAME: "
|
||||||
|
daemon $HAPROXYDIR/sbin/$BASENAME -D -f $HAPROXYDIR/etc/$BASENAME.conf
|
||||||
|
RETVAL=$?
|
||||||
|
# echo
|
||||||
|
# [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
|
||||||
|
echo -n "Shutting down $BASENAME: "
|
||||||
|
killproc $BASENAME -USR1
|
||||||
|
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BASENAME
|
||||||
|
[ $RETVAL -eq 0 ] && rm -f /var/run/$BASENAME.pid
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
restart() {
|
||||||
|
$HAPROXYDIR/sbin/$BASENAME -c -q -f $HAPROXYDIR/etc/$BASENAME.conf
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Errors found in configuration file, check it with '$BASENAME check'."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
$HAPROXYDIR/sbin/$BASENAME -c -q -f $HAPROXYDIR/etc/$BASENAME.conf
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Errors found in configuration file, check it with '$BASENAME check'."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
$HAPROXYDIR/sbin/$BASENAME -D -f $HAPROXYDIR/$BASENAME.conf -p /var/run/$BASENAME.pid -sf $(cat /var/run/$BASENAME.pid)
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
$HAPROXYDIR/sbin/$BASENAME -c -q -V -f $HAPROXYDIR/etc/$BASENAME.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
rhstatus() {
|
||||||
|
status $BASENAME
|
||||||
|
}
|
||||||
|
|
||||||
|
condrestart() {
|
||||||
|
[ -e /var/lock/subsys/$BASENAME ] && restart || :
|
||||||
|
}
|
||||||
|
|
||||||
|
# See how we were called.
|
||||||
|
case "$1" in
|
||||||
|
start) start ;;
|
||||||
|
stop) stop ;;
|
||||||
|
restart) restart;;
|
||||||
|
reload) reload;;
|
||||||
|
condrestart) condrestart ;;
|
||||||
|
status) rhstatus ;;
|
||||||
|
check) check ;;
|
||||||
|
*)
|
||||||
|
echo $"Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $?
|
||||||
Executable
+52
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
curPath=`pwd`
|
||||||
|
rootPath=$(dirname "$curPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
serverPath=$(dirname "$rootPath")
|
||||||
|
install_tmp=${rootPath}/tmp/mw_install.pl
|
||||||
|
|
||||||
|
|
||||||
|
action=$1
|
||||||
|
type=$2
|
||||||
|
|
||||||
|
echo $action $type
|
||||||
|
|
||||||
|
if id haproxy &> /dev/null ;then
|
||||||
|
echo "haproxy UID is `id -u haproxy`"
|
||||||
|
echo "haproxy Shell is `grep "^haproxy:" /etc/passwd |cut -d':' -f7 `"
|
||||||
|
else
|
||||||
|
groupadd haproxy
|
||||||
|
useradd -g haproxy haproxy
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${2}" == "" ];then
|
||||||
|
echo '缺少安装脚本...' > $install_tmp
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $curPath/versions/$2 ];then
|
||||||
|
echo '缺少安装脚本2...' > $install_tmp
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${action}" == "uninstall" ];then
|
||||||
|
|
||||||
|
if [ -f /usr/lib/systemd/system/haproxy.service ] || [ -f /lib/systemd/system/haproxy.service ];then
|
||||||
|
systemctl stop haproxy
|
||||||
|
systemctl disable haproxy
|
||||||
|
rm -rf /usr/lib/systemd/system/haproxy.service
|
||||||
|
rm -rf /lib/systemd/system/haproxy.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sh -x $curPath/versions/$2/install.sh $1
|
||||||
|
|
||||||
|
if [ "${action}" == "install" ] && [ -d $serverPath/haproxy ];then
|
||||||
|
#初始化
|
||||||
|
cd ${rootPath} && python3 ${rootPath}/plugins/haproxy/index.py start ${type}
|
||||||
|
cd ${rootPath} && python3 ${rootPath}/plugins/haproxy/index.py initd_install ${type}
|
||||||
|
fi
|
||||||
Executable
+53
@@ -0,0 +1,53 @@
|
|||||||
|
function spPostMin(method, args, callback){
|
||||||
|
|
||||||
|
var req_data = {};
|
||||||
|
req_data['name'] = 'haproxy';
|
||||||
|
req_data['func'] = method;
|
||||||
|
|
||||||
|
if (typeof(args) != 'undefined' && args!=''){
|
||||||
|
req_data['args'] = JSON.stringify(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.post('/plugins/run', req_data, function(data) {
|
||||||
|
if (!data.status){
|
||||||
|
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof(callback) == 'function'){
|
||||||
|
callback(data);
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
function spPost(method, args, callback){
|
||||||
|
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
|
||||||
|
spPostMin(method,args,function(data){
|
||||||
|
layer.close(loadT);
|
||||||
|
if(typeof(callback) == 'function'){
|
||||||
|
callback(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function secToTime(s) {
|
||||||
|
var t;
|
||||||
|
if(s > -1){
|
||||||
|
var hour = Math.floor(s/3600);
|
||||||
|
var min = Math.floor(s/60) % 60;
|
||||||
|
var sec = s % 60;
|
||||||
|
if(hour < 10) {
|
||||||
|
t = '0'+ hour + ":";
|
||||||
|
} else {
|
||||||
|
t = hour + ":";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(min < 10){t += "0";}
|
||||||
|
t += min + ":";
|
||||||
|
if(sec < 10){t += "0";}
|
||||||
|
t += sec.toFixed(2);
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
Executable
+70
@@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
curPath=`pwd`
|
||||||
|
rootPath=$(dirname "$curPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
serverPath=$(dirname "$rootPath")
|
||||||
|
sysName=`uname`
|
||||||
|
|
||||||
|
install_tmp=${rootPath}/tmp/mw_install.pl
|
||||||
|
|
||||||
|
|
||||||
|
bash ${rootPath}/scripts/getos.sh
|
||||||
|
OSNAME=`cat ${rootPath}/data/osname.pl`
|
||||||
|
OSNAME_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
|
||||||
|
|
||||||
|
|
||||||
|
VERSION=2.6.4
|
||||||
|
MIN_VERSION=2.6
|
||||||
|
Install_App()
|
||||||
|
{
|
||||||
|
|
||||||
|
echo '正在安装脚本文件...' > $install_tmp
|
||||||
|
mkdir -p $serverPath/haproxy
|
||||||
|
|
||||||
|
APP_DIR=${serverPath}/source/haproxy
|
||||||
|
mkdir -p $APP_DIR
|
||||||
|
|
||||||
|
if [ ! -f ${APP_DIR}/haproxy-${VERSION}.tar.gz ];then
|
||||||
|
if [ $sysName == 'Darwin' ]; then
|
||||||
|
wget -O ${APP_DIR}/haproxy-${VERSION}.tar.gz https://www.haproxy.org/download/${MIN_VERSION}/src/haproxy-${VERSION}.tar.gz
|
||||||
|
else
|
||||||
|
curl -sSLo ${APP_DIR}/haproxy-${VERSION}.tar.gz https://www.haproxy.org/download/${MIN_VERSION}/src/haproxy-${VERSION}.tar.gz
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${APP_DIR}/haproxy-${VERSION}.tar.gz ];then
|
||||||
|
curl -sSLo ${APP_DIR}/haproxy-${VERSION}.tar.gz https://www.haproxy.org/download/${MIN_VERSION}/src/haproxy-${VERSION}.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cd ${APP_DIR} && tar -zxvf haproxy-${VERSION}.tar.gz
|
||||||
|
|
||||||
|
if [ "$OSNAME" == "macos" ];then
|
||||||
|
cd ${APP_DIR}/haproxy-${VERSION} && make TARGET=osx && make install PREFIX=$serverPath/haproxy
|
||||||
|
else
|
||||||
|
cd ${APP_DIR}/haproxy-${VERSION} && make TARGET=linux-glibc && make install PREFIX=$serverPath/haproxy
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $MIN_VERSION > $serverPath/haproxy/version.pl
|
||||||
|
echo 'Install_HA' > $install_tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
Uninstall_App()
|
||||||
|
{
|
||||||
|
if [ -f $serverPath/haproxy/initd/haproxy ];then
|
||||||
|
$serverPath/haproxy/initd/haproxy stop
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $serverPath/haproxy
|
||||||
|
echo "Uninstall_HA" > $install_tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
action=$1
|
||||||
|
if [ "${1}" == 'install' ];then
|
||||||
|
Install_App
|
||||||
|
else
|
||||||
|
Uninstall_App
|
||||||
|
fi
|
||||||
@@ -304,7 +304,7 @@ def getErrorLog():
|
|||||||
if 'close' in args:
|
if 'close' in args:
|
||||||
mw.writeFile(filename, '')
|
mw.writeFile(filename, '')
|
||||||
return mw.returnJson(False, '日志已清空')
|
return mw.returnJson(False, '日志已清空')
|
||||||
info = mw.getNumLines(filename, 18)
|
info = mw.getLastLine(filename, 18)
|
||||||
return mw.returnJson(True, 'OK', info)
|
return mw.returnJson(True, 'OK', info)
|
||||||
|
|
||||||
|
|
||||||
@@ -2180,8 +2180,11 @@ def installPreInspection(version):
|
|||||||
|
|
||||||
|
|
||||||
def uninstallPreInspection(version):
|
def uninstallPreInspection(version):
|
||||||
# return "请手动删除MySQL[{}]".format(version)
|
stop(version)
|
||||||
return 'ok'
|
if mw.isDebugMode():
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
return "请手动删除MariaDB[{}]<br/> rm -rf {}".format(version, getServerDir())
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
func = sys.argv[1]
|
func = sys.argv[1]
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ sysName=`uname`
|
|||||||
install_tmp=${rootPath}/tmp/mw_install.pl
|
install_tmp=${rootPath}/tmp/mw_install.pl
|
||||||
mariadbDir=${serverPath}/source/mariadb
|
mariadbDir=${serverPath}/source/mariadb
|
||||||
|
|
||||||
MY_VER=10.6.8
|
MY_VER=10.6.9
|
||||||
|
|
||||||
Install_app()
|
Install_app()
|
||||||
{
|
{
|
||||||
@@ -57,10 +57,15 @@ Install_app()
|
|||||||
fi
|
fi
|
||||||
# ----- cpu end ------
|
# ----- cpu end ------
|
||||||
|
|
||||||
|
# https://mirrors.aliyun.com/mariadb/mariadb-10.8.3/source/mariadb-10.8.3.tar.gz
|
||||||
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
||||||
# https://mirrors.aliyun.com/mariadb/mariadb-10.8.3/source/mariadb-10.8.3.tar.gz
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
|
||||||
# wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
fi
|
||||||
|
|
||||||
|
# https://downloads.mariadb.org/interstitial/mariadb-10.6.8/source/mariadb-10.6.8.tar.gz
|
||||||
|
if [ "$?" != "0" ];then
|
||||||
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ sysName=`uname`
|
|||||||
install_tmp=${rootPath}/tmp/mw_install.pl
|
install_tmp=${rootPath}/tmp/mw_install.pl
|
||||||
mariadbDir=${serverPath}/source/mariadb
|
mariadbDir=${serverPath}/source/mariadb
|
||||||
|
|
||||||
MY_VER=10.7.4
|
MY_VER=10.7.5
|
||||||
|
|
||||||
Install_app()
|
Install_app()
|
||||||
{
|
{
|
||||||
@@ -58,14 +58,16 @@ Install_app()
|
|||||||
# ----- cpu end ------
|
# ----- cpu end ------
|
||||||
|
|
||||||
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
||||||
wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
# wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
fi
|
||||||
|
|
||||||
|
if [ "$?" != "0" ];then
|
||||||
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
||||||
cd ${mariadbDir} && tar -zxvf ${mariadbDir}/mariadb-${MY_VER}.tar.gz
|
cd ${mariadbDir} && tar -zxvf ${mariadbDir}/mariadb-${MY_VER}.tar.gz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d $serverPath/mariadb ];then
|
if [ ! -d $serverPath/mariadb ];then
|
||||||
cd ${mariadbDir}/mariadb-${MY_VER} && cmake \
|
cd ${mariadbDir}/mariadb-${MY_VER} && cmake \
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ sysName=`uname`
|
|||||||
install_tmp=${rootPath}/tmp/mw_install.pl
|
install_tmp=${rootPath}/tmp/mw_install.pl
|
||||||
mariadbDir=${serverPath}/source/mariadb
|
mariadbDir=${serverPath}/source/mariadb
|
||||||
|
|
||||||
MY_VER=10.8.3
|
MY_VER=10.8.4
|
||||||
|
|
||||||
Install_app()
|
Install_app()
|
||||||
{
|
{
|
||||||
@@ -58,8 +58,11 @@ Install_app()
|
|||||||
# ----- cpu end ------
|
# ----- cpu end ------
|
||||||
|
|
||||||
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
if [ ! -f ${mariadbDir}/mariadb-${MY_VER}.tar.gz ];then
|
||||||
wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://mirrors.aliyun.com/mariadb/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
# wget -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
fi
|
||||||
|
|
||||||
|
if [ "$?" != "0" ];then
|
||||||
|
wget --no-check-certificate -O ${mariadbDir}/mariadb-${MY_VER}.tar.gz --tries=3 https://downloads.mariadb.org/interstitial/mariadb-${MY_VER}/source/mariadb-${MY_VER}.tar.gz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
if [ ! -d ${mariadbDir}/mariadb-${MY_VER} ];then
|
||||||
|
|||||||
@@ -21,14 +21,26 @@ OSNAME=`cat ${rootPath}/data/osname.pl`
|
|||||||
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
|
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Install_app_mac()
|
Install_app_mac()
|
||||||
{
|
{
|
||||||
if [ ! -f $serverPath/source/mongodb-macos-x86_64-${VERSION}.tgz ];then
|
mkdir -p $serverPath/mongodb
|
||||||
wget -O $serverPath/source/mongodb-macos-x86_64-${VERSION}.tgz https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${VERSION}.tgz
|
if [ "$VERSION" == "5.0" ];then
|
||||||
|
G_VERSION="5.0.11"
|
||||||
|
elif [[ "$VERSION" == "4.4" ]]; then
|
||||||
|
G_VERSION="4.4.11"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $serverPath/source && tar -zxvf mongodb-macos-x86_64-${VERSION}.tgz
|
if [ ! -f $serverPath/source/mongodb-macos-x86_64-${G_VERSION}.tgz ];then
|
||||||
cd mongodb-macos-x86_64-${VERSION} && mv ./* $serverPath/mongodb
|
wget -O $serverPath/source/mongodb-macos-x86_64-${G_VERSION}.tgz https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${G_VERSION}.tgz
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $serverPath/source && tar -zxvf mongodb-macos-x86_64-${G_VERSION}.tgz
|
||||||
|
cd mongodb-macos-x86_64-${G_VERSION} && mv ./* $serverPath/mongodb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
.conf_p span {
|
.conf_p span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
width: 95px;
|
width: 135px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ def getErrorLog():
|
|||||||
if 'close' in args:
|
if 'close' in args:
|
||||||
mw.writeFile(filename, '')
|
mw.writeFile(filename, '')
|
||||||
return mw.returnJson(False, '日志已清空')
|
return mw.returnJson(False, '日志已清空')
|
||||||
info = mw.getNumLines(filename, 18)
|
info = mw.getLastLine(filename, 18)
|
||||||
return mw.returnJson(True, 'OK', info)
|
return mw.returnJson(True, 'OK', info)
|
||||||
|
|
||||||
|
|
||||||
@@ -2338,8 +2338,11 @@ def installPreInspection(version):
|
|||||||
|
|
||||||
|
|
||||||
def uninstallPreInspection(version):
|
def uninstallPreInspection(version):
|
||||||
# return "请手动删除MySQL[{}]".format(version)
|
stop(version)
|
||||||
return 'ok'
|
if mw.isDebugMode():
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
return "请手动删除MySQL[{}]<br/> rm -rf {}".format(version, getServerDir())
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
func = sys.argv[1]
|
func = sys.argv[1]
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Install_mysql()
|
|||||||
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
||||||
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
||||||
#openssl version to high
|
#openssl version to high
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash openssl.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
|
||||||
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
||||||
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ Install_mysql()
|
|||||||
fi
|
fi
|
||||||
# ----- cpu end ------
|
# ----- cpu end ------
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/mysql/lib && /bin/bash rpcgen.sh
|
cd ${rootPath}/plugins/mysql/lib && /bin/bash rpcgen.sh
|
||||||
|
|
||||||
if [ ! -f ${mysqlDir}/mysql-boost-${VERSION}.tar.gz ];then
|
if [ ! -f ${mysqlDir}/mysql-boost-${VERSION}.tar.gz ];then
|
||||||
wget -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-${VERSION}.tar.gz
|
wget -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-${VERSION}.tar.gz
|
||||||
@@ -89,7 +89,7 @@ Install_mysql()
|
|||||||
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
||||||
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
||||||
#openssl version to high
|
#openssl version to high
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash openssl.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
|
||||||
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
||||||
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ Install_mysql()
|
|||||||
fi
|
fi
|
||||||
# ----- cpu end ------
|
# ----- cpu end ------
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/mysql/lib && /bin/bash rpcgen.sh
|
cd ${rootPath}/plugins/mysql/lib && /bin/bash rpcgen.sh
|
||||||
|
|
||||||
INSTALL_CMD=cmake
|
INSTALL_CMD=cmake
|
||||||
# check cmake version
|
# check cmake version
|
||||||
@@ -132,7 +132,7 @@ Install_mysql()
|
|||||||
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
|
||||||
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
if [ "${OPENSSL_VERSION}" -ge "3" ];then
|
||||||
#openssl version to high
|
#openssl version to high
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash openssl.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
|
||||||
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
|
||||||
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -13,7 +13,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- <script type="text/javascript" src="/plugins/file?name=openresty&f=js/openresty.js"></script> -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$.getScript( "/plugins/file?name=openresty&f=js/openresty.js", function(){
|
$.getScript( "/plugins/file?name=openresty&f=js/openresty.js", function(){
|
||||||
orPluginService('openresty');
|
orPluginService('openresty');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import sys
|
|||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import threading
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
sys.path.append(os.getcwd() + "/class/core")
|
sys.path.append(os.getcwd() + "/class/core")
|
||||||
@@ -216,6 +217,33 @@ def restyOp(method):
|
|||||||
return data[1]
|
return data[1]
|
||||||
|
|
||||||
|
|
||||||
|
def op_submit_systemctl_restart():
|
||||||
|
mw.execShell('systemctl restart openresty')
|
||||||
|
|
||||||
|
|
||||||
|
def op_submit_init_restart(file):
|
||||||
|
mw.execShell(file + ' restart')
|
||||||
|
|
||||||
|
|
||||||
|
def restyOp_restart():
|
||||||
|
file = initDreplace()
|
||||||
|
|
||||||
|
# 启动时,先检查一下配置文件
|
||||||
|
check = getServerDir() + "/bin/openresty -t"
|
||||||
|
check_data = mw.execShell(check)
|
||||||
|
if not check_data[1].find('test is successful') > -1:
|
||||||
|
return check_data[1]
|
||||||
|
|
||||||
|
if not mw.isAppleSystem():
|
||||||
|
threading.Timer(2, op_submit_systemctl_restart, args=()).start()
|
||||||
|
# submit_restart1()
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
threading.Timer(2, op_submit_init_restart, args=(file,)).start()
|
||||||
|
# submit_restart2(file)
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
def start():
|
def start():
|
||||||
return restyOp('start')
|
return restyOp('start')
|
||||||
|
|
||||||
@@ -225,7 +253,7 @@ def stop():
|
|||||||
|
|
||||||
|
|
||||||
def restart():
|
def restart():
|
||||||
return restyOp('restart')
|
return restyOp_restart()
|
||||||
|
|
||||||
|
|
||||||
def reload():
|
def reload():
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ else
|
|||||||
useradd -g www -s /bin/bash www
|
useradd -g www -s /bin/bash www
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cd /www/server/mdserver-web/plugins/openresty && /bin/bash install.sh install 1.21.4.1
|
|
||||||
Install_openresty()
|
Install_openresty()
|
||||||
{
|
{
|
||||||
# ----- cpu start ------
|
# ----- cpu start ------
|
||||||
@@ -59,10 +58,12 @@ Install_openresty()
|
|||||||
# --with-openssl=$serverPath/source/lib/openssl-1.0.2q
|
# --with-openssl=$serverPath/source/lib/openssl-1.0.2q
|
||||||
cd ${openrestyDir}/openresty-${VERSION} && ./configure \
|
cd ${openrestyDir}/openresty-${VERSION} && ./configure \
|
||||||
--prefix=$serverPath/openresty \
|
--prefix=$serverPath/openresty \
|
||||||
|
--with-ipv6 \
|
||||||
--with-http_v2_module \
|
--with-http_v2_module \
|
||||||
--with-http_ssl_module \
|
--with-http_ssl_module \
|
||||||
--with-http_slice_module \
|
--with-http_slice_module \
|
||||||
--with-http_stub_status_module
|
--with-http_stub_status_module \
|
||||||
|
--with-http_realip_module
|
||||||
|
|
||||||
make -j${cpuCore} && make install && make clean
|
make -j${cpuCore} && make install && make clean
|
||||||
|
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ function orPluginSetService(_name ,status, version){
|
|||||||
(status?'#20a53a;':'red;')+
|
(status?'#20a53a;':'red;')+
|
||||||
' margin-left: 3px;" class="glyphicon ' + (status?'glyphicon glyphicon-play':'glyphicon-pause')+'"></span></p><div class="sfm-opt">\
|
' margin-left: 3px;" class="glyphicon ' + (status?'glyphicon glyphicon-play':'glyphicon-pause')+'"></span></p><div class="sfm-opt">\
|
||||||
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\''+(status?'stop':'start')+'\',\''+version+'\')">'+(status?'停止':'启动')+'</button>\
|
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\''+(status?'stop':'start')+'\',\''+version+'\')">'+(status?'停止':'启动')+'</button>\
|
||||||
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\'restart\',\''+version+'\')">重启</button>\
|
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\'restart\',\''+version+'\',\'yes\')">重启</button>\
|
||||||
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\'reload\',\''+version+'\')">重载配置</button>\
|
<button class="btn btn-default btn-sm" onclick="orPluginOpService(\''+_name+'\',\'reload\',\''+version+'\')">重载配置</button>\
|
||||||
</div>';
|
</div>';
|
||||||
$(".soft-man-con").html(serviceCon);
|
$(".soft-man-con").html(serviceCon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function orPluginOpService(a, b, v) {
|
function orPluginOpService(a, b, v,request_callback) {
|
||||||
|
|
||||||
var c = "name=" + a + "&func=" + b;
|
var c = "name=" + a + "&func=" + b;
|
||||||
if(v != ''){
|
if(v != ''){
|
||||||
@@ -67,19 +67,25 @@ function orPluginOpService(a, b, v) {
|
|||||||
layer.close(index);
|
layer.close(index);
|
||||||
var data = {'pwd':pwd};
|
var data = {'pwd':pwd};
|
||||||
c += '&args='+JSON.stringify(data);
|
c += '&args='+JSON.stringify(data);
|
||||||
orPluginOpServiceOp(a,b,c,d,a,v);
|
orPluginOpServiceOp(a,b,c,d,a,v,request_callback);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
orPluginOpServiceOp(a,b,c,d,a,v);
|
orPluginOpServiceOp(a,b,c,d,a,v,request_callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function orPluginOpServiceOp(a,b,c,d,a,v){
|
function orPluginOpServiceOp(a,b,c,d,a,v,request_callback){
|
||||||
|
|
||||||
|
var request_path = "/plugins/run";
|
||||||
|
if (request_callback == 'yes'){
|
||||||
|
request_path = "/plugins/callback";
|
||||||
|
}
|
||||||
|
|
||||||
var e = layer.msg(msgTpl('正在{1}{2}{3}服务,请稍候...',[d,a,v]), {icon: 16,time: 0});
|
var e = layer.msg(msgTpl('正在{1}{2}{3}服务,请稍候...',[d,a,v]), {icon: 16,time: 0});
|
||||||
$.post("/plugins/run", c, function(g) {
|
$.post(request_path, c, function(g) {
|
||||||
layer.close(e);
|
layer.close(e);
|
||||||
|
|
||||||
var f = g.data == 'ok' ? msgTpl('{1}{2}服务已{3}',[a,v,d]) : msgTpl('{1}{2}服务{3}失败!',[a,v,d]);
|
var f = g.data == 'ok' ? msgTpl('{1}{2}服务已{3}',[a,v,d]) : msgTpl('{1}{2}服务{3}失败!',[a,v,d]);
|
||||||
@@ -97,9 +103,6 @@ function orPluginOpServiceOp(a,b,c,d,a,v){
|
|||||||
layer.msg(g.data, {icon: 2,time: 10000,shade: 0.3});
|
layer.msg(g.data, {icon: 2,time: 10000,shade: 0.3});
|
||||||
}
|
}
|
||||||
|
|
||||||
// setTimeout(function(){
|
|
||||||
// location.reload();
|
|
||||||
// },2000);
|
|
||||||
},'json').error(function() {
|
},'json').error(function() {
|
||||||
layer.close(e);
|
layer.close(e);
|
||||||
layer.msg('操作异常!', {icon: 2});
|
layer.msg('操作异常!', {icon: 2});
|
||||||
@@ -131,247 +134,3 @@ function getOpenrestyStatus() {
|
|||||||
}
|
}
|
||||||
},'json');
|
},'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
//nginx
|
|
||||||
function nginxSoftMain(name, version) {
|
|
||||||
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.get('/system?action=GetConcifInfo', function(rdata) {
|
|
||||||
layer.close(loadT);
|
|
||||||
nameA = rdata['web'];
|
|
||||||
var status = name == 'nginx' ? '<p onclick="GetNginxStatus()">' + lan.soft.nginx_status + '</p>' : '';
|
|
||||||
var menu = '';
|
|
||||||
if (version != undefined || version != '') {
|
|
||||||
var menu = '<p onclick="softChangeVer(\'' + name + '\',\'' + version + '\')">' + lan.soft.nginx_version + '</p>';
|
|
||||||
}
|
|
||||||
|
|
||||||
var waf = ''
|
|
||||||
if (name == 'nginx') {
|
|
||||||
waf = '<p onclick="waf()">' + lan.soft.waf_title + '</p>'
|
|
||||||
}
|
|
||||||
|
|
||||||
var logsPath = (name == 'nginx') ? '/www/wwwlogs/nginx_error.log' : '/www/wwwlogs/error_log';
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
area: '640px',
|
|
||||||
title: name + '管理',
|
|
||||||
closeBtn: 2,
|
|
||||||
shift: 0,
|
|
||||||
content: '<div class="bt-w-main" style="width:640px;">\
|
|
||||||
<div class="bt-w-menu">\
|
|
||||||
<p class="bgw" onclick="service(\'' + name + '\',' + nameA.status + ')">' + lan.soft.web_service + '</p>\
|
|
||||||
<p onclick="configChange(\'' + name + '\')">' + lan.soft.config_edit + '</p>\
|
|
||||||
' + waf + '\
|
|
||||||
' + menu + '\
|
|
||||||
' + status + '\
|
|
||||||
<p onclick="showLogs(\'' + logsPath + '\')">错误日志</p>\
|
|
||||||
</div>\
|
|
||||||
<div id="webEdit-con" class="bt-w-con pd15" style="height:555px;overflow:auto">\
|
|
||||||
<div class="soft-man-con"></div>\
|
|
||||||
</div>\
|
|
||||||
</div>'
|
|
||||||
});
|
|
||||||
service(name, nameA.status);
|
|
||||||
$(".bt-w-menu p").click(function() {
|
|
||||||
//var i = $(this).index();
|
|
||||||
$(this).addClass("bgw").siblings().removeClass("bgw");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//显示指定日志
|
|
||||||
function showLogs(logPath) {
|
|
||||||
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/ajax?action=GetOpeLogs', { path: logPath }, function(rdata) {
|
|
||||||
layer.close(loadT);
|
|
||||||
if (rdata.msg == '') rdata.msg = '当前没有日志!';
|
|
||||||
var ebody = '<div class="soft-man-con"><textarea readonly="" style="margin: 0px;width: 500px;height: 520px;background-color: #333;color:#fff; padding:0 5px" id="error_log">' + rdata.msg + '</textarea></div>';
|
|
||||||
$(".soft-man-con").html(ebody);
|
|
||||||
var ob = document.getElementById('error_log');
|
|
||||||
ob.scrollTop = ob.scrollHeight;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//WAF防火墙
|
|
||||||
function waf() {
|
|
||||||
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.get("/waf?action=GetConfig", function(rdata) {
|
|
||||||
layer.close(loadT);
|
|
||||||
if (rdata.status == -1) {
|
|
||||||
layer.msg(lan.soft.waf_not, { icon: 5, time: 5000 });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var whiteList = ""
|
|
||||||
for (var i = 0; i < rdata.ipWhitelist.length; i++) {
|
|
||||||
if (rdata.ipWhitelist[i] == "") continue;
|
|
||||||
whiteList += "<tr><td>" + rdata.ipWhitelist[i] + "</td><td><a href=\"javascript:deleteWafKey('ipWhitelist','" + rdata.ipWhitelist[i] + "');\">" + lan.public.del + "</a></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
var blackList = ""
|
|
||||||
for (var i = 0; i < rdata.ipBlocklist.length; i++) {
|
|
||||||
if (rdata.ipBlocklist[i] == "") continue;
|
|
||||||
blackList += "<tr><td>" + rdata.ipBlocklist[i] + "</td><td><a href=\"javascript:deleteWafKey('ipBlocklist','" + rdata.ipBlocklist[i] + "');\">" + lan.public.del + "</a></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
var cc = rdata.CCrate.split('/')
|
|
||||||
|
|
||||||
var con = "<div class='wafConf'>\
|
|
||||||
<div class='wafConf-btn'>\
|
|
||||||
<span>" + lan.soft.waf_title + "</span><div class='ssh-item'>\
|
|
||||||
<input class='btswitch btswitch-ios' id='closeWaf' type='checkbox' " + (rdata.status == 1 ? 'checked' : '') + ">\
|
|
||||||
<label class='btswitch-btn' for='closeWaf' onclick='CloseWaf()'></label>\
|
|
||||||
</div>\
|
|
||||||
<div class='pull-right'>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick='gzEdit()'>" + lan.soft.waf_edit + "</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick='upLimit()'>" + lan.soft.waf_up_title + "</button>\
|
|
||||||
</div>\
|
|
||||||
</div>\
|
|
||||||
<div class='wafConf_checkbox label-input-group ptb10 relative'>\
|
|
||||||
<input type='checkbox' id='waf_UrlDeny' " + (rdata['UrlDeny'] == 'on' ? 'checked' : '') + " onclick=\"SetWafConfig('UrlDeny','" + (rdata['UrlDeny'] == 'on' ? 'off' : 'on') + "')\" /><label for='waf_UrlDeny'>" + lan.soft.waf_input1 + "</label>\
|
|
||||||
<input type='checkbox' id='waf_CookieMatch' " + (rdata['CookieMatch'] == 'on' ? 'checked' : '') + " onclick=\"SetWafConfig('CookieMatch','" + (rdata['CookieMatch'] == 'on' ? 'off' : 'on') + "')\" /><label for='waf_CookieMatch'>" + lan.soft.waf_input2 + "</label>\
|
|
||||||
<input type='checkbox' id='waf_postMatch' " + (rdata['postMatch'] == 'on' ? 'checked' : '') + " onclick=\"SetWafConfig('postMatch','" + (rdata['postMatch'] == 'on' ? 'off' : 'on') + "')\" /><label for='waf_postMatch'>" + lan.soft.waf_input3 + "</label>\
|
|
||||||
<input type='checkbox' id='waf_CCDeny' " + (rdata['CCDeny'] == 'on' ? 'checked' : '') + " onclick=\"SetWafConfig('CCDeny','" + (rdata['CCDeny'] == 'on' ? 'off' : 'on') + "')\" /><label for='waf_CCDeny'>" + lan.soft.waf_input4 + "</label>\
|
|
||||||
<input type='checkbox' id='waf_attacklog' " + (rdata['attacklog'] == 'on' ? 'checked' : '') + " onclick=\"SetWafConfig('attacklog','" + (rdata['attacklog'] == 'on' ? 'off' : 'on') + "')\" /><label for='waf_attacklog'>" + lan.soft.waf_input5 + "</label>\
|
|
||||||
<span class='glyphicon glyphicon-folder-open' style='position: absolute; right: 10px; top: 12px; color: orange;cursor: pointer' onclick='openPath(\"/www/wwwlogs/waf\")'></span>\
|
|
||||||
</div>\
|
|
||||||
<div class='wafConf_cc'>\
|
|
||||||
<span>" + lan.soft.waf_input6 + "</span><input id='CCrate_1' class='bt-input-text' type='number' value='" + cc[0] + "' style='width:80px;margin-right:30px'/>\
|
|
||||||
<span>" + lan.soft.waf_input7 + "(" + lan.bt.s + ")</span><input id='CCrate_2' class='bt-input-text' type='number' value='" + cc[1] + "' style='width:80px;'/>\
|
|
||||||
<button onclick=\"SetWafConfig('CCrate','')\" class='btn btn-default btn-sm'>" + lan.public.ok + "</button>\
|
|
||||||
</div>\
|
|
||||||
<div class='wafConf_ip'>\
|
|
||||||
<fieldset>\
|
|
||||||
<legend>" + lan.soft.waf_input8 + "</legend>\
|
|
||||||
<input type='text' id='ipWhitelist_val' class='bt-input-text mr5' placeholder='" + lan.soft.waf_ip + "' style='width:175px;' /><button onclick=\"addWafKey('ipWhitelist')\" class='btn btn-default btn-sm'>" + lan.public.add + "</button>\
|
|
||||||
<div class='table-overflow'><table class='table table-hover'>" + whiteList + "</table></div>\
|
|
||||||
</fieldset>\
|
|
||||||
<fieldset>\
|
|
||||||
<legend>" + lan.soft.waf_input9 + "</legend>\
|
|
||||||
<input type='text' id='ipBlocklist_val' class='bt-input-text mr5' placeholder='" + lan.soft.waf_ip + "' style='width:175px;' /><button onclick=\"addWafKey('ipBlocklist')\" class='btn btn-default btn-sm'>" + lan.public.add + "</button>\
|
|
||||||
<div class='table-overflow'><table class='table table-hover'>" + blackList + "</table></div>\
|
|
||||||
</fieldset>\
|
|
||||||
</div>\
|
|
||||||
</div>"
|
|
||||||
$(".soft-man-con").html(con);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//上传限制
|
|
||||||
function upLimit() {
|
|
||||||
var loadT = layer.msg(lan.public.the_get, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.get("/waf?action=GetConfig", function(rdata) {
|
|
||||||
layer.close(loadT);
|
|
||||||
var black_fileExt = ''
|
|
||||||
for (var i = 0; i < rdata.black_fileExt.length; i++) {
|
|
||||||
black_fileExt += "<tr><td>" + rdata.black_fileExt[i] + "</td><td><a style='float:right;' href=\"javascript:deleteWafKey('black_fileExt','" + rdata.black_fileExt[i] + "');\">" + lan.public.del + "</a></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($("#blacktable").html() != undefined) {
|
|
||||||
$("#blacktable").html(black_fileExt);
|
|
||||||
$("#black_fileExt_val").val('');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
area: '300px',
|
|
||||||
title: lan.soft.waf_up_title,
|
|
||||||
closeBtn: 2,
|
|
||||||
shift: 0,
|
|
||||||
content: "<div class='dirBinding mlr15'>" +
|
|
||||||
"<input class='bt-input-text mr5' type='text' placeholder='" + lan.soft.waf_up_from1 + "' id='black_fileExt_val' style='height: 28px; border-radius: 3px;width: 219px;margin-top:15px' />" +
|
|
||||||
"<button class='btn btn-success btn-sm' onclick=\"addWafKey('black_fileExt')\">" + lan.public.add + "</button>" +
|
|
||||||
"</div>" +
|
|
||||||
"<div class='divtable' style='margin:15px'><table class='table table-hover' width='100%' style='margin-bottom:0'>" +
|
|
||||||
"<thead><tr><th>" + lan.soft.waf_up_from2 + "</th><th width='100' class='text-right'>" + lan.public.action + "</th></tr></thead>" +
|
|
||||||
"<tbody id='blacktable'>" + black_fileExt + "</tbody>" +
|
|
||||||
"</table></div>"
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//设置waf状态
|
|
||||||
function closeWaf() {
|
|
||||||
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/waf?action=SetStatus', '', function(rdata) {
|
|
||||||
layer.close(loadT)
|
|
||||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
|
|
||||||
if (rdata.status) waf();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//取规则文件
|
|
||||||
function getWafFile(name) {
|
|
||||||
onlineEditFile(0, '/www/server/panel/vhost/wafconf/' + name);
|
|
||||||
}
|
|
||||||
//规则编辑
|
|
||||||
function gzEdit() {
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
area: '360px',
|
|
||||||
title: lan.soft.waf_edit,
|
|
||||||
closeBtn: 2,
|
|
||||||
shift: 0,
|
|
||||||
content: "<div class='gzEdit'><button class='btn btn-default btn-sm' onclick=\"GetWafFile('cookie')\">Cookie</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('post')\">POST</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('url')\">URL</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('user-agent')\">User-Agent</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('args')\">Args</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('whiteurl')\">" + lan.soft.waf_url_white + "</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"GetWafFile('returnhtml')\">" + lan.soft.waf_index + "</button>\
|
|
||||||
<button class='btn btn-default btn-sm' onclick=\"updateWaf('returnhtml')\">" + lan.soft.waf_cloud + "</button></div>"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//更新WAF规则
|
|
||||||
function updateWaf() {
|
|
||||||
var loadT = layer.msg(lan.soft.waf_update, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/waf?action=updateWaf', '', function(rdata) {
|
|
||||||
layer.close(loadT)
|
|
||||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//设置WAF配置值
|
|
||||||
function setWafConfig(name, value) {
|
|
||||||
if (name == 'CCrate') {
|
|
||||||
var CCrate_1 = $("#CCrate_1").val();
|
|
||||||
var CCrate_2 = $("#CCrate_2").val();
|
|
||||||
if (CCrate_1 < 1 || CCrate_1 > 3000 || CCrate_2 < 1 || CCrate_2 > 1800) {
|
|
||||||
layer.msg(lan.soft.waf_cc_err, { icon: 5 });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
value = CCrate_1 + '/' + CCrate_2;
|
|
||||||
}
|
|
||||||
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/waf?action=SetConfigString', 'name=' + name + '&value=' + value, function(rdata) {
|
|
||||||
layer.close(loadT)
|
|
||||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
|
|
||||||
if (rdata.status) waf();
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//删除WAF指定值
|
|
||||||
function deleteWafKey(name, value) {
|
|
||||||
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/waf?action=SetConfigList&act=del', 'name=' + name + '&value=' + value, function(rdata) {
|
|
||||||
layer.close(loadT)
|
|
||||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
|
|
||||||
if (rdata.status) waf();
|
|
||||||
if (name == 'black_fileExt') upLimit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//删除WAF指定值
|
|
||||||
function addWafKey(name) {
|
|
||||||
var value = $('#' + name + '_val').val();
|
|
||||||
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
|
|
||||||
$.post('/waf?action=SetConfigList&act=add', 'name=' + name + '&value=' + value, function(rdata) {
|
|
||||||
layer.close(loadT)
|
|
||||||
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
|
|
||||||
if (rdata.status) waf();
|
|
||||||
if (name == 'black_fileExt') upLimit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -417,8 +417,8 @@ def setFpmConfig(version):
|
|||||||
max_spare_servers = args['max_spare_servers']
|
max_spare_servers = args['max_spare_servers']
|
||||||
pm = args['pm']
|
pm = args['pm']
|
||||||
|
|
||||||
file = getServerDir() + '/php' + version + '/php-fpm.d/www.conf'
|
filefpm = getFpmConfFile(version)
|
||||||
conf = mw.readFile(file)
|
conf = mw.readFile(filefpm)
|
||||||
|
|
||||||
rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*"
|
rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*"
|
||||||
conf = re.sub(rep, "\npm.max_children = " + max_children, conf)
|
conf = re.sub(rep, "\npm.max_children = " + max_children, conf)
|
||||||
@@ -437,7 +437,7 @@ def setFpmConfig(version):
|
|||||||
rep = "\s*pm\s*=\s*(\w+)\s*"
|
rep = "\s*pm\s*=\s*(\w+)\s*"
|
||||||
conf = re.sub(rep, "\npm = " + pm + "\n", conf)
|
conf = re.sub(rep, "\npm = " + pm + "\n", conf)
|
||||||
|
|
||||||
mw.writeFile(file, conf)
|
mw.writeFile(filefpm, conf)
|
||||||
reload(version)
|
reload(version)
|
||||||
|
|
||||||
msg = mw.getInfo('设置PHP-{1}并发设置,max_children={2},start_servers={3},min_spare_servers={4},max_spare_servers={5}',
|
msg = mw.getInfo('设置PHP-{1}并发设置,max_children={2},start_servers={3},min_spare_servers={4},max_spare_servers={5}',
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
{
|
{
|
||||||
"name": "pdo",
|
"name": "pdo",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
"74",
|
"74",
|
||||||
"80",
|
"80",
|
||||||
"81",
|
"81",
|
||||||
@@ -16,6 +21,11 @@
|
|||||||
"name": "mysqlnd",
|
"name": "mysqlnd",
|
||||||
"versions": [
|
"versions": [
|
||||||
"56",
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
"80",
|
"80",
|
||||||
"81",
|
"81",
|
||||||
"82"
|
"82"
|
||||||
@@ -29,6 +39,11 @@
|
|||||||
"name": "sqlite3",
|
"name": "sqlite3",
|
||||||
"versions": [
|
"versions": [
|
||||||
"56",
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
"80",
|
"80",
|
||||||
"81",
|
"81",
|
||||||
"82"
|
"82"
|
||||||
@@ -50,6 +65,11 @@
|
|||||||
"name": "odbc",
|
"name": "odbc",
|
||||||
"versions": [
|
"versions": [
|
||||||
"56",
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
"80",
|
"80",
|
||||||
"81",
|
"81",
|
||||||
"82"
|
"82"
|
||||||
|
|||||||
@@ -3,18 +3,6 @@ export PATH=$PATH:/opt/local/bin:/opt/local/sbin:/opt/local/share/man:/usr/local
|
|||||||
DIR=$(cd "$(dirname "$0")"; pwd)
|
DIR=$(cd "$(dirname "$0")"; pwd)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# cd /www/server/mdserver-web/scripts/quick && bash debug.sh
|
|
||||||
# cd /www/server/mdserver-web/plugins/php && bash all_test.sh
|
|
||||||
|
|
||||||
|
|
||||||
# cd /www/server/mdserver-web/plugins/php && bash install.sh install 71
|
|
||||||
# cd /www/server/mdserver-web/plugins/php/versions/52/ && bash gd.sh install 52
|
|
||||||
|
|
||||||
# cd /www/server/mdserver-web/plugins/php/versions/52/ && bash openssl.sh install 52
|
|
||||||
# cd /www/server/mdserver-web/plugins/php/versions/81/ && bash imagemagick.sh install 81
|
|
||||||
# cd /www/server/mdserver-web/plugins/php/versions/70/ && bash imagemagick.sh install 70
|
|
||||||
|
|
||||||
PHP_VER=71
|
PHP_VER=71
|
||||||
echo "php${PHP_VER} -- start"
|
echo "php${PHP_VER} -- start"
|
||||||
cmd_ext=$(ls -l $DIR/versions/$PHP_VER/ |awk '{print $9}')
|
cmd_ext=$(ls -l $DIR/versions/$PHP_VER/ |awk '{print $9}')
|
||||||
|
|||||||
@@ -412,15 +412,15 @@ def setFpmConfig(version):
|
|||||||
# if not 'max' in args:
|
# if not 'max' in args:
|
||||||
# return 'missing time args!'
|
# return 'missing time args!'
|
||||||
|
|
||||||
version = args['version']
|
|
||||||
max_children = args['max_children']
|
max_children = args['max_children']
|
||||||
start_servers = args['start_servers']
|
start_servers = args['start_servers']
|
||||||
min_spare_servers = args['min_spare_servers']
|
min_spare_servers = args['min_spare_servers']
|
||||||
max_spare_servers = args['max_spare_servers']
|
max_spare_servers = args['max_spare_servers']
|
||||||
pm = args['pm']
|
pm = args['pm']
|
||||||
|
|
||||||
file = getServerDir() + '/php' + version + '/php-fpm.d/www.conf'
|
# file = getServerDir() + '/php' + version + '/php-fpm.d/www.conf'
|
||||||
conf = mw.readFile(file)
|
filefpm = getFpmConfFile(version)
|
||||||
|
conf = mw.readFile(filefpm)
|
||||||
|
|
||||||
rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*"
|
rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*"
|
||||||
conf = re.sub(rep, "\npm.max_children = " + max_children, conf)
|
conf = re.sub(rep, "\npm.max_children = " + max_children, conf)
|
||||||
@@ -439,7 +439,7 @@ def setFpmConfig(version):
|
|||||||
rep = "\s*pm\s*=\s*(\w+)\s*"
|
rep = "\s*pm\s*=\s*(\w+)\s*"
|
||||||
conf = re.sub(rep, "\npm = " + pm + "\n", conf)
|
conf = re.sub(rep, "\npm = " + pm + "\n", conf)
|
||||||
|
|
||||||
mw.writeFile(file, conf)
|
mw.writeFile(filefpm, conf)
|
||||||
reload(version)
|
reload(version)
|
||||||
|
|
||||||
msg = mw.getInfo('设置PHP-{1}并发设置,max_children={2},start_servers={3},min_spare_servers={4},max_spare_servers={5}', (version, max_children,
|
msg = mw.getInfo('设置PHP-{1}并发设置,max_children={2},start_servers={3},min_spare_servers={4},max_spare_servers={5}', (version, max_children,
|
||||||
|
|||||||
@@ -140,6 +140,26 @@
|
|||||||
"shell": "fileinfo.sh",
|
"shell": "fileinfo.sh",
|
||||||
"check": "fileinfo"
|
"check": "fileinfo"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "simplexml",
|
||||||
|
"versions": [
|
||||||
|
"53",
|
||||||
|
"54",
|
||||||
|
"55",
|
||||||
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
|
"80",
|
||||||
|
"81"
|
||||||
|
],
|
||||||
|
"type": "通用扩展",
|
||||||
|
"msg": "用于XML!",
|
||||||
|
"shell": "simplexml.sh",
|
||||||
|
"check": "simplexml"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "exif",
|
"name": "exif",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ define('XHProf_Name', 'mdd');
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* xhprof 配置,便于调试快速找到问题
|
* xhprof 配置,便于调试快速找到问题
|
||||||
* author midoks@163.com
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function app_xhprof_start() {
|
function app_xhprof_start() {
|
||||||
$root = '{$ROOT_PATH}';
|
$root = '{$ROOT_PATH}';
|
||||||
$lib = $root . '/server/xhprof/xhprof_lib/utils/xhprof_lib.php';
|
$lib = $root . '/server/xhprof/xhprof_lib/utils/xhprof_lib.php';
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ rootPath=$(dirname "$rootPath")
|
|||||||
|
|
||||||
# echo $rootPath
|
# echo $rootPath
|
||||||
|
|
||||||
# cd /www/server/mdserver-web/plugins/php/lib && /bin/bash libmemcached.sh
|
|
||||||
|
|
||||||
SERVER_ROOT=$rootPath/lib
|
SERVER_ROOT=$rootPath/lib
|
||||||
SOURCE_ROOT=$rootPath/source/lib
|
SOURCE_ROOT=$rootPath/source/lib
|
||||||
|
|
||||||
|
|||||||
@@ -13,18 +13,6 @@ rootPath=$(dirname "$rootPath")
|
|||||||
SERVER_ROOT=$rootPath/lib
|
SERVER_ROOT=$rootPath/lib
|
||||||
SOURCE_ROOT=$rootPath/source/lib
|
SOURCE_ROOT=$rootPath/source/lib
|
||||||
|
|
||||||
# if [ ! -d ${SERVER_ROOT}/openssl ];then
|
|
||||||
# cd ${SOURCE_ROOT}
|
|
||||||
# if [ ! -f ${SOURCE_ROOT}/openssl-1.0.2q.tar.gz ];then
|
|
||||||
# wget https://github.com/midoks/mdserver-web/releases/download/init/openssl-1.0.2q.tar.gz -T 20
|
|
||||||
# fi
|
|
||||||
# tar -zxf openssl-1.0.2q.tar.gz
|
|
||||||
# cd openssl-1.0.2q
|
|
||||||
# ./config --openssldir=${SERVER_ROOT}/openssl zlib-dynamic shared
|
|
||||||
# make && make install
|
|
||||||
# fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d ${SERVER_ROOT}/openssl ];then
|
if [ ! -d ${SERVER_ROOT}/openssl ];then
|
||||||
cd ${SOURCE_ROOT}
|
cd ${SOURCE_ROOT}
|
||||||
if [ ! -f ${SOURCE_ROOT}/openssl-1.1.1p.tar.gz ];then
|
if [ ! -f ${SOURCE_ROOT}/openssl-1.1.1p.tar.gz ];then
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.gz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.gz ];then
|
||||||
@@ -131,7 +131,6 @@ fi
|
|||||||
# ps -ef|grep php/52 |grep -v grep |awk '{print $2}'|xargs kill
|
# ps -ef|grep php/52 |grep -v grep |awk '{print $2}'|xargs kill
|
||||||
# /www/server/php/init.d/php52 start
|
# /www/server/php/init.d/php52 start
|
||||||
# /www/server/php/52/sbin/php-fpm start
|
# /www/server/php/52/sbin/php-fpm start
|
||||||
# cd /www/server/mdserver-web && python3 /www/server/mdserver-web/plugins/php/index.py start 52
|
|
||||||
mkdir -p $serverPath/php/${PHP_VER}/var/log
|
mkdir -p $serverPath/php/${PHP_VER}/var/log
|
||||||
mkdir -p $serverPath/php/${PHP_VER}/var/run
|
mkdir -p $serverPath/php/${PHP_VER}/var/run
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ Install_lib()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash icu.sh
|
cd $rootPath/plugins/php/lib && /bin/bash icu.sh
|
||||||
|
|
||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ echo "安装php-5.3.29 ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ Install_lib()
|
|||||||
php_lib=$sourcePath/php_lib
|
php_lib=$sourcePath/php_lib
|
||||||
mkdir -p $php_lib
|
mkdir -p $php_lib
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash icu.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash icu.sh
|
||||||
|
|
||||||
wget -O $php_lib/${LIBNAME}-${LIBV}.tgz http://pecl.php.net/get/${LIBNAME}-${LIBV}.tgz
|
wget -O $php_lib/${LIBNAME}-${LIBV}.tgz http://pecl.php.net/get/${LIBNAME}-${LIBV}.tgz
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ mkdir -p $sourcePath/php
|
|||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.gz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.gz ];then
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ echo "安装php-5.5.38 ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_new.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_new.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash libzip.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash libzip.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
|
||||||
@@ -39,7 +39,11 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
|||||||
mv $sourcePath/php/php-${version} $sourcePath/php/php${PHP_VER}
|
mv $sourcePath/php/php-${version} $sourcePath/php/php${PHP_VER}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
rm -rf $sourcePath/php/php-${version}.tar.xz
|
||||||
|
echo "reinstall php${version}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php/php${PHP_VER}
|
cd $sourcePath/php/php${PHP_VER}
|
||||||
|
|
||||||
|
|||||||
@@ -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"; }
|
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
|
||||||
|
|
||||||
|
|
||||||
version=8.0.21
|
version=8.0.23
|
||||||
PHP_VER=80
|
PHP_VER=80
|
||||||
Install_php()
|
Install_php()
|
||||||
{
|
{
|
||||||
@@ -25,8 +25,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_new.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_new.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
|
||||||
|
|||||||
@@ -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"; }
|
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
|
||||||
|
|
||||||
|
|
||||||
version=8.1.8
|
version=8.1.10
|
||||||
PHP_VER=81
|
PHP_VER=81
|
||||||
Install_php()
|
Install_php()
|
||||||
{
|
{
|
||||||
@@ -25,8 +25,8 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_new.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_new.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
|||||||
@@ -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"; }
|
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
|
||||||
|
|
||||||
|
|
||||||
version=8.2.0alpha2
|
version=8.2.0RC2
|
||||||
PHP_VER=82
|
PHP_VER=82
|
||||||
Install_php()
|
Install_php()
|
||||||
{
|
{
|
||||||
@@ -25,14 +25,14 @@ echo "安装php-${version} ..." > $install_tmp
|
|||||||
mkdir -p $sourcePath/php
|
mkdir -p $sourcePath/php
|
||||||
mkdir -p $serverPath/php
|
mkdir -p $serverPath/php
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_new.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_new.sh
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash zlib.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash zlib.sh
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
if [ ! -d $sourcePath/php/php${PHP_VER} ];then
|
||||||
|
|
||||||
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
if [ ! -f $sourcePath/php/php-${version}.tar.xz ];then
|
||||||
wget --no-check-certificate -O $sourcePath/php/php-${version}.tar.xz https://downloads.php.net/~pierrick/php-8.2.0alpha2.tar.xz
|
wget --no-check-certificate -O $sourcePath/php/php-${version}.tar.xz https://downloads.php.net/~sergey/php-${version}.tar.xz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php && tar -Jxf $sourcePath/php/php-${version}.tar.xz
|
cd $sourcePath/php && tar -Jxf $sourcePath/php/php-${version}.tar.xz
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
# cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
# OPTIONS="${OPTIONS} --with-freetype-dir=${serverPath}/lib/freetype_old"
|
# OPTIONS="${OPTIONS} --with-freetype-dir=${serverPath}/lib/freetype_old"
|
||||||
# OPTIONS="${OPTIONS} --with-gd --enable-gd-native-ttf"
|
# OPTIONS="${OPTIONS} --with-gd --enable-gd-native-ttf"
|
||||||
# OPTIONS="${OPTIONS} --with-jpeg --with-jpeg-dir=/usr/lib"
|
# OPTIONS="${OPTIONS} --with-jpeg --with-jpeg-dir=/usr/lib"
|
||||||
@@ -55,12 +55,12 @@ Install_lib()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash freetype_old.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash freetype_old.sh
|
||||||
|
|
||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
Executable
+108
@@ -0,0 +1,108 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
curPath=`pwd`
|
||||||
|
|
||||||
|
rootPath=$(dirname "$curPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
serverPath=$(dirname "$rootPath")
|
||||||
|
sourcePath=${serverPath}/source/php
|
||||||
|
|
||||||
|
actionType=$1
|
||||||
|
version=$2
|
||||||
|
|
||||||
|
LIBNAME=gettext
|
||||||
|
LIBV=0
|
||||||
|
|
||||||
|
LIB_PATH_NAME=lib/php
|
||||||
|
if [ -d $serverPath/php/${version}/lib64 ];then
|
||||||
|
LIB_PATH_NAME=lib64
|
||||||
|
fi
|
||||||
|
|
||||||
|
NON_ZTS_FILENAME=`ls $serverPath/php/${version}/${LIB_PATH_NAME}/extensions | grep no-debug-non-zts`
|
||||||
|
extFile=$serverPath/php/${version}/${LIB_PATH_NAME}/extensions/${NON_ZTS_FILENAME}/${LIBNAME}.so
|
||||||
|
|
||||||
|
sysName=`uname`
|
||||||
|
if [ "$sysName" == "Darwin" ];then
|
||||||
|
BAK='_bak'
|
||||||
|
else
|
||||||
|
BAK=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
Install_lib()
|
||||||
|
{
|
||||||
|
|
||||||
|
isInstall=`cat $serverPath/php/$version/etc/php.ini|grep "${LIBNAME}.so"`
|
||||||
|
if [ "${isInstall}" != "" ];then
|
||||||
|
echo "php-$version 已安装${LIBNAME},请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|
||||||
|
$serverPath/php/$version/bin/phpize
|
||||||
|
./configure --with-php-config=$serverPath/php/$version/bin/php-config
|
||||||
|
|
||||||
|
FIND_C99=`cat Makefile|grep c99`
|
||||||
|
if [ "$FIND_C99" == "" ];then
|
||||||
|
sed -i $BAK 's/CFLAGS \=/CFLAGS \= -std=c99/g' Makefile
|
||||||
|
fi
|
||||||
|
|
||||||
|
make clean && make && make install && make clean
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
echo "ERROR!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
echo "[${LIBNAME}]" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
echo "extension=${LIBNAME}.so" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
|
||||||
|
bash ${rootPath}/plugins/php/versions/lib.sh $version restart
|
||||||
|
echo '==========================================================='
|
||||||
|
echo 'successful!'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Uninstall_lib()
|
||||||
|
{
|
||||||
|
if [ ! -f "$serverPath/php/$version/bin/php-config" ];then
|
||||||
|
echo "php-$version 未安装,请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
echo "php-$version 未安装${LIBNAME},请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $serverPath/php/$version/etc/php.ini
|
||||||
|
sed -i $BAK "/${LIBNAME}.so/d" $serverPath/php/$version/etc/php.ini
|
||||||
|
sed -i $BAK "/${LIBNAME}/d" $serverPath/php/$version/etc/php.ini
|
||||||
|
|
||||||
|
rm -f $extFile
|
||||||
|
bash ${rootPath}/plugins/php/versions/lib.sh $version restart
|
||||||
|
echo '==============================================='
|
||||||
|
echo 'successful!'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$actionType" == 'install' ];then
|
||||||
|
Install_lib
|
||||||
|
elif [ "$actionType" == 'uninstall' ];then
|
||||||
|
Uninstall_lib
|
||||||
|
fi
|
||||||
@@ -45,12 +45,12 @@ Install_lib()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash libiconv.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash libiconv.sh
|
||||||
|
|
||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
Executable
+109
@@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
curPath=`pwd`
|
||||||
|
rootPath=$(dirname "$curPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
rootPath=$(dirname "$rootPath")
|
||||||
|
serverPath=$(dirname "$rootPath")
|
||||||
|
sourcePath=${serverPath}/source/php
|
||||||
|
|
||||||
|
|
||||||
|
actionType=$1
|
||||||
|
version=$2
|
||||||
|
|
||||||
|
LIBNAME=igbinary
|
||||||
|
LIBV=3.2.7
|
||||||
|
|
||||||
|
if [ "$version" -lt "70" ];then
|
||||||
|
echo "not need"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIB_PATH_NAME=lib/php
|
||||||
|
if [ -d $serverPath/php/${version}/lib64 ];then
|
||||||
|
LIB_PATH_NAME=lib64
|
||||||
|
fi
|
||||||
|
|
||||||
|
NON_ZTS_FILENAME=`ls $serverPath/php/${version}/${LIB_PATH_NAME}/extensions | grep no-debug-non-zts`
|
||||||
|
extFile=$serverPath/php/${version}/${LIB_PATH_NAME}/extensions/${NON_ZTS_FILENAME}/${LIBNAME}.so
|
||||||
|
|
||||||
|
sysName=`uname`
|
||||||
|
if [ "$sysName" == "Darwin" ];then
|
||||||
|
BAK='_bak'
|
||||||
|
else
|
||||||
|
BAK=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
Install_lib()
|
||||||
|
{
|
||||||
|
|
||||||
|
isInstall=`cat $serverPath/php/$version/etc/php.ini|grep "${LIBNAME}.so"`
|
||||||
|
if [ "${isInstall}" != "" ];then
|
||||||
|
echo "php-$version 已安装${LIBNAME},请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
|
php_lib=$sourcePath/php_lib
|
||||||
|
mkdir -p $php_lib
|
||||||
|
if [ ! -f $php_lib/${LIBNAME}-${LIBV}.tgz ];then
|
||||||
|
wget -O $php_lib/${LIBNAME}-${LIBV}.tgz http://pecl.php.net/get/${LIBNAME}-${LIBV}.tgz
|
||||||
|
cd $php_lib
|
||||||
|
tar xvf ${LIBNAME}-${LIBV}.tgz
|
||||||
|
fi
|
||||||
|
cd $php_lib/${LIBNAME}-${LIBV}
|
||||||
|
|
||||||
|
$serverPath/php/$version/bin/phpize
|
||||||
|
./configure --with-php-config=$serverPath/php/$version/bin/php-config
|
||||||
|
make clean && make && make install && make clean
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
echo "ERROR!"
|
||||||
|
return;
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
echo "[${LIBNAME}]" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
echo "extension=${LIBNAME}.so" >> $serverPath/php/$version/etc/php.ini
|
||||||
|
|
||||||
|
bash ${rootPath}/plugins/php/versions/lib.sh $version restart
|
||||||
|
echo '==========================================================='
|
||||||
|
echo 'successful!'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Uninstall_lib()
|
||||||
|
{
|
||||||
|
if [ ! -f "$serverPath/php/$version/bin/php-config" ];then
|
||||||
|
echo "php-$version 未安装,请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$extFile" ];then
|
||||||
|
echo "php-$version 未安装${LIBNAME},请选择其它版本!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $serverPath/php/$version/etc/php.ini
|
||||||
|
sed -i $BAK "/${LIBNAME}.so/d" $serverPath/php/$version/etc/php.ini
|
||||||
|
sed -i $BAK "/${LIBNAME}.use_namespace/d" $serverPath/php/$version/etc/php.ini
|
||||||
|
sed -i $BAK "/\[${LIBNAME}\]/d" $serverPath/php/$version/etc/php.ini
|
||||||
|
|
||||||
|
rm -f $extFile
|
||||||
|
bash ${rootPath}/plugins/php/versions/lib.sh $version restart
|
||||||
|
echo '==============================================='
|
||||||
|
echo 'successful!'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$actionType" == 'install' ];then
|
||||||
|
Install_lib
|
||||||
|
elif [ "$actionType" == 'uninstall' ];then
|
||||||
|
Uninstall_lib
|
||||||
|
fi
|
||||||
@@ -34,7 +34,7 @@ fi
|
|||||||
|
|
||||||
OPTIONS=''
|
OPTIONS=''
|
||||||
if [ "$version" -lt "71" ];then
|
if [ "$version" -lt "71" ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash icu.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash icu.sh
|
||||||
OPTIONS="--with-icu-dir=${serverPath}/lib/icu"
|
OPTIONS="--with-icu-dir=${serverPath}/lib/icu"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Install_lib()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && bash libmcrypt.sh
|
cd ${rootPath}/plugins/php/lib && bash libmcrypt.sh
|
||||||
|
|
||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ serverPath=$(dirname "$rootPath")
|
|||||||
sourcePath=${serverPath}/source/php
|
sourcePath=${serverPath}/source/php
|
||||||
|
|
||||||
LIBNAME=memcached
|
LIBNAME=memcached
|
||||||
LIBV=3.2.0
|
LIBV=3.1.5
|
||||||
sysName=`uname`
|
sysName=`uname`
|
||||||
actionType=$1
|
actionType=$1
|
||||||
version=$2
|
version=$2
|
||||||
|
|||||||
@@ -41,15 +41,15 @@ Install_lib()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash openssl_10.sh
|
# cd ${rootPath}/plugins/php/lib && /bin/bash openssl_10.sh
|
||||||
if [ "$version" -lt "70" ];then
|
if [ "$version" -lt "70" ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php/lib && /bin/bash openssl_10.sh
|
cd ${rootPath}/plugins/php/lib && /bin/bash openssl_10.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ serverPath=$(dirname "$rootPath")
|
|||||||
sourcePath=${serverPath}/source/php
|
sourcePath=${serverPath}/source/php
|
||||||
|
|
||||||
LIBNAME=xhprof
|
LIBNAME=xhprof
|
||||||
LIBV=2.3.5
|
LIBV=2.3.7
|
||||||
sysName=`uname`
|
sysName=`uname`
|
||||||
actionType=$1
|
actionType=$1
|
||||||
version=$2
|
version=$2
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Install_lib()
|
|||||||
if [ ! -f "$extFile" ];then
|
if [ ! -f "$extFile" ];then
|
||||||
|
|
||||||
if [ ! -d $sourcePath/php${version}/ext ];then
|
if [ ! -d $sourcePath/php${version}/ext ];then
|
||||||
cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version}
|
cd ${rootPath}/plugins/php && /bin/bash install.sh install ${version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $sourcePath/php${version}/ext/${LIBNAME}
|
cd $sourcePath/php${version}/ext/${LIBNAME}
|
||||||
|
|||||||
@@ -202,6 +202,45 @@
|
|||||||
"shell": "exif.sh",
|
"shell": "exif.sh",
|
||||||
"check": "exif.so"
|
"check": "exif.so"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "igbinary",
|
||||||
|
"versions": [
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
|
"80",
|
||||||
|
"81",
|
||||||
|
"82"
|
||||||
|
],
|
||||||
|
"type": "通用扩展",
|
||||||
|
"msg": "序列化扩展!",
|
||||||
|
"shell": "igbinary.sh",
|
||||||
|
"check": "igbinary.so"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gettext",
|
||||||
|
"versions": [
|
||||||
|
"52",
|
||||||
|
"53",
|
||||||
|
"54",
|
||||||
|
"55",
|
||||||
|
"56",
|
||||||
|
"70",
|
||||||
|
"71",
|
||||||
|
"72",
|
||||||
|
"73",
|
||||||
|
"74",
|
||||||
|
"80",
|
||||||
|
"81",
|
||||||
|
"82"
|
||||||
|
],
|
||||||
|
"type": "通用扩展",
|
||||||
|
"msg": "国际化与本地化!",
|
||||||
|
"shell": "gettext.sh",
|
||||||
|
"check": "gettext.so"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "gd",
|
"name": "gd",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
daemonize yes
|
daemonize yes
|
||||||
pidfile {$SERVER_PATH}/redis/redis_6379.pid
|
pidfile {$SERVER_PATH}/redis/redis_6379.pid
|
||||||
|
|
||||||
|
bind 127.0.0.1
|
||||||
port 6379
|
port 6379
|
||||||
|
requirepass admin
|
||||||
|
|
||||||
timeout 0
|
timeout 0
|
||||||
tcp-keepalive 0
|
tcp-keepalive 0
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
<div class="bt-form">
|
<div class="bt-form">
|
||||||
|
<div class='plugin_version'></div>
|
||||||
<div class="bt-w-main">
|
<div class="bt-w-main">
|
||||||
<div class="bt-w-menu">
|
<div class="bt-w-menu">
|
||||||
<p class="bgw" onclick="pluginService('redis');">服务</p>
|
<p class="bgw" onclick="pluginService('redis');">服务</p>
|
||||||
<p onclick="pluginInitD('redis');">自启动</p>
|
<p onclick="pluginInitD('redis');">自启动</p>
|
||||||
<p onclick="pluginConfig('redis');">配置修改</p>
|
<p onclick="pluginConfig('redis');">配置修改</p>
|
||||||
<p onclick="redisStatus();">负载状态</p>
|
<p onclick="getRedisConfig($('.plugin_version').attr('version'));">性能调整</p>
|
||||||
|
<p onclick="redisStatus($('.plugin_version').attr('version'));">负载状态</p>
|
||||||
<p onclick="pluginLogs('redis','','run_log');">日志</p>
|
<p onclick="pluginLogs('redis','','run_log');">日志</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="bt-w-con pd15">
|
<div class="bt-w-con pd15">
|
||||||
@@ -13,42 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
pluginService('redis');
|
$.getScript( "/plugins/file?name=redis&f=js/redis.js", function(){
|
||||||
|
pluginService('redis', $('.plugin_version').attr('version'));
|
||||||
//redis负载状态 start
|
});
|
||||||
function redisStatus() {
|
|
||||||
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
|
|
||||||
$.post('/plugins/run', {name:'redis', func:'run_info'}, function(data) {
|
|
||||||
layer.close(loadT);
|
|
||||||
if (!data.status){
|
|
||||||
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var rdata = $.parseJSON(data.data);
|
|
||||||
hit = (parseInt(rdata.keyspace_hits) / (parseInt(rdata.keyspace_hits) + parseInt(rdata.keyspace_misses)) * 100).toFixed(2);
|
|
||||||
var Con = '<div class="divtable">\
|
|
||||||
<table class="table table-hover table-bordered" style="width: 490px;">\
|
|
||||||
<thead><th>字段</th><th>当前值</th><th>说明</th></thead>\
|
|
||||||
<tbody>\
|
|
||||||
<tr><th>uptime_in_days</th><td>' + rdata.uptime_in_days + '</td><td>已运行天数</td></tr>\
|
|
||||||
<tr><th>tcp_port</th><td>' + rdata.tcp_port + '</td><td>当前监听端口</td></tr>\
|
|
||||||
<tr><th>connected_clients</th><td>' + rdata.connected_clients + '</td><td>连接的客户端数量</td></tr>\
|
|
||||||
<tr><th>used_memory_rss</th><td>' + toSize(rdata.used_memory_rss) + '</td><td>Redis当前占用的系统内存总量</td></tr>\
|
|
||||||
<tr><th>used_memory</th><td>' + toSize(rdata.used_memory) + '</td><td>Redis当前已分配的内存总量</td></tr>\
|
|
||||||
<tr><th>used_memory_peak</th><td>' + toSize(rdata.used_memory_peak) + '</td><td>Redis历史分配内存的峰值</td></tr>\
|
|
||||||
<tr><th>mem_fragmentation_ratio</th><td>' + rdata.mem_fragmentation_ratio + '%</td><td>内存碎片比率</td></tr>\
|
|
||||||
<tr><th>total_connections_received</th><td>' + rdata.total_connections_received + '</td><td>运行以来连接过的客户端的总数量</td></tr>\
|
|
||||||
<tr><th>total_commands_processed</th><td>' + rdata.total_commands_processed + '</td><td>运行以来执行过的命令的总数量</td></tr>\
|
|
||||||
<tr><th>instantaneous_ops_per_sec</th><td>' + rdata.instantaneous_ops_per_sec + '</td><td>服务器每秒钟执行的命令数量</td></tr>\
|
|
||||||
<tr><th>keyspace_hits</th><td>' + rdata.keyspace_hits + '</td><td>查找数据库键成功的次数</td></tr>\
|
|
||||||
<tr><th>keyspace_misses</th><td>' + rdata.keyspace_misses + '</td><td>查找数据库键失败的次数</td></tr>\
|
|
||||||
<tr><th>hit</th><td>' + hit + '%</td><td>查找数据库键命中率</td></tr>\
|
|
||||||
<tr><th>latest_fork_usec</th><td>' + rdata.latest_fork_usec + '</td><td>最近一次 fork() 操作耗费的微秒数</td></tr>\
|
|
||||||
<tbody>\
|
|
||||||
</table></div>'
|
|
||||||
$(".soft-man-con").html(Con);
|
|
||||||
},'json');
|
|
||||||
}
|
|
||||||
//redis负载状态 end
|
|
||||||
</script>
|
</script>
|
||||||
+81
-2
@@ -4,6 +4,7 @@ import sys
|
|||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import re
|
||||||
|
|
||||||
sys.path.append(os.getcwd() + "/class/core")
|
sys.path.append(os.getcwd() + "/class/core")
|
||||||
import mw
|
import mw
|
||||||
@@ -47,7 +48,7 @@ def getInitDTpl():
|
|||||||
|
|
||||||
|
|
||||||
def getArgs():
|
def getArgs():
|
||||||
args = sys.argv[2:]
|
args = sys.argv[3:]
|
||||||
tmp = {}
|
tmp = {}
|
||||||
args_len = len(args)
|
args_len = len(args)
|
||||||
|
|
||||||
@@ -153,7 +154,19 @@ def reload():
|
|||||||
|
|
||||||
|
|
||||||
def runInfo():
|
def runInfo():
|
||||||
|
requirepass = ""
|
||||||
|
|
||||||
|
conf = getServerDir() + '/redis.conf'
|
||||||
|
content = mw.readFile(conf)
|
||||||
|
rep = "^(requirepass" + ')\s*([.0-9A-Za-z_& ~]+)'
|
||||||
|
tmp = re.search(rep, content, re.M)
|
||||||
|
if tmp:
|
||||||
|
requirepass = tmp.groups()[1]
|
||||||
|
|
||||||
cmd = getServerDir() + "/bin/redis-cli info"
|
cmd = getServerDir() + "/bin/redis-cli info"
|
||||||
|
if requirepass != "":
|
||||||
|
cmd = getServerDir() + '/bin/redis-cli -a "' + requirepass + '" info'
|
||||||
|
|
||||||
data = mw.execShell(cmd)[0]
|
data = mw.execShell(cmd)[0]
|
||||||
res = [
|
res = [
|
||||||
'tcp_port',
|
'tcp_port',
|
||||||
@@ -202,7 +215,6 @@ def initdInstall():
|
|||||||
|
|
||||||
|
|
||||||
def initdUinstall():
|
def initdUinstall():
|
||||||
|
|
||||||
if mw.isAppleSystem():
|
if mw.isAppleSystem():
|
||||||
return "Apple Computer does not support"
|
return "Apple Computer does not support"
|
||||||
|
|
||||||
@@ -213,6 +225,69 @@ def initdUinstall():
|
|||||||
def runLog():
|
def runLog():
|
||||||
return getServerDir() + '/data/redis.log'
|
return getServerDir() + '/data/redis.log'
|
||||||
|
|
||||||
|
|
||||||
|
def getRedisConfInfo():
|
||||||
|
conf = getServerDir() + '/redis.conf'
|
||||||
|
content = mw.readFile(conf)
|
||||||
|
|
||||||
|
gets = [
|
||||||
|
{'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)'},
|
||||||
|
{'name': 'port', 'type': 2, 'ps': '绑定端口'},
|
||||||
|
{'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开'},
|
||||||
|
{'name': 'maxclients', 'type': 2, 'ps': '最大输入时间'},
|
||||||
|
{'name': 'databases', 'type': 2, 'ps': '数据库数量'},
|
||||||
|
{'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码'},
|
||||||
|
{'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制'}
|
||||||
|
]
|
||||||
|
content = mw.readFile(conf)
|
||||||
|
|
||||||
|
result = []
|
||||||
|
for g in gets:
|
||||||
|
rep = "^(" + g['name'] + ')\s*([.0-9A-Za-z_& ~]+)'
|
||||||
|
tmp = re.search(rep, content, re.M)
|
||||||
|
if not tmp:
|
||||||
|
g['value'] = ''
|
||||||
|
result.append(g)
|
||||||
|
continue
|
||||||
|
g['value'] = tmp.groups()[1]
|
||||||
|
if g['name'] == 'maxmemory':
|
||||||
|
g['value'] = g['value'].strip("mb")
|
||||||
|
result.append(g)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def getRedisConf():
|
||||||
|
data = getRedisConfInfo()
|
||||||
|
return mw.getJson(data)
|
||||||
|
|
||||||
|
|
||||||
|
def submitRedisConf():
|
||||||
|
gets = ['bind', 'port', 'timeout', 'maxclients',
|
||||||
|
'databases', 'requirepass', 'maxmemory']
|
||||||
|
args = getArgs()
|
||||||
|
conf = getServerDir() + '/redis.conf'
|
||||||
|
content = mw.readFile(conf)
|
||||||
|
for g in gets:
|
||||||
|
if g in args:
|
||||||
|
rep = g + '\s*([.0-9A-Za-z_& ~]+)'
|
||||||
|
val = g + ' ' + args[g]
|
||||||
|
|
||||||
|
if g == 'maxmemory':
|
||||||
|
val = g + ' ' + args[g] + "mb"
|
||||||
|
|
||||||
|
if g == 'requirepass' and args[g] == '':
|
||||||
|
content = re.sub('requirepass', '#requirepass', content)
|
||||||
|
if g == 'requirepass' and args[g] != '':
|
||||||
|
content = re.sub('#requirepass', 'requirepass', content)
|
||||||
|
content = re.sub(rep, val, content)
|
||||||
|
|
||||||
|
if g != 'requirepass':
|
||||||
|
content = re.sub(rep, val, content)
|
||||||
|
mw.writeFile(conf, content)
|
||||||
|
reload()
|
||||||
|
return mw.returnJson(True, '设置成功')
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
func = sys.argv[1]
|
func = sys.argv[1]
|
||||||
if func == 'status':
|
if func == 'status':
|
||||||
@@ -237,5 +312,9 @@ if __name__ == "__main__":
|
|||||||
print(getConf())
|
print(getConf())
|
||||||
elif func == 'run_log':
|
elif func == 'run_log':
|
||||||
print(runLog())
|
print(runLog())
|
||||||
|
elif func == 'get_redis_conf':
|
||||||
|
print(getRedisConf())
|
||||||
|
elif func == 'submit_redis_conf':
|
||||||
|
print(submitRedisConf())
|
||||||
else:
|
else:
|
||||||
print('error')
|
print('error')
|
||||||
|
|||||||
Executable
+149
@@ -0,0 +1,149 @@
|
|||||||
|
|
||||||
|
function str2Obj(str){
|
||||||
|
var data = {};
|
||||||
|
kv = str.split('&');
|
||||||
|
for(i in kv){
|
||||||
|
v = kv[i].split('=');
|
||||||
|
data[v[0]] = v[1];
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function redisPost(method, version, args,callback){
|
||||||
|
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
|
||||||
|
|
||||||
|
var req_data = {};
|
||||||
|
req_data['name'] = 'redis';
|
||||||
|
req_data['func'] = method;
|
||||||
|
req_data['version'] = version;
|
||||||
|
|
||||||
|
if (typeof(args) == 'string'){
|
||||||
|
req_data['args'] = JSON.stringify(str2Obj(args));
|
||||||
|
} else {
|
||||||
|
req_data['args'] = JSON.stringify(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.post('/plugins/run', req_data, function(data) {
|
||||||
|
layer.close(loadT);
|
||||||
|
if (!data.status){
|
||||||
|
//错误展示10S
|
||||||
|
layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof(callback) == 'function'){
|
||||||
|
callback(data);
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
function redisPostCallbak(method, version, args,callback){
|
||||||
|
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
|
||||||
|
|
||||||
|
var req_data = {};
|
||||||
|
req_data['name'] = 'redis';
|
||||||
|
req_data['func'] = method;
|
||||||
|
args['version'] = version;
|
||||||
|
|
||||||
|
if (typeof(args) == 'string'){
|
||||||
|
req_data['args'] = JSON.stringify(str2Obj(args));
|
||||||
|
} else {
|
||||||
|
req_data['args'] = JSON.stringify(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.post('/plugins/callback', req_data, function(data) {
|
||||||
|
layer.close(loadT);
|
||||||
|
if (!data.status){
|
||||||
|
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof(callback) == 'function'){
|
||||||
|
callback(data);
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
//redis负载状态 start
|
||||||
|
function redisStatus(version) {
|
||||||
|
|
||||||
|
redisPost('run_info',version, {},function(data){
|
||||||
|
var rdata = $.parseJSON(data.data);
|
||||||
|
hit = (parseInt(rdata.keyspace_hits) / (parseInt(rdata.keyspace_hits) + parseInt(rdata.keyspace_misses)) * 100).toFixed(2);
|
||||||
|
var con = '<div class="divtable">\
|
||||||
|
<table class="table table-hover table-bordered" style="width: 490px;">\
|
||||||
|
<thead><th>字段</th><th>当前值</th><th>说明</th></thead>\
|
||||||
|
<tbody>\
|
||||||
|
<tr><th>uptime_in_days</th><td>' + rdata.uptime_in_days + '</td><td>已运行天数</td></tr>\
|
||||||
|
<tr><th>tcp_port</th><td>' + rdata.tcp_port + '</td><td>当前监听端口</td></tr>\
|
||||||
|
<tr><th>connected_clients</th><td>' + rdata.connected_clients + '</td><td>连接的客户端数量</td></tr>\
|
||||||
|
<tr><th>used_memory_rss</th><td>' + toSize(rdata.used_memory_rss) + '</td><td>Redis当前占用的系统内存总量</td></tr>\
|
||||||
|
<tr><th>used_memory</th><td>' + toSize(rdata.used_memory) + '</td><td>Redis当前已分配的内存总量</td></tr>\
|
||||||
|
<tr><th>used_memory_peak</th><td>' + toSize(rdata.used_memory_peak) + '</td><td>Redis历史分配内存的峰值</td></tr>\
|
||||||
|
<tr><th>mem_fragmentation_ratio</th><td>' + rdata.mem_fragmentation_ratio + '%</td><td>内存碎片比率</td></tr>\
|
||||||
|
<tr><th>total_connections_received</th><td>' + rdata.total_connections_received + '</td><td>运行以来连接过的客户端的总数量</td></tr>\
|
||||||
|
<tr><th>total_commands_processed</th><td>' + rdata.total_commands_processed + '</td><td>运行以来执行过的命令的总数量</td></tr>\
|
||||||
|
<tr><th>instantaneous_ops_per_sec</th><td>' + rdata.instantaneous_ops_per_sec + '</td><td>服务器每秒钟执行的命令数量</td></tr>\
|
||||||
|
<tr><th>keyspace_hits</th><td>' + rdata.keyspace_hits + '</td><td>查找数据库键成功的次数</td></tr>\
|
||||||
|
<tr><th>keyspace_misses</th><td>' + rdata.keyspace_misses + '</td><td>查找数据库键失败的次数</td></tr>\
|
||||||
|
<tr><th>hit</th><td>' + hit + '%</td><td>查找数据库键命中率</td></tr>\
|
||||||
|
<tr><th>latest_fork_usec</th><td>' + rdata.latest_fork_usec + '</td><td>最近一次 fork() 操作耗费的微秒数</td></tr>\
|
||||||
|
<tbody>\
|
||||||
|
</table></div>';
|
||||||
|
$(".soft-man-con").html(con);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//redis负载状态 end
|
||||||
|
|
||||||
|
//配置修改
|
||||||
|
function getRedisConfig(version) {
|
||||||
|
redisPost('get_redis_conf', version,'',function(data){
|
||||||
|
// console.log(data);
|
||||||
|
var rdata = $.parseJSON(data.data);
|
||||||
|
// console.log(rdata);
|
||||||
|
var mlist = '';
|
||||||
|
for (var i = 0; i < rdata.length; i++) {
|
||||||
|
var w = '70'
|
||||||
|
if (rdata[i].name == 'error_reporting') w = '250';
|
||||||
|
var ibody = '<input style="width: ' + w + 'px;" class="bt-input-text mr5" name="' + rdata[i].name + '" value="' + rdata[i].value + '" type="text" >';
|
||||||
|
switch (rdata[i].type) {
|
||||||
|
case 0:
|
||||||
|
var selected_1 = (rdata[i].value == 1) ? 'selected' : '';
|
||||||
|
var selected_0 = (rdata[i].value == 0) ? 'selected' : '';
|
||||||
|
ibody = '<select class="bt-input-text mr5" name="' + rdata[i].name + '" style="width: ' + w + 'px;"><option value="1" ' + selected_1 + '>开启</option><option value="0" ' + selected_0 + '>关闭</option></select>'
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var selected_1 = (rdata[i].value == 'On') ? 'selected' : '';
|
||||||
|
var selected_0 = (rdata[i].value == 'Off') ? 'selected' : '';
|
||||||
|
ibody = '<select class="bt-input-text mr5" name="' + rdata[i].name + '" style="width: ' + w + 'px;"><option value="On" ' + selected_1 + '>开启</option><option value="Off" ' + selected_0 + '>关闭</option></select>'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mlist += '<p><span>' + rdata[i].name + '</span>' + ibody + ', <font>' + rdata[i].ps + '</font></p>'
|
||||||
|
}
|
||||||
|
var phpCon = '<style>.conf_p p{margin-bottom: 2px}</style><div class="conf_p" style="margin-bottom:0">' + mlist + '\
|
||||||
|
<div style="margin-top:10px; padding-right:15px" class="text-right"><button class="btn btn-success btn-sm mr5" onclick="getRedisConfig(\'' + version + '\')">刷新</button>\
|
||||||
|
<button class="btn btn-success btn-sm" onclick="submitConf(\'' + version + '\')">保存</button></div>\
|
||||||
|
</div>'
|
||||||
|
$(".soft-man-con").html(phpCon);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交PHP配置
|
||||||
|
function submitConf(version) {
|
||||||
|
var data = {
|
||||||
|
version: version,
|
||||||
|
bind: $("input[name='bind']").val(),
|
||||||
|
'port': $("input[name='port']").val(),
|
||||||
|
'timeout': $("input[name='timeout']").val(),
|
||||||
|
maxclients: $("input[name='maxclients']").val(),
|
||||||
|
databases: $("input[name='databases']").val(),
|
||||||
|
requirepass: $("input[name='requirepass']").val(),
|
||||||
|
maxmemory: $("input[name='maxmemory']").val(),
|
||||||
|
};
|
||||||
|
|
||||||
|
redisPost('submit_redis_conf', version, data, function(ret_data){
|
||||||
|
var rdata = $.parseJSON(ret_data.data);
|
||||||
|
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@@ -135,11 +135,12 @@ def initDReceive():
|
|||||||
mw.writeFile(file_bin, content)
|
mw.writeFile(file_bin, content)
|
||||||
mw.execShell('chmod +x ' + file_bin)
|
mw.execShell('chmod +x ' + file_bin)
|
||||||
|
|
||||||
|
lock_file = getServerDir() + "/installed_rsyncd.pl"
|
||||||
# systemd
|
# systemd
|
||||||
systemDir = mw.systemdCfgDir()
|
systemDir = mw.systemdCfgDir()
|
||||||
systemService = systemDir + '/rsyncd.service'
|
systemService = systemDir + '/rsyncd.service'
|
||||||
systemServiceTpl = getPluginDir() + '/init.d/rsyncd.service.tpl'
|
systemServiceTpl = getPluginDir() + '/init.d/rsyncd.service.tpl'
|
||||||
if os.path.exists(systemDir) and not os.path.exists(systemService):
|
if not os.path.exists(lock_file):
|
||||||
rsync_bin = mw.execShell('which rsync')[0].strip()
|
rsync_bin = mw.execShell('which rsync')[0].strip()
|
||||||
if rsync_bin == '':
|
if rsync_bin == '':
|
||||||
print('rsync missing!')
|
print('rsync missing!')
|
||||||
@@ -152,6 +153,8 @@ def initDReceive():
|
|||||||
mw.writeFile(systemService, se)
|
mw.writeFile(systemService, se)
|
||||||
mw.execShell('systemctl daemon-reload')
|
mw.execShell('systemctl daemon-reload')
|
||||||
|
|
||||||
|
mw.writeFile(lock_file, "ok")
|
||||||
|
|
||||||
rlog = getLog()
|
rlog = getLog()
|
||||||
if os.path.exists(rlog):
|
if os.path.exists(rlog):
|
||||||
mw.writeFile(rlog, '')
|
mw.writeFile(rlog, '')
|
||||||
@@ -199,7 +202,7 @@ def initDSend():
|
|||||||
mw.writeFile(systemService, content)
|
mw.writeFile(systemService, content)
|
||||||
mw.execShell('systemctl daemon-reload')
|
mw.execShell('systemctl daemon-reload')
|
||||||
|
|
||||||
mw.writeFile(lock_file, "ok")
|
mw.writeFile(lock_file, "ok")
|
||||||
|
|
||||||
lslog = getLsyncdLog()
|
lslog = getLsyncdLog()
|
||||||
if os.path.exists(lslog):
|
if os.path.exists(lslog):
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"shell":"install.sh",
|
"shell":"install.sh",
|
||||||
"checks":"server/rsyncd",
|
"checks":"server/rsyncd",
|
||||||
"path": "server/rsyncd",
|
"path": "server/rsyncd",
|
||||||
"author":"midoks",
|
"author":"samba",
|
||||||
"home":"https://rsync.samba.org/",
|
"home":"https://rsync.samba.org/",
|
||||||
"date":"2019-03-05",
|
"date":"2019-03-05",
|
||||||
"pid":"4"
|
"pid":"4"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Install_rsyncd()
|
|||||||
echo '正在安装脚本文件...' > $install_tmp
|
echo '正在安装脚本文件...' > $install_tmp
|
||||||
|
|
||||||
|
|
||||||
if [ "$OSNAME" == "debian'" ] || [ "$OSNAME" == "ubuntu'" ];then
|
if [ "$OSNAME" == "debian" ] || [ "$OSNAME" == "ubuntu" ];then
|
||||||
apt install -y rsync
|
apt install -y rsync
|
||||||
apt install -y lsyncd
|
apt install -y lsyncd
|
||||||
elif [[ "$OSNAME" == "arch" ]]; then
|
elif [[ "$OSNAME" == "arch" ]]; then
|
||||||
|
|||||||
@@ -339,7 +339,10 @@ function createSendTask(name = ''){
|
|||||||
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']});
|
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']});
|
||||||
|
|
||||||
if (rdata.status){
|
if (rdata.status){
|
||||||
setTimeout(function(){layer.close(index);},2000);
|
setTimeout(function(){
|
||||||
|
layer.close(index);
|
||||||
|
lsyncdSend();
|
||||||
|
},2000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ def initDreplace():
|
|||||||
mw.writeFile(conf, conf_content)
|
mw.writeFile(conf, conf_content)
|
||||||
|
|
||||||
if os.path.exists(systemDir) and not os.path.exists(systemService):
|
if os.path.exists(systemDir) and not os.path.exists(systemService):
|
||||||
activate_file = mw.getServerDir() + '/mdserver-web/bin/activate'
|
activate_file = mw.getRunDir() + '/bin/activate'
|
||||||
if os.path.exists(activate_file):
|
if os.path.exists(activate_file):
|
||||||
supervisord_bin = mw.execShell(
|
supervisord_bin = mw.execShell(
|
||||||
'source ' + activate_file + '&& which supervisord')[0].strip()
|
'source ' + activate_file + '&& which supervisord')[0].strip()
|
||||||
@@ -472,7 +472,29 @@ def readConfigLogTpl():
|
|||||||
stdout_logfile = line.strip().split('=')[1]
|
stdout_logfile = line.strip().split('=')[1]
|
||||||
|
|
||||||
if stdout_logfile != '':
|
if stdout_logfile != '':
|
||||||
data = mw.getNumLines(stdout_logfile, int(line_log))
|
data = mw.getLastLine(stdout_logfile, int(line_log))
|
||||||
|
return mw.returnJson(True, 'OK', data)
|
||||||
|
return mw.returnJson(False, 'OK', '')
|
||||||
|
|
||||||
|
|
||||||
|
def readConfigLogErrorTpl():
|
||||||
|
args = getArgs()
|
||||||
|
data = checkArgs(args, ['file'])
|
||||||
|
if not data[0]:
|
||||||
|
return data[1]
|
||||||
|
file_log = args['file']
|
||||||
|
line_log = args['line']
|
||||||
|
|
||||||
|
with open(file_log, "r") as fr:
|
||||||
|
infos = fr.readlines()
|
||||||
|
|
||||||
|
stderr_logfile = ''
|
||||||
|
for line in infos:
|
||||||
|
if "stderr_logfile=" in line.strip():
|
||||||
|
stderr_logfile = line.strip().split('=')[1]
|
||||||
|
|
||||||
|
if stderr_logfile != '':
|
||||||
|
data = mw.getLastLine(stderr_logfile, int(line_log))
|
||||||
return mw.returnJson(True, 'OK', data)
|
return mw.returnJson(True, 'OK', data)
|
||||||
return mw.returnJson(False, 'OK', '')
|
return mw.returnJson(False, 'OK', '')
|
||||||
|
|
||||||
@@ -529,6 +551,8 @@ if __name__ == "__main__":
|
|||||||
print(readConfigTpl())
|
print(readConfigTpl())
|
||||||
elif func == 'read_config_log_tpl':
|
elif func == 'read_config_log_tpl':
|
||||||
print(readConfigLogTpl())
|
print(readConfigLogTpl())
|
||||||
|
elif func == 'read_config_log_error_tpl':
|
||||||
|
print(readConfigLogErrorTpl())
|
||||||
elif func == 'sup_clear_log':
|
elif func == 'sup_clear_log':
|
||||||
print(supClearLog())
|
print(supClearLog())
|
||||||
elif func == 'conf':
|
elif func == 'conf':
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ function supConfigTpl(_name, version, func, config_tpl_func, read_config_tpl_fun
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#textBody").empty().text(rdata.data);
|
$("#textBody").empty().html(rdata.data);
|
||||||
$(".CodeMirror").remove();
|
$(".CodeMirror").remove();
|
||||||
var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), {
|
var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), {
|
||||||
extraKeys: {
|
extraKeys: {
|
||||||
@@ -424,7 +424,7 @@ function supConfigTpl(_name, version, func, config_tpl_func, read_config_tpl_fun
|
|||||||
$(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0});
|
$(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0});
|
||||||
$("#onlineEditFileBtn").unbind('click');
|
$("#onlineEditFileBtn").unbind('click');
|
||||||
$("#onlineEditFileBtn").click(function(){
|
$("#onlineEditFileBtn").click(function(){
|
||||||
$("#textBody").text(editor.getValue());
|
$("#textBody").html(editor.getValue());
|
||||||
pluginConfigSave(fileName);
|
pluginConfigSave(fileName);
|
||||||
});
|
});
|
||||||
},'json');
|
},'json');
|
||||||
@@ -474,6 +474,7 @@ function supLogs(_name, config_tpl_func, read_config_tpl_func,line){
|
|||||||
|
|
||||||
var con = '<div><select id="config_tpl" class="bt-input-text mr20" style="width:30%;margin-bottom: 3px;"><option value="0">请选择</option></select>\
|
var con = '<div><select id="config_tpl" class="bt-input-text mr20" style="width:30%;margin-bottom: 3px;"><option value="0">请选择</option></select>\
|
||||||
<button id="sup_clear_log" class="btn btn-success btn-sm clear_logs mr5">清理日志</button>\
|
<button id="sup_clear_log" class="btn btn-success btn-sm clear_logs mr5">清理日志</button>\
|
||||||
|
<button id="sup_error_log" class="btn btn-success btn-sm clear_logs mr5">查看错误日志</button>\
|
||||||
</div>';
|
</div>';
|
||||||
con += '<textarea readonly="" style="margin: 0px;width: 100%;height: 520px;background-color: #333;color:#fff; padding:0 5px" id="info_log"></textarea>';
|
con += '<textarea readonly="" style="margin: 0px;width: 100%;height: 520px;background-color: #333;color:#fff; padding:0 5px" id="info_log"></textarea>';
|
||||||
$(".soft-man-con").html(con);
|
$(".soft-man-con").html(con);
|
||||||
@@ -489,6 +490,21 @@ function supLogs(_name, config_tpl_func, read_config_tpl_func,line){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function errorLog(file,file_line){
|
||||||
|
$('#sup_error_log').click(function(){
|
||||||
|
var _args = JSON.stringify({file:file,line:file_line});
|
||||||
|
$.post('/plugins/run', {name:_name, func:'read_config_log_error_tpl',args:_args}, function(data){
|
||||||
|
var rdata = $.parseJSON(data.data);
|
||||||
|
if (!rdata.status){
|
||||||
|
layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#info_log").empty().html(rdata.data);
|
||||||
|
},'json');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var loadT = layer.msg('日志路径获取中...',{icon:16,time:0,shade: [0.3, '#000']});
|
var loadT = layer.msg('日志路径获取中...',{icon:16,time:0,shade: [0.3, '#000']});
|
||||||
$.post('/plugins/run', {name:_name, func:_config_tpl_func},function (data) {
|
$.post('/plugins/run', {name:_name, func:_config_tpl_func},function (data) {
|
||||||
layer.close(loadT);
|
layer.close(loadT);
|
||||||
@@ -517,10 +533,11 @@ function supLogs(_name, config_tpl_func, read_config_tpl_func,line){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#info_log").empty().text(rdata.data);
|
$("#info_log").empty().html(rdata.data);
|
||||||
},'json');
|
},'json');
|
||||||
|
|
||||||
clearLog(selected);
|
clearLog(selected);
|
||||||
|
errorLog(selected,file_line);
|
||||||
///
|
///
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"checks": "server/swap",
|
"checks": "server/swap",
|
||||||
"path": "server/swap",
|
"path": "server/swap",
|
||||||
"display": 1,
|
"display": 1,
|
||||||
"author": "midoks",
|
"author": "swap",
|
||||||
"date": "2021-01-29",
|
"date": "2021-01-29",
|
||||||
"home": "swap",
|
"home": "swap",
|
||||||
"type": 0,
|
"type": 0,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"shell":"install.sh",
|
"shell":"install.sh",
|
||||||
"checks":"server/webssh",
|
"checks":"server/webssh",
|
||||||
"path": "server/webssh",
|
"path": "server/webssh",
|
||||||
"author":"midoks",
|
"author":"ssh",
|
||||||
"home":"",
|
"home":"",
|
||||||
"date":"2018-12-20",
|
"date":"2018-12-20",
|
||||||
"pid":"4"
|
"pid":"4"
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ def createBgTask():
|
|||||||
import crontab_api
|
import crontab_api
|
||||||
api = crontab_api.crontab_api()
|
api = crontab_api.crontab_api()
|
||||||
|
|
||||||
cmd = "cd " + mw.getServerDir() + "/mdserver-web && nice -n 10 python3 " + \
|
cmd = "cd " + mw.getRunDir() + " && nice -n 10 python3 " + \
|
||||||
getPluginDir() + "/tool_task.py execute"
|
getPluginDir() + "/tool_task.py execute"
|
||||||
params = {
|
params = {
|
||||||
'name': name,
|
'name': name,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user