var num = 0;
//查看任务日志
function getLogs(id){
var reqTimer = null;
var reqCount = 0;
var tips = layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var req_log_args = 'id='+id;
function requestLogs(layerIndex){
$.post('/crontab/logs', req_log_args, function(rdata){
if (reqCount == 0){
layer.close(tips);
}
if(!rdata.status) {
layer.close(layerIndex);
layer.msg(rdata.msg,{icon:2, time:2000});
clearInterval(reqTimer);
return;
};
if (rdata.msg == ''){
rdata.msg = '暂无数据!';
}
$("#crontab_log").html(rdata.msg);
//滚动到最低
var ob = document.getElementById('crontab_log');
ob.scrollTop = ob.scrollHeight;
reqCount++;
},'json');
}
layer.open({
type:1,
title:"任务执行日志",
area: ['60%','500px'],
shadeClose:false,
btn:["清空","关闭"],
closeBtn:1,
end: function(){
if (reqTimer){
clearInterval(reqTimer);
}
},
content:'
',
success:function(index,layer_index){
requestLogs(layer_index);
reqTimer = setInterval(function(){
requestLogs(layer_index);
},3000);
},
yes:function(index){
clearInterval(reqTimer);
closeLogs(id);
layer.close(index);
},
});
}
function getBackupName(hook_data, name){
for (var i = 0; i < hook_data.length; i++) {
if (hook_data[i]['name'] == name){
return hook_data[i]['title'];
}
}
return name;
}
function getCronData(page){
var load = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']});
$.post("/crontab/list?p="+page,'', function(rdata){
console.log(rdata);
layer.close(load);
var cbody = "";
if(rdata == ""){
cbody=""+lan.crontab.task_empty+" |
";
} else {
for(var i=0;i正常'
:'停用';
var cron_save = '--';
if (rdata.data[i]['save'] != ''){
cron_save = rdata.data[i]['save']+'份';
}
var cron_backupto = '-';
if (rdata.data[i]['stype'] == 'site' || rdata.data[i]['stype']=='path' || rdata.data[i]['stype']=='database' || rdata.data[i]['stype'].indexOf('database_')>-1 ){
cron_backupto = '本地磁盘';
if (rdata.data[i]['backup_to'] != 'localhost'){
cron_backupto = getBackupName(rdata['backup_hook'],rdata.data[i]['backup_to']);
}
}
cbody += " | \
"+rdata.data[i].name+" | \
"+status+" | \
"+rdata.data[i].type+" | \
"+rdata.data[i].cycle+" | \
"+cron_save +" | \
"+cron_backupto+" | \
"+rdata.data[i].add_time+" | \
\
执行 | \
编辑 | \
日志 | \
删除\
| \
";
}
}
$('#cronbody').html(cbody);
$('#softPage').html(rdata.list);
},'json');
}
// 设置计划任务状态
function setTaskStatus(id,status){
var confirm = layer.confirm(status == '0'?'计划任务暂停后将无法继续运行,您真的要停用这个计划任务吗?':'该计划任务已停用,是否要启用这个计划任务', {title:'提示',icon:3,closeBtn:1},function(index) {
if (index > 0) {
var loadT = layer.msg('正在设置状态,请稍后...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/crontab/set_cron_status',{id:id},function(rdata){
if (!rdata.status){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
return;
}
showMsg(rdata.msg,function(){
layer.close(loadT);
layer.close(confirm);
getCronData(1);
},{icon:rdata.status?1:2},2000);
},'json');
}
});
}
//执行任务脚本
function startTask(id){
var loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/start_task',data,function(rdata){
showMsg(rdata.msg, function(){
},{icon:rdata.status?1:2,time:2000});
},'json');
}
//清空日志
function closeLogs(id){
var loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/del_logs',data,function(rdata){
showMsg(rdata.msg, function(){
// layer.closeAll();
},{icon:rdata.status?1:2,time:2000});
},'json');
}
//删除
function planDel(id,name){
safeMessage(lan.get('del',[name]),'您确定要删除该任务吗?',function(){
var load = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
var data='id='+id;
$.post('/crontab/del',data,function(rdata){
showMsg(rdata.msg, function(){
layer.closeAll();
getCronData(1);
},{icon:rdata.status?1:2,time:2000});
},'json');
});
}
function isURL(str_url){
var strRegex = '^(https|http|ftp|rtsp|mms)?://.+';
var re=new RegExp(strRegex);
if (re.test(str_url)){
return (true);
}else{
return (false);
}
}
//提交
function planAdd(){
var name = $(".planname input[name='name']").val();
if(name == ''){
$(".planname input[name='name']").focus();
layer.msg('任务名称不能为空!',{icon:2});
return;
}
$("#cronConfig input[name='name']").val(name);
var type = $(".plancycle").find("b").attr("val");
$("#cronConfig input[name='type']").val(type);
var is1;
var is2 = 1;
switch(type){
case 'day-n':
is1=31;
break;
case 'hour-n':
is1=23;
break;
case 'minute-n':
is1=59;
break;
case 'month':
is1=31;
break;
}
var where1 = $('#excode_week b').attr('val');
$("#cronConfig input[name='where1']").val(where1);
if(where1 > is1 || where1 < is2){
$("#ptime input[name='where1']").focus();
layer.msg('表单不合法,请重新输入!',{icon:2});
return;
}
var hour = $("#ptime input[name='hour']").val();
if(hour > 23 || hour < 0){
$("#ptime input[name='hour']").focus();
layer.msg('小时值不合法!',{icon:2});
return;
}
$("#cronConfig input[name='hour']").val(hour);
var minute = $("#ptime input[name='minute']").val();
if(minute > 59 || minute < 0){
$("#ptime input[name='minute']").focus();
layer.msg('分钟值不合法!',{icon:2});
return;
}
$("#cronConfig input[name='minute']").val(minute);
var save = $("#save").val();
if(save < 0){
layer.msg('不能有负数!',{icon:2});
return;
}
$("#cronConfig input[name='save']").val(save);
$("#cronConfig input[name='week']").val($(".planweek").find("b").attr("val"));
var sType = $(".planjs").find("b").attr("val");
var sBody = encodeURIComponent($("#implement textarea[name='sBody']").val());
if (sType == 'toShell'){
if(sBody == ''){
$("#implement textarea[name='sBody']").focus();
layer.msg('脚本代码不能为空!',{icon:2});
return;
}
}
if(sType == 'toFile'){
if($("#viewfile").val() == ''){
layer.msg('请选择脚本文件!',{icon:2});
return;
}
}
var urladdress = $("#urladdress").val();
if(sType == 'toUrl'){
if(!isURL(urladdress)){
layer.msg('URL地址不正确!',{icon:2});
$("implement textarea[name='urladdress']").focus();
return;
}
}
// urladdress = encodeURIComponent(urladdress);
$("#cronConfig input[name='urladdress']").val(urladdress);
$("#cronConfig input[name='sType']").val(sType);
$("#cronConfig textarea[name='sBody']").val(decodeURIComponent(sBody));
if(sType == 'site' || sType == 'database' || sType == 'path'){
var backupTo = $(".planBackupTo").find("b").attr("val");
$("#backupTo").val(backupTo);
}
var sName = $("#sName").attr("val");
// if(sName == 'backupAll'){
// var alist = $("ul[aria-labelledby='backdata'] li a");
// var dataList = new Array();
// for(var i=1;i 59){
// if(hour >= 23) hour = 0;
// $("#cronConfig input[name='hour']").val(hour+1);
// minute = 5;
// }
// $("#cronConfig input[name='minute']").val(minute);
// $("#cronConfig input[name='name']").val(sTitle + '['+dataList[0]+']');
// $("#cronConfig input[name='sName']").val(dataList[0]);
// var pdata = $("#cronConfig").serialize() + '&sBody=&urladdress=';
// $.ajax({
// type:'POST',
// url:'/crontab/add',
// data:pdata,
// async: true,
// success:function(frdata){
// layer.close(loadT);
// if(frdata.status){
// successCount++;
// getCronData(1);
// }else{
// if(!errorMsg){
// errorMsg = '
'+lan.crontab.backup_all_err+'
';
// }
// errorMsg += ''+dataList[0]+' -> '+frdata.msg+''
// }
// dataList.splice(0,1);
// allAddCrontab(dataList,successCount,errorMsg);
// }
// });
// }
initDropdownMenu();
function initDropdownMenu(){
$(".dropdown ul li a").click(function(){
var txt = $(this).text();
var type = $(this).attr("value");
$(this).parents(".dropdown").find("button b").text(txt).attr("val",type);
switch(type){
case 'day':
closeOpt();
toHour();
toMinute();
break;
case 'day-n':
closeOpt();
toWhere1('天');
toHour();
toMinute();
break;
case 'hour':
closeOpt();
toMinute();
break;
case 'hour-n':
closeOpt();
toWhere1('小时');
toMinute();
break;
case 'minute-n':
closeOpt();
toWhere1('分钟');
break;
case 'week':
closeOpt();
toWeek();
toHour();
toMinute();
break;
case 'month':
closeOpt();
toWhere1('日');
toHour();
toMinute();
break;
case 'toFile':
toFile();
break;
case 'toShell':
toShell();
$(".controls").html('脚本内容');
break;
case 'rememory':
rememory();
$(".controls").html('提示');
break;
case 'site':
toBackup('sites');
$(".controls").html('备份网站');
break;
case 'database_mariadb':
case 'database_mongodb':
case 'database_postgresql':
case 'database_mysql-apt':
case 'database_mysql-yum':
case 'database':
toBackup(type);
$(".controls").html('备份数据库');
break;
case 'path':
toBackup('path');
$(".controls").html('备份目录');
break;
case 'logs':
toLogsHtml('logs');
$(".controls").html('切割网站');
break;
case 'toUrl':
toUrl();
$(".controls").html('URL地址');
break;
}
});
}
//备份
function toLogsHtml(type){
var sMsg = "";
switch(type){
case 'sites':
sMsg = '备份网站';
sType = "sites";
break;
case 'database_mariadb':
case 'database_mongodb':
case 'database_postgresql':
case 'database_mysql-apt':
case 'database_mysql-yum':
case 'database':
sMsg = '备份数据库';
suffix = type.replace('database','')
if (suffix != ''){
suffix = suffix.replace('_','')
sMsg = '备份数据库['+suffix+']';
}
sType = type;
break;
case 'logs':
sMsg = '切割日志';
sType = "logs";
break;
case 'path':
sMsg = '备份目录';
sType = "path";
break;
}
var data = 'type='+sType;
$.post('/crontab/get_data_list',data,function(rdata){
$(".planname input[name='name']").attr('readonly','true').css({"background-color":"#f6f6f6","color":"#666"});
var sOpt = "";
if(rdata.data.length == 0){
layer.msg(lan.public.list_empty,{icon:2})
return;
}
for(var i=0;i'+rdata.data[i].name+'['+rdata.data[i].ps+']';
}
if (sType != 'path'){
sOpt = '所有' + sOpt;
}
var orderOpt = '';
for (var i=0;i'+rdata.orderOpt[i].title+''
}
var changeDir = '';
if (sType == 'path'){
changeDir = '';
}
var sBody = '\
\
\
\
'+ changeDir +'\
\
保留最新
\
\
份\
';
$("#implement").html(sBody);
getselectname();
$('.changePathDir').click(function(){
changePathCallback($('#sName').val(),function(select_dir){
$(".planname input[name='name']").val('备份目录['+select_dir+']');
$('#implement .sname b').attr('val',select_dir).text(select_dir);
});
});
$(".dropdown ul li a").click(function(){
var sName = $("#sName").attr("val");
if(!sName) return;
$(".planname input[name='name']").val(sMsg+'['+sName+']');
});
},'json');
}
//备份
function toBackup(type){
var sMsg = "";
switch(type){
case 'sites':
sMsg = '备份网站';
sType = "sites";
break;
case 'database_mariadb':
case 'database_mongodb':
case 'database_postgresql':
case 'database_mysql-apt':
case 'database_mysql-yum':
case 'database':
sMsg = '备份数据库';
suffix = type.replace('database','')
if (suffix != ''){
suffix = suffix.replace('_','')
sMsg = '备份数据库['+suffix+']';
}
sType = type;
break;
case 'logs':
sMsg = '切割日志';
sType = "logs";
break;
case 'path':
sMsg = '备份目录';
sType = "path";
break;
}
var data = 'type='+sType;
$.post('/crontab/get_data_list',data,function(rdata){
$(".planname input[name='name']").attr('readonly','true').css({"background-color":"#f6f6f6","color":"#666"});
var sOpt = "";
if(rdata.data.length == 0){
layer.msg(lan.public.list_empty,{icon:2})
return;
}
for(var i=0;i'+rdata.data[i].name+'['+rdata.data[i].ps+']';
}
if (sType != 'path'){
sOpt = '所有' + sOpt;
}
var orderOpt = '';
for (var i=0;i'+rdata.orderOpt[i].title+''
}
var changeDir = '';
if (sType == 'path'){
changeDir = '';
}
var sBody = '\
\
\
\
'+ changeDir +'\
备份到
\
\
\
\
\
保留最新
\
\
份\
';
$("#implement").html(sBody);
getselectname();
$('.changePathDir').click(function(){
changePathCallback($('#sName').val(),function(select_dir){
$(".planname input[name='name']").val('备份目录['+select_dir+']');
$('#implement .sname b').attr('val',select_dir).text(select_dir);
});
});
$(".dropdown ul li a").click(function(){
var sName = $("#sName").attr("val");
if(!sName) return;
$(".planname input[name='name']").val(sMsg+'['+sName+']');
});
},'json');
}
// 编辑计划任务
function editTaskInfo(id){
layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/crontab/get_crond_find',{id:id},function(rdata){
layer.closeAll();
// console.log('get_crond_find:', rdata);
var sTypeName = '',sTypeDom = '',cycleName = '',cycleDom = '',weekName = '',weekDom = '',sNameName ='',sNameDom = '',backupsName = '',backupsDom ='';
obj = {
from:{
id:rdata.id,
name: rdata.name,
type: rdata['type'],
stype: rdata.stype,
where1: rdata.where1,
hour: rdata.where_hour,
minute: rdata.where_minute,
week: rdata.where1,
sbody: rdata.sbody,
sname: rdata.sname,
backup_to: rdata.backup_to,
save: rdata.save,
urladdress: rdata.urladdress,
},
sTypeArray:[['toShell','Shell脚本'],['site','备份网站'],['database','备份数据库'],['logs','日志切割'],['path','备份目录'],['rememory','释放内存'],['toUrl','访问URL']],
cycleArray:[['day','每天'],['day-n','N天'],['hour','每小时'],['hour-n','N小时'],['minute-n','N分钟'],['week','每星期'],['month','每月']],
weekArray:[[1,'周一'],[2,'周二'],[3,'周三'],[4,'周四'],[5,'周五'],[6,'周六'],[7,'周日']],
sNameArray:[],
backupsArray:[],
create:function(callback){
if (obj.from['stype'].indexOf('database_')>-1){
name = obj.from['stype'].replace('database_','');
sTypeName = '备份数据库['+name+']';
sTypeDom += ''+ sTypeName +'';
} else {
for(var i = 0; i '+ obj['sTypeArray'][i][1] +'';
}
}
for(var i = 0; i '+ obj['cycleArray'][i][1] +'';
}
for(var i = 0; i '+ obj['weekArray'][i][1] +'';
}
if(obj.from.stype == 'site' || obj.from.stype == 'database' || obj.from.stype == 'path' || obj.from.stype == 'logs' || obj.from['stype'].indexOf('database_')>-1){
$.post('/crontab/get_data_list',{type:obj.from.stype},function(rdata){
// console.log(rdata);
obj.sNameArray = rdata.data;
obj.sNameArray.unshift({name:'ALL',ps:'所有'});
obj.backupsArray = rdata.orderOpt;
obj.backupsArray.unshift({title:'服务器磁盘',name:'localhost'});
for(var i = 0; i '+ obj['sNameArray'][i]['ps'] +'';
}
for(var i = 0; i '+ obj['backupsArray'][i]['title'] +'';
}
callback();
},'json');
}else{
callback();
}
}
};
obj.create(function(){
var changeDir = '';
if (obj.from.stype == 'path'){
changeDir = '';
}
layer.open({
type:1,
title:'编辑计划任务-['+rdata.name+']',
area: ['850px','440px'],
skin:'layer-create-content',
shadeClose:false,
closeBtn:1,
content:'\
\
任务类型\
\
\
\
\
\
\
\
执行周期\
\
\
\
\
\
\
\
\
\
日
\
时
\
分
\
\
\
\
'+ sTypeName +'\
\
\
\
\
\
\
\
'+changeDir+'\
备份到
\
\
\
\
\
保留最新
\
\
份\
\
\
\
\
\
提示\
释放PHP、MYSQL、PURE-FTPD、OpenResty的内存占用,建议在每天半夜执行!
\
\
\
\
',
success:function(){
$('.changePathDir').click(function(){
changePathCallback($('#sName').val(),function(select_dir){
$('input[name="name"]').val('备份目录['+select_dir+']');
$('.sName_btn .sname b').attr('val',select_dir).text(select_dir);
obj.from.sname = select_dir;
});
});
if(obj.from.stype == 'toShell'){
$('.site_list').hide();
} else if (obj.from.stype == 'rememory') {
$('.site_list').hide();
} else if ( obj.from.stype == 'toUrl'){
$('.site_list').hide();
} else {
$('.site_list').show();
}
obj.from.minute = $('.minute_create').val();
obj.from.hour = $('.hour_create').val();
obj.from.where1 = $('.where1_create').val();
$('.sName_create').blur(function () {
obj.from.name = $(this).val();
});
$('.where1_create').blur(function () {
obj.from.where1 = $(this).val();
});
$('.hour_create').blur(function () {
obj.from.hour = $(this).val();
});
$('.minute_create').blur(function () {
obj.from.minute = $(this).val();
});
$('.save_create').blur(function () {
obj.from.save = $(this).val();
});
$('.sBody_create').blur(function () {
obj.from.sbody = $(this).val();
});
$('.url_create').blur(function () {
obj.from.urladdress = $(this).val();
});
$('[aria-labelledby="cycle"] a').unbind().click(function () {
$('.cycle_btn').find('b').attr('val',$(this).attr('value')).html($(this).html());
var type = $(this).attr('value');
switch(type){
case 'day':
$('.week_btn').hide();
$('.where1_input').hide();
$('.hour_input').show().find('input').val('1');
$('.minute_input').show().find('input').val('30');
obj.from.week = '';
obj.from.type = '';
obj.from.hour = 1;
obj.from.minute = 30;
break;
case 'day-n':
$('.week_btn').hide();
$('.where1_input').show().find('input').val('1');
$('.hour_input').show().find('input').val('1');
$('.minute_input').show().find('input').val('30');
obj.from.week = '';
obj.from.where1 = 1;
obj.from.hour = 1;
obj.from.minute = 30;
break;
case 'hour':
$('.week_btn').hide();
$('.where1_input').hide();
$('.hour_input').hide();
$('.minute_input').show().find('input').val('30');
obj.from.week = '';
obj.from.where1 = '';
obj.from.hour = '';
obj.from.minute = 30;
break;
case 'hour-n':
$('.week_btn').hide();
$('.where1_input').hide();
$('.hour_input').show().find('input').val('1');
$('.minute_input').show().find('input').val('30');
obj.from.week = '';
obj.from.where1 = '';
obj.from.hour = 1;
obj.from.minute = 30;
break;
case 'minute-n':
$('.week_btn').hide();
$('.where1_input').hide();
$('.hour_input').hide();
$('.minute_input').show();
obj.from.week = '';
obj.from.where1 = '';
obj.from.hour = '';
obj.from.minute = 30;
console.log(obj.from);
break;
case 'week':
$('.week_btn').show();
$('.where1_input').hide();
$('.hour_input').show();
$('.minute_input').show();
obj.from.week = 1;
obj.from.where1 = '';
obj.from.hour = 1;
obj.from.minute = 30;
break;
case 'month':
$('.week_btn').hide();
$('.where1_input').show();
$('.hour_input').show();
$('.minute_input').show();
obj.from.week = '';
obj.from.where1 = 1;
obj.from.hour = 1;
obj.from.minute = 30;
break;
}
obj.from.type = $(this).attr('value');
});
$('[aria-labelledby="week"] a').unbind().click(function () {
$('.week_btn').find('b').attr('val',$(this).attr('value')).html($(this).html());
obj.from.week = $(this).attr('value');
});
$('[aria-labelledby="backupTo"] a').unbind().click(function () {
$('.backup_btn').find('b').attr('val',$(this).attr('value')).html($(this).html());
obj.from.backup_to = $(this).attr('value');
});
$('.plan-submits').unbind().click(function(){
if(obj.from.type == 'hour-n'){
obj.from.where1 = obj.from.hour;
obj.from.hour = '';
} else if(obj.from.type == 'minute-n') {
obj.from.where1 = obj.from.minute;
obj.from.minute = '';
}
var loadT = layer.msg('正在保存编辑内容,请稍后...',{icon:16,time:0,shade: [0.3, '#000']});
$.post('/crontab/modify_crond',obj.from,function(rdata){
if (!rdata.status){
layer.msg(rdata.msg,{icon:rdata.status?1:2});
return;
}
showMsg(rdata.msg, function(){
layer.closeAll();
getCronData(1);
initDropdownMenu();
},{icon:rdata.status?1:2}, 2000);
},'json');
});
}
,cancel: function(){
initDropdownMenu();
}
});
});
},'json');
}
//下拉菜单名称
function getselectname(){
$(".dropdown ul li a").click(function(){
var txt = $(this).text();
var type = $(this).attr("value");
$(this).parents(".dropdown").find("button b").text(txt).attr("val",type);
});
}
//清理
function closeOpt(){
$("#ptime").html('');
}
//星期
function toWeek(){
var mBody = '\
\
\
';
$("#ptime").html(mBody);
getselectname();
}
//指定1
function toWhere1(ix){
var mBody ='\
\
'+ix+'\
';
$("#ptime").append(mBody);
}
//小时
function toHour(){
var mBody = '\
\
小时\
';
$("#ptime").append(mBody);
}
//分钟
function toMinute(){
var mBody = '\
\
分钟\
';
$("#ptime").append(mBody);
}
//从文件
function toFile(){
var tBody = '\
';
$("#implement").html(tBody);
$(".planname input[name='name']").removeAttr('readonly style').val("");
}
//从脚本
function toShell(){
var tBody = "";
$("#implement").html(tBody);
$(".planname input[name='name']").removeAttr('readonly style').val("");
}
//从脚本
function toUrl(){
var tBody = "";
$("#implement").html(tBody);
$(".planname input[name='name']").removeAttr('readonly style').val("");
}
//释放内存
function rememory(){
$(".planname input[name='name']").removeAttr('readonly style').val("");
$(".planname input[name='name']").val(lan.crontab.mem);
$("#implement").html(lan.crontab.mem_ps);
return;
}
//上传
function fileupload(){
$("#sFile").change(function(){
$("#viewfile").val($("#sFile").val());
});
$("#sFile").click();
}