You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2005/12/16 23:30:52 UTC
svn commit: r357245 [3/3] - in /maven/sandbox/issue/rbot/dist: ./ bin/ lib/
lib/site_ruby/ lib/site_ruby/1.8/ lib/site_ruby/1.8/rbot/ plugins/ share/
share/rbot/ share/rbot/languages/ share/rbot/templates/
share/rbot/templates/lart/
Added: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb (added)
+++ maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb Fri Dec 16 14:30:38 2005
@@ -0,0 +1,1107 @@
+module Irc
+ # RFC 2812 Internet Relay Chat: Client Protocol
+ #
+ RPL_WELCOME=001
+ # "Welcome to the Internet Relay Network
+ # <nick>!<user>@<host>"
+ RPL_YOURHOST=002
+ # "Your host is <servername>, running version <ver>"
+ RPL_CREATED=003
+ # "This server was created <date>"
+ RPL_MYINFO=004
+ # "<servername> <version> <available user modes>
+ # <available channel modes>"
+ #
+ # - The server sends Replies 001 to 004 to a user upon
+ # successful registration.
+ #
+ # RPL_BOUNCE=005
+ # # "Try server <server name>, port <port number>"
+ RPL_ISUPPORT=005
+ # "005 nick PREFIX=(ov)@+ CHANTYPES=#& :are supported by this server"
+ #
+ # - 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.
+ #
+ RPL_USERHOST=302
+ # ":*1<reply> *( " " <reply> )"
+ #
+ # - Reply format used by USERHOST to list replies to
+ # the query list. The reply string is composed as
+ # follows:
+ #
+ # reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
+ #
+ # The '*' indicates whether the client has registered
+ # as an Operator. The '-' or '+' characters represent
+ # whether the client has set an AWAY message or not
+ # respectively.
+ #
+ RPL_ISON=303
+ # ":*1<nick> *( " " <nick> )"
+ #
+ # - Reply format used by ISON to list replies to the
+ # query list.
+ #
+ RPL_AWAY=301
+ # "<nick> :<away message>"
+ RPL_UNAWAY=305
+ # ":You are no longer marked as being away"
+ RPL_NOWAWAY=306
+ # ":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
+ # "<nick> <user> <host> * :<real name>"
+ RPL_WHOISSERVER=312
+ # "<nick> <server> :<server info>"
+ RPL_WHOISOPERATOR=313
+ # "<nick> :is an IRC operator"
+ RPL_WHOISIDLE=317
+ # "<nick> <integer> :seconds idle"
+ RPL_ENDOFWHOIS=318
+ # "<nick> :End of WHOIS list"
+ RPL_WHOISCHANNELS=319
+ # "<nick> :*( ( "@" / "+" ) <channel> " " )"
+ #
+ # - 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
+ # "<nick> <user> <host> * :<real name>"
+ RPL_ENDOFWHOWAS=369
+ # "<nick> :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
+ # Obsolete. Not used.
+ #
+ RPL_LIST=322
+ # "<channel> <# visible> :<topic>"
+ RPL_LISTEND=323
+ # ":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
+ # "<channel> <nickname>"
+ #
+ RPL_CHANNELMODEIS=324
+ # "<channel> <mode> <mode params>"
+ #
+ RPL_NOTOPIC=331
+ # "<channel> :No topic is set"
+ RPL_TOPIC=332
+ # "<channel> :<topic>"
+ #
+ # - 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> <set by> <unixtime>
+ RPL_INVITING=341
+ # "<channel> <nick>"
+ #
+ # - Returned by the server to indicate that the
+ # attempted INVITE message was successful and is
+ # being passed onto the end client.
+ #
+ RPL_SUMMONING=342
+ # "<user> :Summoning user to IRC"
+ #
+ # - Returned by a server answering a SUMMON message to
+ # indicate that it is summoning that user.
+ #
+ RPL_INVITELIST=346
+ # "<channel> <invitemask>"
+ RPL_ENDOFINVITELIST=347
+ # "<channel> :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.
+ #
+ RPL_EXCEPTLIST=348
+ # "<channel> <exceptionmask>"
+ RPL_ENDOFEXCEPTLIST=349
+ # "<channel> :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.
+ #
+ RPL_VERSION=351
+ # "<version>.<debuglevel> <server> :<comments>"
+ #
+ # - Reply by the server showing its version details.
+ # The <version> is the version of the software being
+ # used (including any patchlevel revisions) and the
+ # <debuglevel> is used to indicate if the server is
+ # running in "debug mode".
+ #
+ # The "comments" field may contain any comments about
+ # the version or further version details.
+ #
+ RPL_WHOREPLY=352
+ # "<channel> <user> <host> <server> <nick>
+ # ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]
+ # :<hopcount> <real name>"
+ #
+ RPL_ENDOFWHO=315
+ # "<name> :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 <name> being
+ # the item.
+ #
+ RPL_NAMREPLY=353
+ # "( "=" / "*" / "@" ) <channel>
+ # :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
+ # - "@" is used for secret channels, "*" for private
+ # channels, and "=" for others (public channels).
+ #
+ RPL_ENDOFNAMES=366
+ # "<channel> :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
+ # "<mask> <server> :<hopcount> <server info>"
+ RPL_ENDOFLINKS=365
+ # "<mask> :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
+ # "<channel> <banmask>"
+ RPL_ENDOFBANLIST=368
+ # "<channel> :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
+ # ":<string>"
+ RPL_ENDOFINFO=374
+ # ":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
+ # ":- <server> Message of the day - "
+ RPL_MOTD=372
+ # ":- <text>"
+ RPL_ENDOFMOTD=376
+ # ":End of MOTD command"
+ #
+ # - 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
+ # ":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.
+ #
+ RPL_REHASHING=382
+ # "<config file> :Rehashing"
+ #
+ # - If the REHASH option is used and an operator sends
+ # a REHASH message, an RPL_REHASHING is sent back to
+ # the operator.
+ #
+ RPL_YOURESERVICE=383
+ # "You are service <servicename>"
+ #
+ # - Sent by the server to a service upon successful
+ # registration.
+ #
+ RPL_TIME=391
+ # "<server> :<string showing server's local time>"
+ #
+ # - 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.
+ #
+ RPL_USERSSTART=392
+ # ":UserID Terminal Host"
+ RPL_USERS=393
+ # ":<username> <ttyline> <hostname>"
+ RPL_ENDOFUSERS=394
+ # ":End of users"
+ RPL_NOUSERS=395
+ # ":Nobody logged in"
+ #
+ # - 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
+ # "Link <version & debug level> <destination>
+ # <next server> V<protocol version>
+ # <link uptime in seconds> <backstream sendq>
+ # <upstream sendq>"
+ RPL_TRACECONNECTING=201
+ # "Try. <class> <server>"
+ RPL_TRACEHANDSHAKE=202
+ # "H.S. <class> <server>"
+ RPL_TRACEUNKNOWN=203
+ # "???? <class> [<client IP address in dot form>]"
+ RPL_TRACEOPERATOR=204
+ # "Oper <class> <nick>"
+ RPL_TRACEUSER=205
+ # "User <class> <nick>"
+ RPL_TRACESERVER=206
+ # "Serv <class> <int>S <int>C <server>
+ # <nick!user|*!*>@<host|server> V<protocol version>"
+ RPL_TRACESERVICE=207
+ # "Service <class> <name> <type> <active type>"
+ RPL_TRACENEWTYPE=208
+ # "<newtype> 0 <client name>"
+ RPL_TRACECLASS=209
+ # "Class <class> <count>"
+ RPL_TRACERECONNECT=210
+ # Unused.
+ RPL_TRACELOG=261
+ # "File <logfile> <debug level>"
+ RPL_TRACEEND=262
+ # "<server name> <version & debug level> :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
+ # ":Current local users: 3 Max: 4"
+ RPL_GLOBALUSERS=266
+ # ":Current global users: 3 Max: 4"
+ RPL_STATSCONN=250
+ # "::Highest connection count: 4 (4 clients) (251 since server was
+ # (re)started)"
+ RPL_STATSLINKINFO=211
+ # "<linkname> <sendq> <sent messages>
+ # <sent Kbytes> <received messages>
+ # <received Kbytes> <time open>"
+ #
+ # - reports statistics on a connection. <linkname>
+ # identifies the particular connection, <sendq> is
+ # the amount of data that is queued and waiting to be
+ # sent <sent messages> the number of messages sent,
+ # and <sent Kbytes> the amount of data sent, in
+ # Kbytes. <received messages> and <received Kbytes>
+ # are the equivalent of <sent messages> and <sent
+ # Kbytes> for received data, respectively. <time
+ # open> indicates how long ago the connection was
+ # opened, in seconds.
+ #
+ RPL_STATSCOMMANDS=212
+ # "<command> <count> <byte count> <remote count>"
+ #
+ # - reports statistics on commands usage.
+ #
+ RPL_ENDOFSTATS=219
+ # "<stats letter> :End of STATS report"
+ #
+ RPL_STATSUPTIME=242
+ # ":Server Up %d days %d:%02d:%02d"
+ #
+ # - reports the server uptime.
+ #
+ RPL_STATSOLINE=243
+ # "O <hostmask> * <name>"
+ #
+ # - reports the allowed hosts from where user may become IRC
+ # operators.
+ #
+ RPL_UMODEIS=221
+ # "<user mode string>"
+ #
+ # - To answer a query about a client's own mode,
+ # RPL_UMODEIS is sent back.
+ #
+ RPL_SERVLIST=234
+ # "<name> <server> <mask> <type> <hopcount> <info>"
+ #
+ RPL_SERVLISTEND=235
+ # "<mask> <type> :End of service listing"
+ #
+ # - When listing services in reply to a SERVLIST message,
+ # a server is required to send the list back using the
+ # RPL_SERVLIST and RPL_SERVLISTEND messages. A separate
+ # RPL_SERVLIST is sent for each service. After the
+ # services have been listed (or if none present) a
+ # RPL_SERVLISTEND MUST be sent.
+ #
+ RPL_LUSERCLIENT=251
+ # ":There are <integer> users and <integer>
+ # services on <integer> servers"
+ RPL_LUSEROP=252
+ # "<integer> :operator(s) online"
+ RPL_LUSERUNKNOWN=253
+ # "<integer> :unknown connection(s)"
+ RPL_LUSERCHANNELS=254
+ # "<integer> :channels formed"
+ RPL_LUSERME=255
+ # ":I have <integer> clients and <integer>
+ # servers"
+ #
+ # - In processing an LUSERS message, the server
+ # sends a set of replies from RPL_LUSERCLIENT,
+ # RPL_LUSEROP, RPL_USERUNKNOWN,
+ # RPL_LUSERCHANNELS and RPL_LUSERME. When
+ # replying, a server MUST send back
+ # RPL_LUSERCLIENT and RPL_LUSERME. The other
+ # replies are only sent back if a non-zero count
+ # is found for them.
+ #
+ RPL_ADMINME=256
+ # "<server> :Administrative info"
+ RPL_ADMINLOC1=257
+ # ":<admin info>"
+ RPL_ADMINLOC2=258
+ # ":<admin info>"
+ RPL_ADMINEMAIL=259
+ # ":<admin info>"
+ #
+ # - When replying to an ADMIN message, a server
+ # is expected to use replies RPL_ADMINME
+ # through to RPL_ADMINEMAIL and provide a text
+ # message with each. For RPL_ADMINLOC1 a
+ # description of what city, state and country
+ # the server is in is expected, followed by
+ # details of the institution (RPL_ADMINLOC2)
+ # and finally the administrative contact for the
+ # server (an email address here is REQUIRED)
+ # in RPL_ADMINEMAIL.
+ #
+ RPL_TRYAGAIN=263
+ # "<command> :Please wait a while and try again."
+ #
+ # - When a server drops a command without processing it,
+ # it MUST use the reply RPL_TRYAGAIN to inform the
+ # originating client.
+ #
+ # 5.2 Error Replies
+ #
+ # Error replies are found in the range from 400 to 599.
+ #
+ ERR_NOSUCHNICK=401
+ # "<nickname> :No such nick/channel"
+ #
+ # - Used to indicate the nickname parameter supplied to a
+ # command is currently unused.
+ #
+ ERR_NOSUCHSERVER=402
+ # "<server name> :No such server"
+ #
+ # - Used to indicate the server name given currently
+ # does not exist.
+ #
+ ERR_NOSUCHCHANNEL=403
+ # "<channel name> :No such channel"
+ #
+ # - Used to indicate the given channel name is invalid.
+ #
+ ERR_CANNOTSENDTOCHAN=404
+ # "<channel name> :Cannot send to channel"
+ #
+ # - Sent to a user who is either (a) not on a channel
+ # which is mode +n or (b) not a chanop (or mode +v) on
+ # a channel which has mode +m set or where the user is
+ # banned and is trying to send a PRIVMSG message to
+ # that channel.
+ #
+ ERR_TOOMANYCHANNELS=405
+ # "<channel name> :You have joined too many channels"
+ #
+ # - Sent to a user when they have joined the maximum
+ # number of allowed channels and they try to join
+ # another channel.
+ #
+ ERR_WASNOSUCHNICK=406
+ # "<nickname> :There was no such nickname"
+ #
+ # - Returned by WHOWAS to indicate there is no history
+ # information for that nickname.
+ #
+ ERR_TOOMANYTARGETS=407
+ # "<target> :<error code> recipients. <abort message>"
+ #
+ # - Returned to a client which is attempting to send a
+ # PRIVMSG/NOTICE using the user@host destination format
+ # and for a user@host which has several occurrences.
+ #
+ # - Returned to a client which trying to send a
+ # PRIVMSG/NOTICE to too many recipients.
+ #
+ # - Returned to a client which is attempting to JOIN a safe
+ # channel using the shortname when there are more than one
+ # such channel.
+ #
+ ERR_NOSUCHSERVICE=408
+ # "<service name> :No such service"
+ #
+ # - Returned to a client which is attempting to send a SQUERY
+ # to a service which does not exist.
+ #
+ ERR_NOORIGIN=409
+ # ":No origin specified"
+ #
+ # - PING or PONG message missing the originator parameter.
+ #
+ ERR_NORECIPIENT=411
+ # ":No recipient given (<command>)"
+ ERR_NOTEXTTOSEND=412
+ # ":No text to send"
+ ERR_NOTOPLEVEL=413
+ # "<mask> :No toplevel domain specified"
+ ERR_WILDTOPLEVEL=414
+ # "<mask> :Wildcard in toplevel domain"
+ ERR_BADMASK=415
+ # "<mask> :Bad Server/host mask"
+ #
+ # - 412 - 415 are returned by PRIVMSG to indicate that
+ # the message wasn't delivered for some reason.
+ # ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that
+ # are returned when an invalid use of
+ # "PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted.
+ #
+ ERR_UNKNOWNCOMMAND=421
+ # "<command> :Unknown command"
+ #
+ # - Returned to a registered client to indicate that the
+ # command sent is unknown by the server.
+ #
+ ERR_NOMOTD=422
+ # ":MOTD File is missing"
+ #
+ # - Server's MOTD file could not be opened by the server.
+ #
+ ERR_NOADMININFO=423
+ # "<server> :No administrative info available"
+ #
+ # - Returned by a server in response to an ADMIN message
+ # when there is an error in finding the appropriate
+ # information.
+ #
+ ERR_FILEERROR=424
+ # ":File error doing <file op> on <file>"
+ #
+ # - Generic error message used to report a failed file
+ # operation during the processing of a message.
+ #
+ ERR_NONICKNAMEGIVEN=431
+ # ":No nickname given"
+ #
+ # - Returned when a nickname parameter expected for a
+ # command and isn't found.
+ #
+ ERR_ERRONEUSNICKNAME=432
+ # "<nick> :Erroneous nickname"
+ #
+ # - Returned after receiving a NICK message which contains
+ # characters which do not fall in the defined set. See
+ # section 2.3.1 for details on valid nicknames.
+ #
+ ERR_NICKNAMEINUSE=433
+ # "<nick> :Nickname is already in use"
+ #
+ # - Returned when a NICK message is processed that results
+ # in an attempt to change to a currently existing
+ # nickname.
+ #
+ ERR_NICKCOLLISION=436
+ # "<nick> :Nickname collision KILL from <user>@<host>"
+ #
+ # - Returned by a server to a client when it detects a
+ # nickname collision (registered of a NICK that
+ # already exists by another server).
+ #
+ ERR_UNAVAILRESOURCE=437
+ # "<nick/channel> :Nick/channel is temporarily unavailable"
+ #
+ # - Returned by a server to a user trying to join a channel
+ # currently blocked by the channel delay mechanism.
+ #
+ # - Returned by a server to a user trying to change nickname
+ # when the desired nickname is blocked by the nick delay
+ # mechanism.
+ #
+ ERR_USERNOTINCHANNEL=441
+ # "<nick> <channel> :They aren't on that channel"
+ #
+ # - Returned by the server to indicate that the target
+ # user of the command is not on the given channel.
+ #
+ ERR_NOTONCHANNEL=442
+ # "<channel> :You're not on that channel"
+ #
+ # - Returned by the server whenever a client tries to
+ # perform a channel affecting command for which the
+ # client isn't a member.
+ #
+ ERR_USERONCHANNEL=443
+ # "<user> <channel> :is already on channel"
+ #
+ # - Returned when a client tries to invite a user to a
+ # channel they are already on.
+ #
+ ERR_NOLOGIN=444
+ # "<user> :User not logged in"
+ #
+ # - Returned by the summon after a SUMMON command for a
+ # user was unable to be performed since they were not
+ # logged in.
+ #
+ #
+ ERR_SUMMONDISABLED=445
+ # ":SUMMON has been disabled"
+ #
+ # - Returned as a response to the SUMMON command. MUST be
+ # returned by any server which doesn't implement it.
+ #
+ ERR_USERSDISABLED=446
+ # ":USERS has been disabled"
+ #
+ # - Returned as a response to the USERS command. MUST be
+ # returned by any server which does not implement it.
+ #
+ ERR_NOTREGISTERED=451
+ # ":You have not registered"
+ #
+ # - Returned by the server to indicate that the client
+ # MUST be registered before the server will allow it
+ # to be parsed in detail.
+ #
+ ERR_NEEDMOREPARAMS=461
+ # "<command> :Not enough parameters"
+ #
+ # - Returned by the server by numerous commands to
+ # indicate to the client that it didn't supply enough
+ # parameters.
+ #
+ ERR_ALREADYREGISTRED=462
+ # ":Unauthorized command (already registered)"
+ #
+ # - Returned by the server to any link which tries to
+ # change part of the registered details (such as
+ # password or user details from second USER message).
+ #
+ ERR_NOPERMFORHOST=463
+ # ":Your host isn't among the privileged"
+ #
+ # - Returned to a client which attempts to register with
+ # a server which does not been setup to allow
+ # connections from the host the attempted connection
+ # is tried.
+ #
+ ERR_PASSWDMISMATCH=464
+ # ":Password incorrect"
+ #
+ # - Returned to indicate a failed attempt at registering
+ # a connection for which a password was required and
+ # was either not given or incorrect.
+ #
+ ERR_YOUREBANNEDCREEP=465
+ # ":You are banned from this server"
+ #
+ # - Returned after an attempt to connect and register
+ # yourself with a server which has been setup to
+ # explicitly deny connections to you.
+ #
+ ERR_YOUWILLBEBANNED=466
+ #
+ # - Sent by a server to a user to inform that access to the
+ # server will soon be denied.
+ #
+ ERR_KEYSET=467
+ # "<channel> :Channel key already set"
+ ERR_CHANNELISFULL=471
+ # "<channel> :Cannot join channel (+l)"
+ ERR_UNKNOWNMODE=472
+ # "<char> :is unknown mode char to me for <channel>"
+ ERR_INVITEONLYCHAN=473
+ # "<channel> :Cannot join channel (+i)"
+ ERR_BANNEDFROMCHAN=474
+ # "<channel> :Cannot join channel (+b)"
+ ERR_BADCHANNELKEY=475
+ # "<channel> :Cannot join channel (+k)"
+ ERR_BADCHANMASK=476
+ # "<channel> :Bad Channel Mask"
+ ERR_NOCHANMODES=477
+ # "<channel> :Channel doesn't support modes"
+ ERR_BANLISTFULL=478
+ # "<channel> <char> :Channel list is full"
+ #
+ ERR_NOPRIVILEGES=481
+ # ":Permission Denied- You're not an IRC operator"
+ #
+ # - Any command requiring operator privileges to operate
+ # MUST return this error to indicate the attempt was
+ # unsuccessful.
+ #
+ ERR_CHANOPRIVSNEEDED=482
+ # "<channel> :You're not channel operator"
+ #
+ # - Any command requiring 'chanop' privileges (such as
+ # MODE messages) MUST return this error if the client
+ # making the attempt is not a chanop on the specified
+ # channel.
+ #
+ #
+ ERR_CANTKILLSERVER=483
+ # ":You can't kill a server!"
+ #
+ # - Any attempts to use the KILL command on a server
+ # are to be refused and this error returned directly
+ # to the client.
+ #
+ ERR_RESTRICTED=484
+ # ":Your connection is restricted!"
+ #
+ # - Sent by the server to a user upon connection to indicate
+ # the restricted nature of the connection (user mode "+r").
+ #
+ ERR_UNIQOPPRIVSNEEDED=485
+ # ":You're not the original channel operator"
+ #
+ # - Any MODE requiring "channel creator" privileges MUST
+ # return this error if the client making the attempt is not
+ # a chanop on the specified channel.
+ #
+ ERR_NOOPERHOST=491
+ # ":No O-lines for your host"
+ #
+ # - If a client sends an OPER message and the server has
+ # not been configured to allow connections from the
+ # client's host as an operator, this error MUST be
+ # returned.
+ #
+ ERR_UMODEUNKNOWNFLAG=501
+ # ":Unknown MODE flag"
+ #
+ # - Returned by the server to indicate that a MODE
+ # message was sent with a nickname parameter and that
+ # the a mode flag sent was not recognized.
+ #
+ ERR_USERSDONTMATCH=502
+ # ":Cannot change mode for other users"
+ #
+ # - Error sent to any user trying to view or change the
+ # user mode for a user other than themselves.
+ #
+ # 5.3 Reserved numerics
+ #
+ # These numerics are not described above since they fall into one of
+ # the following categories:
+ #
+ # 1. no longer in use;
+ #
+ # 2. reserved for future planned use;
+ #
+ # 3. in current use but are part of a non-generic 'feature' of
+ # the current IRC server.
+ RPL_SERVICEINFO=231
+ RPL_ENDOFSERVICES=232
+ RPL_SERVICE=233
+ RPL_NONE=300
+ RPL_WHOISCHANOP=316
+ RPL_KILLDONE=361
+ RPL_CLOSING=362
+ RPL_CLOSEEND=363
+ RPL_INFOSTART=373
+ RPL_MYPORTIS=384
+ RPL_STATSCLINE=213
+ RPL_STATSNLINE=214
+ RPL_STATSILINE=215
+ RPL_STATSKLINE=216
+ RPL_STATSQLINE=217
+ RPL_STATSYLINE=218
+ RPL_STATSVLINE=240
+ RPL_STATSLLINE=241
+ RPL_STATSHLINE=244
+ RPL_STATSSLINE=244
+ RPL_STATSPING=246
+ RPL_STATSBLINE=247
+ ERR_NOSERVICEHOST=492
+
+ # implements RFC 2812 and prior IRC RFCs.
+ # clients register handler proc{}s for different server events and IrcClient
+ # handles dispatch
+ class IrcClient
+ # create a new IrcClient instance
+ def initialize
+ @handlers = Hash.new
+ @users = Array.new
+ end
+
+ # key:: server event to handle
+ # value:: proc object called when event occurs
+ # set a handler for a server event
+ #
+ # ==server events currently supported:
+ #
+ # created:: when the server was started
+ # yourhost:: your host details (on connection)
+ # ping:: server pings you (default handler returns a pong)
+ # nicktaken:: you tried to change nick to one that's in use
+ # badnick:: you tried to change nick to one that's invalid
+ # topic:: someone changed the topic of a channel
+ # topicinfo:: on joining a channel or asking for the topic, tells you
+ # who set it and when
+ # names:: server sends list of channel members when you join
+ # welcome:: server welcome message on connect
+ # motd:: server message of the day
+ # privmsg:: privmsg, the core of IRC, a message to you from someone
+ # public:: optionally instead of getting privmsg you can hook to only
+ # the public ones...
+ # msg:: or only the private ones, or both
+ # kick:: someone got kicked from a channel
+ # part:: someone left a channel
+ # quit:: someone quit IRC
+ # join:: someone joined a channel
+ # changetopic:: the topic of a channel changed
+ # invite:: you are invited to a channel
+ # nick:: someone changed their nick
+ # mode:: a mode change
+ # notice:: someone sends you a notice
+ # unknown:: any other message not handled by the above
+ def []=(key, value)
+ @handlers[key] = value
+ end
+
+ # key:: event name
+ # remove a handler for a server event
+ def deletehandler(key)
+ @handlers.delete(key)
+ end
+
+ # takes a server string, checks for PING, PRIVMSG, NOTIFY, etc, and parses
+ # numeric server replies, calling the appropriate handler for each, and
+ # sending it a hash containing the data from the server
+ def process(serverstring)
+ data = Hash.new
+ data[:serverstring] = serverstring
+
+ unless serverstring =~ /^(:(\S+)\s)?(\S+)(\s(.*))?/
+ raise "Unparseable Server Message!!!: #{serverstring}"
+ end
+
+ prefix, command, params = $2, $3, $5
+
+ if prefix != nil
+ data[:source] = prefix
+ if prefix =~ /^(\S+)!(\S+)$/
+ data[:sourcenick] = $1
+ data[:sourceaddress] = $2
+ end
+ end
+
+ # split parameters in an array
+ argv = []
+ params.scan(/(?!:)(\S+)|:(.*)/) { argv << ($1 || $2) } if params
+
+ case command
+ when 'PING'
+ data[:pingid] = argv[0]
+ handle(:ping, data)
+ when 'PONG'
+ data[:pingid] = argv[0]
+ handle(:pong, data)
+ when /^(\d+)$/ # numeric server message
+ num=command.to_i
+ case num
+ when RPL_YOURHOST
+ # "Your host is <servername>, running version <ver>"
+ # TODO how standard is this "version <ver>? should i parse it?
+ data[:message] = argv[1]
+ handle(:yourhost, data)
+ when RPL_CREATED
+ # "This server was created <date>"
+ data[:message] = argv[1]
+ handle(:created, data)
+ when RPL_MYINFO
+ # "<servername> <version> <available user modes>
+ # <available channel modes>"
+ data[:servername] = argv[1]
+ data[:version] = argv[2]
+ data[:usermodes] = argv[3]
+ data[:chanmodes] = argv[4]
+ when ERR_NICKNAMEINUSE
+ # "* <nick> :Nickname is already in use"
+ data[:nick] = argv[1]
+ data[:message] = argv[2]
+ handle(:nicktaken, data)
+ when ERR_ERRONEUSNICKNAME
+ # "* <nick> :Erroneous nickname"
+ data[:nick] = argv[1]
+ data[:message] = argv[2]
+ handle(:badnick, data)
+ when RPL_TOPIC
+ data[:channel] = argv[1]
+ data[:topic] = argv[2]
+ handle(:topic, data)
+ when RPL_TOPIC_INFO
+ data[:nick] = argv[0]
+ data[:channel] = argv[1]
+ data[:source] = argv[2]
+ data[:unixtime] = argv[3]
+ handle(:topicinfo, data)
+ when RPL_NAMREPLY
+ # "( "=" / "*" / "@" ) <channel>
+ # :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
+ # - "@" is used for secret channels, "*" for private
+ # channels, and "=" for others (public channels).
+ argv[3].scan(/\S+/).each { |u|
+ if(u =~ /^([@+])?(.*)$/)
+ umode = $1 || ""
+ user = $2
+ @users << [user, umode]
+ end
+ }
+ when RPL_ENDOFNAMES
+ data[:channel] = argv[1]
+ data[:users] = @users
+ handle(:names, data)
+ @users = Array.new
+ when RPL_ISUPPORT
+ # "PREFIX=(ov)@+ CHANTYPES=#& :are supported by this server"
+ # "MODES=4 CHANLIMIT=#:20 NICKLEN=16 USERLEN=10 HOSTLEN=63
+ # TOPICLEN=450 KICKLEN=450 CHANNELLEN=30 KEYLEN=23 CHANTYPES=#
+ # PREFIX=(ov)@+ CASEMAPPING=ascii CAPAB IRCD=dancer :are available
+ # on this server"
+ #
+ argv.each {|a|
+ if a =~ /^(.*)=(.*)$/
+ data[$1.downcase.to_sym] = $2
+ end
+ }
+ handle(:isupport, data)
+ when RPL_LUSERCLIENT
+ # ":There are <integer> users and <integer>
+ # services on <integer> servers"
+ data[:message] = argv[1]
+ handle(:luserclient, data)
+ when RPL_LUSEROP
+ # "<integer> :operator(s) online"
+ data[:ops] = argv[1].to_i
+ handle(:luserop, data)
+ when RPL_LUSERUNKNOWN
+ # "<integer> :unknown connection(s)"
+ data[:unknown] = argv[1].to_i
+ handle(:luserunknown, data)
+ when RPL_LUSERCHANNELS
+ # "<integer> :channels formed"
+ data[:channels] = argv[1].to_i
+ handle(:luserchannels, data)
+ when RPL_LUSERME
+ # ":I have <integer> clients and <integer> servers"
+ data[:message] = argv[1]
+ handle(:luserme, data)
+ when ERR_NOMOTD
+ # ":MOTD File is missing"
+ data[:message] = argv[1]
+ handle(:motd_missing, data)
+ when RPL_LOCALUSERS
+ # ":Current local users: 3 Max: 4"
+ data[:message] = argv[1]
+ handle(:localusers, data)
+ when RPL_GLOBALUSERS
+ # ":Current global users: 3 Max: 4"
+ data[:message] = argv[1]
+ handle(:globalusers, data)
+ when RPL_STATSCONN
+ # ":Highest connection count: 4 (4 clients) (251 since server was
+ # (re)started)"
+ data[:message] = argv[1]
+ handle(:statsconn, data)
+ when RPL_WELCOME
+ # "Welcome to the Internet Relay Network
+ # <nick>!<user>@<host>"
+ case argv[1]
+ when /((\S+)!(\S+))/
+ data[:netmask] = $1
+ data[:nick] = $2
+ data[:address] = $3
+ when /Welcome to the Internet Relay Network\s(\S+)/
+ data[:nick] = $1
+ when /Welcome.*\s+(\S+)$/
+ data[:nick] = $1
+ when /^(\S+)$/
+ data[:nick] = $1
+ end
+ handle(:welcome, data)
+ when RPL_MOTDSTART
+ # "<nick> :- <server> Message of the Day -"
+ if argv[1] =~ /^-\s+(\S+)\s/
+ server = $1
+ @motd = ""
+ end
+ when RPL_MOTD
+ if(argv[1] =~ /^-\s+(.*)$/)
+ @motd << $1
+ @motd << "\n"
+ end
+ when RPL_ENDOFMOTD
+ data[:motd] = @motd
+ handle(:motd, data)
+ else
+ handle(:unknown, data)
+ end
+ # end of numeric replies
+ when 'PRIVMSG'
+ # you can either bind to 'PRIVMSG', to get every one and
+ # parse it yourself, or you can bind to 'MSG', 'PUBLIC',
+ # etc and get it all nicely split up for you.
+ data[:target] = argv[0]
+ data[:message] = argv[1]
+ handle(:privmsg, data)
+
+ # Now we split it
+ if(data[:target] =~ /^(#|&).*/)
+ handle(:public, data)
+ else
+ handle(:msg, data)
+ end
+ when 'KICK'
+ data[:channel] = argv[0]
+ data[:target] = argv[1]
+ data[:message] = argv[2]
+ handle(:kick, data)
+ when 'PART'
+ data[:channel] = argv[0]
+ data[:message] = argv[1]
+ handle(:part, data)
+ when 'QUIT'
+ data[:message] = argv[0]
+ handle(:quit, data)
+ when 'JOIN'
+ data[:channel] = argv[0]
+ handle(:join, data)
+ when 'TOPIC'
+ data[:channel] = argv[0]
+ data[:topic] = argv[1]
+ handle(:changetopic, data)
+ when 'INVITE'
+ data[:target] = argv[0]
+ data[:channel] = argv[1]
+ handle(:invite, data)
+ when 'NICK'
+ data[:nick] = argv[0]
+ handle(:nick, data)
+ when 'MODE'
+ data[:channel] = argv[0]
+ data[:modestring] = argv[1]
+ data[:targets] = argv[2]
+ handle(:mode, data)
+ when 'NOTICE'
+ data[:target] = argv[0]
+ data[:message] = argv[1]
+ if data[:sourcenick]
+ handle(:notice, data)
+ else
+ # "server notice" (not from user, noone to reply to
+ handle(:snotice, data)
+ end
+ else
+ handle(:unknown, data)
+ end
+ end
+
+ private
+
+ # key:: server event name
+ # data:: hash containing data about the event, passed to the proc
+ # call client's proc for an event, if they set one as a handler
+ def handle(key, data)
+ if(@handlers.has_key?(key))
+ @handlers[key].call(data)
+ end
+ end
+ end
+end
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/rfc2812.rb
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb (added)
+++ maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb Fri Dec 16 14:30:38 2005
@@ -0,0 +1,205 @@
+module Timer
+
+ # timer event, something to do and when/how often to do it
+ class Action
+
+ # when this action is due next (updated by tick())
+ attr_reader :in
+
+ # is this action blocked? if so it won't be run
+ attr_accessor :blocked
+
+ # period:: how often (seconds) to run the action
+ # data:: optional data to pass to the proc
+ # once:: optional, if true, this action will be run once then removed
+ # func:: associate a block to be called to perform the action
+ #
+ # create a new action
+ def initialize(period, data=nil, once=false, &func)
+ @blocked = false
+ @period = period
+ @in = period
+ @func = func
+ @data = data
+ @once = once
+ @last_tick = Time.new
+ end
+
+ def tick
+ diff = Time.new - @last_tick
+ @in -= diff
+ @last_tick = Time.new
+ end
+
+ def inspect
+ "#<#{self.class}:#{@period}s:#{@once ? 'once' : 'repeat'}>"
+ end
+
+ def due?
+ @in <= 0
+ end
+
+ # run the action by calling its proc
+ def run
+ @in += @period
+ # really short duration timers can overrun and leave @in negative,
+ # for these we set @in to @period
+ @in = @period if @in <= 0
+ if(@data)
+ @func.call(@data)
+ else
+ @func.call
+ end
+ return @once
+ end
+ end
+
+ # timer handler, manage multiple Action objects, calling them when required.
+ # The timer must be ticked by whatever controls it, i.e. regular calls to
+ # tick() at whatever granularity suits your application's needs.
+ #
+ # Alternatively you can call run(), and the timer will spawn a thread and
+ # tick itself, intelligently shutting down the thread if there are no
+ # pending actions.
+ class Timer
+ def initialize(granularity = 0.1)
+ @granularity = granularity
+ @timers = Hash.new
+ @handle = 0
+ @lasttime = 0
+ @should_be_running = false
+ @thread = false
+ @next_action_time = 0
+ end
+
+ # period:: how often (seconds) to run the action
+ # data:: optional data to pass to the action's proc
+ # func:: associate a block with add() to perform the action
+ #
+ # add an action to the timer
+ def add(period, data=nil, &func)
+ debug "adding timer, period #{period}"
+ @handle += 1
+ @timers[@handle] = Action.new(period, data, &func)
+ start_on_add
+ return @handle
+ end
+
+ # period:: how long (seconds) until the action is run
+ # data:: optional data to pass to the action's proc
+ # func:: associate a block with add() to perform the action
+ #
+ # add an action to the timer which will be run just once, after +period+
+ def add_once(period, data=nil, &func)
+ debug "adding one-off timer, period #{period}"
+ @handle += 1
+ @timers[@handle] = Action.new(period, data, true, &func)
+ start_on_add
+ return @handle
+ end
+
+ # remove action with handle +handle+ from the timer
+ def remove(handle)
+ @timers.delete(handle)
+ end
+
+ # block action with handle +handle+
+ def block(handle)
+ @timers[handle].blocked = true
+ end
+
+ # unblock action with handle +handle+
+ def unblock(handle)
+ @timers[handle].blocked = false
+ end
+
+ # you can call this when you know you're idle, or you can split off a
+ # thread and call the run() method to do it for you.
+ def tick
+ if(@lasttime == 0)
+ # don't do anything on the first tick
+ @lasttime = Time.now
+ return
+ end
+ @next_action_time = 0
+ diff = (Time.now - @lasttime).to_f
+ @lasttime = Time.now
+ @timers.each { |key,timer|
+ timer.tick
+ next if timer.blocked
+ if(timer.due?)
+ if(timer.run)
+ # run once
+ @timers.delete(key)
+ end
+ end
+ if @next_action_time == 0 || timer.in < @next_action_time
+ @next_action_time = timer.in
+ end
+ }
+ #debug "ticked. now #{@timers.length} timers remain"
+ #debug "next timer due at #{@next_action_time}"
+ end
+
+ # for backwards compat - this is a bit primitive
+ def run(granularity=0.1)
+ while(true)
+ sleep(granularity)
+ tick
+ end
+ end
+
+ def running?
+ @thread && @thread.alive?
+ end
+
+ # return the number of seconds until the next action is due, or 0 if
+ # none are outstanding - will only be accurate immediately after a
+ # tick()
+ def next_action_time
+ @next_action_time
+ end
+
+ # start the timer, it spawns a thread to tick the timer, intelligently
+ # shutting down if no events remain and starting again when needed.
+ def start
+ return if running?
+ @should_be_running = true
+ start_thread unless @timers.empty?
+ end
+
+ # stop the timer from ticking
+ def stop
+ @should_be_running = false
+ stop_thread
+ end
+
+ private
+
+ def start_on_add
+ if running?
+ stop_thread
+ start_thread
+ elsif @should_be_running
+ start_thread
+ end
+ end
+
+ def stop_thread
+ return unless running?
+ @thread.kill
+ end
+
+ def start_thread
+ return if running?
+ @thread = Thread.new do
+ while(true)
+ tick
+ exit if @timers.empty?
+ sleep(@next_action_time)
+ end
+ end
+ end
+
+ end
+end
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/timer.rb
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb (added)
+++ maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb Fri Dec 16 14:30:38 2005
@@ -0,0 +1,83 @@
+require 'net/http'
+require 'uri'
+
+module Irc
+
+ # miscellaneous useful functions
+ module Utils
+
+ # turn a number of seconds into a human readable string, e.g
+ # 2 days, 3 hours, 18 minutes, 10 seconds
+ def Utils.secs_to_string(secs)
+ ret = ""
+ days = (secs / (60 * 60 * 24)).to_i
+ secs = secs % (60 * 60 * 24)
+ hours = (secs / (60 * 60)).to_i
+ secs = (secs % (60 * 60))
+ mins = (secs / 60).to_i
+ secs = (secs % 60).to_i
+ ret += "#{days} days, " if days > 0
+ ret += "#{hours} hours, " if hours > 0 || days > 0
+ ret += "#{mins} minutes and " if mins > 0 || hours > 0 || days > 0
+ ret += "#{secs} seconds"
+ return ret
+ end
+
+
+ def Utils.safe_exec(command, *args)
+ IO.popen("-") {|p|
+ if(p)
+ return p.readlines.join("\n")
+ else
+ begin
+ $stderr = $stdout
+ exec(command, *args)
+ rescue Exception => e
+ puts "exec of #{command} led to exception: #{e}"
+ Kernel::exit! 0
+ end
+ puts "exec of #{command} failed"
+ Kernel::exit! 0
+ end
+ }
+ end
+
+ # returns a string containing the result of an HTTP GET on the uri
+ def Utils.http_get(uristr, readtimeout=8, opentimeout=4)
+
+ # ruby 1.7 or better needed for this (or 1.6 and debian unstable)
+ Net::HTTP.version_1_2
+ # (so we support the 1_1 api anyway, avoids problems)
+
+ uri = URI.parse uristr
+ query = uri.path
+ if uri.query
+ query += "?#{uri.query}"
+ end
+
+ proxy_host = nil
+ proxy_port = nil
+ if(ENV['http_proxy'] && proxy_uri = URI.parse(ENV['http_proxy']))
+ proxy_host = proxy_uri.host
+ proxy_port = proxy_uri.port
+ end
+
+ begin
+ http = Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port)
+ http.open_timeout = opentimeout
+ http.read_timeout = readtimeout
+
+ http.start {|http|
+ resp = http.get(query)
+ if resp.code == "200"
+ return resp.body
+ end
+ }
+ rescue => e
+ # cheesy for now
+ $stderr.puts "Utils.http_get exception: #{e}, while trying to get #{uristr}"
+ return nil
+ end
+ end
+ end
+end
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rbot/dist/lib/site_ruby/1.8/rbot/utils.rb
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/issue/rbot/dist/plugin_registry.db
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/plugin_registry.db?rev=357245&view=auto
==============================================================================
Binary file - no diff available.
Propchange: maven/sandbox/issue/rbot/dist/plugin_registry.db
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: maven/sandbox/issue/rbot/dist/plugins/jira.rb
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/plugins/jira.rb?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/plugins/jira.rb (added)
+++ maven/sandbox/issue/rbot/dist/plugins/jira.rb Fri Dec 16 14:30:38 2005
@@ -0,0 +1,86 @@
+require 'issue'
+require 'yaml'
+
+# faq counter: totals, by each contributor. a report would be nice.
+
+class JiraPlugin < Plugin
+
+ @server = nil
+
+ def jira(m,params)
+ unless(params)
+ m.reply "incorrect usage. " + help(m.plugin)
+ end
+
+ # Using the jira library directly seems to crash rbot ...
+ # so i'm just exec'ing the command line tool used to query
+ # JIRA from the command line.
+
+ issue = getServer().getIssue( params[:issue].to_s.upcase )
+ puts issue
+ url = getServer().issueUrl(issue)
+ puts url
+ user = getServer().getUser( issue['reporter'] )
+ m.reply( " " )
+ string = ""
+ string << " URL: #{url}\n"
+ string << " Status: #{issue['status']}\n"
+ string << " Summary: #{issue['summary']}\n"
+ string << "Reporter: #{user['fullname']} (#{issue['reporter']})"
+ m.reply( string )
+ m.reply( " " )
+ end
+
+ # Need to know which person submitted the entry
+ def faqa(m,params)
+ unless(m.params)
+ m.reply "incorrect usage. " + help(m.plugin)
+ end
+ who = params[:who]
+ summary = params[:phrase].join( " " )
+ fields = getServer().createIssue2( 'MNGFAQ', summary, 'none', '1', who, 'minor' )
+ getServer().closeIssue( fields )
+ end
+
+ # Need to know which person submitted the entry
+ def faqq(m,params)
+ unless(m.params)
+ m.reply "incorrect usage. " + help(m.plugin)
+ end
+ who = params[:who]
+ summary = params[:phrase].join( " " )
+ puts who
+ puts summary
+ fields = getServer().createIssue2( 'MNGFAQ', summary, 'none', '1', who, 'minor' )
+ end
+
+ def faqc(m,params)
+ unless(m.params)
+ m.reply "incorrect usage. " + help(m.plugin)
+ end
+ issue = params[:issue]
+ fields = issue = getServer().getIssue( issue.upcase! )
+ puts fields
+ getServer().closeIssue( fields )
+ end
+
+ def issue(m,params)
+ fields = getServer().createIssue2( params[:project], params[:summary], params[:description], '1', params[:assignee], 'minor' )
+ m.reply( fields['key'] )
+ m.reply( " created." )
+ end
+
+ def getServer
+ if @server == nil
+ @server = IssueManager.new()
+ end
+ @server
+ end
+end
+
+plugin = JiraPlugin.new
+plugin.map 'jira :issue'
+plugin.map 'faqa :who *phrase'
+plugin.map 'faqq :who *phrase'
+plugin.map 'faqc :issue'
+plugin.map 'issue :project :summary :description :assignee'
Propchange: maven/sandbox/issue/rbot/dist/plugins/jira.rb
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rbot/dist/plugins/jira.rb
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/issue/rbot/dist/rbot.sh
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/rbot.sh?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/rbot.sh (added)
+++ maven/sandbox/issue/rbot/dist/rbot.sh Fri Dec 16 14:30:38 2005
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+dir=`pwd`
+
+export JIRA_CONF_DIR=$dir
+
+(
+ cd bin
+
+ exec ruby -I $dir/lib/site_ruby/1.8 rbot $dir $dir/share/rbot
+)
Propchange: maven/sandbox/issue/rbot/dist/rbot.sh
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rbot/dist/rbot.sh
------------------------------------------------------------------------------
svn:executable = *
Propchange: maven/sandbox/issue/rbot/dist/rbot.sh
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/issue/rbot/dist/share/rbot/languages/dutch.lang
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/languages/dutch.lang?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/languages/dutch.lang (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/languages/dutch.lang Fri Dec 16 14:30:38 2005
@@ -0,0 +1,73 @@
+okay:
+ ok
+ ok dan :)
+ goed
+ mooi
+ voila
+ in orde
+ 't is gebeurd
+ zeker
+ dat kan ik!
+ komt in orde
+ k
+ ik zal het eens doen
+dunno:
+ geen idee
+ dat weet ik niet
+ dat gaat m'n petje te boven
+ *haal schouder op*
+ vraag dat aan iemand anders
+ dat moet je niet aan mij vragen
+ wie weet dat?
+ dat kan ik niet
+ laat je eens nakijken...
+ wat vraag je nu?
+dunno_about_X:
+ maar ik weet niks over %s
+ Ik heb nog nooit van %s gehoord :(
+ maar wat is %s?
+insult:
+ %s: idioot!
+ %s: :(
+ %s: Ik haat je:(
+ %s: val dood!
+ %s: Ik ben beledigd!
+hello:
+ hallo :)
+ hey!
+ hi
+ yo
+ yow
+ joe
+ jowjowjow
+hello_X:
+ hallo %s :)
+ %s: hallo
+ hey %s :)
+ %s: hi!
+ yo %s!
+ joe %s!
+ alles ok %s?
+ %s: alles goed?
+welcome:
+ geen probleem
+ 't is niks
+ altijd welkom
+ graag gedaan
+ np :)
+thanks:
+ danku :)
+ bedankt!
+ thx :)
+ =D
+ je bent een schatje :)
+thanks_X:
+ %s: danku :)
+ %s: bedankt!
+ %s: =D
+ %s: thx :)
+ %s: je bent een schatje :)
+quit:
+ ok ik ben weg
+ yo
+ ciao
Added: maven/sandbox/issue/rbot/dist/share/rbot/languages/english.lang
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/languages/english.lang?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/languages/english.lang (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/languages/english.lang Fri Dec 16 14:30:38 2005
@@ -0,0 +1,75 @@
+okay:
+ okay
+ okay then :)
+ okies!
+ fine
+ done
+ can do!
+ alright
+ sure
+ aight
+ lemme take care of that for you
+dunno:
+ dunno
+ beats me
+ no idea
+ no clue
+ ...eh?
+ *shrug*
+ don't ask me
+ who knows?
+ I can't do that Dave.
+ you best check yo'self!
+dunno_about_X:
+ but I dunno anything about %s
+ I never heard of %s :(
+ %s? what's that then?
+ but what's %s?
+insult:
+ %s: wanker!
+ %s: :(
+ %s: I hate you :(
+ %s: die!
+ %s: I'm offended!
+ %s: you hurt my feelings
+hello:
+ hello :)
+ hola :)
+ salut
+ hey!
+ word.
+ hi
+ yo
+ 'sup?
+hello_X:
+ hello %s :)
+ %s: hey there
+ %s: hola :)
+ %s: salut
+ hey %s :)
+ %s: word
+ %s: hi!
+ yo %s!
+ %s: 'sup?
+ 'sup %s?
+welcome:
+ no probbie
+ you're welcome
+ de nada
+ any time
+ np :)
+thanks:
+ thanks :)
+ schweet!
+ ta :)
+ =D
+ cheers!
+thanks_X:
+ %s: thanks :)
+ %s: schweet!
+ %s: =D
+ %s: ta :)
+ %s: cheers
+quit:
+ okay bye
+ seeya
Added: maven/sandbox/issue/rbot/dist/share/rbot/languages/french.lang
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/languages/french.lang?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/languages/french.lang (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/languages/french.lang Fri Dec 16 14:30:38 2005
@@ -0,0 +1,39 @@
+okay:
+ d'accord
+dunno:
+ de quoi est mort votre dernier esclave?
+ je vous aurais bien aide, mais je ne vous aime pas
+ faites-le vous-même
+ parle à mon cul, ma tête est malade
+ je ne sais pas
+ je ne peut pas faire ca Dave.
+dunno_about_X:
+ qu'est-ce c'est %s?
+insult:
+ %s: putin!
+ %s: :(
+ %s: je te déteste :(
+ %s: tu es completement debile
+ %s: mais t'as une tête a faire sauter les plaques d'egouts!
+ %s: est-ce que vous êtes ivre?
+hello:
+ bonjour
+ salut
+ bonsoir
+hello_X:
+ bonjour %s :)
+ %s: salut
+welcome:
+ de rien
+ aucun probleme
+thanks:
+ merci :)
+ tu es trop gentil!
+ je vous remerci bien
+thanks_X:
+ %s: merci :)
+ %s: tu es trop gentil!
+ %s: je vous remerci bien
+quit:
+ d'accord, au revoir
+ a demain
Added: maven/sandbox/issue/rbot/dist/share/rbot/languages/german.lang
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/languages/german.lang?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/languages/german.lang (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/languages/german.lang Fri Dec 16 14:30:38 2005
@@ -0,0 +1,70 @@
+okay:
+ okay
+ okay na dann :)
+ gut
+ gemacht
+ wird gemacht!
+ also los
+ sicher
+ klar
+ lass mich sorge tragen :-)
+dunno:
+ kann nicht
+ schlag mich
+ habe keine Idee
+ habe keine Ahnung
+ *achselzuck*
+ frag mich nicht
+ wer weiss?
+ ich kann es nicht tun
+ am besten du schaust selber nach
+dunno_about_X:
+ ich weiss nichts über %s
+ ich habe nie von %s gehört :(
+ was zum Teufel ist %s?
+insult:
+ %s: Arsch!
+ %s: :(
+ %s: Ich hasse dich :(
+ %s: Stirb!
+ %s: Ich bin beleidigt!
+hello:
+ hallo :)
+ hola :)
+ salut
+ hey!
+ sag nichts.
+ hi
+ yo
+ Was geht?
+hello_X:
+ hallo %s :)
+ %s: guggus
+ %s: hola :)
+ %s: salut
+ hey %s :)
+ %s: sag nichts
+ %s: hi!
+ yo %s!
+ %s: Was geht?
+ Was geht %s?
+welcome:
+ no probbie
+ you're welcome
+ de nada
+ any time
+ np :)
+thanks:
+ Danke :)
+ Süss!
+ juhu :)
+ :-D
+ Prost!
+thanks_X:
+ %s: danke :)
+ %s: :-D
+ %s: süss!
+ %s: juhu :)
+ %s: Prost
+quit:
+ forkbomb rockt
Added: maven/sandbox/issue/rbot/dist/share/rbot/templates/keywords.rbot
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/templates/keywords.rbot?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/templates/keywords.rbot (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/templates/keywords.rbot Fri Dec 16 14:30:38 2005
@@ -0,0 +1,4 @@
+lb<=is=>http://linuxbrit.co.uk
+offended<=is=><reply><who> is offended!
+giblet<=is=><reply>daddy!
+rbot<=is=><reply>That's me! :-))
Added: maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/larts
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/larts?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/larts (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/larts Fri Dec 16 14:30:38 2005
@@ -0,0 +1,98 @@
+swaps <who>'s shampoo with nair
+installs windows on <who>'s machine
+forces <who> to use perl for 3 weeks
+registers <who>'s name with 50 known spammers
+resizes <who>'s terminal to 40x24
+takes <who>'s tea
+dispenses <who>'s email address to a few hundred 'bulk mailing services'
+pokes <who> in the eye
+beats <who> senseless with a 50lb Unix manual
+cats /dev/urandom into <who>'s ear
+signs <who> up for AOL
+enrolls <who> in Visual Basic 101
+sporks <who>
+drops a truckload of VAXen on <who>
+judo chops <who>
+resizes <who>'s terminal to 40x24
+formats <who>'s harddrive to fat12
+rm -rf's <who>
+stabs <who>
+steals <who>'s mojo
+strangles <who> with a doohicky mouse cord
+whacks <who> with the cluebat
+sells <who> on E-Bay
+uses <who> as a biological warfare study
+uses the "Customer Appreciation Bat" on <who>
+reads <who> some vogon poetry
+puts <who> in the Total Perspective Vortex
+casts <who> into the fires of Mt. Doom
+gives <who> a melvin
+turns over <who> to Agent Smith to be "bugged"
+takes away <who>'s internet connection
+pushes <who> past the Shoe Event Horizon
+counts "1, 2, 5... er... 3!" and hurls the Holy Handgrenade Of Antioch at <who>
+puts <who> in a nest of camel spiders
+makes <who> read slashdot at -1
+puts "alias vim=emacs" in <who>'s /etc/profile
+uninstalls ld from <who>'s system
+locks <who> in the Chateau d'If
+signs <who> up for getting hit on the head lessons
+makes <who> try to set up a Lexmark printer
+fills <who>'s Visene eyedrop bottle with lime juice
+casts <who> into the fires of Mt. Doom.
+gives <who> a Chicago Steamer
+rips off <who>'s arm, and uses it to beat them to death
+pierces <who>'s nose with a rusty paper hole puncher
+pokes <who> with a rusty nail
+puts sugar between <who>'s bedsheets
+pours sand into <who>'s oatmeal
+mixes epoxy into <who>'s toothpaste
+puts Icy-Hot in <who>'s lip balm
+straps <who> to a chair, and plays a endless low bitrate MP3 loop of "the world's most annoying sound" from "Dumb and Dumber"
+tells Dr. Dre that <who> was talking smack
+forces <who> to use a Commodore 64 for all their word processing
+smacks <who> in the face with a burlap sack full of broken glass
+puts <who> in a room with several heavily armed manic depressives
+makes <who> watch reruns of "Blue's Clues"
+puts lye in <who>'s coffee
+tattoos the Windows symbol on <who>'s ass
+lets Borg have his way with <who>
+signs <who> up for line dancing classes at the local senior center
+wakes <who> out of a sound sleep with some brand new nipple piercings
+gives <who> a 2 guage Prince Albert
+forces <who> to eat all their veggies
+covers <who>'s toilet paper with lemon-pepper
+fills <who>'s ketchup bottle with Dave's Insanity sauce
+forces <who> to stare at an incredibly frustrating and seemingly neverending IRC political debate
+knocks two of <who>'s teeth out with a 2x4
+removes debian from <who>'s system
+uses <who>'s debian cds for skeet shooting practice
+gives <who>'s phone number to Borg
+posts <who>'s IP and root password on alt.2600
+forces <who> to use words like "irregardless" and "administrate" (thereby sounding like a real dumbass)"
+tickles <who> until they wet their pants and pass out
+replaces <who>'s KY with elmer's clear wood glue
+replaces <who>'s TUMS with alka-seltzer tablets
+squeezes habanero pepper juice into <who>'s tub of vaseline for <who>
+submits <who>'s photo to the people at SA for photoshopping
+Forces <who> to learn the Win32 API
+gives <who> an atomic wedgie
+ties <who> to a chair and forces them to listen to 'N Sync at full blast
+forces <who> to use emacs for text editing
+frowns at <who> really really hard
+jabs a hot car lighter into <who>'s eye sockets
+forces <who> to browse the web with IE
+takes <who> out at the knees with a broken pool cue
+forces <who> to listen to only emo music
+signs <who> up for the Iowa State Ferret Legging Championship
+attempts to hotswap <who>'s RAM
+donkey punches <who>
+puts track spikes into <who>'s side
+replaces <who>'s Astroglide with JB Weld
+replaces <who>'s hypertension pills with rat poison pellets
+replaces <who>s jock itch cream with Nair
+does the Australian Death Grip on <who>
+dances upon the grave of <who>'s ancestors.
+farts in <who>'s general direction
+flogs <who> with stinging neddle
+hands <who> a poison ivy joint
Added: maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/praises
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/praises?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/praises (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/templates/lart/praises Fri Dec 16 14:30:38 2005
@@ -0,0 +1,5 @@
+hugs <who>
+gives <who> some love
+gives <who> a cookie
+slaps <who> heartily on the back
+tickles <who>
Added: maven/sandbox/issue/rbot/dist/share/rbot/templates/levels.rbot
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/templates/levels.rbot?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/templates/levels.rbot (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/templates/levels.rbot Fri Dec 16 14:30:38 2005
@@ -0,0 +1,30 @@
+100 auth
+90 quit
+90 restart
+85 config
+80 nick
+80 nickserv
+80 qauth
+80 http
+70 opme
+70 mode
+70 say
+70 action
+40 quiet
+40 talk
+50 part
+50 hide
+50 join
+15 delquote
+12 msginsult
+12 remind_other
+5 rmlart
+5 rmpraise
+5 keycmd
+5 lart
+5 addlart
+5 addpraise
+5 remind
+5 keyword
+5 addquote
+5 getquote
Added: maven/sandbox/issue/rbot/dist/share/rbot/templates/users.rbot
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/share/rbot/templates/users.rbot?rev=357245&view=auto
==============================================================================
--- maven/sandbox/issue/rbot/dist/share/rbot/templates/users.rbot (added)
+++ maven/sandbox/issue/rbot/dist/share/rbot/templates/users.rbot Fri Dec 16 14:30:38 2005
@@ -0,0 +1 @@
+10 *!*@*
Added: maven/sandbox/issue/rbot/dist/users.rbot
URL: http://svn.apache.org/viewcvs/maven/sandbox/issue/rbot/dist/users.rbot?rev=357245&view=auto
==============================================================================
(empty)