From 87cc184ec06197cf10318231d0ea880092aba782 Mon Sep 17 00:00:00 2001 From: Jeremy Latt Date: Fri, 14 Feb 2014 19:25:14 -0800 Subject: [PATCH] type numeric codes --- irc/constants.go | 272 +++++++++++++++++++++++------------------------ irc/net.go | 6 -- irc/reply.go | 17 ++- irc/types.go | 10 +- 4 files changed, 150 insertions(+), 155 deletions(-) diff --git a/irc/constants.go b/irc/constants.go index 243eeef0..84063952 100644 --- a/irc/constants.go +++ b/irc/constants.go @@ -24,142 +24,142 @@ const ( QUIT_TIMEOUT = time.Minute // how long after idle before a client is kicked // numeric codes - RPL_WELCOME = 1 - RPL_YOURHOST = 2 - RPL_CREATED = 3 - RPL_MYINFO = 4 - RPL_BOUNCE = 5 - RPL_TRACELINK = 200 - RPL_TRACECONNECTING = 201 - RPL_TRACEHANDSHAKE = 202 - RPL_TRACEUNKNOWN = 203 - RPL_TRACEOPERATOR = 204 - RPL_TRACEUSER = 205 - RPL_TRACESERVER = 206 - RPL_TRACESERVICE = 207 - RPL_TRACENEWTYPE = 208 - RPL_TRACECLASS = 209 - RPL_TRACERECONNECT = 210 - RPL_STATSLINKINFO = 211 - RPL_STATSCOMMANDS = 212 - RPL_ENDOFSTATS = 219 - RPL_UMODEIS = 221 - RPL_SERVLIST = 234 - RPL_SERVLISTEND = 235 - RPL_STATSUPTIME = 242 - RPL_STATSOLINE = 243 - RPL_LUSERCLIENT = 251 - RPL_LUSEROP = 252 - RPL_LUSERUNKNOWN = 253 - RPL_LUSERCHANNELS = 254 - RPL_LUSERME = 255 - RPL_ADMINME = 256 - RPL_ADMINLOC1 = 257 - RPL_ADMINLOC2 = 258 - RPL_ADMINEMAIL = 259 - RPL_TRACELOG = 261 - RPL_TRACEEND = 262 - RPL_TRYAGAIN = 263 - RPL_AWAY = 301 - RPL_USERHOST = 302 - RPL_ISON = 303 - RPL_UNAWAY = 305 - RPL_NOWAWAY = 306 - RPL_WHOISUSER = 311 - RPL_WHOISSERVER = 312 - RPL_WHOISOPERATOR = 313 - RPL_WHOWASUSER = 314 - RPL_ENDOFWHO = 315 - RPL_WHOISIDLE = 317 - RPL_ENDOFWHOIS = 318 - RPL_WHOISCHANNELS = 319 - RPL_LIST = 322 - RPL_LISTEND = 323 - RPL_CHANNELMODEIS = 324 - RPL_UNIQOPIS = 325 - RPL_NOTOPIC = 331 - RPL_TOPIC = 332 - RPL_INVITING = 341 - RPL_SUMMONING = 342 - RPL_INVITELIST = 346 - RPL_ENDOFINVITELIST = 347 - RPL_EXCEPTLIST = 348 - RPL_ENDOFEXCEPTLIST = 349 - RPL_VERSION = 351 - RPL_WHOREPLY = 352 - RPL_NAMREPLY = 353 - RPL_LINKS = 364 - RPL_ENDOFLINKS = 365 - RPL_ENDOFNAMES = 366 - RPL_BANLIST = 367 - RPL_ENDOFBANLIST = 368 - RPL_ENDOFWHOWAS = 369 - RPL_INFO = 371 - RPL_MOTD = 372 - RPL_ENDOFINFO = 374 - RPL_MOTDSTART = 375 - RPL_ENDOFMOTD = 376 - RPL_YOUREOPER = 381 - RPL_REHASHING = 382 - RPL_YOURESERVICE = 383 - RPL_TIME = 391 - RPL_USERSSTART = 392 - RPL_USERS = 393 - RPL_ENDOFUSERS = 394 - RPL_NOUSERS = 395 - ERR_NOSUCHNICK = 401 - ERR_NOSUCHSERVER = 402 - ERR_NOSUCHCHANNEL = 403 - ERR_CANNOTSENDTOCHAN = 404 - ERR_TOOMANYCHANNELS = 405 - ERR_WASNOSUCHNICK = 406 - ERR_TOOMANYTARGETS = 407 - ERR_NOSUCHSERVICE = 408 - ERR_NOORIGIN = 409 - ERR_NORECIPIENT = 411 - ERR_NOTEXTTOSEND = 412 - ERR_NOTOPLEVEL = 413 - ERR_WILDTOPLEVEL = 414 - ERR_BADMASK = 415 - ERR_UNKNOWNCOMMAND = 421 - ERR_NOMOTD = 422 - ERR_NOADMININFO = 423 - ERR_FILEERROR = 424 - ERR_NONICKNAMEGIVEN = 431 - ERR_ERRONEUSNICKNAME = 432 - ERR_NICKNAMEINUSE = 433 - ERR_NICKCOLLISION = 436 - ERR_UNAVAILRESOURCE = 437 - ERR_USERNOTINCHANNEL = 441 - ERR_NOTONCHANNEL = 442 - ERR_USERONCHANNEL = 443 - ERR_NOLOGIN = 444 - ERR_SUMMONDISABLED = 445 - ERR_USERSDISABLED = 446 - ERR_NOTREGISTERED = 451 - ERR_NEEDMOREPARAMS = 461 - ERR_ALREADYREGISTRED = 462 - ERR_NOPERMFORHOST = 463 - ERR_PASSWDMISMATCH = 464 - ERR_YOUREBANNEDCREEP = 465 - ERR_YOUWILLBEBANNED = 466 - ERR_KEYSET = 467 - ERR_CHANNELISFULL = 471 - ERR_UNKNOWNMODE = 472 - ERR_INVITEONLYCHAN = 473 - ERR_BANNEDFROMCHAN = 474 - ERR_BADCHANNELKEY = 475 - ERR_BADCHANMASK = 476 - ERR_NOCHANMODES = 477 - ERR_BANLISTFULL = 478 - ERR_NOPRIVILEGES = 481 - ERR_CHANOPRIVSNEEDED = 482 - ERR_CANTKILLSERVER = 483 - ERR_RESTRICTED = 484 - ERR_UNIQOPPRIVSNEEDED = 485 - ERR_NOOPERHOST = 491 - ERR_UMODEUNKNOWNFLAG = 501 - ERR_USERSDONTMATCH = 502 + RPL_WELCOME Numeric = 1 + RPL_YOURHOST Numeric = 2 + RPL_CREATED Numeric = 3 + RPL_MYINFO Numeric = 4 + RPL_BOUNCE Numeric = 5 + RPL_TRACELINK Numeric = 200 + RPL_TRACECONNECTING Numeric = 201 + RPL_TRACEHANDSHAKE Numeric = 202 + RPL_TRACEUNKNOWN Numeric = 203 + RPL_TRACEOPERATOR Numeric = 204 + RPL_TRACEUSER Numeric = 205 + RPL_TRACESERVER Numeric = 206 + RPL_TRACESERVICE Numeric = 207 + RPL_TRACENEWTYPE Numeric = 208 + RPL_TRACECLASS Numeric = 209 + RPL_TRACERECONNECT Numeric = 210 + RPL_STATSLINKINFO Numeric = 211 + RPL_STATSCOMMANDS Numeric = 212 + RPL_ENDOFSTATS Numeric = 219 + RPL_UMODEIS Numeric = 221 + RPL_SERVLIST Numeric = 234 + RPL_SERVLISTEND Numeric = 235 + RPL_STATSUPTIME Numeric = 242 + RPL_STATSOLINE Numeric = 243 + RPL_LUSERCLIENT Numeric = 251 + RPL_LUSEROP Numeric = 252 + RPL_LUSERUNKNOWN Numeric = 253 + RPL_LUSERCHANNELS Numeric = 254 + RPL_LUSERME Numeric = 255 + RPL_ADMINME Numeric = 256 + RPL_ADMINLOC1 Numeric = 257 + RPL_ADMINLOC2 Numeric = 258 + RPL_ADMINEMAIL Numeric = 259 + RPL_TRACELOG Numeric = 261 + RPL_TRACEEND Numeric = 262 + RPL_TRYAGAIN Numeric = 263 + RPL_AWAY Numeric = 301 + RPL_USERHOST Numeric = 302 + RPL_ISON Numeric = 303 + RPL_UNAWAY Numeric = 305 + RPL_NOWAWAY Numeric = 306 + RPL_WHOISUSER Numeric = 311 + RPL_WHOISSERVER Numeric = 312 + RPL_WHOISOPERATOR Numeric = 313 + RPL_WHOWASUSER Numeric = 314 + RPL_ENDOFWHO Numeric = 315 + RPL_WHOISIDLE Numeric = 317 + RPL_ENDOFWHOIS Numeric = 318 + RPL_WHOISCHANNELS Numeric = 319 + RPL_LIST Numeric = 322 + RPL_LISTEND Numeric = 323 + RPL_CHANNELMODEIS Numeric = 324 + RPL_UNIQOPIS Numeric = 325 + RPL_NOTOPIC Numeric = 331 + RPL_TOPIC Numeric = 332 + RPL_INVITING Numeric = 341 + RPL_SUMMONING Numeric = 342 + RPL_INVITELIST Numeric = 346 + RPL_ENDOFINVITELIST Numeric = 347 + RPL_EXCEPTLIST Numeric = 348 + RPL_ENDOFEXCEPTLIST Numeric = 349 + RPL_VERSION Numeric = 351 + RPL_WHOREPLY Numeric = 352 + RPL_NAMREPLY Numeric = 353 + RPL_LINKS Numeric = 364 + RPL_ENDOFLINKS Numeric = 365 + RPL_ENDOFNAMES Numeric = 366 + RPL_BANLIST Numeric = 367 + RPL_ENDOFBANLIST Numeric = 368 + RPL_ENDOFWHOWAS Numeric = 369 + RPL_INFO Numeric = 371 + RPL_MOTD Numeric = 372 + RPL_ENDOFINFO Numeric = 374 + RPL_MOTDSTART Numeric = 375 + RPL_ENDOFMOTD Numeric = 376 + RPL_YOUREOPER Numeric = 381 + RPL_REHASHING Numeric = 382 + RPL_YOURESERVICE Numeric = 383 + RPL_TIME Numeric = 391 + RPL_USERSSTART Numeric = 392 + RPL_USERS Numeric = 393 + RPL_ENDOFUSERS Numeric = 394 + RPL_NOUSERS Numeric = 395 + ERR_NOSUCHNICK Numeric = 401 + ERR_NOSUCHSERVER Numeric = 402 + ERR_NOSUCHCHANNEL Numeric = 403 + ERR_CANNOTSENDTOCHAN Numeric = 404 + ERR_TOOMANYCHANNELS Numeric = 405 + ERR_WASNOSUCHNICK Numeric = 406 + ERR_TOOMANYTARGETS Numeric = 407 + ERR_NOSUCHSERVICE Numeric = 408 + ERR_NOORIGIN Numeric = 409 + ERR_NORECIPIENT Numeric = 411 + ERR_NOTEXTTOSEND Numeric = 412 + ERR_NOTOPLEVEL Numeric = 413 + ERR_WILDTOPLEVEL Numeric = 414 + ERR_BADMASK Numeric = 415 + ERR_UNKNOWNCOMMAND Numeric = 421 + ERR_NOMOTD Numeric = 422 + ERR_NOADMININFO Numeric = 423 + ERR_FILEERROR Numeric = 424 + ERR_NONICKNAMEGIVEN Numeric = 431 + ERR_ERRONEUSNICKNAME Numeric = 432 + ERR_NICKNAMEINUSE Numeric = 433 + ERR_NICKCOLLISION Numeric = 436 + ERR_UNAVAILRESOURCE Numeric = 437 + ERR_USERNOTINCHANNEL Numeric = 441 + ERR_NOTONCHANNEL Numeric = 442 + ERR_USERONCHANNEL Numeric = 443 + ERR_NOLOGIN Numeric = 444 + ERR_SUMMONDISABLED Numeric = 445 + ERR_USERSDISABLED Numeric = 446 + ERR_NOTREGISTERED Numeric = 451 + ERR_NEEDMOREPARAMS Numeric = 461 + ERR_ALREADYREGISTRED Numeric = 462 + ERR_NOPERMFORHOST Numeric = 463 + ERR_PASSWDMISMATCH Numeric = 464 + ERR_YOUREBANNEDCREEP Numeric = 465 + ERR_YOUWILLBEBANNED Numeric = 466 + ERR_KEYSET Numeric = 467 + ERR_CHANNELISFULL Numeric = 471 + ERR_UNKNOWNMODE Numeric = 472 + ERR_INVITEONLYCHAN Numeric = 473 + ERR_BANNEDFROMCHAN Numeric = 474 + ERR_BADCHANNELKEY Numeric = 475 + ERR_BADCHANMASK Numeric = 476 + ERR_NOCHANMODES Numeric = 477 + ERR_BANLISTFULL Numeric = 478 + ERR_NOPRIVILEGES Numeric = 481 + ERR_CHANOPRIVSNEEDED Numeric = 482 + ERR_CANTKILLSERVER Numeric = 483 + ERR_RESTRICTED Numeric = 484 + ERR_UNIQOPPRIVSNEEDED Numeric = 485 + ERR_NOOPERHOST Numeric = 491 + ERR_UMODEUNKNOWNFLAG Numeric = 501 + ERR_USERSDONTMATCH Numeric = 502 Add ModeOp = '+' List ModeOp = '=' diff --git a/irc/net.go b/irc/net.go index 312cf8fb..49b31f33 100644 --- a/irc/net.go +++ b/irc/net.go @@ -20,17 +20,11 @@ func AddrLookupHostname(addr net.Addr) string { } func LookupHostname(addr string) string { - if DEBUG_NET { - log.Printf("LookupHostname(%s)", addr) - } names, err := net.LookupAddr(addr) if err != nil { return addr } hostname := strings.TrimSuffix(names[0], ".") - if DEBUG_NET { - log.Printf("LookupHostname(%s) → %s", addr, hostname) - } return hostname } diff --git a/irc/reply.go b/irc/reply.go index 0648f8ba..477c939c 100644 --- a/irc/reply.go +++ b/irc/reply.go @@ -45,10 +45,8 @@ func NewStringReply(source Identifier, code string, } func (reply *StringReply) Format(client *Client) []string { - message := fmt.Sprintf("%s %s", reply.code, reply.message) - if Identifier(client.server) != reply.source { - message = fmt.Sprintf(":%s %s", reply.id, message) - } + message := fmt.Sprintf(":%s %s %s", + reply.id, reply.code, reply.message) return []string{message} } @@ -59,10 +57,10 @@ func (reply *StringReply) String() string { type NumericReply struct { BaseReply - code int + code Numeric } -func NewNumericReply(source Identifier, code int, format string, +func NewNumericReply(source Identifier, code Numeric, format string, args ...interface{}) *NumericReply { reply := &NumericReply{ code: code, @@ -73,11 +71,8 @@ func NewNumericReply(source Identifier, code int, format string, } func (reply *NumericReply) Format(client *Client) []string { - message := fmt.Sprintf("%03d %s %s", - reply.code, client.Nick(), reply.message) - if Identifier(client.server) != reply.source { - message = fmt.Sprintf(":%s %s", reply.id, message) - } + message := fmt.Sprintf(":%s %s %s %s", + reply.id, reply.code, client.Nick(), reply.message) return []string{message} } diff --git a/irc/types.go b/irc/types.go index 618f24ca..3f96dda1 100644 --- a/irc/types.go +++ b/irc/types.go @@ -18,12 +18,18 @@ type ModeOp rune // user mode flags type UserMode rune -type Phase uint - func (mode UserMode) String() string { return fmt.Sprintf("%c", mode) } +type Phase uint + +type Numeric uint + +func (code Numeric) String() string { + return fmt.Sprintf("%03d", code) +} + // channel mode flags type ChannelMode rune