From 922c6a35bb34598da397d2a0078adc397e84a853 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Thu, 13 Sep 2007 00:14:53 +0000 Subject: more rdoc-ification --- lib/rbot/core/utils/utils.rb | 41 +- lib/rbot/irc.rb | 6 +- lib/rbot/ircbot.rb | 6 +- lib/rbot/rfc2812.rb | 977 ++++++++++++++++++++++++------------------- lib/rbot/timer.rb | 68 +-- 5 files changed, 626 insertions(+), 472 deletions(-) (limited to 'lib/rbot') diff --git a/lib/rbot/core/utils/utils.rb b/lib/rbot/core/utils/utils.rb index a33f072f..a4f071a2 100644 --- a/lib/rbot/core/utils/utils.rb +++ b/lib/rbot/core/utils/utils.rb @@ -317,7 +317,7 @@ rescue LoadError else module ::Irc module Utils - # define some regular expressions to be used for first_html_par + # Define some regular expressions to be used by first_html_par # H1, H2, etc HX_REGEX = /]*)?>(.*?)<\/h\1>/im @@ -337,15 +337,17 @@ end module ::Irc - # miscellaneous useful functions + # Miscellaneous useful functions module Utils @@bot = nil unless defined? @@bot @@safe_save_dir = nil unless defined?(@@safe_save_dir) + # The bot instance def Utils.bot @@bot end + # Set up some Utils routines which depend on the associated bot. def Utils.bot=(b) debug "initializing utils" @@bot = b @@ -353,12 +355,18 @@ module ::Irc end + # Seconds per minute SEC_PER_MIN = 60 + # Seconds per hour SEC_PER_HR = SEC_PER_MIN * 60 + # Seconds per day SEC_PER_DAY = SEC_PER_HR * 24 + # Seconds per (30-day) month SEC_PER_MNTH = SEC_PER_DAY * 30 + # Second per (30*12 = 360 day) year SEC_PER_YR = SEC_PER_MNTH * 12 + # Auxiliary method needed by Utils.secs_to_string def Utils.secs_to_string_case(array, var, string, plural) case var when 1 @@ -368,8 +376,8 @@ module ::Irc end end - # turn a number of seconds into a human readable string, e.g - # 2 days, 3 hours, 18 minutes, 10 seconds + # Turn a number of seconds into a human readable string, e.g + # 2 days, 3 hours, 18 minutes and 10 seconds def Utils.secs_to_string(secs) ret = [] years, secs = secs.divmod SEC_PER_YR @@ -395,9 +403,12 @@ module ::Irc end + # Execute an external program, returning a String obtained by redirecting + # the program's standards errors and output + # def Utils.safe_exec(command, *args) - IO.popen("-") {|p| - if(p) + IO.popen("-") { |p| + if p return p.readlines.join("\n") else begin @@ -414,6 +425,11 @@ module ::Irc end + # Safely (atomically) save to _file_, by passing a tempfile to the block + # and then moving the tempfile to its final location when done. + # + # call-seq: Utils.safe_save(file, &block) + # def Utils.safe_save(file) raise 'No safe save directory defined!' if @@safe_save_dir.nil? basename = File.basename(file) @@ -425,6 +441,9 @@ module ::Irc end + # Decode HTML entities in the String _str_, using HTMLEntities if the + # package was found, or UNESCAPE_TABLE otherwise. + # def Utils.decode_html_entities(str) if defined? ::HTMLEntities return HTMLEntities.decode_entities(str) @@ -447,9 +466,9 @@ module ::Irc # # It is possible to pass some options to determine how the stripping # occurs. Currently supported options are - # * :strip => Regex or String to strip at the beginning of the obtained - # text - # * :min_spaces => Minimum number of spaces a paragraph should have + # strip:: Regex or String to strip at the beginning of the obtained + # text + # min_spaces:: minimum number of spaces a paragraph should have # def Utils.ircify_first_html_par(xml_org, opts={}) if defined? ::Hpricot @@ -459,7 +478,7 @@ module ::Irc end end - # with hpricot + # HTML first par grabber using hpricot def Utils.ircify_first_html_par_wh(xml_org, opts={}) doc = Hpricot(xml_org) @@ -556,7 +575,7 @@ module ::Irc end end - # without hpricot + # HTML first par grabber without hpricot def Utils.ircify_first_html_par_woh(xml_org, opts={}) xml = xml_org.gsub(//m, '').gsub(/]*)?>.*?<\/script>/im, "").gsub(/]*)?>.*?<\/style>/im, "") diff --git a/lib/rbot/irc.rb b/lib/rbot/irc.rb index 6a0bb2a2..371762cb 100644 --- a/lib/rbot/irc.rb +++ b/lib/rbot/irc.rb @@ -503,9 +503,9 @@ class Regexp # Irc::User nicks and users and Irc::Channel names # # For each of them we define two versions of the regular expression: - # * a generic one, which should match for any server but may turn out to - # match more than a specific server would accept - # * an RFC-compliant matcher + # * a generic one, which should match for any server but may turn out to + # match more than a specific server would accept + # * an RFC-compliant matcher # module Irc diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index ca40e0d6..3b42a3aa 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -338,9 +338,9 @@ class Bot unless botclass and not botclass.empty? # We want to find a sensible default. - # * On POSIX systems we prefer ~/.rbot for the effective uid of the process - # * On Windows (at least the NT versions) we want to put our stuff in the - # Application Data folder. + # * On POSIX systems we prefer ~/.rbot for the effective uid of the process + # * On Windows (at least the NT versions) we want to put our stuff in the + # Application Data folder. # We don't use any particular O/S detection magic, exploiting the fact that # Etc.getpwuid is nil on Windows if Etc.getpwuid(Process::Sys.geteuid) diff --git a/lib/rbot/rfc2812.rb b/lib/rbot/rfc2812.rb index 2d4d323b..9de781a8 100644 --- a/lib/rbot/rfc2812.rb +++ b/lib/rbot/rfc2812.rb @@ -1,35 +1,50 @@ +#-- vim:sw=2:et +#++ +# +# :title: RFC 2821 Client Protocol module +# +# This module defines the Irc::Client class, a class that can handle and +# dispatch messages based on RFC 2821i (Internet Relay Chat: Client Protocol) + module Irc - # RFC 2812 Internet Relay Chat: Client Protocol - # - RPL_WELCOME=001 + # - The server sends Replies 001 to 004 to a user upon + # successful registration. + # "Welcome to the Internet Relay Network # !@" - RPL_YOURHOST=002 + # + RPL_WELCOME=001 + # "Your host is , running version " - RPL_CREATED=003 + RPL_YOURHOST=002 + # "This server was created " + RPL_CREATED=003 + + # " " RPL_MYINFO=004 - # " - # " + + # "005 nick PREFIX=(ov)@+ CHANTYPES=#& :are supported by this server" # - # - The server sends Replies 001 to 004 to a user upon - # successful registration. + # defines the capabilities supported by the server. # - # RPL_BOUNCE=005 - # # "Try server , port " - RPL_ISUPPORT=005 - # "005 nick PREFIX=(ov)@+ CHANTYPES=#& :are supported by this server" + # Previous RFCs defined message 005 as follows: # # - Sent by the server to a user to suggest an alternative - # server. This is often used when the connection is - # refused because the server is already full. + # server. This is often used when the connection is + # refused because the server is already full. # - RPL_USERHOST=302 + # # "Try server , port " + # + # RPL_BOUNCE=005 + # + RPL_ISUPPORT=005 + # ":*1 *( " " )" # # - Reply format used by USERHOST to list replies to - # the query list. The reply string is composed as - # follows: + # the query list. The reply string is composed as + # follows: # # reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname # @@ -38,138 +53,158 @@ module Irc # whether the client has set an AWAY message or not # respectively. # - RPL_ISON=303 + RPL_USERHOST=302 + # ":*1 *( " " )" # # - Reply format used by ISON to list replies to the - # query list. + # query list. # - RPL_AWAY=301 + RPL_ISON=303 + + # - These replies are used with the AWAY command (if + # allowed). RPL_AWAY is sent to any client sending a + # PRIVMSG to a client which is away. RPL_AWAY is only + # sent by the server to which the client is connected. + # Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the + # client removes and sets an AWAY message. + # " :" - RPL_UNAWAY=305 + RPL_AWAY=301 + # ":You are no longer marked as being away" - RPL_NOWAWAY=306 + RPL_UNAWAY=305 + # ":You have been marked as being away" - # - # - These replies are used with the AWAY command (if - # allowed). RPL_AWAY is sent to any client sending a - # PRIVMSG to a client which is away. RPL_AWAY is only - # sent by the server to which the client is connected. - # Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the - # client removes and sets an AWAY message. - # - RPL_WHOISUSER=311 + RPL_NOWAWAY=306 + + # - Replies 311 - 313, 317 - 319 are all replies + # generated in response to a WHOIS message. Given that + # there are enough parameters present, the answering + # server MUST either formulate a reply out of the above + # numerics (if the query nick is found) or return an + # error reply. The '*' in RPL_WHOISUSER is there as + # the literal character and not as a wild card. For + # each reply set, only RPL_WHOISCHANNELS may appear + # more than once (for long lists of channel names). + # The '@' and '+' characters next to the channel name + # indicate whether a client is a channel operator or + # has been granted permission to speak on a moderated + # channel. The RPL_ENDOFWHOIS reply is used to mark + # the end of processing a WHOIS message. + # " * :" - RPL_WHOISSERVER=312 + RPL_WHOISUSER=311 + # " :" - RPL_WHOISOPERATOR=313 + RPL_WHOISSERVER=312 + # " :is an IRC operator" - RPL_WHOISIDLE=317 + RPL_WHOISOPERATOR=313 + # " :seconds idle" - RPL_ENDOFWHOIS=318 + RPL_WHOISIDLE=317 + # " :End of WHOIS list" - RPL_WHOISCHANNELS=319 + RPL_ENDOFWHOIS=318 + # " :*( ( "@" / "+" ) " " )" - # - # - Replies 311 - 313, 317 - 319 are all replies - # generated in response to a WHOIS message. Given that - # there are enough parameters present, the answering - # server MUST either formulate a reply out of the above - # numerics (if the query nick is found) or return an - # error reply. The '*' in RPL_WHOISUSER is there as - # the literal character and not as a wild card. For - # each reply set, only RPL_WHOISCHANNELS may appear - # more than once (for long lists of channel names). - # The '@' and '+' characters next to the channel name - # indicate whether a client is a channel operator or - # has been granted permission to speak on a moderated - # channel. The RPL_ENDOFWHOIS reply is used to mark - # the end of processing a WHOIS message. - # - RPL_WHOWASUSER=314 + RPL_WHOISCHANNELS=319 + + # - When replying to a WHOWAS message, a server MUST use + # the replies RPL_WHOWASUSER, RPL_WHOISSERVER or + # ERR_WASNOSUCHNICK for each nickname in the presented + # list. At the end of all reply batches, there MUST + # be RPL_ENDOFWHOWAS (even if there was only one reply + # and it was an error). + # " * :" - RPL_ENDOFWHOWAS=369 + RPL_WHOWASUSER=314 + # " :End of WHOWAS" - # - # - When replying to a WHOWAS message, a server MUST use - # the replies RPL_WHOWASUSER, RPL_WHOISSERVER or - # ERR_WASNOSUCHNICK for each nickname in the presented - # list. At the end of all reply batches, there MUST - # be RPL_ENDOFWHOWAS (even if there was only one reply - # and it was an error). - # - RPL_LISTSTART=321 + RPL_ENDOFWHOWAS=369 + + # - Replies RPL_LIST, RPL_LISTEND mark the actual replies + # with data and end of the server's response to a LIST + # command. If there are no channels available to return, + # only the end reply MUST be sent. + # Obsolete. Not used. - # - RPL_LIST=322 + RPL_LISTSTART=321 + # " <# visible> :" - RPL_LISTEND=323 + RPL_LIST=322 + # ":End of LIST" - # - # - Replies RPL_LIST, RPL_LISTEND mark the actual replies - # with data and end of the server's response to a LIST - # command. If there are no channels available to return, - # only the end reply MUST be sent. - # - RPL_UNIQOPIS=325 + RPL_LISTEND=323 + # " " - # - RPL_CHANNELMODEIS=324 + RPL_UNIQOPIS=325 + # " " - # - RPL_NOTOPIC=331 + RPL_CHANNELMODEIS=324 + # " :No topic is set" - RPL_TOPIC=332 - # " :" - # + RPL_NOTOPIC=331 + # - When sending a TOPIC message to determine the - # channel topic, one of two replies is sent. If - # the topic is set, RPL_TOPIC is sent back else - # RPL_NOTOPIC. - # - RPL_TOPIC_INFO=333 + # channel topic, one of two replies is sent. If + # the topic is set, RPL_TOPIC is sent back else + # RPL_NOTOPIC. + + # " :" + RPL_TOPIC=332 + # - RPL_INVITING=341 + RPL_TOPIC_INFO=333 + # " " # # - Returned by the server to indicate that the - # attempted INVITE message was successful and is - # being passed onto the end client. + # attempted INVITE message was successful and is + # being passed onto the end client. # - RPL_SUMMONING=342 + RPL_INVITING=341 + # " :Summoning user to IRC" # # - Returned by a server answering a SUMMON message to - # indicate that it is summoning that user. + # indicate that it is summoning that user. # - RPL_INVITELIST=346 + RPL_SUMMONING=342 + # " " - RPL_ENDOFINVITELIST=347 + RPL_INVITELIST=346 + # " :End of channel invite list" # # - When listing the 'invitations masks' for a given channel, - # a server is required to send the list back using the - # RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A - # separate RPL_INVITELIST is sent for each active mask. - # After the masks have been listed (or if none present) a - # RPL_ENDOFINVITELIST MUST be sent. + # a server is required to send the list back using the + # RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A + # separate RPL_INVITELIST is sent for each active mask. + # After the masks have been listed (or if none present) a + # RPL_ENDOFINVITELIST MUST be sent. # - RPL_EXCEPTLIST=348 + RPL_ENDOFINVITELIST=347 + # " " - RPL_ENDOFEXCEPTLIST=349 + RPL_EXCEPTLIST=348 + # " :End of channel exception list" # # - When listing the 'exception masks' for a given channel, - # a server is required to send the list back using the - # RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A - # separate RPL_EXCEPTLIST is sent for each active mask. - # After the masks have been listed (or if none present) - # a RPL_ENDOFEXCEPTLIST MUST be sent. + # a server is required to send the list back using the + # RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A + # separate RPL_EXCEPTLIST is sent for each active mask. + # After the masks have been listed (or if none present) + # a RPL_ENDOFEXCEPTLIST MUST be sent. # - RPL_VERSION=351 + RPL_ENDOFEXCEPTLIST=349 + # ". :" # # - Reply by the server showing its version details. + # # The is the version of the software being # used (including any patchlevel revisions) and the # is used to indicate if the server is @@ -178,276 +213,307 @@ module Irc # The "comments" field may contain any comments about # the version or further version details. # - RPL_WHOREPLY=352 + RPL_VERSION=351 + + # - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used + # to answer a WHO message. The RPL_WHOREPLY is only + # sent if there is an appropriate match to the WHO + # query. If there is a list of parameters supplied + # with a WHO message, a RPL_ENDOFWHO MUST be sent + # after processing each list item with being + # the item. + # " # ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] # : " # - RPL_ENDOFWHO=315 + RPL_WHOREPLY=352 + # " :End of WHO list" - # - # - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used - # to answer a WHO message. The RPL_WHOREPLY is only - # sent if there is an appropriate match to the WHO - # query. If there is a list of parameters supplied - # with a WHO message, a RPL_ENDOFWHO MUST be sent - # after processing each list item with being - # the item. - # - RPL_NAMREPLY=353 + RPL_ENDOFWHO=315 + + # - To reply to a NAMES message, a reply pair consisting + # of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the + # server back to the client. If there is no channel + # found as in the query, then only RPL_ENDOFNAMES is + # returned. The exception to this is when a NAMES + # message is sent with no parameters and all visible + # channels and contents are sent back in a series of + # RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark + # the end. + # "( "=" / "*" / "@" ) # :[ "@" / "+" ] *( " " [ "@" / "+" ] ) # - "@" is used for secret channels, "*" for private # channels, and "=" for others (public channels). # - RPL_ENDOFNAMES=366 + RPL_NAMREPLY=353 + # " :End of NAMES list" - # - # - To reply to a NAMES message, a reply pair consisting - # of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the - # server back to the client. If there is no channel - # found as in the query, then only RPL_ENDOFNAMES is - # returned. The exception to this is when a NAMES - # message is sent with no parameters and all visible - # channels and contents are sent back in a series of - # RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark - # the end. - # - RPL_LINKS=364 + RPL_ENDOFNAMES=366 + + # - In replying to the LINKS message, a server MUST send + # replies back using the RPL_LINKS numeric and mark the + # end of the list using an RPL_ENDOFLINKS reply. + # " : " - RPL_ENDOFLINKS=365 + RPL_LINKS=364 + # " :End of LINKS list" - # - # - In replying to the LINKS message, a server MUST send - # replies back using the RPL_LINKS numeric and mark the - # end of the list using an RPL_ENDOFLINKS reply. - # - RPL_BANLIST=367 + RPL_ENDOFLINKS=365 + + # - When listing the active 'bans' for a given channel, + # a server is required to send the list back using the + # RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate + # RPL_BANLIST is sent for each active banmask. After the + # banmasks have been listed (or if none present) a + # RPL_ENDOFBANLIST MUST be sent. + # " " - RPL_ENDOFBANLIST=368 + RPL_BANLIST=367 + # " :End of channel ban list" - # - # - When listing the active 'bans' for a given channel, - # a server is required to send the list back using the - # RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate - # RPL_BANLIST is sent for each active banmask. After the - # banmasks have been listed (or if none present) a - # RPL_ENDOFBANLIST MUST be sent. - # - RPL_INFO=371 + RPL_ENDOFBANLIST=368 + + # - A server responding to an INFO message is required to + # send all its 'info' in a series of RPL_INFO messages + # with a RPL_ENDOFINFO reply to indicate the end of the + # replies. + # ":" - RPL_ENDOFINFO=374 + RPL_INFO=371 + # ":End of INFO list" - # - # - A server responding to an INFO message is required to - # send all its 'info' in a series of RPL_INFO messages - # with a RPL_ENDOFINFO reply to indicate the end of the - # replies. - # - RPL_MOTDSTART=375 - # ":- Message of the day - " - RPL_MOTD=372 - # ":- " - RPL_ENDOFMOTD=376 - # ":End of MOTD command" - # + RPL_ENDOFINFO=374 + # - When responding to the MOTD message and the MOTD file # is found, the file is displayed line by line, with # each line no longer than 80 characters, using # RPL_MOTD format replies. These MUST be surrounded # by a RPL_MOTDSTART (before the RPL_MOTDs) and an # RPL_ENDOFMOTD (after). - # - RPL_YOUREOPER=381 + + # ":- Message of the day - " + RPL_MOTDSTART=375 + + # ":- " + RPL_MOTD=372 + + # ":End of MOTD command" + RPL_ENDOFMOTD=376 + # ":You are now an IRC operator" # # - RPL_YOUREOPER is sent back to a client which has - # just successfully issued an OPER message and gained - # operator status. + # just successfully issued an OPER message and gained + # operator status. # - RPL_REHASHING=382 + RPL_YOUREOPER=381 + # " :Rehashing" # # - If the REHASH option is used and an operator sends - # a REHASH message, an RPL_REHASHING is sent back to - # the operator. + # a REHASH message, an RPL_REHASHING is sent back to + # the operator. # - RPL_YOURESERVICE=383 + RPL_REHASHING=382 + # "You are service " # # - Sent by the server to a service upon successful - # registration. + # registration. # - RPL_TIME=391 + RPL_YOURESERVICE=383 + # " :" # # - When replying to the TIME message, a server MUST send - # the reply using the RPL_TIME format above. The string - # showing the time need only contain the correct day and - # time there. There is no further requirement for the - # time string. + # the reply using the RPL_TIME format above. The string + # showing the time need only contain the correct day and + # time there. There is no further requirement for the + # time string. # - RPL_USERSSTART=392 + RPL_TIME=391 + + # - If the USERS message is handled by a server, the + # replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and + # RPL_NOUSERS are used. RPL_USERSSTART MUST be sent + # first, following by either a sequence of RPL_USERS + # or a single RPL_NOUSER. Following this is + # RPL_ENDOFUSERS. + # ":UserID Terminal Host" - RPL_USERS=393 + RPL_USERSSTART=392 + # ": " - RPL_ENDOFUSERS=394 + RPL_USERS=393 + # ":End of users" - RPL_NOUSERS=395 + RPL_ENDOFUSERS=394 + # ":Nobody logged in" + RPL_NOUSERS=395 + + # - The RPL_TRACE* are all returned by the server in + # response to the TRACE message. How many are + # returned is dependent on the TRACE message and + # whether it was sent by an operator or not. There + # is no predefined order for which occurs first. + # Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and + # RPL_TRACEHANDSHAKE are all used for connections + # which have not been fully established and are either + # unknown, still attempting to connect or in the + # process of completing the 'server handshake'. + # RPL_TRACELINK is sent by any server which handles + # a TRACE message and has to pass it on to another + # server. The list of RPL_TRACELINKs sent in + # response to a TRACE command traversing the IRC + # network should reflect the actual connectivity of + # the servers themselves along that path. # - # - If the USERS message is handled by a server, the - # replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and - # RPL_NOUSERS are used. RPL_USERSSTART MUST be sent - # first, following by either a sequence of RPL_USERS - # or a single RPL_NOUSER. Following this is - # RPL_ENDOFUSERS. - # - RPL_TRACELINK=200 + # RPL_TRACENEWTYPE is to be used for any connection + # which does not fit in the other categories but is + # being displayed anyway. + # RPL_TRACEEND is sent to indicate the end of the list. + # "Link # V # # " - RPL_TRACECONNECTING=201 + RPL_TRACELINK=200 + # "Try. " - RPL_TRACEHANDSHAKE=202 + RPL_TRACECONNECTING=201 + # "H.S. " - RPL_TRACEUNKNOWN=203 + RPL_TRACEHANDSHAKE=202 + # "???? []" - RPL_TRACEOPERATOR=204 + RPL_TRACEUNKNOWN=203 + # "Oper " - RPL_TRACEUSER=205 + RPL_TRACEOPERATOR=204 + # "User " - RPL_TRACESERVER=206 + RPL_TRACEUSER=205 + # "Serv S C # @ V" - RPL_TRACESERVICE=207 + RPL_TRACESERVER=206 + # "Service " - RPL_TRACENEWTYPE=208 + RPL_TRACESERVICE=207 + # " 0 " - RPL_TRACECLASS=209 + RPL_TRACENEWTYPE=208 + # "Class " - RPL_TRACERECONNECT=210 + RPL_TRACECLASS=209 + # Unused. - RPL_TRACELOG=261 + RPL_TRACERECONNECT=210 + # "File " - RPL_TRACEEND=262 - # " :End of TRACE" - # - # - The RPL_TRACE* are all returned by the server in - # response to the TRACE message. How many are - # returned is dependent on the TRACE message and - # whether it was sent by an operator or not. There - # is no predefined order for which occurs first. - # Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and - # RPL_TRACEHANDSHAKE are all used for connections - # which have not been fully established and are either - # unknown, still attempting to connect or in the - # process of completing the 'server handshake'. - # RPL_TRACELINK is sent by any server which handles - # a TRACE message and has to pass it on to another - # server. The list of RPL_TRACELINKs sent in - # response to a TRACE command traversing the IRC - # network should reflect the actual connectivity of - # the servers themselves along that path. - # - # RPL_TRACENEWTYPE is to be used for any connection - # which does not fit in the other categories but is - # being displayed anyway. - # RPL_TRACEEND is sent to indicate the end of the list. - # - RPL_LOCALUSERS=265 + RPL_TRACELOG=261 + + # " :End of TRACE" + RPL_TRACEEND=262 + # ":Current local users: 3 Max: 4" - RPL_GLOBALUSERS=266 + RPL_LOCALUSERS=265 + # ":Current global users: 3 Max: 4" - RPL_STATSCONN=250 + RPL_GLOBALUSERS=266 + # "::Highest connection count: 4 (4 clients) (251 since server was # (re)started)" - RPL_STATSLINKINFO=211 + RPL_STATSCONN=250 + # " # #