var num = 0; //查看任务日志 function GetLogs(id){ layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, '#000']}); var data='&id='+id $.post('/crontab?action=GetLogs',data,function(rdata){ layer.closeAll(); if(!rdata.status) { layer.msg(rdata.msg,{icon:2}); return; }; layer.open({ type:1, title:lan.crontab.task_log_title, area: ['700px','490px'], shadeClose:false, closeBtn:2, content:'
' +'
'+ (rdata.msg == '' ? '当前日志为空':rdata.msg) +'
' +'
' +'' +'' +'
' +'
' }); setTimeout(function(){ $("#crontab-log").text(rdata.msg); var div = document.getElementsByClassName('crontab-log')[0] div.scrollTop = div.scrollHeight; },200) }); } function getCronData(){ var laid=layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=GetCrontab',"",function(rdata){ layer.close(laid); var cbody=""; if(rdata == []){ layer.close(laid); cbody=""+lan.crontab.task_empty+"" } else{ $.post('/crontab?action=GetDataList',{type:'sites'},function(res){ layer.close(laid); for (var i = 0; i < rdata.length; i++){ var s_status = '正常 '; var optName = ''; if(rdata[i].status!=1) s_status = '停用 '; for(var j = 0; j < res.orderOpt.length;j++){ if(rdata[i].backupTo == 'localhost'){ optName = '本地磁盘'; }else if(rdata[i].backupTo == res.orderOpt[j].value){ optName = res.orderOpt[j].name; }else if(rdata[i].backupTo == ''){ optName = '' } } var arrs = ['site','database','path']; if ($.inArray(rdata[i].sType, arrs) == -1) optName = "--"; cbody += "\ \ "+rdata[i].name+"\ "+s_status+"\ "+rdata[i].type+"\ "+rdata[i].cycle+"\ "+(rdata[i].save?rdata[i].save+'份':'-')+"\ "+optName+"\ "+rdata[i].addtime+"\ \ "+lan.public.exec+" | \ "+lan.files.file_menu_edit+" | \ "+lan.public.log+" | \ "+lan.public.del+"\ \ " } $('#cronbody').html(cbody); }); } }); } // 编辑计划任务 function edit_task_info(id){ // var obj = {}; layer.msg(lan.public.the_get,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=get_crond_find',{id:id},function(rdata){ layer.closeAll(); var sTypeName = '',sTypeDom = '',cycleName = '',cycleDom = '',weekName = '',weekDom = '',sNameName ='',sNameDom = '',backupsName = '',backupsDom =''; obj = { from:{ id:rdata.id, name: rdata.name, type: rdata.type, where1: rdata.where1, hour: rdata.where_hour, minute: rdata.where_minute, week: rdata.where1, sType: rdata.sType, sBody: rdata.sBody == 'undefined' ? '' : rdata.sBody, sName: rdata.sName, backupTo: rdata.backupTo, 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){ 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'){ $.post('/crontab?action=GetDataList',{type:obj.from.sType == 'database'?'databases':'sites'},function(rdata){ obj.sNameArray = rdata.data; obj.sNameArray.unshift({name:'ALL',ps:'所有'}); obj.backupsArray = rdata.orderOpt; obj.backupsArray.unshift({name:'服务器磁盘',value:'localhost'}); for(var i = 0; i '+ obj['sNameArray'][i]['ps'] +''; } for(var i = 0; i '+ obj['backupsArray'][i]['name'] +''; } callback(); }); }else{ callback(); } } }; obj.create(function(){ layer.open({ type:1, title:'编辑计划任务-['+rdata.name+']', area: '850px', skin:'layer-create-content', shadeClose:false, closeBtn:2, content:'
\
\ 任务类型\ \
\
\ 任务名称\
\
\
\ 执行周期\ \
\ \
\
\
\
\
\ \
\ '+ (obj.from.sType == "toShell" ?'脚本内容':'排除规则')+'\
\
\
\ 提示\
释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行!
\
\
\ URL地址\
\
\
\
保存编辑
\
\
' }); setTimeout(function(){ 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(); } $('.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; 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.backupTo = $(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 = ''; } layer.msg('正在保存编辑内容,请稍后...',{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=modify_crond',obj.from,function(rdata){ layer.closeAll(); getCronData(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); }); },100); }); }); } // 设置计划任务状态 function set_task_status(id,status){ var confirm = layer.confirm(status == '0'?'计划任务暂停后将无法继续运行,您真的要停用这个计划任务吗?':'该计划任务已停用,是否要启用这个计划任务', {title:'提示',icon:3,closeBtn:2},function(index) { if (index > 0) { var loadT = layer.msg('正在设置状态,请稍后...',{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=set_cron_status',{id:id},function(rdata){ layer.closeAll(); layer.close(confirm); layer.msg(rdata.data,{icon:rdata.status?1:2}); if(rdata.status) getCronData(); }); } }); } //执行任务脚本 function StartTask(id){ layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab?action=StartTask',data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //清空日志 function CloseLogs(id){ layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab?action=DelLogs',data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); }); } //删除 function planDel(id,name){ SafeMessage(lan.get('del',[name]),lan.crontab.del_task,function(){ layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab?action=DelCrontab',data,function(rdata){ layer.closeAll(); getCronData(); setTimeout(function () { layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });},1000) }); }); } //批量删除 function allDeleteCron(){ var checkList = $("input[name=id]"); var dataList = new Array(); for(var i=0;i"+lan.get('del_all_task',[dataList.length])+"",function(){ layer.closeAll(); syncDeleteCron(dataList,0,''); }); } //模拟同步开始批量删除数据库 function syncDeleteCron(dataList,successCount,errorMsg){ if(dataList.length < 1) { layer.msg(lan.get('del_all_task_ok',[successCount]),{icon:1}); return; } var loadT = layer.msg(lan.get('del_all_task_the',[dataList[0].name]),{icon:16,time:0,shade: [0.3, '#000']}); $.ajax({ type:'POST', url:'/crontab?action=DelCrontab', data:'id='+dataList[0].id+'&name='+dataList[0].name, async: true, success:function(frdata){ layer.close(loadT); if(frdata.status){ successCount++; $("input[title='"+dataList[0].name+"']").parents("tr").remove(); }else{ if(!errorMsg){ errorMsg = '

'+lan.crontab.del_task_err+'

'; } errorMsg += '
  • '+dataList[0].name+' -> '+frdata.msg+'
  • ' } dataList.splice(0,1); syncDeleteCron(dataList,successCount,errorMsg); } }); } 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(lan.crontab.add_task_empty,{icon:2}); return; } $("#set-Config input[name='name']").val(name); var type = $(".plancycle").find("b").attr("val"); $("#set-Config input[name='type']").val(type); var where1 = $("#ptime input[name='where1']").val(); 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; } if(where1 > is1 || where1 < is2){ $("#ptime input[name='where1']").focus(); layer.msg(lan.public.input_err,{icon:2}); return; } $("#set-Config input[name='where1']").val(where1); var hour = $("#ptime input[name='hour']").val(); if(hour > 23 || hour < 0){ $("#ptime input[name='hour']").focus(); layer.msg(lan.crontab.input_hour_err,{icon:2}); return; } $("#set-Config input[name='hour']").val(hour); var minute = $("#ptime input[name='minute']").val(); if(minute > 59 || minute < 0){ $("#ptime input[name='minute']").focus(); layer.msg(lan.crontab.input_minute_err,{icon:2}); return; } $("#set-Config input[name='minute']").val(minute); var save = $("#save").val(); if(save < 0){ layer.msg(lan.crontab.input_number_err,{icon:2}); return; } $("#set-Config input[name='save']").val(save); $("#set-Config 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 == 'toFile'){ if($("#viewfile").val() == ''){ layer.msg(lan.crontab.input_file_err,{icon:2}); return; } }else{ if (sBody == '' && sType == 'toShell'){ $("#implement textarea[name='sBody']").focus(); layer.msg(lan.crontab.input_script_err,{icon:2}); return; } } var urladdress_1 = $("#urladdress_1").val(); if(sType == 'toUrl'){ if(!IsURL(urladdress_1)){ layer.msg(lan.crontab.input_url_err,{icon:2}); $("implement textarea[name='urladdress_1']").focus(); return; } } urladdress_1 = encodeURIComponent(urladdress_1); $("#set-Config input[name='sType']").val(sType); $("#set-Config 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 -1){ data = data.replace('&sName=&','&sName='+ encodeURIComponent($('#inputPath').val()) +'&') } $.post('/crontab?action=AddCrontab',data,function(rdata){ layer.closeAll(); getCronData(); setTimeout(function () { layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); }, 1000) }); } //批量添加任务 function allAddCrontab(dataList,successCount,errorMsg){ if(dataList.length < 1) { layer.msg(lan.get('add_all_task_ok',[successCount]),{icon:1}); return; } var loadT = layer.msg(lan.get('add',[dataList[0]]),{icon:16,time:0,shade: [0.3, '#000']}); var sType = $(".planjs").find("b").attr("val"); var minute = parseInt($("#set-Config input[name='minute']").val()); var hour = parseInt($("#set-Config input[name='hour']").val()); var sTitle = (sType == 'site')?lan.crontab.backup_site:lan.crontab.backup_database; if(sType == 'logs') sTitle = lan.crontab.backup_log; minute += 5; if(hour !== '' && minute > 59){ if(hour >= 23) hour = 0; $("#set-Config input[name='hour']").val(hour+1); minute = 5; } $("#set-Config input[name='minute']").val(minute); $("#set-Config input[name='name']").val(sTitle + '['+dataList[0]+']'); $("#set-Config input[name='sName']").val(dataList[0]); var pdata = $("#set-Config").serialize() + '&sBody=&urladdress_1='; $.ajax({ type:'POST', url:'/crontab?action=AddCrontab', data:pdata, async: true, success:function(frdata){ layer.close(loadT); if(frdata.status){ successCount++; getCronData(); }else{ if(!errorMsg){ errorMsg = '

    '+lan.crontab.backup_all_err+'

    '; } errorMsg += '
  • '+dataList[0]+' -> '+frdata.msg+'
  • ' } dataList.splice(0,1); allAddCrontab(dataList,successCount,errorMsg); } }); } $(".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(lan.crontab.day); toHour(); toMinute(); break; case 'hour': closeOpt(); toMinute(); break; case 'hour-n': closeOpt(); toWhere1(lan.crontab.hour); toMinute(); break; case 'minute-n': closeOpt(); toWhere1(lan.crontab.minute); break; case 'week': closeOpt(); toWeek(); toHour(); toMinute(); break; case 'month': closeOpt(); toWhere1(lan.crontab.sun); toHour(); toMinute(); break; case 'toFile': toFile(); break; case 'toShell': toShell(); $(".controls").html(lan.crontab.sbody); break; case 'path': toBackup('path'); $(".controls").html('备份目录'); break; case 'rememory': rememory(); $(".controls").html(lan.public.msg); break; case 'site': toBackup('sites'); $(".controls").html(lan.crontab.backup_site); break; case 'database': toBackup('databases'); $(".controls").html(lan.crontab.backup_database); break; case 'logs': toBackup('logs'); $(".controls").html(lan.crontab.log_site); break; case 'toUrl': toUrl(); $(".controls").html(lan.crontab.url_address); break; } }) //备份 function toBackup(type){ var sMsg = ""; switch(type){ case 'sites': sMsg = lan.crontab.backup_site; sType = "sites"; break; case 'databases': sMsg = lan.crontab.backup_database; sType = "databases"; break; case 'logs': sMsg = lan.crontab.backup_log; sType = "sites"; break; case 'path': sMsg = '备份目录'; sType = "sites"; break; } var data='type='+sType $.post('/crontab?action=GetDataList',data,function(rdata){ $(".planname input[name='name']").attr('readonly','true').css({"background-color":"#f6f6f6","color":"#666"}); if(type != 'path'){ var sOpt = "",sOptBody = ''; 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+']'; } sOptBody ='' }else{ $(".planname input[name='name']").val(sMsg+'[/www/wwwroot/]'); sOptBody = '
    ' setCookie('default_dir_path','/www/wwwroot/'); setCookie('path_dir_change','/www/wwwroot/'); setInterval(function(){ if(getCookie('path_dir_change') != getCookie('default_dir_path')){ var path_dir_change = getCookie('path_dir_change') $(".planname input").val('备份目录['+getCookie('path_dir_change')+']'); setCookie('default_dir_path',path_dir_change); } },500); } var orderOpt = '' for (var i=0;i'+rdata.orderOpt[i].name+'' } var sBody = sOptBody + '
    '+lan.crontab.backup_to+'
    \ \
    '+lan.crontab.save_new+'
    \ \ '+lan.crontab.save_num+'\
    '; if (sType == 'sites' && sMsg !== lan.crontab.backup_log) { sBody += '

    \

    排除规则
    \ \

    '; } $("#implement").html(sBody); getselectname(); $(".dropdown ul li a").click(function(){ var sName = $("#sName").attr("val"); if(!sName) return; $(".planname input[name='name']").val(sMsg+'['+sName+']'); }); if(type == "path"){ $('.planname input').attr('readonly',false).removeAttr('style'); } }); } //下拉菜单名称 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 = '
    \ \ '+lan.crontab.hour+'\
    '; $("#ptime").append(mBody); } //分钟 function toMinute(){ var mBody = '
    \ \ '+lan.crontab.minute+'\
    '; $("#ptime").append(mBody); } //从文件 function toFile(){ var tBody = '\ '; $("#implement").html(tBody); $(".planname input[name='name']").removeAttr('readonly style').val(""); } //从脚本 function toShell(){ var shell_body = ''; var shell_name = ''; if($("b[val='toShell']").text() === '同步时间'){ shell_name = '定期同步服务器时间'; shell_body = 'echo "|-正在尝试从0.pool.bt.cn同步时间..";\n\ ntpdate -u 0.pool.bt.cn\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从1.pool.bt.cn同步时间..";\n\ ntpdate -u 1.pool.bt.cn\n\ fi\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从0.asia.pool.ntp.org同步时间..";\n\ ntpdate -u 0.asia.pool.ntp.org\n\ fi\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从www.bt.cn同步时间..";\n\ getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time)\n\ if [ "${getBtTime}" ];then \n\ date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")"\n\ fi\n\ fi\n\ echo "|-正在尝试将当前系统时间写入硬件..";\n\ hwclock -w\n\ date\n\ echo "|-时间同步完成!";' } var tBody = ""; $("#implement").html(tBody); $(".planname input[name='name']").removeAttr('readonly style').val(shell_name); } function toPath() { } //从url 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(); }