All checks were successful
check / check (push) Successful in 59s
Implement all 7 utility IRC commands from issue #87: User commands: - USERHOST: quick lookup of user@host for up to 5 nicks (RPL 302) - VERSION: server version string using globals.Version (RPL 351) - ADMIN: server admin contact info (RPL 256-259) - INFO: server software info text (RPL 371/374) - TIME: server local time in RFC format (RPL 391) Oper commands: - KILL: forcibly disconnect a user (requires is_oper), broadcasts QUIT to all shared channels, cleans up sessions - WALLOPS: broadcast message to all users with +w usermode (requires is_oper) Supporting changes: - Add is_wallops column to sessions table in 001_initial.sql - Add user mode +w tracking via MODE nick +w/-w - User mode queries now return actual modes (+o, +w) - MODE -o allows de-opering yourself; MODE +o rejected - MODE for other users returns ERR_USERSDONTMATCH (502) - Extract dispatch helpers to reduce dispatchCommand complexity Tests cover all commands including error cases, oper checks, user mode set/unset, KILL broadcast, WALLOPS delivery, and edge cases (self-kill, nonexistent users, missing params). closes #87
34 lines
705 B
Go
34 lines
705 B
Go
package irc
|
|
|
|
// IRC command names (RFC 1459 / RFC 2812).
|
|
const (
|
|
CmdAdmin = "ADMIN"
|
|
CmdAway = "AWAY"
|
|
CmdInfo = "INFO"
|
|
CmdInvite = "INVITE"
|
|
CmdJoin = "JOIN"
|
|
CmdKick = "KICK"
|
|
CmdKill = "KILL"
|
|
CmdList = "LIST"
|
|
CmdLusers = "LUSERS"
|
|
CmdMode = "MODE"
|
|
CmdMotd = "MOTD"
|
|
CmdNames = "NAMES"
|
|
CmdNick = "NICK"
|
|
CmdNotice = "NOTICE"
|
|
CmdOper = "OPER"
|
|
CmdPass = "PASS"
|
|
CmdPart = "PART"
|
|
CmdPing = "PING"
|
|
CmdPong = "PONG"
|
|
CmdPrivmsg = "PRIVMSG"
|
|
CmdQuit = "QUIT"
|
|
CmdTime = "TIME"
|
|
CmdTopic = "TOPIC"
|
|
CmdUserhost = "USERHOST"
|
|
CmdVersion = "VERSION"
|
|
CmdWallops = "WALLOPS"
|
|
CmdWho = "WHO"
|
|
CmdWhois = "WHOIS"
|
|
)
|