mirror of
https://gitlab.com/Shinobi-Systems/ShinobiCE.git
synced 2025-03-09 15:40:15 +00:00
Blue Turtle - The Refactoring
This commit is contained in:
parent
04011678fb
commit
b7d08eb500
67 changed files with 11651 additions and 8452 deletions
105
libs/plugins.js
Normal file
105
libs/plugins.js
Normal file
|
@ -0,0 +1,105 @@
|
|||
var socketIOclient = require('socket.io-client');
|
||||
module.exports = function(s,config,lang){
|
||||
//function for receiving detector data
|
||||
s.pluginEventController=function(d){
|
||||
switch(d.f){
|
||||
case'trigger':
|
||||
s.triggerEvent(d)
|
||||
break;
|
||||
case's.tx':
|
||||
s.tx(d.data,d.to)
|
||||
break;
|
||||
case's.sqlQuery':
|
||||
s.sqlQuery(d.query,d.values)
|
||||
break;
|
||||
case'log':
|
||||
s.systemLog('PLUGIN : '+d.plug+' : ',d)
|
||||
break;
|
||||
}
|
||||
}
|
||||
//multi plugin connections
|
||||
s.connectedPlugins={}
|
||||
s.pluginInitiatorSuccess=function(mode,d,cn){
|
||||
s.systemLog('pluginInitiatorSuccess',d)
|
||||
if(mode==='client'){
|
||||
//is in client mode (camera.js is client)
|
||||
cn.pluginEngine=d.plug
|
||||
if(!s.connectedPlugins[d.plug]){
|
||||
s.connectedPlugins[d.plug]={plug:d.plug}
|
||||
}
|
||||
s.systemLog('Connected to plugin : Detector - '+d.plug+' - '+d.type)
|
||||
switch(d.type){
|
||||
default:case'detector':
|
||||
s.ocv={started:s.timeObject(),id:cn.id,plug:d.plug,notice:d.notice,isClientPlugin:true};
|
||||
cn.ocv=1;
|
||||
s.tx({f:'detector_plugged',plug:d.plug,notice:d.notice},'CPU')
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
//is in host mode (camera.js is client)
|
||||
switch(d.type){
|
||||
default:case'detector':
|
||||
s.ocv={started:s.timeObject(),id:"host",plug:d.plug,notice:d.notice,isHostPlugin:true};
|
||||
break;
|
||||
}
|
||||
}
|
||||
s.connectedPlugins[d.plug].plugged=true
|
||||
s.tx({f:'readPlugins',ke:d.ke},'CPU')
|
||||
s.ocvTx({f:'api_key',key:d.plug})
|
||||
s.api[d.plug]={pluginEngine:d.plug,permissions:{},details:{},ip:'0.0.0.0'};
|
||||
}
|
||||
s.pluginInitiatorFail=function(mode,d,cn){
|
||||
if(s.connectedPlugins[d.plug])s.connectedPlugins[d.plug].plugged=false
|
||||
if(mode==='client'){
|
||||
//is in client mode (camera.js is client)
|
||||
cn.disconnect()
|
||||
}else{
|
||||
//is in host mode (camera.js is client)
|
||||
}
|
||||
}
|
||||
if(config.plugins&&config.plugins.length>0){
|
||||
config.plugins.forEach(function(v){
|
||||
s.connectedPlugins[v.id]={plug:v.id}
|
||||
if(v.enabled===false){return}
|
||||
if(v.mode==='host'){
|
||||
//is in host mode (camera.js is client)
|
||||
if(v.https===true){
|
||||
v.https='https://'
|
||||
}else{
|
||||
v.https='http://'
|
||||
}
|
||||
if(!v.port){
|
||||
v.port=80
|
||||
}
|
||||
var socket = socketIOclient(v.https+v.host+':'+v.port)
|
||||
s.connectedPlugins[v.id].tx = function(x){return socket.emit('f',x)}
|
||||
socket.on('connect', function(cn){
|
||||
s.systemLog('Connected to plugin (host) : '+v.id)
|
||||
s.connectedPlugins[v.id].tx({f:'init_plugin_as_host',key:v.key})
|
||||
});
|
||||
socket.on('init',function(d){
|
||||
s.systemLog('Initialize Plugin : Host',d)
|
||||
if(d.ok===true){
|
||||
s.pluginInitiatorSuccess("host",d)
|
||||
}else{
|
||||
s.pluginInitiatorFail("host",d)
|
||||
}
|
||||
});
|
||||
socket.on('ocv',s.pluginEventController);
|
||||
socket.on('disconnect', function(){
|
||||
s.connectedPlugins[v.id].plugged=false
|
||||
delete(s.api[v.id])
|
||||
s.systemLog('Plugin Disconnected : '+v.id)
|
||||
s.connectedPlugins[v.id].reconnector = setInterval(function(){
|
||||
if(socket.connected===true){
|
||||
clearInterval(s.connectedPlugins[v.id].reconnector)
|
||||
}else{
|
||||
socket.connect()
|
||||
}
|
||||
},1000*2)
|
||||
});
|
||||
s.connectedPlugins[v.id].ws = socket;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue