diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-02-05 00:30:08 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-02-05 00:31:34 +0100 |
commit | f26e6361f333c7747d39c4d8f494fa44d5e2fd2f (patch) | |
tree | 9ccee6ebaf9c50efbf05b1ac8d3ab857e6f25d14 | |
parent | 4073b7329fa80e6ce0fd3cd110a70fd450387d2f (diff) | |
download | xK-f26e6361f333c7747d39c4d8f494fa44d5e2fd2f.tar.gz xK-f26e6361f333c7747d39c4d8f494fa44d5e2fd2f.tar.xz xK-f26e6361f333c7747d39c4d8f494fa44d5e2fd2f.zip |
hid: implement WALLOPS
-rw-r--r-- | xS/main.go | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -2854,6 +2854,25 @@ func ircHandleLINKS(msg *message, c *client) { c.sendReply(RPL_ENDOFLINKS, mask) } +func ircHandleWALLOPS(msg *message, c *client) { + if len(msg.params) < 1 { + c.sendReply(ERR_NEEDMOREPARAMS, msg.command) + return + } + if 0 == c.mode&ircUserModeOperator { + c.sendReply(ERR_NOPRIVILEGES) + return + } + + // Our interpretation: anonymize the sender, + // and target all users who want to receive these messages. + for _, client := range users { + if client == c || 0 != client.mode&ircUserModeRxWallops { + client.sendf(":%s WALLOPS :%s", serverName, msg.params[0]) + } + } +} + func ircHandleKILL(msg *message, c *client) { if len(msg.params) < 2 { c.sendReply(ERR_NEEDMOREPARAMS, msg.command) @@ -2908,6 +2927,7 @@ var ircHandlers = map[string]*ircCommand{ "ADMIN": {true, ircHandleADMIN, 0, 0}, "STATS": {true, ircHandleSTATS, 0, 0}, "LINKS": {true, ircHandleLINKS, 0, 0}, + "WALLOPS": {true, ircHandleWALLOPS, 0, 0}, "MODE": {true, ircHandleMODE, 0, 0}, "PRIVMSG": {true, ircHandlePRIVMSG, 0, 0}, |