Compare commits

...
70 Commits
Author SHA1 Message Date
dami 47b4036f09 Update install.sh 2026-05-21 10:32:07 +08:00
Mr Chen ee9e154fec Merge pull request #897 from midoks/dev
openresty 1.29.2.4
2026-05-21 10:26:24 +08:00
dami 85256b4fb6 Update install.sh 2026-05-21 10:24:37 +08:00
Mr Chen 16be671f1d Merge pull request #896 from midoks/dev
常规更新
2026-05-20 16:08:41 +08:00
dami af880115ab update 2026-05-17 18:06:54 +08:00
dami e64ac8f616 Update info.json 2026-05-17 18:01:47 +08:00
dami a7d4206b77 update 2026-05-17 17:58:29 +08:00
dami 5a80690404 update 2026-05-17 17:55:47 +08:00
dami 9b0d71d4ac Update phplib.conf 2026-05-17 17:54:01 +08:00
dami 729f77d8db Update opcache.sh 2026-05-17 17:53:53 +08:00
dami e89f96aa2d Update phplib.conf 2026-05-17 17:50:16 +08:00
Mr Chen f05f81cace Merge pull request #893 from midoks/dev
常规优化
2026-05-09 20:20:59 +08:00
dami f4883ee708 Update webstats_index.py 2026-05-09 20:18:45 +08:00
dami 043fb739d9 Update index.py 2026-05-09 20:04:41 +08:00
dami b19aa8702b Update index.py 2026-05-09 20:01:39 +08:00
dami f4e0744879 update 2026-05-09 19:59:09 +08:00
Mr Chen d7c822f86d Merge pull request #892 from midoks/dev
常规更新
2026-05-09 14:31:10 +08:00
dami c8f8e217e5 update 2026-05-09 14:26:41 +08:00
Mr Chen bfec7f1fe8 Merge pull request #891 from midoks/dev
常规更新
2026-05-07 19:07:02 +08:00
dami 21fce1f618 Update index.py 2026-05-07 19:05:07 +08:00
dami b5987b57ad Update task.py 2026-05-07 18:48:04 +08:00
dami e8c1cb08a7 update 2026-05-07 18:47:45 +08:00
dami 0de3a16898 Update index.py 2026-05-07 18:42:07 +08:00
dami 278bd7f38e Update debian.sh 2026-05-07 17:50:16 +08:00
dami 4a3b9db324 Update debian.sh 2026-05-07 17:47:48 +08:00
dami b3e8e96875 Update index.py 2026-05-07 17:06:56 +08:00
dami f5e50c6d76 Update index.py 2026-05-07 16:59:27 +08:00
dami c551c2ee1a Update index.py 2026-05-07 16:55:58 +08:00
dami 3fb8406e7b Update index.py 2026-05-07 16:53:30 +08:00
dami 50d12407c9 Update install.sh 2026-05-07 16:48:13 +08:00
dami 17931bb0ea Update install.sh 2026-05-07 16:48:03 +08:00
dami 6d30940920 Update index.py 2026-05-07 16:46:31 +08:00
dami 3a4c985baf Update index.py 2026-05-07 16:45:59 +08:00
Mr Chen 960d8b6cb8 Merge pull request #890 from midoks/dev
mongodb 兼容低版本
2026-05-07 16:34:36 +08:00
dami 9b7e9d4ffa update 2026-05-07 16:29:03 +08:00
dami c1a646c0d7 Merge branch 'master' into dev 2026-05-07 16:25:26 +08:00
dami 48ef0e7a65 Update index.py 2026-05-07 16:22:03 +08:00
dami 8dff306a91 Update index.py 2026-05-07 16:20:03 +08:00
dami a935acbc95 update 2026-05-07 16:12:16 +08:00
dami b1f9c99eb1 Update mw.tpl 2026-05-07 16:04:53 +08:00
dami 0851f749c3 Update mw.tpl 2026-05-07 15:57:20 +08:00
dami 3a7d9f84c7 Update install.sh 2026-05-07 15:22:12 +08:00
dami b43b35ccab Update install.sh 2026-05-07 15:21:29 +08:00
dami 5fc6eacc53 update 2026-05-07 15:11:09 +08:00
dami bd782362e8 update 2026-05-07 15:06:37 +08:00
dami 32151a176f update 2026-05-07 15:04:27 +08:00
dami f7c88d2086 update 2026-05-07 14:01:26 +08:00
dami 1eb76f2b90 update 2026-05-07 13:56:40 +08:00
dami 226b3e049d Merge branch 'master' into dev 2026-05-07 12:58:58 +08:00
Mr Chen 7f0e9851cd Merge pull request #889 from midoks/dev
常规优化
2026-05-07 12:58:41 +08:00
dami 15df77940e Update index.py 2026-05-07 12:09:57 +08:00
dami 9781516552 Update plugin.py 2026-05-07 12:05:18 +08:00
dami a23264a542 update 2026-05-07 12:03:23 +08:00
dami 0e7845985a Update install.sh 2026-05-07 11:51:06 +08:00
dami 93efe45347 Update install.sh 2026-05-07 11:40:52 +08:00
dami a46f824e1e Update install.sh 2026-05-07 11:40:09 +08:00
Mr Chen 0de9f036bc Merge pull request #888 from midoks/dev
常规优化
2026-05-01 19:19:07 +08:00
dami 275f2515d6 优化 2026-05-01 19:17:05 +08:00
dami b4604928ec Update panel_task.py 2026-05-01 18:53:42 +08:00
dami 5a79b4021a update 2026-04-23 23:09:01 +08:00
dami 280fd38039 Create r3.9.txt 2026-04-23 15:29:05 +08:00
Mr Chen b032364616 Merge pull request #887 from midoks/dev
常规更新
2026-04-23 00:24:22 +08:00
dami a430aaee97 Update index.py 2026-04-23 00:19:46 +08:00
dami f4ee2ca3b9 Update install.sh 2026-04-23 00:12:59 +08:00
dami 92b9212b31 update 2026-04-23 00:12:57 +08:00
dami 73656e60ff Update nginx.conf 2026-04-22 23:02:44 +08:00
dami 401329d80c update 2026-04-22 22:32:25 +08:00
Mr Chen 6131970724 Merge pull request #886 from midoks/dev
常规优化
2026-04-21 20:51:12 +08:00
dami 85dcc4b78a update 2026-04-21 20:27:46 +08:00
dami 34a1bf7e28 Update mw.tpl 2026-04-15 20:33:51 +08:00
93 changed files with 1035 additions and 1340 deletions
+1 -1
View File
@@ -183,7 +183,7 @@ def check502():
verlist = [
'52', '53', '54', '55', '56', '70',
'71', '72', '73', '74', '80', '81',
'82', '83', '84'
'82', '83', '84', '85'
]
for ver in verlist:
server_dir = mw.getServerDir()
+1 -1
View File
@@ -122,7 +122,7 @@ def openPort():
return True
def status():
cmd = "ps aux|grep alist |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep alist |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -174,7 +174,7 @@ def initDreplace():
def status():
cmd = "ps -ef|grep 'httpd/bin/httpd' |grep -v grep | grep -v python | awk '{print $2}'"
cmd = "ps -ef|grep 'httpd' |grep -v grep | grep -v python | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1
View File
@@ -165,6 +165,7 @@ def initConf():
"/www/server/alist/data/log",
"/www/server/dztasks/logs",
"/www/server/rsyncd/lsyncd.log",
"/www/server/mdserver-web/logs",
]
for i in clogcom:
if os.path.exists(i):
+1 -1
View File
@@ -99,7 +99,7 @@ def readConfigTpl():
def status():
data = mw.execShell(
"ps aux|grep cloudreve |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
"ps -ef|grep cloudreve |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -106,7 +106,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep dztasks|grep -v grep|grep -v python|grep -v mdserver-web|awk '{print $2}'"
cmd = "ps -ef|grep dztasks|grep -v grep|grep -v python|grep -v mdserver-web|awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -113,7 +113,7 @@ def status():
# if not os.path.exists(pid_file):
# return 'stop'
cmd = "ps aux|grep gorse |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep gorse |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
+1 -1
View File
@@ -84,7 +84,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep grafana |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep grafana |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -118,7 +118,7 @@ def configScriptsTpl():
def status():
data = mw.execShell(
"ps aux|grep keepalived |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
"ps -ef|grep keepalived |grep -v grep | grep -v python| awk '{print $2}'")
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -115,7 +115,7 @@ def status():
return 'stop'
# data = mw.execShell(
# "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# "ps -ef|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# if data[0] == '':
# return 'stop'
+1 -1
View File
@@ -91,7 +91,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep loki |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep loki |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -2
View File
@@ -585,8 +585,7 @@ def setMyDbPos():
mw.writeFile(myfile, mycnf)
start()
result = mw.execShell(
'ps aux|grep mysqld| grep -v grep|grep -v python')
result = mw.execShell('ps -ef|grep mysqld| grep -v grep|grep -v python')
if len(result[0]) > 10:
mw.writeFile('data/datadir.pl', t_datadir)
return mw.returnJson(True, '存储目录迁移成功!')
+1 -1
View File
@@ -96,7 +96,7 @@ def checkArgs(data, ck=[]):
def status():
cmd = "ps aux|grep " + getPluginName() + " |grep -v grep | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep " + getPluginName() + " |grep -v grep | grep -v mdserver-web | awk '{print $2}'"
# print(cmd)
data = mw.execShell(cmd)
# print(data)
+2 -2
View File
@@ -230,7 +230,7 @@ class classApi:
def close_sync(self, args):
# 取消迁移
mw.execShell("kill -9 {}".format(self.get_pid()))
mw.execShell("kill -9 $(ps aux|grep index.py|grep -v grep|awk '{print $2}')")
mw.execShell("kill -9 $(ps -ef|grep index.py|grep -v grep|awk '{print $2}')")
# 删除迁移配置
time.sleep(1)
if os.path.exists(self._INFO_FILE):
@@ -1032,7 +1032,7 @@ def stepThree():
def getPid():
cmd = "ps aux|grep 'plugins/migration_api/index.py bg_process' |grep -v grep|awk '{print $2}'|xargs"
cmd = "ps -ef|grep 'plugins/migration_api/index.py bg_process' |grep -v grep|awk '{print $2}'|xargs"
result = mw.execShell(cmd)[0].strip()
if not result:
return None
+44 -12
View File
@@ -196,25 +196,55 @@ def mongdbClientS():
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
if auth == 'disabled':
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True)
client = pymongo.MongoClient(host=ip, port=int(port))
else:
# print(auth,mg_root)
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True, username='root',password=mg_root)
# 使用 admin 数据库进行认证,兼容 MongoDB 3.0
client = pymongo.MongoClient(host=ip, port=int(port), username='root', password=mg_root, authSource='admin')
return client
def getMongoDBVersion():
'''获取MongoDB版本号'''
import pymongo
port = getConfPort()
ip = getConfLocalIp()
try:
# 先不使用认证连接
client = pymongo.MongoClient(host=ip, port=int(port), serverSelectionTimeoutMS=5000)
db = client.admin
serverStatus = db.command('serverStatus')
version = serverStatus.get('version', '4.0')
client.close()
return version
except Exception as e:
# 如果无法获取版本,默认返回 4.0(新版本兼容模式)
return '4.0'
def isMongoDB3x():
'''判断是否为MongoDB 3.x版本'''
version = getMongoDBVersion()
# 匹配 3.x 版本
if version.startswith('3.'):
return True
return False
def mongdbClient():
import pymongo
port = getConfPort()
auth = getConfAuth()
ip = getConfLocalIp()
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
# print(ip,port,auth,mg_root)
if auth == 'disabled':
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True)
client = pymongo.MongoClient(host=ip, port=int(port))
else:
# uri = "mongodb://root:"+mg_root+"@127.0.0.1:"+str(port)
# client = pymongo.MongoClient(uri)
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True, username='root',password=mg_root)
# 根据MongoDB版本选择认证方式
if isMongoDB3x():
# MongoDB 3.x 使用 authSource 指定认证数据库
client = pymongo.MongoClient(host=ip, port=int(port), username='root', password=mg_root, authSource='admin')
else:
# MongoDB 4.x+ 默认在 admin 数据库认证
client = pymongo.MongoClient(host=ip, port=int(port), username='root', password=mg_root)
return client
@@ -711,7 +741,6 @@ def setRootPwd(version=''):
def setUserPwd(version=''):
client = mongdbClient()
db = client.admin
sqlite_db = pSqliteDb('databases')
args = getArgs()
@@ -724,6 +753,8 @@ def setUserPwd(version=''):
uid = args['id']
try:
name = sqlite_db.where('id=?', (uid,)).getField('name')
# 将用户创建在目标数据库中,而不是 admin 数据库
db = client[name]
user_roles = [{'role': 'dbOwner', 'db': name}, {'role': 'userAdmin', 'db': name}]
try:
@@ -824,16 +855,16 @@ def getDbInfo():
def toDbBase(find):
client = mongdbClient()
db_admin = client.admin
data_name = find['name']
db = client[data_name]
db.zchat.insert_one({})
user_roles = [{'role': 'dbOwner', 'db': data_name}, {'role': 'userAdmin', 'db': data_name}]
# 将用户创建在目标数据库中,而不是 admin 数据库
try:
db_admin.command("createUser", find['username'], pwd=find['password'], roles=user_roles)
db.command("createUser", find['username'], pwd=find['password'], roles=user_roles)
except Exception as e:
db_admin.command("updateUser", find['username'], pwd=find['password'], roles=user_roles)
db.command("updateUser", find['username'], pwd=find['password'], roles=user_roles)
return 1
def syncToDatabases():
@@ -990,7 +1021,8 @@ def setDbAccess():
user_roles.append(t)
client = mongdbClient()
db = client.admin
# 在目标数据库中操作用户,而不是 admin 数据库
db = client[name]
try:
db.command("updateUser", username, pwd=mg_pass, roles=user_roles)
+1 -1
View File
@@ -7,7 +7,7 @@
"shell": "install.sh",
"install_pre_inspection":true,
"uninstall_pre_inspection":true,
"versions":["4.4","5.0","6.0","7.0","8.0","8.2"],
"versions":["3.0","4.4","5.0","6.0","7.0","8.0","8.2"],
"tip": "soft",
"checks": "server/mongodb",
"path": "server/mongodb",
+18
View File
@@ -6,9 +6,20 @@ export PATH
# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 7.0
# cd /www/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 7.0
# cd /www/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 3.0
# cd /www/server/mdserver-web && python3 /www/server/mdserver-web/plugins/mongodb/index.py start
# db.createUser({
# user: "demo",
# pwd: "123123",
# roles: [{role: "dbOwner", db: "demo"}]
# })
# db.auth("demo", "123123");
# import
# /www/server/mongodb/bin/mongorestore -h localhost -d demo --dir /tmp/*.json
curPath=`pwd`
rootPath=$(dirname "$curPath")
@@ -78,6 +89,13 @@ Install_app()
cd ${rootPath} && python3 ${rootPath}/plugins/mongodb/index.py start
cd ${rootPath} && python3 ${rootPath}/plugins/mongodb/index.py initd_install
fi
if [ "${VERSION}" == "3.0" ];then
# 降低版本
pip install pymongo==3.12.0
else
pip install pymongo
fi
}
Uninstall_app()
+3 -2
View File
@@ -122,11 +122,12 @@ def mongdbClient():
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
# print(ip,port,auth,mg_root)
if auth == 'disabled':
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True)
client = pymongo.MongoClient(host=ip, port=int(port))
else:
# uri = "mongodb://root:"+mg_root+"@127.0.0.1:"+str(port)
# client = pymongo.MongoClient(uri)
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True, username='root',password=mg_root)
# 使用 admin 数据库进行认证,兼容 MongoDB 3.0
client = pymongo.MongoClient(host=ip, port=int(port), username='root', password=mg_root, authSource='admin')
return client
class backupTools:
+68
View File
@@ -0,0 +1,68 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
VERSION=3.0.15
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
SYS_NAME=${SYS_VERSION_ID/./}
SYS_NAME_LEN=`echo "$SYS_NAME" | wc -L`
if [ "$SYS_NAME_LEN" == "1" ];then
SYS_NAME=${SYS_NAME}0
fi
if [ "$SYS_ARCH" == "aarch64" ];then
if [ "$SYS_NAME" -gt "82" ];then
SYS_NAME="82"
fi
if [ "$SYS_NAME" -lt "62" ];then
SYS_NAME="62"
fi
else
if [ "$SYS_NAME" -gt "80" ];then
SYS_NAME="80"
fi
if [ "$SYS_NAME" -lt "70" ];then
SYS_NAME="70"
fi
fi
# https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-rhel82-4.4.23.tgz
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.23.tgz
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.23.tgz
# https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-rhel82-4.4.23.tgz
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.23.tgz
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
FILE_NAME=mongodb-linux-${SYS_ARCH}-${VERSION}
FILE_NAME_TGZ=${FILE_NAME}.tgz
if [ ! -f $MG_DIR/${FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${FILE_NAME} ];then
cd $MG_DIR && tar -zxvf ${FILE_NAME_TGZ}
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.15.tgz
VERSION=3.0.15
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
SYS_NAME=${SYS_VERSION_ID/./}
if [ "$SYS_NAME" -gt "10" ];then
SYS_NAME="10"
fi
if [ "$SYS_NAME" -lt "10" ];then
SYS_NAME="10"
fi
# FILE_NAME=mongodb-linux-${SYS_ARCH}-debian${SYS_NAME}-${VERSION}
FILE_NAME=mongodb-linux-${SYS_ARCH}-${VERSION}
FILE_NAME_TGZ=${FILE_NAME}.tgz
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
if [ ! -f $MG_DIR/${FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${FILE_NAME_TGZ}
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
# https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.0.15.tgz
VERSION=3.0.15
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
if [ ! -f $MG_DIR/mongodb-macos-x86_64-${VERSION}.tgz ]; then
wget --no-check-certificate -O $MG_DIR/mongodb-macos-x86_64-${VERSION}.tgz https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${VERSION}.tgz
echo "wget --no-check-certificate -O $MG_DIR/mongodb-macos-x86_64-${VERSION}.tgz https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-${VERSION}.tgz"
fi
if [ ! -d $MG_DIR/mongodb-macos-x86_64-${VERSION} ];then
cd $MG_DIR && tar -zxvf mongodb-macos-x86_64-${VERSION}.tgz
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/mongodb-macos-x86_64-${VERSION} && cp -rf ./bin $serverPath/mongodb
fi
+48
View File
@@ -0,0 +1,48 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
VERSION=3.0.15
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}' | awk -F . '{print $1}'`
SYS_NAME="15"
if [ "$SYS_VERSION_ID" -gt "15" ];then
SYS_NAME="15"
fi
if [ "$SYS_NAME" -lt "12" ];then
SYS_NAME="12"
fi
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-suse15-4.4.23.tgz
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-suse12-4.4.23.tgz
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
FILE_NAME=mongodb-linux-${SYS_ARCH}-${VERSION}
FILE_NAME_TGZ=${FILE_NAME}.tgz
if [ ! -f $MG_DIR/${FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${FILE_NAME} ];then
cd $MG_DIR && tar -zxvf ${FILE_NAME_TGZ}
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
VERSION=3.0.15
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
SYS_NAME=${SYS_VERSION_ID/./}
SYS_NAME_LEN=`echo "$SYS_NAME" | wc -L`
if [ "$SYS_NAME_LEN" == "1" ];then
SYS_NAME=${SYS_NAME}0
fi
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.23.tgz
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
FILE_NAME=mongodb-linux-${SYS_ARCH}-${VERSION}
FILE_NAME_TGZ=${FILE_NAME}.tgz
if [ ! -f $MG_DIR/${FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${FILE_NAME} ];then
cd $MG_DIR && tar -zxvf ${FILE_NAME_TGZ}
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
VERSION=3.0.15
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
SYS_NAME=${SYS_VERSION_ID/./}
# https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-4.4.23.tgz
if [ "$SYS_NAME" -gt "2004" ];then
SYS_NAME="2004"
fi
if [ "$SYS_NAME" -lt "1604" ];then
SYS_NAME="1604"
fi
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
FILE_NAME=mongodb-linux-${SYS_ARCH}-${VERSION}
FILE_NAME_TGZ=${FILE_NAME}.tgz
if [ ! -f $MG_DIR/${FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${FILE_NAME_TGZ} https://fastdl.mongodb.org/linux/${FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${FILE_NAME} ];then
cd $MG_DIR && tar -zxvf ${FILE_NAME_TGZ}
fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
+3 -2
View File
@@ -65,7 +65,7 @@ cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_VERSION=100.16.1
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
@@ -75,7 +75,8 @@ if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian10-x86_64-100.16.1.tgz
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
+1 -1
View File
@@ -78,7 +78,7 @@ def getArgs():
def status():
data = mw.execShell(
"ps aux|grep mosquitto |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
"ps -ef|grep mosquitto |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -57,7 +57,7 @@ app_start(){
app_stop(){
echo -e "stopping mosquitto ... \c";
arr=`ps aux | grep 'mosquitto' | grep -v grep | awk '{print $2}'`
arr=`ps -ef | grep 'mosquitto' | grep -v grep | awk '{print $2}'`
for p in ${arr[@]}
do
kill -9 $p > /dev/null 2>&1
+1 -1
View File
@@ -662,7 +662,7 @@ def setMyDbPos(version=''):
mw.writeFile(myfile, mycnf)
restart(version)
result = mw.execShell('ps aux|grep mysqld| grep -v grep|grep -v python')
result = mw.execShell('ps -ef|grep mysqld| grep -v grep|grep -v python')
if len(result[0]) > 10:
mw.writeFile('data/datadir.pl', t_datadir)
return mw.returnJson(True, '存储目录迁移成功!')
+116
View File
@@ -0,0 +1,116 @@
[client]
user = root
#password = your_password
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
default-character-set = UTF8MB4
[mysqld]
!include {$SERVER_APP_PATH}/etc/mode/classic.cnf
authentication_policy=caching_sha2_password
pid-file = {$SERVER_APP_PATH}/data/mysql.pid
user = mysql
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
basedir = {$SERVER_APP_PATH}
datadir = {$SERVER_APP_PATH}/data
log-error = {$SERVER_APP_PATH}/data/error.log
server-id = {$SERVER_ID}
#sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_storage_engine = InnoDB
key_buffer_size = 8M
table_open_cache = 32
sort_buffer_size = 256K
net_buffer_length = 4K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 4M
thread_cache_size = 4
lower_case_table_names=0
tmp_table_size = 8M
character-set-server = UTF8MB4
max_connections = 500
max_connect_errors = 100
open_files_limit = 2560
max_allowed_packet = 128M
skip_name_resolve=1
#skip-networking
#skip-external-locking
#loose-skip-innodb
#skip-grant-tables
#skip-log-bin
#disable-log-bin
#skip-slave-start
log-bin=mysql-bin
slow_query_log=1
slow-query-log-file={$SERVER_APP_PATH}/data/mysql-slow.log
long_query_time=10
#log_queries_not_using_indexes=1
#log_slow_admin_statements=1
#log_slow_replica_statements=1
binlog_expire_logs_seconds=604800
relay-log=mdserver
relay-log-index=mdserver
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2
#master
#sync_binlog=1
#binlog-do-db
binlog-ignore-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#slave
log_replica_updates = 1
# Prevent replication from starting automatically with MySQL
#skip_replica_start = 1
#replicate-do-db
replica_skip_errors=1062,1396
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = mysql
replicate-ignore-db = test
innodb_data_home_dir = {$SERVER_APP_PATH}/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = {$SERVER_APP_PATH}/data
innodb_buffer_pool_size = 16M
#innodb_log_file_size = 5M
innodb_redo_log_capacity = 4G
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1
innodb_file_per_table=1
secure-file-priv={$SERVER_APP_PATH}/tmp
[mysqldump]
quick
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
+1 -1
View File
@@ -802,7 +802,7 @@ def setMyDbPos(version):
mw.writeFile(myfile, mycnf)
start(version)
result = mw.execShell('ps aux|grep mysqld| grep -v grep|grep -v python')
result = mw.execShell('ps -ef|grep mysqld| grep -v grep|grep -v python')
if len(result[0]) > 10:
mw.writeFile('data/datadir.pl', t_datadir)
return mw.returnJson(True, '存储目录迁移成功!')
+2 -2
View File
@@ -11,8 +11,8 @@
"checks": "server/mysql/VERSION/bin/mysql",
"path": "server/mysql/VERSION",
"todo_versions":["5.6","5.7","8.0","8.2"],
"versions":["5.5", "5.6", "5.7","8.0","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4"],
"updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0","8.3.0","9.0.1","9.1.0","9.2.0","9.3.0","9.4.0"],
"versions":["5.5", "5.6", "5.7","8.0","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.7"],
"updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0","8.3.0","9.0.1","9.1.0","9.2.0","9.3.0","9.4.0","9.7.0"],
"shell":"install.sh",
"checks":"server/mysql",
"path":"server/mysql",
+230
View File
@@ -0,0 +1,230 @@
# -*- coding: utf-8 -*-
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
# https://dev.mysql.com/downloads/mysql/
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
sysName=`uname`
mysqlDir=${serverPath}/source/mysql
_os=`uname`
echo "use system: ${_os}"
if [ ${_os} == "Darwin" ]; then
OSNAME='macos'
elif grep -Eq "openSUSE" /etc/*-release; then
OSNAME='opensuse'
zypper refresh
elif grep -Eq "FreeBSD" /etc/*-release; then
OSNAME='freebsd'
pkg install -y wget unzip
elif grep -Eqi "Arch" /etc/issue || grep -Eq "Arch" /etc/*-release; then
OSNAME='arch'
echo y | pacman -Sy unzip
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
OSNAME='centos'
yum install -y wget zip unzip
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
OSNAME='fedora'
yum install -y wget zip unzip
elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then
OSNAME='rocky'
yum install -y wget zip unzip
elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then
OSNAME='alma'
yum install -y wget zip unzip
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
OSNAME='debian'
apt update -y
apt install -y devscripts
apt install -y wget zip unzip
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
OSNAME='ubuntu'
apt install -y wget zip unzip
else
OSNAME='unknow'
fi
VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
VERSION=9.7.0
# https://dev.mysql.com/get/Downloads/MySQL-9.4/mysql-${VERSION}.tar.gz
# https://cdn.mysql.com/archives/mysql-9.4/mysql-9.4.0.tar.gz
Install_mysql()
{
mkdir -p ${mysqlDir}
echo '正在安装脚本文件...'
# ----- cpu start ------
if [ -z "${cpuCore}" ]; then
cpuCore="1"
fi
if [ -f /proc/cpuinfo ];then
cpuCore=`cat /proc/cpuinfo | grep "processor" | wc -l`
fi
MEM_INFO=$(free -m|grep Mem|awk '{printf("%.f",($2)/1024)}')
if [ "${cpuCore}" != "1" ] && [ "${MEM_INFO}" != "0" ];then
if [ "${cpuCore}" -gt "${MEM_INFO}" ];then
cpuCore="${MEM_INFO}"
fi
else
cpuCore="1"
fi
if [ "$cpuCore" -gt "2" ];then
cpuCore=`echo "$cpuCore" | awk '{printf("%.f",($1)*0.8)}'`
else
cpuCore="1"
fi
# ----- cpu end ------
cd ${rootPath}/plugins/mysql/lib && /bin/bash rpcgen.sh
INSTALL_CMD=cmake
# check cmake version
CMAKE_VERSION=`cmake -version | grep version | awk '{print $3}' | awk -F '.' '{print $1}'`
if [ "$CMAKE_VERSION" -eq "2" ];then
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
INSTALL_CMD=cmake3
fi
if [ ! -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then
wget --no-check-certificate -O ${mysqlDir}/mysql-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-9.4/mysql-${VERSION}.tar.gz
fi
#检测文件是否损坏.
md5_mysql_ok=c770f276fb84019be6fbe0a57b32efbc
if [ -f ${mysqlDir}/mysql-${VERSION}.tar.gz ];then
md5_mysql=`md5sum ${mysqlDir}/mysql-${VERSION}.tar.gz | awk '{print $1}'`
if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then
echo "mysql9.4 file check ok"
else
# 重新下载
rm -rf ${mysqlDir}/mysql-${VERSION}
wget --no-check-certificate -O ${mysqlDir}/mysql-${VERSION}.tar.gz --tries=3 https://cdn.mysql.com/archives/mysql-9.4/mysql-${VERSION}.tar.gz
fi
fi
if [ ! -d ${mysqlDir}/mysql-${VERSION} ];then
cd ${mysqlDir} && tar -zxvf ${mysqlDir}/mysql-${VERSION}.tar.gz
fi
OPTIONS=''
##check openssl version
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
if [ "${OPENSSL_VERSION}" -ge "3" ];then
#openssl version to high
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
fi
WHERE_DIR_GCC=/usr/bin/gcc
WHERE_DIR_GPP=/usr/bin/g++
if [ "$OSNAME" == "centos" ] && [ "$VERSION_ID" == "7" ];then
yum install -y libudev-devel
yum install -y centos-release-scl
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
gcc --version
WHERE_DIR_GCC=/opt/rh/devtoolset-11/root/usr/bin/gcc
WHERE_DIR_GPP=/opt/rh/devtoolset-11/root/usr/bin/g++
echo $WHERE_DIR_GCC
echo $WHERE_DIR_GPP
fi
if [ "$OSNAME" == "ubuntu" ];then
apt install -y libudev-dev
apt install -y libtirpc-dev
apt install -y libssl-dev
apt install -y libgssglue-dev
apt install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
LIBTIRPC_VER=`pkg-config libtirpc --modversion`
if [ ! -f ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 ];then
wget --no-check-certificate -O ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.3.tar.bz2
cd ${mysqlDir} && tar -jxvf libtirpc_1.3.3.orig.tar.bz2
cd libtirpc-1.3.3 && ./configure
fi
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
apt install -y gcc-11 g++-11
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
OPTIONS="${OPTIONS} -DFORCE_INSOURCE_BUILD=1"
OPTIONS="${OPTIONS} -D_FORTIFY_SOURCE=2"
fi
if [ "$OSNAME" == "opensuse" ];then
zypper install -y gcc11
zypper install -y gcc11-c++
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
fi
if [ ! -d $serverPath/mysql ];then
# -DCMAKE_CXX_STANDARD=17 \
cd ${mysqlDir}/mysql-${VERSION} && ${INSTALL_CMD} \
-DCMAKE_INSTALL_PREFIX=$serverPath/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/var/tmp/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DDOWNLOAD_BOOST=1 \
-DFORCE_INSOURCE_BUILD=1 \
$OPTIONS \
-DCMAKE_C_COMPILER=$WHERE_DIR_GCC \
-DCMAKE_CXX_COMPILER=$WHERE_DIR_GPP \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=${mysqlDir}/mysql-${VERSION}/boost/
make -j${cpuCore} && make install && make clean
if [ -d $serverPath/mysql ];then
rm -rf ${mysqlDir}/mysql-${VERSION}
echo '9.4' > $serverPath/mysql/version.pl
echo "${VERSION}安装完成"
else
# rm -rf ${mysqlDir}/mysql-${VERSION}
echo "${VERSION}安装失败"
exit 1
fi
fi
}
Uninstall_mysql()
{
rm -rf $serverPath/mysql
echo '卸载完成'
}
action=$1
if [ "${1}" == "install" ];then
Install_mysql
else
Uninstall_mysql
fi
+13 -13
View File
@@ -37,8 +37,8 @@ http
client_max_body_size 20m;
# video big file opt
aio threads;
directio 4m;
#aio threads;
#directio 4m;
output_buffers 16 512k;
sendfile on;
tcp_nopush on;
@@ -55,18 +55,18 @@ http
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
zstd off;
zstd_comp_level 6;
zstd_min_length 256;
zstd_types text/plain text/css text/xml text/javascript text/cache-manifest text/x-component text/vtt application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml application/manifest+json application/x-web-app-manifest+json application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/wasm font/opentype image/svg+xml image/bmp;
#zstd off;
#zstd_comp_level 6;
#zstd_min_length 256;
#zstd_types text/plain text/css text/xml text/javascript text/cache-manifest text/x-component text/vtt application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml application/manifest+json application/x-web-app-manifest+json application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/wasm font/opentype image/svg+xml image/bmp;
brotli off;
brotli_min_length 256;
brotli_buffers 32 8k;
brotli_comp_level 4;
brotli_window 16m;
brotli_static on;
brotli_types text/plain text/css text/xml text/javascript text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml application/atom+xml application/vnd.ms-fontobject application/x-font-ttf application/x-font-opentype application/x-font-truetype font/tpl font/opentype font/otf font/ttf image/svg+xml image/x-icon image/vnd.microsoft.icon application/wasm application/manifest+json;
#brotli off;
#brotli_min_length 256;
#brotli_buffers 32 8k;
#brotli_comp_level 4;
#brotli_window 16m;
#brotli_static on;
#brotli_types text/plain text/css text/xml text/javascript text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml application/atom+xml application/vnd.ms-fontobject application/x-font-ttf application/x-font-opentype application/x-font-truetype font/tpl font/opentype font/otf font/ttf image/svg+xml image/x-icon image/vnd.microsoft.icon application/wasm application/manifest+json;
gzip on;
gzip_min_length 1k;
+25
View File
@@ -577,6 +577,31 @@ def setCfg():
if not re.search(r"\d+", v):
return mw.returnJson(False, '参数值错误,请输入数字整数')
if k == "brotli":
if v == "on":
# 批量替换所有以 #brotli 等开头的指令为 brotli
rep_var = r"#+brotli[\w_]*\s+[^\;\n]+"
newconf = lambda m: m.group(0).lstrip('#')
content = re.sub(rep_var, newconf, content)
if v == "off":
# 批量替换所有以 brotli 开头且没有 # 前缀的指令为 #brotli
rep_var = r"(?<!#)brotli[\w_]*\s+[^\;\n]+"
newconf = lambda m: '#' + m.group(0)
content = re.sub(rep_var, newconf, content)
if k == "zstd":
if v == "on":
# 批量替换所有以 #zstd 开头的指令为 zstd
rep_var = r"#+zstd[\w_]*\s+[^\;\n]+"
newconf = lambda m: m.group(0).lstrip('#')
content = re.sub(rep_var, newconf, content)
if v == "off":
# 批量替换所有以 zstd 开头且没有 # 前缀的指令为 #zstd
rep_var = r"(?<!#)zstd[\w_]*\s+[^\;\n]+"
newconf = lambda m: '#' + m.group(0)
content = re.sub(rep_var, newconf, content)
if k == "worker_processes" :
k_wca = "worker_cpu_affinity"
rep_wca = r"%s\s+[^\;\n]+" % k_wca
+3 -1
View File
@@ -2,7 +2,7 @@
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/openresty && bash install.sh install 1.21.4
# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/openresty && bash install.sh upgrade 1.29.2
# cd /www/server/mdserver-web/plugins/openresty && bash install.sh install 1.21.4
# cd /www/server/mdserver-web/plugins/openresty && bash install.sh install 1.29.2
# cd /www/server/mdserver-web/plugins/openresty && bash install.sh upgrade 1.29.2
@@ -14,6 +14,8 @@ export PATH
# apt install ncat -y
# nc -u -v www.xx.com 443
# /www/server/openresty/bin/openresty -v
# cd /www/server/mdserver-web && python3 plugins/openresty/index.py run_info
curPath=`pwd`
+10 -2
View File
@@ -133,14 +133,22 @@ Install_openresty()
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
+10 -2
View File
@@ -134,14 +134,22 @@ Install_openresty()
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
+10 -2
View File
@@ -133,14 +133,22 @@ Install_openresty()
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
+10 -2
View File
@@ -149,14 +149,22 @@ Install_openresty()
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
+15 -6
View File
@@ -132,22 +132,31 @@ Install_openresty()
fi
# br
if [ ! -d ${openrestyDir}/openresty-${VERSION}/ngx_brotli ];then
cd ${openrestyDir}/openresty-${VERSION} && git clone https://github.com/wxx9248/ngx_brotli.git
cd ${openrestyDir}/openresty-${VERSION}/ngx_brotli && git submodule update --init
if [ ! -d ${openrestyDir}/ngx_brotli ];then
cd ${openrestyDir} && git clone https://github.com/wxx9248/ngx_brotli.git
cd ${openrestyDir}/ngx_brotli && git submodule update --init
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/openresty-${VERSION}/ngx_brotli"
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/ngx_brotli"
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
+14 -6
View File
@@ -14,7 +14,7 @@ sysName=`uname`
action=$1
type=$2
VERSION=1.29.2.3
VERSION=1.29.2.4
openrestyDir=${serverPath}/source/openresty
@@ -140,15 +140,23 @@ Install_openresty()
fi
OPTIONS="${OPTIONS} --with-threads"
OPTIONS="${OPTIONS} --with-file-aio"
OPTIONS="${OPTIONS} --with-pcre-jit"
OPTIONS="${OPTIONS} --with-http_gzip_static_module"
if [ "$sysName" != "Darwin" ];then
OPTIONS="${OPTIONS} --with-file-aio"
fi
#zstd
if [ ! -d ${openrestyDir}/zstd-nginx-module ];then
if [ ! -d ${openrestyDir}/zstd-nginx-module-master ];then
cd ${openrestyDir} && wget -O $openrestyDir/zstd-nginx-module.tar.gz https://github.com/tokers/zstd-nginx-module/archive/refs/heads/master.tar.gz
cd ${openrestyDir} && tar -zxvf zstd-nginx-module.tar.gz
if [ "$sysName" == "Darwin" ];then
export ZSTD_INC=/opt/homebrew/include
export ZSTD_LIB=/opt/homebrew/lib
fi
pkg-config --exists --print-errors libzstd
if [ "$?" == "0" ];then
OPTIONS="${OPTIONS} --add-module=${openrestyDir}/zstd-nginx-module-master"
@@ -195,9 +203,9 @@ Install_openresty()
rm -rf $openrestyDir/openresty-${VERSION}
fi
if [ -d $openrestyDir/zstd-nginx-module-master ];then
rm -rf $openrestyDir/zstd-nginx-module-master
fi
# if [ -d $openrestyDir/zstd-nginx-module-master ];then
# rm -rf $openrestyDir/zstd-nginx-module-master
# fi
# if [ -d $openrestyDir/ngx_brotli ];then
# rm -rf $openrestyDir/ngx_brotli
+1 -1
View File
@@ -19,7 +19,7 @@ expect {
expect eof
EOF
pids=$(ps aux | grep 'pgAdmin4:app' | grep -v grep | awk '{print $2}')
pids=$(ps -ef | grep 'pgAdmin4:app' | grep -v grep | awk '{print $2}')
arr=($pids)
for p in ${arr[@]}
do
+10 -5
View File
@@ -76,11 +76,16 @@ def getFpmFile(version):
def status(version):
# ps -ef|grep 'php/81' |grep -v grep | grep -v python | awk '{print $2}
cmd = "ps -ef|grep 'php/" + version + "' |grep -v grep | grep -v python | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
return 'start'
# cmd = "ps -ef|grep 'php/" + version + "' |grep -v grep | grep -v python | awk '{print $2}'"
# data = mw.execShell(cmd)
# if data[0] == '':
# return 'stop'
# return 'start'
pid_file = "/run/php/php{}-fpm.pid".format(version)
if os.path.exists(pid_file):
return 'start'
return 'stop'
def contentReplace(content, version):
+2 -2
View File
@@ -59,7 +59,7 @@ def getFpmConfFile(version):
def status_progress(version):
# ps -ef|grep 'php/81' |grep -v grep | grep -v python | awk '{print $2}
cmd = "ps aux|grep 'php/" + version + \
cmd = "ps -ef|grep 'php/" + version + \
"' |grep -v grep | grep -v python | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
@@ -80,7 +80,7 @@ def status(version):
sock文件判断是否启动
'''
sock = getPhpSocket(version)
if sock.find(':'):
if sock.find(':')>-1:
return status_progress(version)
if not os.path.exists(sock):
+2 -2
View File
@@ -88,7 +88,7 @@ def getFpmFile(version):
def status_progress(version):
# ps -ef|grep 'php/81' |grep -v grep | grep -v python | awk '{print $2}
cmd = "ps aux|grep 'php/" + version + \
cmd = "ps -ef|grep 'php/" + version + \
"' |grep -v grep | grep -v python | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
@@ -109,7 +109,7 @@ def status(version):
sock文件判断是否启动
'''
sock = getPhpSocket(version)
if sock.find(':'):
if sock.find(':')>-1:
return status_progress(version)
if not os.path.exists(sock):
+2 -2
View File
@@ -53,7 +53,7 @@ def getFpmConfFile(version):
def status_progress(version):
# ps -ef|grep 'php/81' |grep -v grep | grep -v python | awk '{print $2}
cmd = "ps aux|grep 'php/" + version + \
cmd = "ps -ef|grep 'php/" + version + \
"' |grep -v grep | grep -v python | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
@@ -74,7 +74,7 @@ def status(version):
sock文件判断是否启动
'''
sock = getPhpSocket(version)
if sock.find(':'):
if sock.find(':')>-1:
return status_progress(version)
if not os.path.exists(sock):
+2 -2
View File
@@ -9,9 +9,9 @@ serverPath=$(dirname "$rootPath")
sourcePath=${serverPath}/source
sysName=`uname`
version=8.3.30
version=8.3.31
PHP_VER=83
md5_file_ok=67f084d36852daab6809561a7c8023d130ca07fc6af8fb040684dd1414934d48
md5_file_ok=95eae411d594fe6f6e5678b76645dc13ae47d3c0a5325c1d969b58dea56ee45a
Install_php()
{
#------------------------ install start ------------------------------------#
+2 -2
View File
@@ -9,9 +9,9 @@ serverPath=$(dirname "$rootPath")
sourcePath=${serverPath}/source
sysName=`uname`
version=8.4.20
version=8.4.21
PHP_VER=84
md5_file_ok=e454c6f7c89a42f41ebb06dc5c3578e8c8b5f1a3f0da6675665affab04e221f7
md5_file_ok=7cf5d8ab12c3b2016875bcfaec71bef1ef0b07bed6148f2c447577074431f984
Install_php()
{
#------------------------ install start ------------------------------------#
+2 -2
View File
@@ -9,9 +9,9 @@ serverPath=$(dirname "$rootPath")
sourcePath=${serverPath}/source
sysName=`uname`
version=8.5.5
version=8.5.6
PHP_VER=85
md5_file_ok=95bec382f4bd00570a8ef52a58ec04d8d9b9a90494781f1c106d1b274a3902f2
md5_file_ok=826c600b7c6f956bd335558ca3bdbcab23b22126c1cc8d9348be2280a2204bb7
Install_php()
{
#------------------------ install start ------------------------------------#
+1 -1
View File
@@ -51,7 +51,7 @@ Install_lib()
echo "[opcache]" >> $serverPath/php/$version/etc/php.ini
if [ "$version" == "85" ];then
echo "no zend_extension"
echo "Force enable opcache in PHP 8.5+"
else
echo "zend_extension=${LIBNAME}.so" >> $serverPath/php/$version/etc/php.ini
fi
+1 -1
View File
@@ -38,7 +38,7 @@ pg_stop()
pg_status()
{
isStart=$(ps aux | grep 'postgres'| grep -v grep | grep -v 'postgresql status' | awk '{print $2}')
isStart=$(ps -ef | grep 'postgres'| grep -v grep | grep -v 'postgresql status' | awk '{print $2}')
if [ "$isStart" != '' ];then
echo -e "\033[32mPostgreSQL (pid $isStart) already running\033[0m"
else
+1 -1
View File
@@ -84,7 +84,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep prometheus |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep prometheus |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -114,7 +114,7 @@ def status():
return 'stop'
# data = mw.execShell(
# "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# "ps -ef|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# if data[0] == '':
# return 'stop'
+1 -1
View File
@@ -4,7 +4,7 @@
"name": "redis",
"title": "Redis",
"shell": "install.sh",
"versions":["4.0.14","5.0.14","6.0.20","6.2.21","7.0.15","7.2.13", "7.4.8", "8.0.6", "8.2.5", "8.4.2","8.6.1"],
"versions":["4.0.14","5.0.14","6.0.20","6.2.22","7.0.15","7.2.14", "7.4.9", "8.0.6", "8.2.6", "8.4.3","8.6.3"],
"tip": "soft",
"checks": "server/redis",
"path": "server/redis",
+1 -1
View File
@@ -127,7 +127,7 @@ def getPidFile():
def status():
data = mw.execShell(
"ps aux|grep simpleping |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
"ps -ef|grep simpleping |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
if data[0] == '':
return 'stop'
+9 -5
View File
@@ -74,11 +74,15 @@ def checkArgs(data, ck=[]):
def status():
data = mw.execShell(
"ps -ef|grep supervisor | grep -v grep | grep -v index.py | awk '{print $2}'")
if data[0] == '':
return 'stop'
return 'start'
# data = mw.execShell(
# "ps -ef|grep supervisor | grep -v grep | grep -v index.py | awk '{print $2}'")
# if data[0] == '':
# return 'stop'
pid_file = getServerDir() + "/run/supervisor.pid"
if os.path.exists(pid_file):
return "start"
return 'stop'
def initDreplace():
+4
View File
@@ -9,8 +9,12 @@ serverPath=$(dirname "$rootPath")
VERSION=$2
# cd /www/server/mdserver-web/plugins/supervisor && bash install.sh install 1.0
# /www/server/mdserver-web/bin/supervisord -n -c /etc/supervisor/supervisord.conf
# /www/server/mdserver-web/bin/supervisorctl -c /www/server/supervisor/supervisor.conf
# cmd | status
# systemctl status supervisor
# journalctl -u supervisor -f
bash ${rootPath}/scripts/getos.sh
OSNAME=`cat ${rootPath}/data/osname.pl`
+4 -4
View File
@@ -23,13 +23,13 @@ fi
sys_start()
{
isStart=$(ps aux |grep -E "(system_safe)"|grep -v grep|grep -v '/bin/bash'|grep -v 'system_safe/system_safe.py start' | grep -v 'system_safe/system_safe.py reload' | grep -v 'system_safe/system_safe.py restart' | grep -v systemctl | grep -v '/bin/sh' | awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(system_safe)"|grep -v grep|grep -v '/bin/bash'|grep -v 'system_safe/system_safe.py start' | grep -v 'system_safe/system_safe.py reload' | grep -v 'system_safe/system_safe.py restart' | grep -v systemctl | grep -v '/bin/sh' | awk '{print $2}'|xargs)
if [ "$isStart" == '' ];then
echo -e "Starting system_safe service... \c"
cd $rootPath/mdserver-web
nohup python3 plugins/system_safe/system_safe.py bg_start &> $mw_path/service.log &
sleep 0.5
isStart=$(ps aux |grep -E "(system_safe)"|grep -v grep|awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(system_safe)"|grep -v grep|awk '{print $2}'|xargs)
if [ "$isStart" == '' ];then
echo -e "\033[31mfailed\033[0m"
echo '------------------------------------------------------'
@@ -47,7 +47,7 @@ sys_start()
sys_stop()
{
echo -e "Stopping system_safe service... \c";
pids=$(ps aux |grep -E "(system_safe)"|grep -v grep|grep -v '/bin/bash'|grep -v systemctl | grep -v 'system_safe/system_safe.py bg_stop'|grep -v 'system_safe/system_safe.py stop' | grep -v 'system_safe/system_safe.py reload' | grep -v 'system_safe/system_safe.py restart' |awk '{print $2}'|xargs)
pids=$(ps -ef |grep -E "(system_safe)"|grep -v grep|grep -v '/bin/bash'|grep -v systemctl | grep -v 'system_safe/system_safe.py bg_stop'|grep -v 'system_safe/system_safe.py stop' | grep -v 'system_safe/system_safe.py reload' | grep -v 'system_safe/system_safe.py restart' |awk '{print $2}'|xargs)
arr=($pids)
for p in ${arr[@]}
do
@@ -60,7 +60,7 @@ sys_stop()
sys_status()
{
isStart=$(ps aux |grep -E "(system_safe)"|grep -v grep|grep -v systemctl|awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(system_safe)"|grep -v grep|grep -v systemctl|awk '{print $2}'|xargs)
if [ "$isStart" != '' ];then
echo -e "\033[32msystem_safe service (pid $isStart) already running\033[0m"
else
@@ -24,13 +24,13 @@ fi
# cd /www/server/mdserver-web && python3 plugins/tamper_proof_py/tamper_proof_service.py start
sys_start()
{
isStart=$(ps aux |grep -E "(tamper_proof_service)"|grep -v grep |grep -v 'tamper_proof_py/tamper_proof_service.py start' | grep -v 'tamper_proof_py/tamper_proof_service.py reload' | grep -v 'tamper_proof_py/tamper_proof_service.py restart' | grep -v systemctl | grep -v '/bin/sh' | grep -v '/bin/bash' | awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(tamper_proof_service)"|grep -v grep |grep -v 'tamper_proof_py/tamper_proof_service.py start' | grep -v 'tamper_proof_py/tamper_proof_service.py reload' | grep -v 'tamper_proof_py/tamper_proof_service.py restart' | grep -v systemctl | grep -v '/bin/sh' | grep -v '/bin/bash' | awk '{print $2}'|xargs)
if [ "$isStart" == '' ];then
echo -e "Starting tamper_proof_service... \c"
cd $rootPath/mdserver-web
nohup python3 plugins/tamper_proof_py/tamper_proof_service.py start &> $mw_path/service.log &
sleep 0.5
isStart=$(ps aux |grep -E "(tamper_proof_service)"|grep -v grep|awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(tamper_proof_service)"|grep -v grep|awk '{print $2}'|xargs)
if [ "$isStart" == '' ];then
echo -e "\033[31mfailed\033[0m"
echo '------------------------------------------------------'
@@ -48,7 +48,7 @@ sys_start()
sys_stop()
{
echo -e "Stopping tamper_proof_service... \c";
pids=$(ps aux |grep -E "(tamper_proof_service)"|grep -v grep|grep -v '/bin/bash'|grep -v systemctl | grep -v 'tamper_proof_py/tamper_proof_service.py stop' | grep -v 'tamper_proof_py/tamper_proof_service.py reload' | grep -v 'tamper_proof_py/tamper_proof_service.py restart' |awk '{print $2}'|xargs)
pids=$(ps -ef |grep -E "(tamper_proof_service)"|grep -v grep|grep -v '/bin/bash'|grep -v systemctl | grep -v 'tamper_proof_py/tamper_proof_service.py stop' | grep -v 'tamper_proof_py/tamper_proof_service.py reload' | grep -v 'tamper_proof_py/tamper_proof_service.py restart' |awk '{print $2}'|xargs)
arr=($pids)
for p in ${arr[@]}
do
@@ -61,7 +61,7 @@ sys_stop()
sys_status()
{
isStart=$(ps aux |grep -E "(tamper_proof_service)"|grep -v grep|grep -v "init.d/tamper_proof_py"|grep -v systemctl|awk '{print $2}'|xargs)
isStart=$(ps -ef |grep -E "(tamper_proof_service)"|grep -v grep|grep -v "init.d/tamper_proof_py"|grep -v systemctl|awk '{print $2}'|xargs)
if [ "$isStart" != '' ];then
echo -e "\033[32mtamper_proof_service (pid $isStart) already running\033[0m"
else
+1 -1
View File
@@ -625,7 +625,7 @@ class mainClass(object):
if pid == self.panel_pid: return True
if not self.task_pid:
try:
self.task_pid = int(mw.execShell("ps aux | grep 'python3 task.py' |grep -v grep|head -n1|awk '{print $2}'")[0])
self.task_pid = int(mw.execShell("ps -ef | grep 'python3 task.py' |grep -v grep|head -n1|awk '{print $2}'")[0])
except:
self.task_pid = -1
if pid == self.task_pid: return True
+2 -2
View File
@@ -59,7 +59,7 @@ tg_start(){
tg_stop(){
echo -e "stopping tgbot ... \c";
arr=`ps aux|grep 'tgbot.py'|grep -v grep|awk '{print $2}'`
arr=`ps -ef|grep 'tgbot.py'|grep -v grep|awk '{print $2}'`
for p in ${arr[@]}
do
kill -9 $p > /dev/null 2>&1
@@ -68,7 +68,7 @@ tg_stop(){
echo -e "stopping tgpush ... \c";
arr=`ps aux|grep 'tgpush.py'|grep -v grep|awk '{print $2}'`
arr=`ps -ef|grep 'tgpush.py'|grep -v grep|awk '{print $2}'`
for p in ${arr[@]}
do
kill -9 $p > /dev/null 2>&1
-4
View File
@@ -57,10 +57,6 @@ def send_msg(bot, tag='ad', trigger_time=300):
types.InlineKeyboardButton(
text="18+资源采集", url='https://ckzy1.com')
],
[
types.InlineKeyboardButton(
text="代付-代实名-备案域名-国际云服务器", url='https://t.me/gjgzs2022')
],
[
types.InlineKeyboardButton(
text="实名认证/过人脸🕵️‍♀️各种账号处理✅", url='https://t.me/niuniu234')
@@ -54,7 +54,6 @@ def send_msg(bot, tag='ad', trigger_time=300):
mw.writeFile(lock_file, json.dumps(lock_data))
# 信号只在一个周期内执行一次|end
# https://t.me/gjgzs2022 | 22/m | @GJ_gzs
# 实名认证/过人脸🕵️‍♀️各种账号处理✅ | 30/m| next,6/30 | @nngzs
# 18+资源采集| 4/m | next,7/14 | @liuxingyu123
# 海内外实名KYC-执照代付✅域名| 17/m | next,6/17 | @kdgzs
@@ -72,10 +71,6 @@ def send_msg(bot, tag='ad', trigger_time=300):
types.InlineKeyboardButton(
text="18+资源采集", url='https://ckzy1.com')
],
[
types.InlineKeyboardButton(
text="代付-代实名-备案域名-国际云服务器", url='https://t.me/gjgzs2022')
],
[
types.InlineKeyboardButton(
text="实名认证/过人脸🕵️‍♀️各种账号处理✅", url='https://t.me/niuniu234')
Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

-27
View File
@@ -1,27 +0,0 @@
<div class="bt-form">
<div class='plugin_version'></div>
<div class="bt-w-main">
<div class="bt-w-menu">
<p class="bgw" onclick="pluginService('tgclient');">服务</p>
<p onclick="pluginInitD('tgclient');">自启动</p>
<p onclick="clientConf();">配置</p>
<p onclick="botExtList();">扩展列表</p>
<p onclick="pluginLogs('tgclient','','run_log');">日志</p>
<p onclick="readme();">说明</p>
</div>
<div class="bt-w-con pd15">
<div class="soft-man-con"></div>
</div>
</div>
</div>
<style>
.conf_p span{
width: 70px;
}
</style>
<script type="text/javascript">
resetPluginWinHeight(350);
$.getScript( "/plugins/file?name=tgclient&f=js/tgclient.js", function(){
pluginService('tgclient');
});
</script>
-375
View File
@@ -1,375 +0,0 @@
# coding:utf-8
import sys
import io
import os
import time
import re
import json
import base64
web_dir = os.getcwd() + "/web"
if os.path.exists(web_dir):
sys.path.append(web_dir)
os.chdir(web_dir)
import core.mw as mw
app_debug = False
if mw.isAppleSystem():
app_debug = True
def getPluginName():
return 'tgclient'
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 getConfigData():
cfg_path = getServerDir() + "/data.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def writeConf(data):
cfg_path = getServerDir() + "/data.cfg"
mw.writeFile(cfg_path, json.dumps(data))
return True
def getExtCfg():
cfg_path = getServerDir() + "/extend.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def writeExtCfg(data):
cfg_path = getServerDir() + "/extend.cfg"
return mw.writeFile(cfg_path, json.dumps(data))
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('}')
if t.strip() == '':
tmp = []
else:
t = t.split(':')
tmp[t[0]] = t[1]
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 status():
data = mw.execShell(
"ps -ef|grep tgclient |grep -v grep | grep -v mdserver-web | awk '{print $2}'")
if data[0] == '':
return 'stop'
return 'start'
def initDreplace():
file_tpl = getInitDTpl()
service_path = mw.getServerDir()
app_path = service_path + '/' + getPluginName()
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 = content.replace('{$SERVER_PATH}', service_path + '/mdserver-web')
content = content.replace('{$APP_PATH}', app_path)
mw.writeFile(file_bin, content)
mw.execShell('chmod +x ' + file_bin)
pyMainTplContent = mw.readFile(getPluginDir() + '/startup/tgclient.py')
toPyMainPath = mw.getServerDir() + '/tgclient.py'
mw.writeFile(toPyMainPath, pyMainTplContent)
# systemd
systemDir = mw.systemdCfgDir()
systemService = systemDir + '/tgclient.service'
systemServiceTpl = getPluginDir() + '/init.d/tgclient.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('{$APP_PATH}', app_path)
mw.writeFile(systemService, se_content)
mw.execShell('systemctl daemon-reload')
return file_bin
def tbOp(method):
file = initDreplace()
if not mw.isAppleSystem():
data = mw.execShell('systemctl ' + method + ' ' + getPluginName())
if data[1] == '':
return 'ok'
return data[1]
data = mw.execShell(file + ' ' + method)
# print(data)
if data[1] == '':
return 'ok'
return 'ok'
def start():
return tbOp('start')
def stop():
return tbOp('stop')
def restart():
status = tbOp('restart')
return status
def reload():
tgbot_tpl = getPluginDir() + '/startup/tgclient.py'
tgbot_dst = getServerDir() + '/tgclient.py'
content = mw.readFile(tgbot_tpl)
mw.writeFile(tgbot_dst, content)
ext_src = getPluginDir() + '/startup/extend'
ext_dst = getServerDir()
mw.execShell('cp -rf ' + ext_src + ' ' + ext_dst)
return tbOp('restart')
def initdStatus():
if mw.isAppleSystem():
return "Apple Computer does not support"
shell_cmd = 'systemctl status ' + \
getPluginName() + ' | 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 ' + getPluginName())
return 'ok'
def initdUinstall():
if mw.isAppleSystem():
return "Apple Computer does not support"
mw.execShell('systemctl disable ' + getPluginName())
return 'ok'
def getClientConf():
data = getConfigData()
if 'bot' in data:
return mw.returnJson(True, 'ok', data['bot'])
return mw.returnJson(False, 'ok', {})
def setClientConf():
args = getArgs()
data_args = checkArgs(args, ['api_id', 'api_hash'])
if not data_args[0]:
return data_args[1]
data = getConfigData()
args['api_id'] = base64.b64decode(args['api_id']).decode('ascii')
args['api_hash'] = base64.b64decode(args['api_hash']).decode('ascii')
data['bot'] = args
writeConf(data)
return mw.returnJson(True, '保存成功!', [])
def installPreInspection():
i = sys.version_info
if i[0] < 3 or i[1] < 7:
return "telebot在python小于3.7无法正常使用"
return 'ok'
def uninstallPreInspection():
stop()
return "请手动删除<br/> rm -rf {}".format(getServerDir())
def getExtCfgByName(name):
elist = getExtCfg()
for x in elist:
if x['name'] == name:
return x
return None
def clientExtList():
args = getArgs()
data_args = checkArgs(args, ['p'])
if not data_args[0]:
return data_args[1]
ext_path = getServerDir() + '/extend'
if not os.path.exists(ext_path):
return mw.returnJson(False, 'ok', [])
elist_source = os.listdir(ext_path)
elist = []
for e in elist_source:
if e.endswith('py'):
elist.append(e)
page = int(args['p'])
page_size = 5
make_ext_list = []
for ex in elist:
tmp = {}
tmp['name'] = ex
edata = getExtCfgByName(ex)
if edata:
tmp['status'] = edata['status']
else:
tmp['status'] = 'stop'
tmp['tag'] = ex.split('_')[0]
make_ext_list.append(tmp)
writeExtCfg(make_ext_list)
dlist_sum = len(make_ext_list)
page_start = int((page - 1) * page_size)
page_end = page_start + page_size
if page_end >= dlist_sum:
ret_data = make_ext_list[page_start:]
else:
ret_data = make_ext_list[page_start:page_end]
data = {}
data['data'] = ret_data
data['args'] = args
data['list'] = mw.getPage(
{'count': dlist_sum, 'p': page, 'row': page_size, 'tojs': 'botExtListP'})
return mw.returnJson(True, 'ok', data)
def setExtStatus():
args = getArgs()
data_args = checkArgs(args, ['name', 'status'])
if not data_args[0]:
return data_args[1]
elist = getExtCfg()
name = args['name']
status = args['status']
for x in range(len(elist)):
if elist[x]['name'] == name:
elist[x]['status'] = status
break
writeExtCfg(elist)
action = '开启'
if status == 'stop':
action = '关闭'
return mw.returnJson(True, action + '[' + name + ']扩展成功')
def runLog():
p = getServerDir() + '/task.log'
return p
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 == 'install_pre_inspection':
print(installPreInspection())
elif func == 'uninstall_pre_inspection':
print(uninstallPreInspection())
elif func == 'get_client_conf':
print(getClientConf())
elif func == 'set_client_conf':
print(setClientConf())
elif func == 'client_ext_list':
print(clientExtList())
elif func == 'set_ext_status':
print(setExtStatus())
elif func == 'run_log':
print(runLog())
else:
print('error')
-20
View File
@@ -1,20 +0,0 @@
{
"sort": 7,
"ps": "简单Telegram客服端管理",
"name": "tgclient",
"title": "tgclient",
"shell": "install.sh",
"versions":["1.1"],
"tip": "soft",
"checks": "server/tgclient",
"path": "server/tgclient",
"install_pre_inspection":true,
"uninstall_pre_inspection":true,
"display": 1,
"author": "midoks",
"date": "2023-03-06",
"home": "https://my.telegram.org/apps",
"depend_doc1":"https://docs.telethon.dev/en/stable/basic/installation.html",
"type": 0,
"pid": "5"
}
@@ -1,14 +0,0 @@
[Unit]
Description=Tgbot Service
After=network.target
[Service]
Type=forking
ExecStart={$APP_PATH}/init.d/tgclient start
ExecStop={$APP_PATH}/init.d/tgclient stop
ExecReload={$APP_PATH}/init.d/tgclient reload
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
-86
View File
@@ -1,86 +0,0 @@
#!/bin/sh
# chkconfig: 2345 55 25
# description: Tgbot Service
### BEGIN INIT INFO
# Provides: Tgbot
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts Tgbot
# Description: starts the MDW-Web
### END INIT INFO
# Simple Tgbot init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export LANG=en_US.UTF-8
mw_path={$SERVER_PATH}
PATH=$PATH:$mw_path/bin
if [ -f $mw_path/bin/activate ];then
source $mw_path/bin/activate
fi
tg_start(){
isStart=`ps -ef|grep 'tgclient.py' |grep -v grep | awk '{print $2}'`
if [ "$isStart" == '' ];then
echo -e "starting tgclient... \c"
cd $mw_path
echo "python3 {$APP_PATH}/tgclient.py"
python3 {$APP_PATH}/tgclient.py >> {$APP_PATH}/task.log &
isStart=""
while [[ "$isStart" == "" ]];
do
echo -e ".\c"
sleep 0.5
isStart=`ps -ef|grep 'tgclient.py' |grep -v grep | awk '{print $2}'`
let n+=1
if [ $n -gt 20 ];then
break;
fi
done
if [ "$isStart" == '' ];then
echo -e "\033[31mfailed\033[0m"
echo -e "\033[31mError: tgclient service startup failed.\033[0m"
return;
fi
echo -e "\033[32mdone\033[0m"
else
echo "starting tgclient...(pid $(echo $isStart)) already running"
fi
}
tg_stop(){
echo -e "stopping tgclient ... \c";
arr=`ps aux|grep 'tgclient.py'|grep -v grep|awk '{print $2}'`
for p in ${arr[@]}
do
kill -9 $p > /dev/null 2>&1
done
echo -e "\033[32mdone\033[0m"
}
case "$1" in
start)
tg_start
;;
stop)
tg_stop
;;
restart|reload)
tg_stop
sleep 0.3
tg_start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
-55
View File
@@ -1,55 +0,0 @@
#!/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")
VERSION=$2
# pip3 install ccxt
if [ -f ${rootPath}/bin/activate ];then
source ${rootPath}/bin/activate
fi
pip3 install telethon
Install_App()
{
echo '正在安装脚本文件...'
mkdir -p $serverPath/source
mkdir -p $serverPath/tgclient
echo "${VERSION}" > $serverPath/tgclient/version.pl
cp -rf ${rootPath}/plugins/tgclient/startup/* $serverPath/tgclient
cd ${rootPath} && python3 ${rootPath}/plugins/tgclient/index.py start
cd ${rootPath} && python3 ${rootPath}/plugins/tgclient/index.py initd_install
echo '安装完成'
}
Uninstall_App()
{
if [ -f /usr/lib/systemd/system/tgclient.service ];then
systemctl stop tgclient
systemctl disable tgclient
rm -rf /usr/lib/systemd/system/tgclient.service
systemctl daemon-reload
fi
if [ -f $serverPath/tgclient/initd/tgclient ];then
$serverPath/tgclient/initd/tgclient stop
fi
rm -rf $serverPath/tgclient
echo "Uninstall_redis"
}
action=$1
if [ "${1}" == 'install' ];then
Install_App
else
Uninstall_App
fi
-163
View File
@@ -1,163 +0,0 @@
function readme(){
var readme = '<ul class="help-info-text c7">';
readme += '<li>在填写好配置信息好后,还要执行下面命令。进行手机号和短信码验证。再重启,即可正常使用</li>';
readme += '<li>cd /www/server/mdserver-web && source bin/activate && python3 /www/server/tgclient/tgclient.py</li>';
readme += '<li>https://my.telegram.org/auth</li>';
readme += '</ul>';
$('.soft-man-con').html(readme);
}
function appPost(method, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'tgclient';
req_data['func'] = method;
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(toArrayObject(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/run', req_data, function(data) {
layer.close(loadT);
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function appPostCallbak(method, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'tgclient';
req_data['func'] = method;
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(toArrayObject(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');
}
function clientConf(){
appPost('get_client_conf','',function(data){
var rdata = $.parseJSON(data.data);
var api_id = 'api_id';
var api_hash = 'api_hash';
if(rdata['status']){
db_data = rdata['data'];
// api_id, api_hash
api_id = db_data['api_id'];
api_hash = db_data['api_hash'];
}
var mlist = '';
mlist += '<p><span>api_id</span><input style="width: 250px;" class="bt-input-text mr5" name="api_id" value="'+api_id+'" type="text"><font>必填写</font></p>';
mlist += '<p><span>api_hash</span><input style="width: 250px;" class="bt-input-text mr5" name="api_hash" value="'+api_hash+'" type="text"><font>必填写</font></p>';
var option = '<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" onclick="submitBotConf()">保存</button>\
</div>\
</div>';
$(".soft-man-con").html(option);
});
}
function submitBotConf(){
var pull_data = {};
pull_data['api_id'] = base64_encode($('input[name="api_id"]').val());
pull_data['api_hash'] = base64_encode($('input[name="api_hash"]').val());
appPost('set_client_conf',pull_data,function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata['msg'],{icon:rdata['status']?1:2,time:2000,shade: [0.3, '#000']});
});
}
function botExtList(){
var body = '<div class="divtable mtb10">\
<table class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0">\
<thead>\
<tr>\
<th width="20">脚本</th>\
<th width="120">类型</th>\
<th width="10">状态</th>\
</tr>\
</thead>\
<tbody id="ext_list"></tbody>\
</table>\
<div class="dataTables_paginate paging_bootstrap pagination">\
<ul id="ext_list_page" class="page"></ul>\
</div>\
</div>';
$('.soft-man-con').html(body);
botExtListP(1);
}
function setBotExtStatus(name,status){
appPost('set_ext_status',{'name':name,'status':status}, function(rdata){
var rdata = $.parseJSON(rdata.data);
layer.msg(rdata['msg'],);
showMsg(rdata['msg'], function(){
botExtListP(1);
},{icon:rdata['status']?1:2,shade: [0.3, '#000']},2000);
});
}
function botExtListP(p=1){
appPost('client_ext_list',{'p':p}, function(rdata){
// console.log(rdata);
var rdata = $.parseJSON(rdata.data);
// console.log(rdata);
var tBody = '';
if (!rdata.status && rdata.data.length == 0 ){
var tBody = '<tr><td colspan="4"><div style="text-align:center;">无数据</div></td></tr>';
} else{
var ldata = rdata.data.data;
for (var i = 0; i < ldata.length; i++) {
tBody += '<tr data-name="'+ldata[i]['name']+'">'
tBody += '<td>'+ldata[i]['name']+'</td>';
tBody += '<td>'+ldata[i]['tag']+'</td>';
if (ldata[i]['status'] == 'start'){
tBody += '<td><span style="color:#20a53a;cursor: pointer;" class="ext_status glyphicon glyphicon-play"></span></td>';
} else{
tBody += '<td><span style="color:red;cursor: pointer;" class="ext_status glyphicon glyphicon-pause"></span></td>';
}
tBody +='<tr>';
}
}
$('#ext_list').html(tBody);
$('#ext_list_page').html(rdata.data.list);
$('#ext_list .ext_status').click(function(){
var name = $(this).parent().parent().data('name');
var status = 'stop';
if ($(this).hasClass('glyphicon-pause')){
status = 'start';
}
setBotExtStatus(name,status);
});
});
}
@@ -1,97 +0,0 @@
# coding:utf-8
# func: 在其他发送推送AD
# url: https://docs.telethon.dev/en/stable/modules/client.html
import sys
import io
import os
import time
import re
import json
import base64
import threading
import asyncio
sys.path.append(os.getcwd() + "/class/core")
import mw
from telethon import utils
from telethon import functions, types
from telethon.tl.functions.messages import AddChatUserRequest
from telethon.tl.functions.channels import InviteToChannelRequest
# 指定群ID
chat_id_list = [-1001578009023]
filter_g_id = [-1001771526434]
msg_ad = "本人软件推广(10s)\n\n"
msg_ad += "开源Linux面板【mdserver-web】,站长必备,无毒,源码为证。\n"
msg_ad += "不收费,全靠TG乞讨! \n"
msg_ad += "看个人简介,加入群聊,一起进步!\n"
# msg_ad += "https://github.com/midoks/mdserver-web \n"
# msg_ad += "\n"
# msg_ad += "加入群聊,一起进步! \n"
# msg_ad += "https://t.me/mdserver_web \n"
# msg_ad += "不收费,无毒。源码为证。全靠TG乞讨!😭\n\n"
# msg_ad += "捐赠地址 USDT(TRC20)\n"
# msg_ad += "TVbNgrpeGBGZVm5gTLa21ADP7RpnPFhjya\n"
# msg_ad += "日行一善,以后必定大富大贵\n"
async def writeLog(log_str):
if __name__ == "__main__":
print(log_str)
now = mw.getDateFromNow()
log_file = mw.getServerDir() + '/tgclient/task.log'
mw.writeFileLog(now + ':' + log_str, log_file, limit_size=5 * 1024)
return True
async def send_msg(client, chat_id, tag='ad', trigger_time=600):
# 信号只在一个周期内执行一次|start
lock_file = mw.getServerDir() + '/tgclient/lock.json'
if not os.path.exists(lock_file):
mw.writeFile(lock_file, '{}')
lock_data = json.loads(mw.readFile(lock_file))
if tag in lock_data:
diff_time = time.time() - lock_data[tag]['do_time']
if diff_time >= trigger_time:
lock_data[tag]['do_time'] = time.time()
else:
return False, 0, 0
else:
lock_data[tag] = {'do_time': time.time()}
mw.writeFile(lock_file, json.dumps(lock_data))
# 信号只在一个周期内执行一次|end
msg = await client.send_message(chat_id, msg_ad)
await asyncio.sleep(10)
await client.delete_messages(chat_id, msg)
await asyncio.sleep(3)
async def run(client):
client.parse_mode = 'html'
# for chat_id in chat_id_list:
# await send_msg(client, chat_id)
# await asyncio.sleep(30)
info = await client.get_dialogs()
for chat in info:
if chat.is_group and not chat.id in filter_g_id:
chat_id = str(chat.id)
if chat_id[0:4] != '-100':
continue
# print(chat)
await writeLog('name:{0} id:{1} is_user:{2} is_channel:{3} is_group:{4}'.format(
chat.name, chat.id, chat.is_user, chat.is_channel, chat.is_group))
try:
await send_msg(client, chat.id, 'ad_' + str(chat.id))
except Exception as e:
await writeLog(str(chat))
await writeLog(str(e))
if __name__ == "__main__":
pass
@@ -1,69 +0,0 @@
# coding:utf-8
# func: 自动检测已经注销群成员
import sys
import io
import os
import time
import re
import json
import base64
import threading
import asyncio
sys.path.append(os.getcwd() + "/class/core")
import mw
import telebot
from telebot import types
from telebot.util import quick_markup
# 指定群ID
chat_id_list = [-1001979545570]
# 别人群ID[有API调用限制]
chat_id_list_other = [-1001578009023, -1001771526434]
async def writeLog(log_str):
if __name__ == "__main__":
print(log_str)
now = mw.getDateFromNow()
log_file = mw.getServerDir() + '/tgclient/task.log'
mw.writeFileLog(now + ':' + log_str, log_file, limit_size=5 * 1024)
return True
async def run(client):
for chat_id in chat_id_list:
try:
s = await client.send_message(chat_id, '开始自动检测已经注销群成员...')
count = 0
async for user in client.iter_participants(chat_id):
if user.deleted:
count += 1
msg = await client.kick_participant(chat_id, user)
await client.edit_message(chat_id, s.id, '已经检测到有(%d)个账户已失效' % (count))
await asyncio.sleep(3)
await client.edit_message(chat_id, s.id, '自动检测已经注销群成员完毕!!!')
await asyncio.sleep(3)
await client.delete_messages(chat_id, s)
except Exception as e:
print(str(e))
writeLog(str(e))
for chat_id in chat_id_list_other:
try:
async for user in client.iter_participants(chat_id):
if user.deleted:
msg = await client.kick_participant(chat_id, user)
except Exception as e:
print(str(e))
writeLog(str(e))
await asyncio.sleep(300)
if __name__ == "__main__":
pass
@@ -1,55 +0,0 @@
# coding:utf-8
# func: 自动邀请群成员
import sys
import io
import os
import time
import re
import json
import base64
import threading
import asyncio
sys.path.append(os.getcwd() + "/class/core")
import mw
from telethon import utils
from telethon import functions, types
from telethon.tl.functions.messages import AddChatUserRequest
from telethon.tl.functions.channels import InviteToChannelRequest
# 指定群ID
chat_id = -1001979545570
filter_user_id = 5568699210
filter_g_id = [-1001771526434]
async def run(client):
info = await client.get_dialogs()
for chat in info:
is_sleep = True
print('name:{0} id:{1} is_user:{2} is_channel:{3} is_group:{4}'.format(
chat.name, chat.id, chat.is_user, chat.is_channel, chat.is_group))
if chat.is_group and chat.id != chat_id:
list_user = []
async for user in client.iter_participants(chat.id):
if chat.id in filter_g_id:
is_sleep = False
continue
if filter_user_id != user.id and user.username != None and user.bot == False:
list_user.append(user.username)
print(list_user)
try:
await client(InviteToChannelRequest(
channel=chat_id, # chat_id
users=list_user, # 被邀请人id
))
except Exception as e:
print(str(e))
if is_sleep:
await asyncio.sleep(90000)
if __name__ == "__main__":
pass
@@ -1,54 +0,0 @@
# coding:utf-8
# func: 临时测试
import sys
import io
import os
import time
import re
import json
import base64
import threading
import asyncio
sys.path.append(os.getcwd() + "/class/core")
import mw
from telethon import utils
from telethon import functions, types
from telethon.tl.functions.messages import AddChatUserRequest
from telethon.tl.functions.channels import InviteToChannelRequest
# 指定群ID
chat_id = -1001979545570
filter_user_id = 5568699210
filter_g_id = [-1001771526434]
async def run(client):
my_channel = await client.get_entity(PeerChannel(-1001173826177))
print(my_channel)
for i in range(9999999999):
try:
v = -1001000000000 - i
my_channel = await client.get_entity(PeerChannel(v))
print(my_channel)
except Exception as e:
pass
# -1001809140739
# -1001800000000
# -1000000000001
info = await client.get_dialogs()
for chat in info:
if not chat.is_group and chat.is_channel:
print('name:{0} id:{1} is_user:{2} is_channel:{3} is_group:{4}'.format(
chat.name, chat.id, chat.is_user, chat.is_channel, chat.is_group))
await asyncio.sleep(10)
if __name__ == "__main__":
pass
@@ -1 +0,0 @@
push_*.py 识别为推送插件
-132
View File
@@ -1,132 +0,0 @@
# coding:utf-8
import sys
import io
import os
import time
import re
import json
import base64
import threading
import asyncio
import logging
# python /Users/midoks/Desktop/mwdev/server/tgclient/tgclient.py
'''
cd /www/server/mdserver-web && source bin/activate && python3 /www/server/tgclient/tgclient.py
'''
from telethon import TelegramClient
sys.path.append(os.getcwd() + "/class/core")
import mw
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def getPluginName():
return 'tgclient'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
sys.path.append(getServerDir() + "/extend")
def getConfigData():
cfg_path = getServerDir() + "/data.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def writeConf(data):
cfg_path = getServerDir() + "/data.cfg"
mw.writeFile(cfg_path, json.dumps(data))
return True
def getExtCfg():
cfg_path = getServerDir() + "/extend.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def getStartExtCfgByTag(tag='push'):
# 获取开启的扩展
elist = getExtCfg()
rlist = []
for x in elist:
if x['tag'] == tag and x['status'] == 'start':
rlist.append(x)
return rlist
def writeLog(log_str):
if __name__ == "__main__":
print(log_str)
now = mw.getDateFromNow()
log_file = getServerDir() + '/task.log'
mw.writeFileLog(now + ':' + log_str, log_file, limit_size=5 * 1024)
return True
# start tgbot
cfg = getConfigData()
while True:
cfg = getConfigData()
if 'bot' in cfg and 'api_id' in cfg['bot']:
if cfg['bot']['api_id'] != '' and cfg['bot']['api_id'] != 'api_id':
break
if cfg['bot']['api_hash'] != '' and cfg['bot']['api_hash'] != 'api_hash':
break
writeLog('等待输入配置,api_id')
time.sleep(3)
client = TelegramClient('mdioks', cfg['bot']['api_id'], cfg['bot']['api_hash'])
async def plugins_run_task():
plist = getStartExtCfgByTag('client')
for p in plist:
try:
script = p['name'].split('.')[0]
await __import__(script).run(client)
except Exception as e:
writeLog('----- client error start -------')
writeLog(mw.getTracebackInfo())
writeLog('----- client error end -------')
async def plugins_run():
while True:
await plugins_run_task()
time.sleep(1)
async def main(loop):
await client.start()
# create new task
writeLog('creating plugins_run task.')
task = loop.create_task(plugins_run())
await task
writeLog('It works.')
await client.run_until_disconnected()
task.cancel()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
+1 -1
View File
@@ -114,7 +114,7 @@ def status():
return 'stop'
# data = mw.execShell(
# "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# "ps -ef|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'")
# if data[0] == '':
# return 'stop'
+9 -5
View File
@@ -725,6 +725,7 @@ def getLogsList():
query_date = args['query_date']
search_uri = args['search_uri']
referer = args['referer']
referer_url = args['referer_url']
ip = args['ip']
setDefaultSite(domain)
@@ -736,11 +737,14 @@ def getLogsList():
conn = conn.field(field)
conn = conn.where("1=1", ())
if referer != 'all':
if referer == '1':
conn = conn.andWhere("referer <> ? ", ('',))
elif referer == '-1':
conn = conn.andWhere("referer is null ", ())
if referer_url != '':
conn = conn.andWhere("referer like '%" + referer_url + "%'", ())
else:
if referer != 'all':
if referer == '1':
conn = conn.andWhere("referer <> ? ", ('',))
elif referer == '-1':
conn = conn.andWhere("referer is null ", ())
if ip != '':
conn = conn.andWhere("ip=?", (ip,))
+42 -35
View File
@@ -2214,6 +2214,7 @@ function wsTableLogRequest(page){
args['request_size'] = $('select[name="request_size"]').val();
args['spider_type'] = $('select[name="spider_type"]').val();
args['referer'] = $('select[name="referer"]').val();
args['referer_url'] = $('input[name="referer_url"]').val();
args['ip'] = $('input[name="ip"]').val();
var query_date = 'today';
@@ -2393,19 +2394,7 @@ var html = '<div>\
<select class="bt-input-text" name="site" style="margin-left:4px;width:100px;">\
<option value="unset">未设置</option>\
</select>\
<span style="margin-left:10px">时间: </span>\
<div class="input-group" style="margin-left:10px;width:550px;display: inline-table;vertical-align: top;">\
<div id="search_time" class="input-group-btn btn-group-sm">\
<button data-name="today" type="button" class="btn btn-default">今日</button>\
<button data-name="yesterday" type="button" class="btn btn-default">昨日</button>\
<button data-name="l7" type="button" class="btn btn-default">近7天</button>\
<button data-name="l30" type="button" class="btn btn-default">近30天</button>\
</div>\
<span class="last-span"><input data-name="" type="text" id="time_choose" lay-key="1000001_'+randstr+'" class="form-control btn-group-sm" autocomplete="off" placeholder="自定义时间" style="display: inline-block;font-size: 12px;padding: 0 10px;height:30px;width: 300px;"></span>\
</div>\
</div>\
<div style="padding-bottom:10px;">\
<span>请求类型: </span>\
<span style="margin-left:10px">请求类型: </span>\
<select class="bt-input-text" name="method" style="margin-left:4px">\
<option value="all">所有</option>\
<option value="GET">GET</option>\
@@ -2414,7 +2403,21 @@ var html = '<div>\
<option value="PUT">PUT</option>\
<option value="DELETE">DELETE</option>\
</select>\
<span style="margin-left:10px;">状态码: </span>\
<span style="margin-left:10px">时间: </span>\
<div class="input-group" style="margin-left:10px;width:150px;display: inline-table;vertical-align: top;">\
<div id="search_time" class="input-group-btn btn-group-sm">\
<button data-name="today" type="button" class="btn btn-default">今日</button>\
<button data-name="yesterday" type="button" class="btn btn-default">昨日</button>\
<button data-name="l7" type="button" class="btn btn-default">近7天</button>\
<button data-name="l30" type="button" class="btn btn-default">近30天</button>\
</div>\
<span class="last-span">\
<input data-name="" type="text" id="time_choose" lay-key="1000001_'+randstr+'" class="form-control btn-group-sm" autocomplete="off" placeholder="自定义时间" style="display: inline-block;font-size: 12px;padding: 0 10px;height:30px;width: 200px;">\
</span>\
</div>\
</div>\
<div style="padding-bottom:10px;">\
<span>状态码: </span>\
<select class="bt-input-text" name="status_code" style="margin-left:4px">\
<option value="all">所有</option>\
<option value="500">500</option>\
@@ -2429,11 +2432,23 @@ var html = '<div>\
<option value="206">206</option>\
<option value="200">200</option>\
</select>\
<span style="margin-left:10px;">来源: </span>\
<select class="bt-input-text" name="referer" style="margin-left:4px">\
<span style="margin-left:10px;">耗时: </span>\
<select class="bt-input-text" name="request_time" style="margin-left:5px;">\
<option value="all">所有</option>\
<option value="-1">无</option>\
<option value="1">有</option>\
<option value="0-50">0-50(ms)</option>\
<option value="50-200">50-200(ms)</option>\
<option value="200-500">200-500(ms)</option>\
<option value="500-1000">500ms-1s</option>\
<option value="1000">大于1s</option>\
</select>\
<span style="margin-left:10px;">大小: </span>\
<select class="bt-input-text" name="request_size" style="margin-left:5px;">\
<option value="all">所有</option>\
<option value="0-1">0-1(kb)</option>\
<option value="1-20">1-20(kb)</option>\
<option value="20-50">20-50(kb)</option>\
<option value="50-100">50-100(kb)</option>\
<option value="100">大于100kb</option>\
</select>\
<span style="margin-left:10px;">蜘蛛过滤: </span>\
<select class="bt-input-text" name="spider_type" style="margin-left:4px">\
@@ -2453,31 +2468,23 @@ var html = '<div>\
<option value="11">一搜</option>\
<option value="12">其他</option>\
</select>\
<span>IP: </span>\
<span style="margin-left:10px;">IP: </span>\
<div class="input-group" style="width:163px;display:inline-flex;">\
<input type="text" name="ip" class="form-control btn-group-sm" autocomplete="off" placeholder="IP地址" style="font-size: 12px;padding: 0 10px;height:30px;">\
</div>\
</div>\
<div style="padding-bottom:10px;">\
<span>耗时: </span>\
<select class="bt-input-text" name="request_time" style="margin-left:5px;">\
<span style="margin-left:10px;">来源: </span>\
<select class="bt-input-text" name="referer" style="margin-left:4px">\
<option value="all">所有</option>\
<option value="0-50">0-50(ms)</option>\
<option value="50-200">50-200(ms)</option>\
<option value="200-500">200-500(ms)</option>\
<option value="500-1000">500ms-1s</option>\
<option value="1000">大于1s</option>\
</select>\
<span style="margin-left:10px;">大小: </span>\
<select class="bt-input-text" name="request_size" style="margin-left:5px;">\
<option value="all">所有</option>\
<option value="0-1">0-1(kb)</option>\
<option value="1-20">1-20(kb)</option>\
<option value="20-50">20-50(kb)</option>\
<option value="50-100">50-100(kb)</option>\
<option value="100">大于100kb</option>\
<option value="-1">无</option>\
<option value="1">有</option>\
</select>\
<span style="margin-left:10px;">URL过滤: </span>\
<div class="input-group" style="width:210px;display:inline-flex;">\
<input type="text" name="referer_url" class="form-control btn-group-sm" autocomplete="off" placeholder="具体来源" style="font-size: 12px;padding: 0 10px;height:30px;">\
</div>\
<span style="margin-left:10px;">URL过滤: </span>\
<div class="input-group" style="width:210px;display:inline-flex;">\
<input type="text" name="search_uri" class="form-control btn-group-sm" autocomplete="off" placeholder="URI搜索" style="font-size: 12px;padding: 0 10px;height:30px;">\
<div class="input-group-btn btn-group-sm">\
+9 -5
View File
@@ -727,6 +727,7 @@ def get_logs_list(args):
query_date = args['query_date']
search_uri = args['search_uri']
referer = args['referer']
referer_url = args['referer_url']
ip = args['ip']
setDefaultSite(domain)
@@ -783,11 +784,14 @@ def get_logs_list(args):
elif int(spider_type) > 0:
conn = conn.andWhere("is_spider=?", (spider_type,))
if referer != 'all':
if referer == '1':
conn = conn.andWhere("referer <> ? ", ('',))
elif referer == '-1':
conn = conn.andWhere("referer is null ", ())
if referer_url != '':
conn = conn.andWhere("referer like '%" + referer_url + "%'", ())
else:
if referer != 'all':
if referer == '1':
conn = conn.andWhere("referer <> ? ", ('',))
elif referer == '-1':
conn = conn.andWhere("referer is null ", ())
if search_uri != "":
conn = conn.andWhere("uri like '%" + search_uri + "%'", ())
+1 -1
View File
@@ -84,7 +84,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep zabbix_server |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep zabbix_server |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+1 -1
View File
@@ -75,7 +75,7 @@ def getPidFile():
return tmp.groups()[0].strip()
def status():
cmd = "ps aux|grep zabbix_agentd |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
cmd = "ps -ef|grep zabbix_agentd |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'"
data = mw.execShell(cmd)
if data[0] == '':
return 'stop'
+3 -1
View File
@@ -49,4 +49,6 @@ packaging
Flask-Compress
brotli
zstd
zstandard
zstandard
geoip2
docker
+13 -7
View File
@@ -591,6 +591,7 @@ mw_connect_pgdb(){
mw_mongodb(){
# /www/server/mongodb/bin/mongo --version
CONF="${ROOT_PATH}/mongodb/mongodb.conf"
if [ ! -f "$CONF" ]; then
echo -e "not install mongodb!"
@@ -606,7 +607,14 @@ mw_mongodb(){
AUTH_STR="-u root -p ${pwd}"
fi
CLIEXEC="${ROOT_PATH}/mongodb/bin/mongosh --port ${MGDB_PORT} ${AUTH_STR}"
mg_version=$(/${ROOT_PATH}/mongodb/bin/mongo --version)
# 根据 MongoDB 版本选择使用 mongo 还是 mongosh
if [[ "$mg_version" == *"3.0"* || "$mg_version" == *"3.2"* || "$mg_version" == *"3.4"* || "$mg_version" == *"3.6"* ]]; then
CLIEXEC="${ROOT_PATH}/mongodb/bin/mongo --port ${MGDB_PORT} ${AUTH_STR} --authenticationDatabase admin"
else
CLIEXEC="${ROOT_PATH}/mongodb/bin/mongosh --port ${MGDB_PORT} ${AUTH_STR}"
fi
echo $CLIEXEC
${CLIEXEC}
}
@@ -762,18 +770,15 @@ case "$1" in
'restart')
mw_stop
sleep 2
mw_start
mw_default;;
mw_start;;
'restart_panel')
mw_stop_panel
sleep 2
mw_start_panel
mw_default;;
mw_start_panel;;
'restart_task')
mw_stop_task
sleep 2
mw_start_task
mw_default;;
mw_start_task;;
'status') mw_status;;
'logs') error_logs;;
'close') mw_close;;
@@ -792,6 +797,7 @@ case "$1" in
'pgdb') mw_connect_pgdb;;
'redis') mw_redis;;
'valkey')mw_valkey;;
'mgdb') mw_mongodb;;
'mongodb') mw_mongodb;;
'ssh') mw_ssh;;
'venv') mw_update_venv;;
+5 -1
View File
@@ -36,4 +36,8 @@ pyotp
pytz
pyTelegramBotAPI
telebot
pyyaml
pyyaml
Flask-Compress
croniter
geoip2
docker
+5 -1
View File
@@ -36,4 +36,8 @@ pyotp
pytz
pyTelegramBotAPI
telebot
pyyaml
pyyaml
Flask-Compress
croniter
geoip2
docker
+5 -1
View File
@@ -36,4 +36,8 @@ pyotp
pytz
pyTelegramBotAPI
telebot
pyyaml
pyyaml
Flask-Compress
croniter
geoip2
docker
+43
View File
@@ -0,0 +1,43 @@
cryptography==36.0.1
flask==2.0.3
pyOpenSSL==22.0.0
requests==2.27.1
gevent==22.10.2
gunicorn==21.2.0
setuptools>=33.1.1
Werkzeug>=1.0.1,<3.0.0
wheel>=0.37.1
requests>=2.27.1
urllib3>=1.21.1
flask-session==0.3.2
flask-helper==0.19
flask-bcrypt==1.0.1
flask-caching>=1.10.1
cache==1.0.3
gevent-websocket==0.10.1
psutil==5.9.1
chardet==3.0.4
flask-sqlalchemy==2.3.2
configparser==5.2.0
python-engineio==4.3.2
python-socketio>=4.2.0
flask-socketio==5.2.0
flask-sockets==0.2.1
zmq==0.0.0
paramiko>=2.8.0
pymongo
pymemcache
redis
pillow
Jinja2>=2.11.2
PyMySQL==1.0.2
whitenoise==5.3.0
pyotp
pytz
pyTelegramBotAPI
telebot
pyyaml
Flask-Compress
croniter
geoip2
docker
+4 -7
View File
@@ -923,17 +923,14 @@ def isSupportSystemctl():
return True
def isSupportHttp3(version):
if version.startswith('1.25'):
return True
if version.startswith('1.27'):
return True
if version.startswith('1.29'):
return True
if version.startswith('rtmp'):
return True
return False
def isVhostHasReuseport():
def isVhostHasReuseport(version):
if not version.startswith('1.29'):
return False
vhost_dir = getServerDir() + '/web_conf/nginx/vhost'
if not os.path.exists(vhost_dir):
return False
+8 -3
View File
@@ -839,12 +839,17 @@ class plugin(object):
if not os.path.exists(path):
return ('', '')
py_cmd = 'cd ' + mw.getPanelDir() + " && "+ py_cmd
data = mw.execShell(py_cmd)
source_bin_activate = mw.getPanelDir() + "/bin/activate"
py_cmd_dir = 'cd ' + mw.getPanelDir()
if os.path.exists(source_bin_activate):
py_cmd_dir += " && source "+source_bin_activate
do_cmd = py_cmd_dir + " && "+ py_cmd
data = mw.execShell(do_cmd)
# print(data)
if mw.isDebugMode():
print('run:', py_cmd)
print('run:', do_cmd)
print(data)
# print os.path.exists(py_cmd)
return (data[0].strip(), data[1].strip())
+1 -1
View File
@@ -556,7 +556,7 @@ class sites(object):
listen = re.search(rep, conf).group()
quic_conf = "quic reuseport"
if mw.isVhostHasReuseport():
if mw.isVhostHasReuseport(version):
quic_conf = "quic"
if mw.isSupportHttp3(version):
+1 -1
View File
@@ -45,7 +45,7 @@ def removeTask(task_id):
status = mw.M('tasks').where('id=?', (task_id,)).getField('status')
mw.M('tasks').delete(task_id)
if str(status) == '-1':
cmd = "ps aux | grep 'panel_task.py' | grep -v grep |awk '{print $2}'"
cmd = "ps -ef | grep 'panel_task.py' | grep -v grep |awk '{print $2}'"
task_pid = mw.execShell(cmd)
task_list = task_pid[0].strip().split("\n")
for i in range(len(task_list)):