mirror of https://github.com/midoks/mdserver-web
parent
1d6f4feccb
commit
8c768e8a04
@ -0,0 +1,158 @@ |
|||||||
|
# coding:utf-8 |
||||||
|
|
||||||
|
import sys |
||||||
|
import io |
||||||
|
import os |
||||||
|
import time |
||||||
|
import json |
||||||
|
|
||||||
|
sys.path.append(os.getcwd() + "/class/core") |
||||||
|
import mw |
||||||
|
|
||||||
|
|
||||||
|
app_debug = False |
||||||
|
if mw.isAppleSystem(): |
||||||
|
app_debug = True |
||||||
|
|
||||||
|
|
||||||
|
def getPluginName(): |
||||||
|
return 'op_waf' |
||||||
|
|
||||||
|
|
||||||
|
def getPluginDir(): |
||||||
|
return mw.getPluginDir() + '/' + getPluginName() |
||||||
|
|
||||||
|
|
||||||
|
def getServerDir(): |
||||||
|
return mw.getServerDir() + '/' + getPluginName() |
||||||
|
|
||||||
|
|
||||||
|
def getTaskConf(): |
||||||
|
conf = getServerDir() + "/task_config.json" |
||||||
|
return conf |
||||||
|
|
||||||
|
|
||||||
|
def getConfigData(): |
||||||
|
try: |
||||||
|
return json.loads(mw.readFile(getTaskConf())) |
||||||
|
except: |
||||||
|
pass |
||||||
|
return [] |
||||||
|
|
||||||
|
|
||||||
|
def getConfigTpl(): |
||||||
|
tpl = { |
||||||
|
"name": "", |
||||||
|
"task_id": -1, |
||||||
|
} |
||||||
|
return tpl |
||||||
|
|
||||||
|
|
||||||
|
def createBgTask(): |
||||||
|
removeBgTask() |
||||||
|
args = { |
||||||
|
"period": "minute-n", |
||||||
|
"minute-n": "3", |
||||||
|
} |
||||||
|
createBgTaskByName(getPluginName(), args) |
||||||
|
|
||||||
|
|
||||||
|
def createBgTaskByName(name, args): |
||||||
|
cfg = getConfigTpl() |
||||||
|
_name = "[勿删]OP防火墙后台任务[" + name + "]" |
||||||
|
res = mw.M("crontab").field("id, name").where("name=?", (_name,)).find() |
||||||
|
if res: |
||||||
|
return True |
||||||
|
|
||||||
|
if "task_id" in cfg.keys() 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"]: |
||||||
|
print("计划任务已经存在!") |
||||||
|
return True |
||||||
|
import crontab_api |
||||||
|
api = crontab_api.crontab_api() |
||||||
|
|
||||||
|
period = args['period'] |
||||||
|
_hour = '' |
||||||
|
_minute = '' |
||||||
|
_where1 = '' |
||||||
|
_type_day = "day" |
||||||
|
if period == 'day': |
||||||
|
_type_day = 'day' |
||||||
|
_hour = args['hour'] |
||||||
|
_minute = args['minute'] |
||||||
|
elif period == 'minute-n': |
||||||
|
_type_day = 'minute-n' |
||||||
|
_where1 = args['minute-n'] |
||||||
|
_minute = '' |
||||||
|
|
||||||
|
cmd = ''' |
||||||
|
rname=%s |
||||||
|
plugin_path=%s |
||||||
|
script_path=%s |
||||||
|
logs_file=$plugin_path/${rname}.log |
||||||
|
''' % (name, getServerDir(), getPluginDir()) |
||||||
|
cmd += 'echo "★【`date +"%Y-%m-%d %H:%M:%S"`】 STSRT★" >> $logs_file' + "\n" |
||||||
|
cmd += 'echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $logs_file' + "\n" |
||||||
|
cmd += 'echo "python3 $script_path/tool_task.py run >> $logs_file 2>&1"' + "\n" |
||||||
|
cmd += 'python3 $script_path/tool_task.py run >> $logs_file 2>&1' + "\n" |
||||||
|
cmd += 'echo "【`date +"%Y-%m-%d %H:%M:%S"`】 END★" >> $logs_file' + "\n" |
||||||
|
cmd += 'echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> $logs_file' + "\n" |
||||||
|
|
||||||
|
params = { |
||||||
|
'name': _name, |
||||||
|
'type': _type_day, |
||||||
|
'week': "", |
||||||
|
'where1': _where1, |
||||||
|
'hour': _hour, |
||||||
|
'minute': _minute, |
||||||
|
'save': "", |
||||||
|
'backup_to': "", |
||||||
|
'stype': "toShell", |
||||||
|
'sname': '', |
||||||
|
'sbody': cmd, |
||||||
|
'urladdress': '', |
||||||
|
} |
||||||
|
|
||||||
|
task_id = api.add(params) |
||||||
|
if task_id > 0: |
||||||
|
cfg["task_id"] = task_id |
||||||
|
cfg["name"] = name |
||||||
|
|
||||||
|
_dd = getConfigData() |
||||||
|
_dd.append(cfg) |
||||||
|
mw.writeFile(getTaskConf(), json.dumps(_dd)) |
||||||
|
|
||||||
|
|
||||||
|
def removeBgTask(): |
||||||
|
cfg_list = getConfigData() |
||||||
|
for x in range(len(cfg_list)): |
||||||
|
cfg = cfg_list[x] |
||||||
|
if "task_id" in cfg.keys() 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"]: |
||||||
|
import crontab_api |
||||||
|
api = crontab_api.crontab_api() |
||||||
|
data = api.delete(cfg["task_id"]) |
||||||
|
if data[0]: |
||||||
|
cfg["task_id"] = -1 |
||||||
|
cfg_list[x] = cfg |
||||||
|
mw.writeFile(getTaskConf(), '[]') |
||||||
|
return True |
||||||
|
return False |
||||||
|
|
||||||
|
|
||||||
|
def run(): |
||||||
|
print('op lua run ok') |
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
if len(sys.argv) > 1: |
||||||
|
action = sys.argv[1] |
||||||
|
if action == "remove": |
||||||
|
removeBgTask() |
||||||
|
elif action == "add": |
||||||
|
createBgTask() |
||||||
|
elif action == "run": |
||||||
|
run() |
Loading…
Reference in new issue