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){ layer.close(load); var cbody = ""; if(rdata.data.length == 0){ cbody="当前没有计划任务"; } 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.find('_mysql')>0 || sType == 'path'){ var backupTo = $(".planBackupTo").find("b").attr("val"); $("#backup_to").val(backupTo); } var sName = $("#sname").attr("val"); $("#cronConfig input[name='sname']").val(sName); // if(sName == 'backupAll'){ // var alist = $("ul[aria-labelledby='backdata'] li a"); // var dataList = new Array(); // for(var i=1;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:'
    \
    \ 任务类型\ \
    \
    \ 任务名称\
    \
    \
    \ 执行周期\ \
    \ \
    \
    \
    \
    \
    \ \
    \ 脚本内容\
    \
    \
    \ 提示\
    释放PHP、MYSQL、PURE-FTPD、OpenResty的内存占用,建议在每天半夜执行!
    \
    \
    \ URL地址\
    \
    \
    \
    保存编辑
    \
    \
    ', 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('释放内存'); $("#implement").html('释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行!'); return; } //上传 function fileupload(){ $("#sFile").change(function(){ $("#viewfile").val($("#sFile").val()); }); $("#sFile").click(); }