module.exports.connected = connected; module.exports.processMessage = processMessage; module.exports.processSender = processSender; module.exports.setHandlers = setHandlers; module.exports.setSettings = setSettings; var handlers = { sendHandler: null, findServer: null, findUser: null, killUser: null, newServer: null, newUser: null, parseUmodes: null, getChannel: null, quitUser: null }; var settings = { ID: null, password: null, name: null, description: null, version: null, me: null, maxUsers: null }; var prefixes = { '~': 'q', '&': 'a', '@': 'o', '%': 'h', '+': 'v' }; function parseModePrefix(text){ var modes = []; for(var i=0; i 0) ip += ':'; ip += ipBinary[i*2].toString(16).padStart(2, '0') + ipBinary[i*2+1].toString(16).padStart(2, '0'); } } else { throw 'unknown IP format'; } } else { ip = null; } if(vhost == '*'){ vhost = null; } if(cloakedHost == '*'){ cloakedHost = null; } if(account == '0'){ account = null; } handlers.newUser(nick, distance, TS, ident, host, uid, account, handlers.parseUmodes(umodes), vhost, cloakedHost, ip, realname, msg.sender.server); }, 'SJOIN': function(msg){ var channel = handlers.getChannel(msg.args[1]); channel.setTS(msg.args[0]); var modeArgs = []; for(var i=3; i