diff options
Diffstat (limited to 'hid')
| -rw-r--r-- | hid/main.go | 20 | 
1 files changed, 20 insertions, 0 deletions
| diff --git a/hid/main.go b/hid/main.go index e9a0095..fd8d8fb 100644 --- a/hid/main.go +++ b/hid/main.go @@ -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}, | 
