Merge branch 'dev' into 'master'
Holy Cannoli See merge request Shinobi-Systems/Shinobi!441fix-multi-trigger
commit
e7f2b443c1
|
@ -27,7 +27,7 @@ module.exports = function(s,config){
|
|||
{name: 'ip', type: 'string'},
|
||||
{name: 'code', length: 100, type: 'string'},
|
||||
{name: 'details', type: 'text'},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
]);
|
||||
await createTable('LoginTokens',[
|
||||
isMySQL ? {name: 'utf8', type: 'charset'} : null,
|
||||
|
@ -50,7 +50,7 @@ module.exports = function(s,config){
|
|||
{name: 'details', type: 'text'},
|
||||
{name: 'status', type: 'integer', length: 1, defaultTo: 0},
|
||||
{name: 'archive', type: 'tinyint', length: 1, defaultTo: 0},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
]);
|
||||
await createTable('Videos',[
|
||||
isMySQL ? {name: 'utf8', type: 'charset'} : null,
|
||||
|
@ -63,8 +63,8 @@ module.exports = function(s,config){
|
|||
{name: 'archive', type: 'tinyint', length: 1, defaultTo: 0},
|
||||
{name: 'objects', length: 510, type: 'string'},
|
||||
{name: 'saveDir', length: 255, type: 'string'},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'end', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'end', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'details', type: 'text'},
|
||||
// KEY `videos_index` (`time`)
|
||||
{name: ['time'], type: 'index', length: 'videos_index'},
|
||||
|
@ -80,8 +80,8 @@ module.exports = function(s,config){
|
|||
{name: 'status', type: 'integer', length: 1, defaultTo: 0},
|
||||
{name: 'archive', type: 'tinyint', length: 1, defaultTo: 0},
|
||||
{name: 'objects', length: 510, type: 'string'},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'end', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'end', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
]);
|
||||
await createTable('Events',[
|
||||
isMySQL ? {name: 'utf8', type: 'charset'} : null,
|
||||
|
@ -90,7 +90,7 @@ module.exports = function(s,config){
|
|||
{name: 'mid', length: 100, type: 'string'},
|
||||
{name: 'details', type: 'text'},
|
||||
{name: 'archive', type: 'tinyint', length: 1, defaultTo: 0},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
// KEY `events_index` (`ke`,`mid`,`time`)
|
||||
{name: ['ke', 'mid', 'time'], type: 'index', length: 'events_index'},
|
||||
]);
|
||||
|
@ -102,8 +102,8 @@ module.exports = function(s,config){
|
|||
{name: 'tag', length: 30, type: 'string'},
|
||||
{name: 'details', type: 'text'},
|
||||
{name: 'count', type: 'integer', length: 10, defaultTo: 1},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'end', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'end', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
]);
|
||||
await createTable('Timelapse Frames',[
|
||||
isMySQL ? {name: 'utf8', type: 'charset'} : null,
|
||||
|
@ -111,7 +111,7 @@ module.exports = function(s,config){
|
|||
{name: 'ke', length: 50, type: 'string'},
|
||||
{name: 'mid', length: 100, type: 'string'},
|
||||
{name: 'filename', length: 50, type: 'string'},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'size', type: 'integer'},
|
||||
{name: 'archive', length: 1, type: 'tinyint', defaultTo: 0},
|
||||
{name: 'saveDir', length: 255, type: 'string'},
|
||||
|
@ -126,7 +126,7 @@ module.exports = function(s,config){
|
|||
{name: 'mid', length: 100, type: 'string'},
|
||||
{name: 'href', type: 'text'},
|
||||
{name: 'filename', length: 50, type: 'string'},
|
||||
{name: 'time', type: 'timestamp'},
|
||||
{name: 'time', type: 'timestamp', defaultTo: currentTimestamp()},
|
||||
{name: 'size', type: 'integer'},
|
||||
{name: 'details', type: 'text'},
|
||||
]);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = function(s,config,lang){
|
||||
require('./events/onvif.js')(s,config,lang)
|
||||
require('./events/noEventsDetector.js')(s,config,lang)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
module.exports = function(s,config,lang){
|
||||
const {
|
||||
setNoEventsDetector,
|
||||
} = require('../monitor/utils.js')(s,config,lang);
|
||||
|
||||
s.onEventTrigger((d,filter) => {
|
||||
const groupKey = d.ke
|
||||
const monitorId = d.mid || d.id
|
||||
const monitorConfig = s.group[groupKey].rawMonitorConfigurations[monitorId]
|
||||
const monitorDetails = monitorConfig.details
|
||||
if(monitorDetails.detector === '1' && monitorDetails.detector_notrigger === '1'){
|
||||
setNoEventsDetector(monitorConfig)
|
||||
}
|
||||
})
|
||||
}
|
|
@ -414,9 +414,6 @@ module.exports = (s,config,lang,app,io) => {
|
|||
}
|
||||
})
|
||||
}
|
||||
if(monitorDetails.detector === '1' && monitorDetails.detector_notrigger === '1'){
|
||||
s.setNoEventsDetector(monitorConfig)
|
||||
}
|
||||
var detector_timeout
|
||||
if(!monitorDetails.detector_timeout||monitorDetails.detector_timeout===''){
|
||||
detector_timeout = 10
|
||||
|
|
|
@ -110,11 +110,7 @@ module.exports = async (s,config,lang,onFinish) => {
|
|||
console.log(data.toString())
|
||||
})
|
||||
}
|
||||
for (let i = 0; i < stdioPipes.length; i++) {
|
||||
cameraProcess.stdio[i].once('data',(data) => {
|
||||
completeResolve(cameraProcess)
|
||||
})
|
||||
}
|
||||
completeResolve(cameraProcess)
|
||||
}catch(err){
|
||||
completeResolve(null)
|
||||
s.systemLog(err)
|
||||
|
|
|
@ -74,16 +74,14 @@ module.exports = function(s,config,lang){
|
|||
s.getMonitorCpuUsage = function(e,callback){
|
||||
if(s.group[e.ke].activeMonitors[e.mid] && s.group[e.ke].activeMonitors[e.mid].spawn){
|
||||
const getUsage = function(callback2){
|
||||
s.readFile("/proc/" + s.group[e.ke].activeMonitors[e.mid].spawn.pid + "/stat", function(err, data){
|
||||
if(!err){
|
||||
const elems = data.toString().split(' ');
|
||||
const utime = parseInt(elems[13]);
|
||||
const stime = parseInt(elems[14]);
|
||||
|
||||
callback2(utime + stime);
|
||||
}else{
|
||||
clearInterval(0)
|
||||
}
|
||||
fs.promises.readFile("/proc/" + s.group[e.ke].activeMonitors[e.mid].spawn.pid + "/stat").then((data) => {
|
||||
const elems = data.toString().split(' ');
|
||||
const utime = parseInt(elems[13]);
|
||||
const stime = parseInt(elems[14]);
|
||||
callback2(utime + stime);
|
||||
}).catch((err) => {
|
||||
s.debugLog(err)
|
||||
clearInterval(0)
|
||||
})
|
||||
}
|
||||
getUsage(function(startTime){
|
||||
|
@ -271,15 +269,13 @@ module.exports = function(s,config,lang){
|
|||
}
|
||||
})
|
||||
}else{
|
||||
s.readFile(streamDir + 's.jpg',function(err,snapBuffer){
|
||||
if(err){
|
||||
sendTempImage()
|
||||
}else{
|
||||
resolve({
|
||||
screenShot: snapBuffer,
|
||||
isStaticFile: true
|
||||
})
|
||||
}
|
||||
fs.promises.readFile(streamDir + 's.jpg').then(function(snapBuffer){
|
||||
resolve({
|
||||
screenShot: snapBuffer,
|
||||
isStaticFile: true
|
||||
})
|
||||
}).catch(() => {
|
||||
sendTempImage()
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1010,7 +1010,7 @@ module.exports = (s,config,lang) => {
|
|||
async function createCameraFfmpegProcess(e){
|
||||
const groupKey = e.ke
|
||||
const monitorId = e.mid || e.id
|
||||
const activeMonitor = getActiveMonitor(groupKey,monitorId)
|
||||
var activeMonitor = getActiveMonitor(groupKey,monitorId)
|
||||
//launch ffmpeg (main)
|
||||
s.tx({
|
||||
f: 'monitor_starting',
|
||||
|
@ -1022,7 +1022,7 @@ module.exports = (s,config,lang) => {
|
|||
if(activeMonitor.spawn){
|
||||
attachMainProcessHandlers(e,fatalError)
|
||||
}else{
|
||||
s.debugLog(`Failed to Laucnh Monitor!`,)
|
||||
s.debugLog(`Failed to Launch Monitor!`)
|
||||
}
|
||||
return activeMonitor.spawn
|
||||
}
|
||||
|
|
|
@ -1437,7 +1437,11 @@ module.exports = function(s,config,lang,app,io){
|
|||
s.streamMp4FileOverHttp(filePath,req,res,!!req.query.pureStream)
|
||||
}
|
||||
}else{
|
||||
res.end(user.lang['File Not Found in Filesystem'])
|
||||
s.closeJsonResponse(res,{
|
||||
ok: false,
|
||||
msg: lang['File Not Found in Filesystem'],
|
||||
err: err
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue