You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
const net = require("net") const User = require("../src/user.js")
const RPL_WELCOME = '001' const ERR_NOSUCHNICK = '401' const ERR_NOSUCHCHANNEL = '403' const ERR_CANNOTSENDTOCHAN = '404' const ERR_UNKNOWNCOMMAND = '421' const ERR_ERRONEUSNICKNAME = '432' const ERR_NICKNAMEINUSE = '433' const ERR_NEEDMOREPARAMS = '461' const ERR_NONICKNAMEGIVEN = '431'
let server = {} let registeredUserlist = require("../src/userlist.js")
server.create = function create() { return net.createServer((socket) => { const user = new User(socket) socket.on('data', function (data) { let tokenized = data.toString("ascii").split("\r\n")[0].split(" ") let command = tokenized[0].toUpperCase() switch (command) { case "PING": if (tokenized[1] && tokenized[1] === "irc.example.com") { socket.write("PONG irc.example.com\r\n") } break; case "NICK": if (tokenized[1]) { let nickname = tokenized[1] // nick collision test
console.log(Object.keys(registeredUserlist)); if (!Object.keys(registeredUserlist).includes(nickname)) { user.setNickname(nickname) registeredUserlist[nickname] = user socket.write(RPL_WELCOME, " nick " + nickname + " succesfully added.\r\n") } else { socket.write(ERR_NICKNAMEINUSE, " nickname in use\r\n") }
} else { socket.write(ERR_NONICKNAMEGIVEN, " :No nickname given\r\n") }
break; default: console.error(`Unknown command: ${command}`); } }).on('error', (err) => { console.error(err); }) }).on('error', (err) => { console.error(err); throw err; }); }
module.exports = server
|