ISON command support

This commit is contained in:
Sergey Matveev 2015-11-14 18:54:34 +03:00 committed by User Mue
parent 5413b3ae52
commit 61e337b083
2 changed files with 18 additions and 2 deletions

4
README
View File

@ -4,7 +4,7 @@
DESCRIPTION
goircd is very simple IRC server, written on Go.
It is heavily inspired by miniircd daemon written on Python.
It was heavily inspired by miniircd daemon written on Python.
GoVPN is free software: see the file COPYING for copying conditions.
It does not aim to replace full featured mass scalable IRC networks:
@ -35,7 +35,7 @@ SUPPORTED IRC COMMANDS
* PASS/NICK/USER during registration workflow
* PING/PONGs
* NOTICE/PRIVMSG
* NOTICE/PRIVMSG, ISON
* AWAY, MOTD, LUSERS, WHO, WHOIS, VERSION, QUIT
* LIST, JOIN, TOPIC, +k/-k channel MODE

View File

@ -486,6 +486,22 @@ func Processor(events chan ClientEvent, finished chan struct{}) {
cols := strings.Split(cols[1], " ")
nicknames := strings.Split(cols[len(cols)-1], ",")
SendWhois(client, nicknames)
case "ISON":
if len(cols) == 1 || len(cols[1]) < 1 {
client.ReplyNotEnoughParameters("ISON")
continue
}
nicksKnown := make(map[string]struct{})
for c := range clients {
nicksKnown[*c.nickname] = struct{}{}
}
var nicksExists []string
for _, nickname := range strings.Split(cols[1], " ") {
if _, exists := nicksKnown[nickname]; exists {
nicksExists = append(nicksExists, nickname)
}
}
client.ReplyNicknamed("303", strings.Join(nicksExists, " "))
case "VERSION":
var debug string
if *verbose {