From 301337c140b25d0c088722c8fa0470ed1319972f Mon Sep 17 00:00:00 2001 From: Moe Date: Tue, 12 Jun 2018 14:27:10 -0700 Subject: [PATCH] fix cron.js --- cron.js | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/cron.js b/cron.js index e872eed..b257850 100644 --- a/cron.js +++ b/cron.js @@ -10,7 +10,9 @@ var spawn = require('child_process').spawn; var config=require('./conf.json'); //set option defaults -s={}; +s={ + utcOffset : moment().utcOffset() +}; if(config.cron===undefined)config.cron={}; if(config.cron.deleteOld===undefined)config.cron.deleteOld=true; if(config.cron.deleteOrphans===undefined)config.cron.deleteOrphans=false; @@ -23,6 +25,8 @@ if(config.cron.deleteFileBins===undefined)config.cron.deleteFileBins=true; if(config.cron.interval===undefined)config.cron.interval=1; if(config.databaseType===undefined){config.databaseType='mysql'} if(config.databaseLogs===undefined){config.databaseLogs=false} +if(config.useUTC===undefined){config.useUTC=false} +if(config.debugLog===undefined){config.debugLog=false} if(!config.ip||config.ip===''||config.ip.indexOf('0.0.0.0')>-1)config.ip='localhost'; if(!config.videosDir)config.videosDir=__dirname+'/videos/'; @@ -102,11 +106,18 @@ s.sqlQuery = function(query,values,onMoveOn,hideLog){ } onMoveOn(err,r) }else{ - console.log(onMoveOn) + s.debugLog('onMoveOn',onMoveOn) } }) } +s.debugLog = function(arg1,arg2){ + if(config.debugLog === true){ + if(!arg2)arg2 = '' + console.log(arg1,arg2) + } +} + //containers s.overlapLock={}; s.alreadyDeletedRowsWithNoVideosOnStart={}; @@ -127,6 +138,12 @@ s.moment=function(e,x){ if(!e){e=new Date};if(!x){x='YYYY-MM-DDTHH-mm-ss'}; return moment(e).format(x); } +s.utcToLocal = function(time){ + return moment.utc(time).utcOffset(s.utcOffset).format() +} +s.localToUtc = function(time){ + return moment(time).utc() +} s.nameToTime=function(x){x=x.replace('.webm','').replace('.mp4','').split('T'),x[1]=x[1].replace(/-/g,':');x=x.join(' ');return x;} io = require('socket.io-client')('ws://'+config.ip+':'+config.port);//connect to master s.cx=function(x){x.cronKey=config.cron.key;return io.emit('cron',x)} @@ -260,12 +277,18 @@ s.deleteRowsWithNoVideo=function(v,callback){ if(evs&&evs[0]){ es.del=[];es.ar=[v.ke]; evs.forEach(function(ev){ - ev.dir=s.getVideoDirectory(ev)+s.moment(ev.time)+'.'+ev.ext; - if(fs.existsSync(ev.dir)!==true){ + var details = JSON.parse(ev.details) + var filename = ev.time + var dir = s.getVideoDirectory(ev)+s.moment(filename)+'.'+ev.ext; + var fileExists = fs.existsSync(dir) + if(details.isUTC === true){ + filename = s.localToUtc(filename).format('YYYY-MM-DDTHH-mm-ss') + dir = s.getVideoDirectory(ev)+filename+'.'+ev.ext; + fileExists = fs.existsSync(dir) + } + if(fileExists !== true){ s.video('delete',ev) - es.del.push('(mid=? AND time=?)'); - es.ar.push(ev.mid),es.ar.push(ev.time); - s.tx({f:'video_delete',filename:s.moment(ev.time)+'.'+ev.ext,mid:ev.mid,ke:ev.ke,time:ev.time,end:s.moment(new Date,'YYYY-MM-DD HH:mm:ss')},'GRP_'+ev.ke); + s.tx({f:'video_delete',filename:filename+'.'+ev.ext,mid:ev.mid,ke:ev.ke,time:ev.time,end:s.moment(new Date,'YYYY-MM-DD HH:mm:ss')},'GRP_'+ev.ke); } }); if(es.del.length>0){ @@ -402,6 +425,7 @@ s.processUser = function(number,rows){ //no user object given return } + s.debugLog(v) if(!s.alreadyDeletedRowsWithNoVideosOnStart[v.ke]){ s.alreadyDeletedRowsWithNoVideosOnStart[v.ke]=false; } @@ -415,6 +439,9 @@ s.processUser = function(number,rows){ //days to keep videos if(!v.d.days||v.d.days==''){v.d.days=5}else{v.d.days=parseFloat(v.d.days)}; s.sqlQuery('SELECT * FROM Monitors WHERE ke=?', [v.ke], function(err,rr) { + if(!v.d.filters||v.d.filters==''){ + v.d.filters={}; + } rr.forEach(function(b,m){ b.details=JSON.parse(b.details); if(b.details.max_keep_days&&b.details.max_keep_days!==''){ @@ -443,10 +470,15 @@ s.processUser = function(number,rows){ } }) s.deleteOldLogs(v,function(){ + s.debugLog('deleteOldLogs') s.deleteOldFileBins(v,function(){ + s.debugLog('deleteOldFileBins') s.deleteOldEvents(v,function(){ + s.debugLog('deleteOldEvents') s.checkFilterRules(v,function(){ + s.debugLog('checkFilterRules') s.deleteRowsWithNoVideo(v,function(){ + s.debugLog('deleteRowsWithNoVideo') s.checkForOrphanedFiles(v,function(){ //done user, unlock current, and do next s.overlapLock[v.ke]=false; @@ -458,6 +490,8 @@ s.processUser = function(number,rows){ }) }) }) + }else{ + s.processUser(number+1,rows) } } //recursive function