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:'
'
});
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:'\
\
任务类型 \
\
\
'+ sTypeName +' \
\
\
\
\
\
\
\
执行周期 \
\
\
'+ cycleName +' \
\
\
\
\
\
\
\
'+ weekName +' \
\
\
\
\
日
\
时
\
分
\
\
\
\
'+ sTypeName +' \
\
\
'+ sNameName +' \
\
\
\
\
\
\
\
备份到
\
\
\
'+ backupsName +' \
\
\
\
\
保留最新
\
\
份 \
\
\
\
\
'+ (obj.from.sType == "toShell" ?'脚本内容':'排除规则')+' \
\
\
\
提示 \
释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行!
\
\
\
\
'
});
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 ='\
\
'+rdata.data[0].name+'['+rdata.data[0].ps+'] \
\
\
'
}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.disk+' \
\
\
\
'+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 = '\
\
'+lan.crontab.TZZ1+' \
\
\
';
$("#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 = ' \
'+lan.public.upload+' ';
$("#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();
}