This commit is contained in:
parent
ffcceb16cf
commit
0b37a34528
|
|
@ -77,43 +77,46 @@ def downloadFile(url, filename):
|
|||
if not mw.isAppleSystem():
|
||||
os.system('chown www.www ' + filename)
|
||||
|
||||
writeLogs('done')
|
||||
writeLogs(filename + ' download success!')
|
||||
except Exception as e:
|
||||
writeLogs(str(e))
|
||||
return True
|
||||
|
||||
def downloadHook(count, blockSize, totalSize):
|
||||
# 下载文件进度回调
|
||||
global pre
|
||||
used = count * blockSize
|
||||
pre1 = int((100.0 * used / totalSize))
|
||||
if pre == (100 - pre1):
|
||||
return
|
||||
speed = {'total': totalSize, 'used': used, 'pre': pre1}
|
||||
pre = int((100.0 * used / totalSize))
|
||||
speed = {'total': totalSize, 'used': used, 'pre': pre}
|
||||
writeLogs(json.dumps(speed))
|
||||
|
||||
def runPanelTask():
|
||||
# 站点过期检查
|
||||
siteEdateCheck()
|
||||
|
||||
lock_file = mw.getTriggerTaskLockFile()
|
||||
# mw.writeFile(lock_file,'True')
|
||||
try:
|
||||
bash_list = thisdb.getTaskList(status=-1)
|
||||
for task in bash_list:
|
||||
thisdb.setTaskStatus(task['id'], 0)
|
||||
if os.path.exists(lock_file):
|
||||
bash_list = thisdb.getTaskList(status=-1)
|
||||
for task in bash_list:
|
||||
thisdb.setTaskStatus(task['id'], 0)
|
||||
|
||||
run_list = thisdb.getTaskList(status=0)
|
||||
for run_task in run_list:
|
||||
start = int(time.time())
|
||||
thisdb.setTaskData(run_task['id'], start=start)
|
||||
thisdb.setTaskStatus(run_task['id'], -1)
|
||||
if run_task['type'] == 'download':
|
||||
argv = run_task['cmd'].split('|mw|')
|
||||
downloadFile(argv[0], argv[1])
|
||||
elif run_task['type'] == 'execshell':
|
||||
execShell(run_task['cmd'])
|
||||
end = int(time.time())
|
||||
thisdb.setTaskData(run_task['id'], end=end)
|
||||
thisdb.setTaskStatus(run_task['id'], 1)
|
||||
run_list = thisdb.getTaskList(status=0)
|
||||
for run_task in run_list:
|
||||
start = int(time.time())
|
||||
thisdb.setTaskData(run_task['id'], start=start)
|
||||
thisdb.setTaskStatus(run_task['id'], -1)
|
||||
|
||||
if run_task['type'] == 'download':
|
||||
argv = run_task['cmd'].split('|mw|')
|
||||
downloadFile(argv[0], argv[1])
|
||||
elif run_task['type'] == 'execshell':
|
||||
execShell(run_task['cmd'])
|
||||
|
||||
end = int(time.time())
|
||||
thisdb.setTaskData(run_task['id'], end=end)
|
||||
thisdb.setTaskStatus(run_task['id'], 1)
|
||||
os.remove(lock_file)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
# ---------------------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
|
@ -185,7 +186,7 @@ def delete_dir():
|
|||
path = request.form.get('path', '')
|
||||
return file.dirDelete(path)
|
||||
|
||||
# 删除文件
|
||||
# 下载文件
|
||||
@blueprint.route('/download', endpoint='download', methods=['GET'])
|
||||
@panel_login_required
|
||||
def download():
|
||||
|
|
@ -199,6 +200,23 @@ def download():
|
|||
response = make_response(send_from_directory(os.path.dirname(filename), os.path.basename(filename), as_attachment=is_attachment))
|
||||
return response
|
||||
|
||||
# 远程下载
|
||||
@blueprint.route('/download_file', endpoint='download_file', methods=['POST'])
|
||||
@panel_login_required
|
||||
def download_file():
|
||||
url = request.form.get('url', '')
|
||||
path = request.form.get('path', '')
|
||||
filename = request.form.get('filename', '')
|
||||
|
||||
execstr = url + '|mw|' + path + '/' + filename
|
||||
execstr = execstr.strip()
|
||||
|
||||
title = '下载文件[' + filename + ']'
|
||||
thisdb.addTaskByDownload(name=title, cmd=execstr)
|
||||
# self.setFileAccept(path + '/' + filename)
|
||||
mw.triggerTask()
|
||||
return mw.returnData(True, '已将下载任务添加到队列!')
|
||||
|
||||
# 日志清空
|
||||
@blueprint.route('/close_logs', endpoint='close_logs', methods=['POST'])
|
||||
@panel_login_required
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
# Author: midoks <midoks@163.com>
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
import json
|
||||
import time
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
|
@ -62,14 +64,12 @@ def get_task_speed():
|
|||
data['cmd'] = row['cmd']
|
||||
|
||||
if row['type'] == 'download':
|
||||
readLine = ""
|
||||
readLine = ''
|
||||
for i in range(3):
|
||||
try:
|
||||
readLine = mw.readFile(task_logfile)
|
||||
if len(readLine) > 10:
|
||||
data['msg'] = json.loads(readLine)
|
||||
data['isDownload'] = True
|
||||
break
|
||||
data['msg'] = json.loads(readLine)
|
||||
data['isDownload'] = True
|
||||
except Exception as e:
|
||||
if i == 2:
|
||||
thisdb.setTaskStatus(row['id'],0)
|
||||
|
|
|
|||
|
|
@ -1273,9 +1273,12 @@ def fileNameCheck(filename):
|
|||
return False
|
||||
return True
|
||||
|
||||
def getTriggerTaskLockFile():
|
||||
return getPanelDir() + '/logs/panel_task.lock'
|
||||
|
||||
def triggerTask():
|
||||
isTask = getPanelDir() + '/logs/panel_task.lock'
|
||||
writeFile(isTask, 'True')
|
||||
lock_file = getTriggerTaskLockFile()
|
||||
writeFile(lock_file, 'True')
|
||||
|
||||
def restartTask():
|
||||
initd = getPanelDir() + '/scripts/init.d/mw'
|
||||
|
|
|
|||
|
|
@ -1493,7 +1493,7 @@ function getReloads() {
|
|||
<div class='line-progress' style='width:" + h.msg.pre + "%'></div>\
|
||||
<span class='titlename'>" + h.task[g].name + "<a style='margin-left:130px;'>" + (toSize(h.msg.used) + "/" + toSize(h.msg.total)) + "</a></span>\
|
||||
<span class='com-progress'>" + h.msg.pre + "%</span>\
|
||||
<span class='state'>"+lan.bt.task_downloading+" <img src='/static/img/ing.gif'> | <a href=\"javascript:removeTask(" + h.task[g].id + ")\">"+lan.public.close+"</a></span>\
|
||||
<span class='state'>下载中<img src='/static/img/ing.gif'> | <a href=\"javascript:removeTask(" + h.task[g].id + ")\">"+lan.public.close+"</a></span>\
|
||||
</li>"
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,34 @@ def getTaskCount(
|
|||
def getTaskUnexecutedCount() -> int:
|
||||
return mw.M('tasks').where('status!=?',(1,)).count()
|
||||
|
||||
def addTaskByDownload(
|
||||
name: str | None = '下载文件',
|
||||
cmd: str | None = None,
|
||||
type: str | None = 'download',
|
||||
status: int | None = 0,
|
||||
):
|
||||
'''
|
||||
添加后台任务
|
||||
:name -> str 类型
|
||||
:cmd -> str 日志内容 (必填)
|
||||
:type -> str 用户ID
|
||||
'''
|
||||
if cmd is None:
|
||||
return False
|
||||
|
||||
add_time = mw.formatDate()
|
||||
insert_data = {
|
||||
'name':name,
|
||||
'type':type,
|
||||
'cmd':cmd,
|
||||
'start':0,
|
||||
'end':0,
|
||||
'status':status,
|
||||
'add_time':add_time,
|
||||
}
|
||||
mw.M('tasks').insert(insert_data)
|
||||
return True
|
||||
|
||||
def addTask(
|
||||
name: str | None = '常用任务',
|
||||
cmd: str | None = None,
|
||||
|
|
@ -77,7 +105,7 @@ def getTaskPage(
|
|||
return rdata
|
||||
|
||||
def getTaskFirstByRun() -> None:
|
||||
data = mw.M('tasks').where('status=?', (-1,)).field(__FIELD).order('id asc').find()
|
||||
data = mw.M('tasks').where('status=? or status=0', (-1,)).field(__FIELD).order('id asc').find()
|
||||
if data is None:
|
||||
return None
|
||||
return data
|
||||
|
|
|
|||
Loading…
Reference in New Issue