* 修复上次更新的UI问题。
* `FTP存储空间` 备份数据库修复。
* 修复计划任务执行Python脚本的编码问题。
* 添加,修改计划任务参数强校验。
pull/228/head
midoks 3 years ago
parent aa97982f6f
commit 063bc092e6
  1. 14
      README.md
  2. 2
      class/core/config_api.py
  3. 59
      class/core/crontab_api.py
  4. 73
      route/static/app/crontab.js
  5. 2
      scripts/update/centos.sh

@ -92,16 +92,12 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
```
### 版本更新 0.10.1
* MySQL添加外部导入功能。
* OpenResty添加性能调整功能。
* 优化ubuntu22.04安装过程。
* Debian9友好,【SSH终端 1.0】无法使用。
* phpMyAdmin优化,需要卸载重装。
* 文件管理解压直接覆盖FIX。
* 优化文件多选的BUG。
### 版本更新 0.10.2
* 修复上次更新的UI问题。
* `FTP存储空间` 备份数据库修复。
* 修复计划任务执行Python脚本的编码问题。
* 添加,修改计划任务参数强校验。
### JSDelivr安装地址

@ -15,7 +15,7 @@ from flask import request
class config_api:
__version = '0.10.1'
__version = '0.10.2'
def __init__(self):
pass

@ -115,6 +115,56 @@ class crontab_api:
'id=?', (sid,)).field(self.field).find()
return mw.getJson(data)
# 参数校验
def cronCheck(self, params):
if params['stype'] == 'site' or params['stype'] == 'database' or params['stype'] == 'logs':
if params['save'] == '':
return False, '保留份数不能为空!'
if params['type'] == 'day':
if params['hour'] == '':
return False, '小时不能为空!'
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'day-n':
if params['where1'] == '':
return False, '天不能为空!'
if params['hour'] == '':
return False, '小时不能为空!'
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'hour':
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'hour-n':
if params['hour'] == '':
return False, '小时不能为空!'
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'minute-n':
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'week':
if params['hour'] == '':
return False, '小时不能为空!'
if params['minute'] == '':
return False, '分钟不能为空!'
if params['type'] == 'month':
if params['where1'] == '':
return False, '日不能为空!'
if params['hour'] == '':
return False, '小时不能为空!'
if params['minute'] == '':
return False, '分钟不能为空!'
return True, 'OK'
def modifyCrondApi(self):
sid = request.form.get('id', '')
iname = request.form.get('name', '')
@ -147,6 +197,11 @@ class crontab_api:
'sbody': sbody,
'urladdress': urladdress,
}
is_check_pass, msg = self.cronCheck(params)
if not is_check_pass:
return mw.returnJson(is_check_pass, msg)
cuonConfig, get, name = self.getCrondCycle(params)
cronInfo = mw.M('crontab').where(
'id=?', (sid,)).field(self.field).find()
@ -210,6 +265,10 @@ class crontab_api:
'urladdress': urladdress,
}
is_check_pass, msg = self.cronCheck(params)
if not is_check_pass:
return mw.returnJson(is_check_pass, msg)
addData = self.add(params)
if addData > 0:
return mw.returnJson(True, '添加成功')

@ -68,8 +68,7 @@ function getCronData(page){
}
}
cbody += "<tr>\
<td><input type='checkbox' onclick='checkSelect();' title='"+rdata.data[i].name+"' name='id' value='"+rdata.data[i].id+"'></td>\
cbody += "<tr><td><input type='checkbox' onclick='checkSelect();' title='"+rdata.data[i].name+"' name='id' value='"+rdata.data[i].id+"'></td>\
<td>"+rdata.data[i].name+"</td>\
<td>"+status+"</td>\
<td>"+rdata.data[i].type+"</td>\
@ -87,7 +86,7 @@ function getCronData(page){
}
}
$('#cronbody').html(cbody);
$('#softPage').html(rdata.list)
$('#softPage').html(rdata.list);
},'json');
}
@ -97,12 +96,18 @@ function setTaskStatus(id,status){
if (index > 0) {
var loadT = layer.msg('正在设置状态,请稍后...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/crontab/set_cron_status',{id:id},function(rdata){
layer.closeAll();
if (!rdata.status){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
return;
}
showMsg(rdata.msg,function(){
layer.close(loadT);
layer.close(confirm);
layer.msg(rdata.data,{icon:rdata.status?1:2});
if(rdata.status) {
getCronData(1);
}
},{icon:rdata.status?1:2},2000);
},'json');
}
});
@ -110,22 +115,24 @@ function setTaskStatus(id,status){
//执行任务脚本
function startTask(id){
layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/start_task',data,function(rdata){
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:2});
showMsg(rdata.msg, function(){
layer.close(loadT);
},{icon:rdata.status?1:2,time:2000});
},'json');
}
//清空日志
function closeLogs(id){
layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/del_logs',data,function(rdata){
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:2});
showMsg(rdata.msg, function(){
layer.close(loadT);
},{icon:rdata.status?1:2,time:2000});
},'json');
}
@ -136,8 +143,8 @@ function planDel(id,name){
var load = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/del',data,function(rdata){
layer.close(load);
showMsg(rdata.msg, function(){
layer.close(load);
getCronData(1);
},{icon:rdata.status?1:2,time:2000});
},'json');
@ -234,15 +241,15 @@ function planAdd(){
break;
}
var where1 = $('#excode_week b').attr('val');
$("#set-Config input[name='where1']").val(where1);
if(where1 > is1 || where1 < is2){
$("#ptime input[name='where1']").focus();
layer.msg('表单不合法,请重新输入!',{icon:2});
return;
}
where1 = $('#excode_week b').attr('val');
$("#set-Config input[name='where1']").val(where1);
var hour = $("#ptime input[name='hour']").val();
if(hour > 23 || hour < 0){
$("#ptime input[name='hour']").focus();
@ -323,19 +330,31 @@ function planAdd(){
$("#set-Config input[name='where1']").val(where1);
}
if (type == 'day-n'){
var where1 = $("#ptime input[name='where1']").val();
$("#set-Config input[name='where1']").val(where1);
}
if (type == 'hour-n'){
var where1 = $("#ptime input[name='where1']").val();
$("#set-Config input[name='hour']").val(where1);
}
$("#set-Config input[name='sName']").val(sName);
layer.msg('正在添加,请稍候...!',{icon:16,time:0,shade: [0.3, '#000']});
var data = $("#set-Config").serialize() + '&sBody='+sBody + '&urladdress=' + urladdress;
console.log(data);
// console.log(data);
$.post('/crontab/add',data,function(rdata){
if(!rdata.status) {
layer.msg(rdata.msg,{icon:2, time:2000});
return;
}
showMsg(rdata.msg, function(){
layer.closeAll();
layer.msg(rdata.msg,{icon:rdata.status?1:2});
getCronData(1);
},{icon:rdata.status?1:2}, 2000);
},'json');
}
@ -829,12 +848,20 @@ function editTaskInfo(id){
obj.from.where1 = obj.from.minute;
obj.from.minute = '';
}
layer.msg('正在保存编辑内容,请稍后...',{icon:16,time:0,shade: [0.3, '#000']});
var loadT = layer.msg('正在保存编辑内容,请稍后...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/crontab/modify_crond',obj.from,function(rdata){
layer.closeAll();
getCronData(1);
if (!rdata.status){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
return;
}
showMsg(rdata.msg, function(){
layer.close(loadT);
getCronData(1);
initDropdownMenu();
},{icon:rdata.status?1:2}, 2000);
},'json');
});
},100);

@ -1,7 +1,7 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
LANG=en_US.UTF-8
export LANG=en_US.UTF-8
if [ -f /etc/motd ];then

Loading…
Cancel
Save