mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-10 01:39:25 +08:00
@@ -113,7 +113,7 @@ def removeBgTask():
|
|||||||
"id=?", (cfg["task_id"],)).find()
|
"id=?", (cfg["task_id"],)).find()
|
||||||
if res and res["id"] == cfg["task_id"]:
|
if res and res["id"] == cfg["task_id"]:
|
||||||
data = MwCrontab.instance().delete(cfg["task_id"])
|
data = MwCrontab.instance().delete(cfg["task_id"])
|
||||||
if data[0]:
|
if data["status"]:
|
||||||
cfg["task_id"] = -1
|
cfg["task_id"] = -1
|
||||||
mw.writeFile(getTaskConf(), json.dumps(cfg))
|
mw.writeFile(getTaskConf(), json.dumps(cfg))
|
||||||
return True
|
return True
|
||||||
|
|||||||
Executable
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
# OpenResty服务名称
|
||||||
|
service_name="openresty"
|
||||||
|
|
||||||
|
# 检查OpenResty是否正在运行
|
||||||
|
if systemctl is-active --quiet "$service_name"; then
|
||||||
|
# 检查是否存在僵尸进程
|
||||||
|
zombie_processes=$(ps -ef | grep -i openresty | grep -v grep | awk '{print $2}' | xargs ps -o state= -p 2>/dev/null | grep -c Z)
|
||||||
|
if [ "$zombie_processes" -gt 0 ]; then
|
||||||
|
echo "检测到OpenResty僵尸进程,正在重启服务..."
|
||||||
|
systemctl restart "$service_name"
|
||||||
|
echo "服务已重启"
|
||||||
|
else
|
||||||
|
echo "OpenResty运行正常"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "OpenResty未运行,正在启动服务..."
|
||||||
|
systemctl start "$service_name"
|
||||||
|
echo "服务已启动"
|
||||||
|
fi
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
<p onclick="getOpStatus();">负载状态</p>
|
<p onclick="getOpStatus();">负载状态</p>
|
||||||
<p onclick="setOpCfg();">性能调整</p>
|
<p onclick="setOpCfg();">性能调整</p>
|
||||||
<p onclick="pluginLogs('openresty');">错误日志</p>
|
<p onclick="pluginLogs('openresty');">错误日志</p>
|
||||||
|
<p onclick="otherFunc();">其它功能</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="bt-w-con pd15">
|
<div class="bt-w-con pd15">
|
||||||
<div class="soft-man-con"></div>
|
<div class="soft-man-con"></div>
|
||||||
|
|||||||
@@ -590,6 +590,26 @@ def setCfg():
|
|||||||
return mw.returnJson(True, '设置成功')
|
return mw.returnJson(True, '设置成功')
|
||||||
|
|
||||||
|
|
||||||
|
def cronAddCheck():
|
||||||
|
try:
|
||||||
|
import tool_task
|
||||||
|
tool_task.createBgTask()
|
||||||
|
return mw.returnJson(True, '添加检查任务成功')
|
||||||
|
except Exception as e:
|
||||||
|
return mw.returnJson(False, '添加检查任务失败:'+str(e))
|
||||||
|
|
||||||
|
def cronDelCheck():
|
||||||
|
try:
|
||||||
|
import tool_task
|
||||||
|
tool_task.removeBgTask()
|
||||||
|
return mw.returnJson(True, '删除检查任务成功')
|
||||||
|
except Exception as e:
|
||||||
|
return mw.returnJson(False, '删除检查任务失败:'+str(e))
|
||||||
|
|
||||||
|
def cronCheck():
|
||||||
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
def installPreInspection():
|
def installPreInspection():
|
||||||
return 'ok'
|
return 'ok'
|
||||||
|
|
||||||
@@ -633,5 +653,11 @@ if __name__ == "__main__":
|
|||||||
print(getCfg())
|
print(getCfg())
|
||||||
elif func == 'set_cfg':
|
elif func == 'set_cfg':
|
||||||
print(setCfg())
|
print(setCfg())
|
||||||
|
elif func == 'check':
|
||||||
|
print(cronCheck())
|
||||||
|
elif func == 'cron_add_check':
|
||||||
|
print(cronAddCheck())
|
||||||
|
elif func == 'cron_del_check':
|
||||||
|
print(cronDelCheck())
|
||||||
else:
|
else:
|
||||||
print('error')
|
print('error')
|
||||||
|
|||||||
@@ -201,6 +201,28 @@ function submitConf() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function otherFunc(){
|
||||||
|
var con = '<p class="conf_p" style="text-align:center;">\
|
||||||
|
<button class="btn btn-default btn-sm" onclick="cronAddCheck()">添加检查任务</button> \
|
||||||
|
<button class="btn btn-default btn-sm" onclick="cronDelCheck()">删除检查任务</button>\
|
||||||
|
</p>';
|
||||||
|
$(".soft-man-con").html(con);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cronAddCheck(){
|
||||||
|
orPost('cron_add_check', {}, function(data){
|
||||||
|
var rdata = $.parseJSON(data.data);
|
||||||
|
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function cronDelCheck(){
|
||||||
|
orPost('cron_del_check', {}, function(data){
|
||||||
|
var rdata = $.parseJSON(data.data);
|
||||||
|
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,124 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import io
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
|
||||||
|
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
|
||||||
|
from utils.crontab import crontab as MwCrontab
|
||||||
|
|
||||||
|
|
||||||
|
app_debug = False
|
||||||
|
if mw.isAppleSystem():
|
||||||
|
app_debug = True
|
||||||
|
|
||||||
|
|
||||||
|
def getPluginName():
|
||||||
|
return 'openresty'
|
||||||
|
|
||||||
|
|
||||||
|
def getPluginDir():
|
||||||
|
return mw.getPluginDir() + '/' + getPluginName()
|
||||||
|
|
||||||
|
|
||||||
|
def getServerDir():
|
||||||
|
return mw.getServerDir() + '/' + getPluginName()
|
||||||
|
|
||||||
|
|
||||||
|
def getTaskConf():
|
||||||
|
conf = getServerDir() + "/task_config.json"
|
||||||
|
return conf
|
||||||
|
|
||||||
|
|
||||||
|
def getConfigData():
|
||||||
|
conf = getTaskConf()
|
||||||
|
if os.path.exists(conf):
|
||||||
|
return json.loads(mw.readFile(getTaskConf()))
|
||||||
|
return {
|
||||||
|
"task_id": -1,
|
||||||
|
"period": "minute-n",
|
||||||
|
"where1": "3",
|
||||||
|
"hour": "0",
|
||||||
|
"minute": "0",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def createBgTask():
|
||||||
|
removeBgTask()
|
||||||
|
createBgTaskByName(getPluginName())
|
||||||
|
|
||||||
|
|
||||||
|
def createBgTaskByName(name):
|
||||||
|
args = getConfigData()
|
||||||
|
_name = "[OpenResty]检查任务"
|
||||||
|
res = mw.M("crontab").field("id, name").where("name=?", (_name,)).find()
|
||||||
|
if res:
|
||||||
|
return True
|
||||||
|
|
||||||
|
if "task_id" in args and args["task_id"] > 0:
|
||||||
|
res = mw.M("crontab").field("id, name").where(
|
||||||
|
"id=?", (args["task_id"],)).find()
|
||||||
|
if res and res["id"] == args["task_id"]:
|
||||||
|
print("计划任务已经存在!")
|
||||||
|
return True
|
||||||
|
|
||||||
|
mw_dir = mw.getPanelDir()
|
||||||
|
cmd = '''
|
||||||
|
mw_dir=%s
|
||||||
|
rname=%s
|
||||||
|
plugin_path=%s
|
||||||
|
script_path=%s
|
||||||
|
''' % (mw_dir, name, getServerDir(), getPluginDir())
|
||||||
|
cmd += 'echo "python3 $script_path/check.sh"' + "\n"
|
||||||
|
cmd += 'cd $mw_dir && bash $script_path/check.sh' + "\n"
|
||||||
|
|
||||||
|
params = {
|
||||||
|
'name': _name,
|
||||||
|
'type': args['period'],
|
||||||
|
'week': "",
|
||||||
|
'where1': args['where1'],
|
||||||
|
'hour': args['hour'],
|
||||||
|
'minute': args['minute'],
|
||||||
|
'save': "",
|
||||||
|
'backup_to': "",
|
||||||
|
'stype': "toShell",
|
||||||
|
'sname': '',
|
||||||
|
'sbody': cmd,
|
||||||
|
'url_address': '',
|
||||||
|
}
|
||||||
|
|
||||||
|
task_id = MwCrontab.instance().add(params)
|
||||||
|
if task_id > 0:
|
||||||
|
args["task_id"] = task_id
|
||||||
|
args["name"] = name
|
||||||
|
mw.writeFile(getTaskConf(), json.dumps(args))
|
||||||
|
|
||||||
|
|
||||||
|
def removeBgTask():
|
||||||
|
cfg = getConfigData()
|
||||||
|
if "task_id" in cfg and cfg["task_id"] > 0:
|
||||||
|
res = mw.M("crontab").field("id, name").where(
|
||||||
|
"id=?", (cfg["task_id"],)).find()
|
||||||
|
if res and res["id"] == cfg["task_id"]:
|
||||||
|
data = MwCrontab.instance().delete(cfg["task_id"])
|
||||||
|
if data["status"]:
|
||||||
|
cfg["task_id"] = -1
|
||||||
|
mw.writeFile(getTaskConf(), json.dumps(cfg))
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
action = sys.argv[1]
|
||||||
|
if action == "remove":
|
||||||
|
removeBgTask()
|
||||||
|
elif action == "add":
|
||||||
|
createBgTask()
|
||||||
@@ -181,7 +181,7 @@ def removeBgTask():
|
|||||||
"id=?", (cfg["task_id"],)).find()
|
"id=?", (cfg["task_id"],)).find()
|
||||||
if res and res["id"] == cfg["task_id"]:
|
if res and res["id"] == cfg["task_id"]:
|
||||||
data = MwCrontab.instance().delete(cfg["task_id"])
|
data = MwCrontab.instance().delete(cfg["task_id"])
|
||||||
if data[0]:
|
if data['status']:
|
||||||
cfg["task_id"] = -1
|
cfg["task_id"] = -1
|
||||||
mw.writeFile(getTaskConf(), json.dumps(cfg))
|
mw.writeFile(getTaskConf(), json.dumps(cfg))
|
||||||
return True
|
return True
|
||||||
@@ -194,7 +194,7 @@ def removeDeltaBgTask():
|
|||||||
"id=?", (cfg["task_id"],)).find()
|
"id=?", (cfg["task_id"],)).find()
|
||||||
if res and res["id"] == cfg["task_id"]:
|
if res and res["id"] == cfg["task_id"]:
|
||||||
data = MwCrontab.instance().delete(cfg["task_id"])
|
data = MwCrontab.instance().delete(cfg["task_id"])
|
||||||
if data[0]:
|
if data['status']:
|
||||||
cfg["task_id"] = -1
|
cfg["task_id"] = -1
|
||||||
mw.writeFile(getTaskDeltaConf(), json.dumps(cfg))
|
mw.writeFile(getTaskDeltaConf(), json.dumps(cfg))
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -2205,6 +2205,7 @@ location ^~ {from} {\n\
|
|||||||
log_file = self.acmeLogFile()
|
log_file = self.acmeLogFile()
|
||||||
|
|
||||||
cmd = 'export ACCOUNT_EMAIL=' + email + ' && ' + cmd + ' >> ' + log_file
|
cmd = 'export ACCOUNT_EMAIL=' + email + ' && ' + cmd + ' >> ' + log_file
|
||||||
|
# print(cmd)
|
||||||
result = mw.execShell(cmd)
|
result = mw.execShell(cmd)
|
||||||
|
|
||||||
# 开启代理
|
# 开启代理
|
||||||
|
|||||||
Reference in New Issue
Block a user