Skip to content

Instantly share code, notes, and snippets.

@whiskers75
Created August 13, 2014 15:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whiskers75/c7151c1ace8f83313992 to your computer and use it in GitHub Desktop.
Save whiskers75/c7151c1ace8f83313992 to your computer and use it in GitHub Desktop.
var ts6 = require('./ts6.js');
var fs = require('fs');
var server = new ts6.Server({host: 'whsk.uk', port: 194, sid: '42D', pass: '***', sname: 'serv.js', sdesc: 'whiskers75\'s Node.js services'});
var ServServ = server.mkserv('ServServ', 'ServServ', 'serv.js', 'Service Services');
var services = {};
var servobjs = {};
var eob_done = false;
server.reload = function() {
ServServ.privmsg('#services', 'Loading services...');
delete services;
ServServ.privmsg('#services', '✓ Removed old data');
var list = fs.readdirSync('./services');
ServServ.privmsg('#services', '✓ Loaded service list');
list.forEach(function(item) {
if (item.split('.')[1] == 'js') {
try {
var reload = false;
if (require.cache[__dirname + '/services/' + item]) {
reload = true;
delete require.cache[__dirname + '/services/' + item];
}
services[item.split('.')[0]] = require(__dirname + '/services/' + item);
if (servobjs[item.split('.')[0]]) {
services[item.split('.')[0]].o = servobjs[item.split('.')[0]].recreate();
}
else {
services[item.split('.')[0]].o = server.mkserv(item.split('.')[0], item.split('.')[0], 'serv.js', 'Loaded from ' + item);
}
services[item.split('.')[0]].onLoad();
if (eob_done) services[item.split('.')[0]].eob();
services[item.split('.')[0]].s = server;
servobjs[item.split('.')[0]] = services[item.split('.')[0]].o;
ServServ.privmsg('#services', '✓ Loaded ' + item);
}
catch (fail) {
ServServ.privmsg('#services', '✗ Failed to load ' + item);
console.log(fail.stack);
}
}
});
};
server.reload();
server.on('eob', function() {
eob_done = true;
ServServ.join('#services');
Object.keys(services).forEach(function(srv) {
services[srv].eob();
});
});
server.on('privmsg', function(from, target, message) {
Object.keys(services).forEach(function(srv) {
if (target.id == servobjs[srv].id) {
console.log(srv);
services[srv].privmsg(from, target, message);
}
});
});
process.on('SIGHUP', server.reload);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment