ISON command support

This commit is contained in:
Sergey Matveev 2015-11-14 18:54:34 +03:00
parent f93640a335
commit 7770e09e68
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 {