1
0
Fork 0
mirror of https://gitlab.com/Shinobi-Systems/ShinobiCE.git synced 2025-03-09 15:40:15 +00:00

fix cron.js

This commit is contained in:
Moe 2018-06-12 14:27:10 -07:00
parent dd13f96452
commit 301337c140

48
cron.js
View file

@ -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