server loads everything correct now. still a lot of cleansing to do

This commit is contained in:
Dominic Bosch 2013-11-18 08:49:48 +01:00
parent efbb179832
commit a6c3dd4510
3 changed files with 18 additions and 29 deletions

View file

@ -8,8 +8,6 @@ var path = require('path'),
listRules = {},
listActionModules = {},
isRunning = true,
actionsLoaded = false,
eventsLoaded = false,
ml, poller, db;
exports = module.exports = function(args) {
@ -18,10 +16,7 @@ exports = module.exports = function(args) {
ml = require('./module_loader')(args);
poller = cp.fork(path.resolve(__dirname, 'eventpoller'), [log.getLogType()]);
poller.on('message', function(evt) {
if(evt.event === 'ep_finished_loading') {
eventsLoaded = true;
tryToLoadRules();
} else exports.pushEvent(evt);
exports.pushEvent(evt);
});
//start to poll the event queue
pollQueue();
@ -34,16 +29,14 @@ exports = module.exports = function(args) {
* @param {String} db_port the db port
* @param {String} crypto_key the key to be used for encryption on the db, max legnth 256
*/
exports.addDBLink = function(db_link) { db = db_link; };
exports.loadActions = function(cb) {
exports.addDBLinkAndLoadActionsAndRules = function(db_link) {
db = db_link;
if(ml && db) db.getActionModules(function(err, obj) {
if(err) log.error('EN', 'retrieving Action Modules from DB!');
else {
if(!obj) {
log.print('EN', 'No Action Modules found in DB!');
actionsLoaded = true;
tryToLoadRules();
loadRulesFromDB();
} else {
var m, semaphore = 0;
for(var el in obj) {
@ -53,8 +46,7 @@ exports.loadActions = function(cb) {
db.getActionModuleAuth(el, function(mod) {
return function(err, obj) {
if(--semaphore == 0) {
actionsLoaded = true;
tryToLoadRules();
loadRulesFromDB();
}
if(obj && mod.loadCredentials) mod.loadCredentials(JSON.parse(obj));
};
@ -67,12 +59,10 @@ exports.loadActions = function(cb) {
else log.severe('EN', new Error('Module Loader not defined!'));
};
function tryToLoadRules() {
if(db && eventsLoaded && actionsLoaded) {
db.getRules(function(err, obj) {
for(var el in obj) exports.loadRule(JSON.parse(obj[el]));
});
}
function loadRulesFromDB() {
if(db) db.getRules(function(err, obj) {
for(var el in obj) exports.loadRule(JSON.parse(obj[el]));
});
}
/**

View file

@ -19,9 +19,6 @@ var fs = require('fs'),
function init() {
//FIXME ensure eventpoller receives the log method from the engine
console.log('EP receives args:');
console.log('logmeth: ' + parseInt(process.argv[2]) || 0);
console.log(process.argv);
if(process.argv.length > 2) log({ logType: parseInt(process.argv[2]) || 0 });
var args = { logType: log.getLogType() };
ml = require('./module_loader')(args);
@ -34,15 +31,15 @@ function init() {
function loadEventModules() {
//TODO eventpoller will not load event modules from filesystem, this will be done by
// the moduel manager and the eventpoller receives messages about new/updated active rules
//TODO eventpoller will not load event modules from db on init, this will be done
// when receiving messages about new/updated active rules
if(db && ml) db.getEventModules(function(err, obj) {
if(err) log.error('EP', 'retrieving Event Modules from DB!');
else {
if(!obj) {
log.print('EP', 'No Event Modules found in DB!');
process.send({ event: 'ep_finished_loading' });
//process.send({ event: 'ep_finished_loading' });
} else {
var m, semaphore = 0;
for(var el in obj) {
@ -51,7 +48,7 @@ function loadEventModules() {
m = ml.requireFromString(obj[el], el);
db.getEventModuleAuth(el, function(mod) {
return function(err, obj) {
if(--semaphore === 0) process.send({ event: 'ep_finished_loading' });
//if(--semaphore === 0) process.send({ event: 'ep_finished_loading' });
if(obj && mod.loadCredentials) mod.loadCredentials(JSON.parse(obj));
};
}(m));
@ -99,7 +96,8 @@ function initMessageActions() {
}
});
}
//FIXME the eventpoller doesn't do the loading! this is done by the module manager,
// the ep only gets notified of new rules that require active polling!
function initAdminCommands() {
listAdminCommands['loadevent'] = function(args) {
if(ml) ml.loadModule('mod_events', args[2], loadEventCallback);

View file

@ -48,8 +48,8 @@ function init() {
engine = require('./engine')(args);
http_listener = require('./http_listener')(args);
mm = require('./module_manager')(args);
db = require('./db_interface')(args);
log.print('RS', 'Initialzing DB');
db = require('./db_interface')(args);
objCmds = {
'loadrules': mm.loadRulesFile,
'loadaction': mm.loadActionModule,
@ -58,7 +58,8 @@ function init() {
'loadevents': engine.loadEventModules,
'shutdown': shutDown
};
engine.addDBLink(db);
log.print('RS', 'Initialzing engine');
engine.addDBLinkAndLoadActionsAndRules(db);
log.print('RS', 'Initialzing http listener');
http_listener.addHandlers(handleAdminCommands, engine.pushEvent);
log.print('RS', 'Initialzing module manager');