UNPKG

@usestrict/wsproxy

Version:

This is a websocket to tcp proxy, written in node.js. It is dynamic and will proxy to various tcp servers.

110 lines (84 loc) 2.04 kB
/** * Modules manager */ var Modules = {} /** * Modules method stack * Array of functions to execute before by each method */ Modules.stack = { verify: [], //executes before connect connect: [] //executes once passed through connect } /** * Register new module */ Modules.load = function registerModule(folder) { var module = require('./modules/' + folder); for(var method in this.stack) { if(typeof module[method] === 'function') { this.stack[method].push( module[method] ); } } } /** * Run a module */ Modules.run = function runModule(method, index, _arguments, next) { if(Modules.stack[method].length <= index) { //No more modules to execute next(); return; } _arguments.push(next); //Push next function Modules.stack[method][index].apply(null, _arguments); } /** * Modules method's */ Modules.method = {} /** * Run through verify modules * They should all return true, if one returns false, we will break */ Modules.method.verify = function Verify(info, callback) { var next = 0; var fnc = function() { Modules.run('verify', next, [info], function(bool) { // Check if it returned false, stop here if it did if(bool === false) { callback(false); return; } // If next < moduleStack, then we passed through all verify modules without an single return false if(next >= Modules.stack['verify'].length) { callback(true); return; } next++; fnc(); }); } fnc(); } /** * Give this to any module that wants it, then return after all modules have processed it */ Modules.method.connect = function Connect(ws, callback) { var next = 0; var fnc = function() { Modules.run('connect', next, [ws], function() { // Finished stack, lets return if(next >= Modules.stack['connect'].length) { callback(); return; } next++; fnc(); }); } fnc(); } /** * Exports */ module.exports = Modules;