From 02f6fbf70153241ce45b9c880664566f2d1ede86 Mon Sep 17 00:00:00 2001 From: marzavec Date: Sat, 2 Feb 2019 13:34:06 -0800 Subject: Minor module changes Added trips to listusers output. Added 'reason' to reload broadcast. Fixed removemod bug. Added /nick hook to changenick. Added 'type' and 'from' fields to invite event. --- server/src/commands/admin/listusers.js | 5 +++- server/src/commands/admin/reload.js | 11 ++++++--- server/src/commands/admin/removemod.js | 8 ++++--- server/src/commands/core/changenick.js | 42 +++++++++++++++++++++++++++++++++- server/src/commands/core/chat.js | 7 +++--- server/src/commands/core/invite.js | 9 +++++++- server/src/commands/core/join.js | 2 +- server/src/commands/core/whisper.js | 3 ++- 8 files changed, 72 insertions(+), 15 deletions(-) (limited to 'server/src') diff --git a/server/src/commands/admin/listusers.js b/server/src/commands/admin/listusers.js index 85fc078..472b89d 100644 --- a/server/src/commands/admin/listusers.js +++ b/server/src/commands/admin/listusers.js @@ -20,7 +20,10 @@ exports.run = async (core, server, socket, data) => { if (typeof channels[currentUsers[i].channel] === 'undefined') { channels[currentUsers[i].channel] = []; } - channels[currentUsers[i].channel].push(currentUsers[i].nick); + + channels[currentUsers[i].channel].push( + `[${currentUsers[i].trip||'null'}]${currentUsers[i].nick}` + ); } // build output diff --git a/server/src/commands/admin/reload.js b/server/src/commands/admin/reload.js index f7f7464..f40d0b2 100644 --- a/server/src/commands/admin/reload.js +++ b/server/src/commands/admin/reload.js @@ -19,9 +19,14 @@ exports.run = async (core, server, socket, data) => { // build reply based on reload results if (loadResult == '') { - loadResult = `Loaded ${core.commands._commands.length} commands, 0 errors`; + loadResult = `Reloaded ${core.commands._commands.length} commands, 0 errors`; } else { - loadResult = `Loaded ${core.commands._commands.length} commands, error(s): ${loadResult}`; + loadResult = `Reloaded ${core.commands._commands.length} commands, error(s): + ${loadResult}`; + } + + if (typeof data.reason !== 'undefined') { + loadResult += `\nReason: ${data.reason}`; } // reply with results @@ -42,5 +47,5 @@ exports.info = { name: 'reload', description: '(Re)loads any new commands into memory, outputs errors if any', usage: ` - API: { cmd: 'reload' }` + API: { cmd: 'reload', reason: '' }` }; diff --git a/server/src/commands/admin/removemod.js b/server/src/commands/admin/removemod.js index dda822c..87f4124 100644 --- a/server/src/commands/admin/removemod.js +++ b/server/src/commands/admin/removemod.js @@ -14,8 +14,8 @@ exports.run = async (core, server, socket, data) => { // find targets current connections let targetMod = server.findSockets({ trip: data.trip }); - if (newMod.length !== 0) { - for (let i = 0, l = newMod.length; i < l; i++) { + if (targetMod.length !== 0) { + for (let i = 0, l = targetMod.length; i < l; i++) { // downgrade privilages targetMod[i].uType = 'user'; @@ -30,7 +30,9 @@ exports.run = async (core, server, socket, data) => { // return success message server.reply({ cmd: 'info', - text: `Removed mod trip: ${data.trip}, remember to run 'saveconfig' to make it permanent` + text: `Removed mod trip: ${ + data.trip + }, remember to run 'saveconfig' to make it permanent` }, socket); // notify all mods diff --git a/server/src/commands/core/changenick.js b/server/src/commands/core/changenick.js index 6cc967c..28d8de3 100644 --- a/server/src/commands/core/changenick.js +++ b/server/src/commands/core/changenick.js @@ -55,6 +55,8 @@ exports.run = async (core, server, socket, data) => { } // build join and leave notices + // TODO: this is a legacy client holdover, name changes in the future will + // have thieir own event let leaveNotice = { cmd: 'onlineRemove', nick: socket.nick @@ -81,11 +83,49 @@ exports.run = async (core, server, socket, data) => { socket.nick = newNick; }; +// module hook functions +exports.initHooks = (server) => { + server.registerHook('in', 'chat', this.nickCheck); +}; + +// hooks chat commands checking for /whisper +exports.nickCheck = (core, server, socket, payload) => { + if (typeof payload.text !== 'string') { + return false; + } + + if (payload.text.startsWith('/nick')) { + let input = payload.text.split(' '); + + // If there is no nickname target parameter + if (input[1] === undefined) { + server.reply({ + cmd: 'warn', + text: 'Refer to `/help nick` for instructions on how to use this command.' + }, socket); + + return false; + } + + let newNick = input[1].replace(/@/g, ''); + + this.run(core, server, socket, { + cmd: 'changenick', + nick: newNick + }); + + return false; + } + + return payload; +}; + // module meta exports.requiredData = ['nick']; exports.info = { name: 'changenick', description: 'This will change your current connections nickname', usage: ` - API: { cmd: 'changenick', nick: '' }` + API: { cmd: 'changenick', nick: '' } + Text: /nick ` }; diff --git a/server/src/commands/core/chat.js b/server/src/commands/core/chat.js index 70b9876..6f5c6a0 100644 --- a/server/src/commands/core/chat.js +++ b/server/src/commands/core/chat.js @@ -90,14 +90,12 @@ exports.commandCheckOut = (core, server, socket, payload) => { return payload; } + // TODO: make emotes their own module/event #lazydev if (payload.text.startsWith('//me ')) { payload.text = payload.text.substr(1, payload.text.length); return payload; - } - - // TODO: make emotes their own module #lazydev - if (payload.text.startsWith('/me ')) { + } else if (payload.text.startsWith('/me ')) { let emote = payload.text.substr(4); if (emote.trim() === '') { emote = 'fails at life'; @@ -106,6 +104,7 @@ exports.commandCheckOut = (core, server, socket, payload) => { let newPayload = { cmd: 'info', type: 'emote', + nick: payload.nick, text: `@${payload.nick} ${emote}` }; diff --git a/server/src/commands/core/invite.js b/server/src/commands/core/invite.js index f44779b..8374309 100644 --- a/server/src/commands/core/invite.js +++ b/server/src/commands/core/invite.js @@ -31,11 +31,16 @@ exports.run = async (core, server, socket, data) => { // build and send invite let payload = { cmd: 'info', + type: 'invite', + from: socket.nick, invite: channel, text: `${socket.nick} invited you to ?${channel}` }; - let inviteSent = server.broadcast( payload, { channel: socket.channel, nick: data.nick }); + let inviteSent = server.broadcast( payload, { + channel: socket.channel, + nick: data.nick + }); // server indicates the user was not found if (!inviteSent) { @@ -48,6 +53,8 @@ exports.run = async (core, server, socket, data) => { // reply with common channel server.reply({ cmd: 'info', + type: 'invite', + invite: channel, text: `You invited ${data.nick} to ?${channel}` }, socket); diff --git a/server/src/commands/core/join.js b/server/src/commands/core/join.js index 21badaf..8b6a971 100644 --- a/server/src/commands/core/join.js +++ b/server/src/commands/core/join.js @@ -32,7 +32,7 @@ exports.parseNickname = (core, data) => { } let password = nickArray[1]; - + if (hash(password + core.config.tripSalt) === core.config.adminTrip) { userInfo.uType = 'admin'; userInfo.trip = 'Admin'; diff --git a/server/src/commands/core/whisper.js b/server/src/commands/core/whisper.js index 7173ae9..672db93 100644 --- a/server/src/commands/core/whisper.js +++ b/server/src/commands/core/whisper.js @@ -85,13 +85,14 @@ exports.whisperCheck = (core, server, socket, payload) => { if (payload.text.startsWith('/whisper')) { let input = payload.text.split(' '); + // If there is no nickname target parameter if (input[1] === undefined) { server.reply({ cmd: 'warn', text: 'Refer to `/help whisper` for instructions on how to use this command.' }, socket); - + return false; } -- cgit v1.2.1