Auto 4.0.0.alpha.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +7 -0
- data/Gemfile +19 -0
- data/LICENSE.md +31 -0
- data/README.md +109 -0
- data/Rakefile +41 -0
- data/bin/auto +110 -0
- data/bin/auto-conf +45 -0
- data/conf/example.json +100 -0
- data/conf/example.yml +125 -0
- data/docs/Contributing.md +77 -0
- data/docs/Events.md +103 -0
- data/docs/Todo.md +21 -0
- data/docs/Upgrade.md +16 -0
- data/ext/dsl_base.c +49 -0
- data/ext/libauto/auto.h +20 -0
- data/ext/libauto/extconf.rb +16 -0
- data/ext/libauto/libauto.c +29 -0
- data/ext/libauto/libauto.h +28 -0
- data/ext/libauto/logger.c +177 -0
- data/ext/libauto/logger.h +44 -0
- data/lib/auto.rb +43 -0
- data/lib/auto/api.rb +7 -0
- data/lib/auto/api/events.rb +166 -0
- data/lib/auto/api/object.rb +29 -0
- data/lib/auto/api/plugin.rb +155 -0
- data/lib/auto/api/timers.rb +93 -0
- data/lib/auto/bot.rb +338 -0
- data/lib/auto/config.rb +181 -0
- data/lib/auto/configure.rb +410 -0
- data/lib/auto/configure/shell.rb +154 -0
- data/lib/auto/dsl/base.rb +74 -0
- data/lib/auto/dsl/irc.rb +13 -0
- data/lib/auto/irc.rb +8 -0
- data/lib/auto/irc/common.rb +63 -0
- data/lib/auto/irc/library.rb +89 -0
- data/lib/auto/irc/object/channel.rb +21 -0
- data/lib/auto/irc/object/entity.rb +90 -0
- data/lib/auto/irc/object/message.rb +99 -0
- data/lib/auto/irc/object/user.rb +139 -0
- data/lib/auto/irc/protocol.rb +164 -0
- data/lib/auto/irc/protocol/numerics.rb +60 -0
- data/lib/auto/irc/sasl/diffie_hellman.rb +36 -0
- data/lib/auto/irc/sasl/mech.rb +15 -0
- data/lib/auto/irc/sasl/mech/dh_blowfish.rb +83 -0
- data/lib/auto/irc/sasl/mech/plain.rb +39 -0
- data/lib/auto/irc/server.rb +301 -0
- data/lib/auto/irc/state/channel_manager.rb +6 -0
- data/lib/auto/irc/state/support.rb +142 -0
- data/lib/auto/irc/state/user_manager.rb +6 -0
- data/lib/auto/irc/std/commands.rb +99 -0
- data/lib/auto/irc/std/numerics.rb +216 -0
- data/lib/auto/rubyext/integer.rb +25 -0
- data/lib/auto/rubyext/string.rb +10 -0
- data/lib/auto/version.rb +18 -0
- data/lib/libauto.so +0 -0
- data/spec/api_events_spec.rb +68 -0
- data/spec/config_json_spec.rb +116 -0
- data/spec/config_other_spec.rb +29 -0
- data/spec/config_yaml_spec.rb +136 -0
- data/spec/helper.rb +19 -0
- data/spec/irc_object_entity_spec.rb +51 -0
- data/spec/logger_spec.rb +30 -0
- data/spec/plugin_base_spec.rb +35 -0
- data/spec/timers_spec.rb +42 -0
- metadata +238 -0
@@ -0,0 +1,142 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (LICENSE.md).
|
3
|
+
|
4
|
+
module Auto
|
5
|
+
module IRC
|
6
|
+
module State
|
7
|
+
|
8
|
+
# A state-management class which records the various capabilities of the
|
9
|
+
# IRC daemon.
|
10
|
+
#
|
11
|
+
# @!attribute connected
|
12
|
+
# @return [Boolean] Whether we are connected and registered.
|
13
|
+
#
|
14
|
+
# @!attribute cap
|
15
|
+
# @return [Array<String>] A list of enabled capabilities.
|
16
|
+
#
|
17
|
+
# @!attribute sasl_method
|
18
|
+
# @return [Symbol] Method of SASL authentication (+:plain+ or +:dh_blowfish+).
|
19
|
+
#
|
20
|
+
# @!attribute sasl_id
|
21
|
+
# @return [Array<String>] Identities of SASL-related timers.
|
22
|
+
#
|
23
|
+
# @!attribute server_name
|
24
|
+
# @return [String] Name of the server to which we are connected (e.g. asimov.freenode.net).
|
25
|
+
#
|
26
|
+
# @!attribute nicklen
|
27
|
+
# @return [Integer] The maximum length of a nickname permissible.
|
28
|
+
#
|
29
|
+
# @!attribute prefixes
|
30
|
+
# @return [Hash{Symbol => String}] The list of channel user prefixes supported.
|
31
|
+
#
|
32
|
+
# @!attribute chan_modes
|
33
|
+
# @return [Hash{Symbol => Array<Symbol>}] The list of channel modes supported. The keys
|
34
|
+
# are +:never+, +:list+, +:set+, and +:always+. List: list mode (e.g. +b). Never:
|
35
|
+
# never has a parameter. Set: has a parameter only when set. Always: always has a
|
36
|
+
# parameter.
|
37
|
+
#
|
38
|
+
# @!attribute modelen
|
39
|
+
# @return [Integer] The maximum number of modes permissible in a single /MODE.
|
40
|
+
#
|
41
|
+
# @!attribute topiclen
|
42
|
+
# @return [Integer] The maximum length of a /TOPIC permissible.
|
43
|
+
#
|
44
|
+
# @!attribute chanlen
|
45
|
+
# @return [Integer] The maximum length of a channel's name permissible.
|
46
|
+
class Support
|
47
|
+
|
48
|
+
attr_accessor :cap, :sasl_method, :sasl_id, :server_name, :nicklen, :prefixes,
|
49
|
+
:chan_modes, :modelen, :topiclen, :chanlen, :connected
|
50
|
+
|
51
|
+
def initialize
|
52
|
+
# hashes
|
53
|
+
%w[chan_modes prefixes].each do |hsh|
|
54
|
+
instance_variable_set("@#{hsh}", {})
|
55
|
+
end
|
56
|
+
# arrays
|
57
|
+
%w[cap sasl_id].each do |arr|
|
58
|
+
instance_variable_set("@#{arr}", [])
|
59
|
+
end
|
60
|
+
# strings/symbols/booleans/integers
|
61
|
+
%w[sasl_method server_name nicklen topiclen modelen chanlen
|
62
|
+
connected].each do |str|
|
63
|
+
instance_variable_set("@#{str}", nil)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Process ISUPPORT data.
|
68
|
+
#
|
69
|
+
# @param [Auto::IRC::Server] irc The IRC connection.
|
70
|
+
# @param [String] data The ISUPPORT data string.
|
71
|
+
def isupport irc, data
|
72
|
+
|
73
|
+
# Nick, channel, topic, and mode length
|
74
|
+
{'@nicklen' => 'NICKLEN',
|
75
|
+
'@chanlen' => 'CHANNELLEN',
|
76
|
+
'@topiclen' => 'TOPICLEN',
|
77
|
+
'@modelen' => 'MODES' }.each_pair do |var, indic|
|
78
|
+
|
79
|
+
if data =~ /#{indic}=(\d+)/
|
80
|
+
instance_variable_set(var, $1.to_i)
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
# Parse channel modes.
|
86
|
+
parse_channel_modes data
|
87
|
+
|
88
|
+
# Parse prefixes.
|
89
|
+
parse_prefixes data
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
#######
|
94
|
+
private
|
95
|
+
#######
|
96
|
+
|
97
|
+
# Parse supported channel modes.
|
98
|
+
#
|
99
|
+
# @param [String] data The data string.
|
100
|
+
def parse_channel_modes data
|
101
|
+
if match = %r{\WCHANMODES=(\w+),(\w+),(\w+),(\w+)\W}.match(data)
|
102
|
+
list = match[1].split // || []
|
103
|
+
always = match[2].split // || []
|
104
|
+
set = match[3].split // || []
|
105
|
+
never = match[4].split // || []
|
106
|
+
|
107
|
+
list.map! { |m| m.to_sym }
|
108
|
+
always.map! { |m| m.to_sym }
|
109
|
+
set.map! { |m| m.to_sym }
|
110
|
+
never.map! { |m| m.to_sym }
|
111
|
+
|
112
|
+
{ list: list, always: always, set: set, never: never }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# Parse supported prefixes.
|
117
|
+
#
|
118
|
+
# @param [String] data The data string.
|
119
|
+
def parse_prefixes data
|
120
|
+
if match = %r{\WPREFIX=\((\w+)\)(\W+)\s}.match(data)
|
121
|
+
modes = match[1].split //
|
122
|
+
prefixes = match[2].split //
|
123
|
+
|
124
|
+
modes.map! { |m| m.to_sym }
|
125
|
+
|
126
|
+
i = 0
|
127
|
+
modes.each do |m|
|
128
|
+
@prefixes[m] = prefixes[i]
|
129
|
+
i += 1
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
end # class Support
|
135
|
+
|
136
|
+
end # module State
|
137
|
+
|
138
|
+
end # module IRC
|
139
|
+
|
140
|
+
end # module Auto
|
141
|
+
|
142
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (LICENSE.md).
|
3
|
+
|
4
|
+
module Auto
|
5
|
+
|
6
|
+
module IRC
|
7
|
+
|
8
|
+
module Std
|
9
|
+
|
10
|
+
# A module which provides a number of methods for basic IRC commands,
|
11
|
+
# intended for inclusion in {Auto::IRC::Server}.
|
12
|
+
module Commands
|
13
|
+
|
14
|
+
# Send initial AUTHENTICATE.
|
15
|
+
def authenticate method = :plain
|
16
|
+
if method == :plain
|
17
|
+
snd 'AUTHENTICATE PLAIN'
|
18
|
+
@supp.sasl_method = :plain
|
19
|
+
elsif method == :dh_blowfish
|
20
|
+
snd 'AUTHENTICATE DH-BLOWFISH'
|
21
|
+
@supp.sasl_method = :dh_blowfish
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Send CAP END.
|
26
|
+
def cap_end
|
27
|
+
# Stop any SASL-related timers
|
28
|
+
@supp.sasl_id.each { |t| $m.clock.del t }
|
29
|
+
# Send CAP END
|
30
|
+
snd 'CAP END'
|
31
|
+
end
|
32
|
+
|
33
|
+
# Disconnect from the server.
|
34
|
+
#
|
35
|
+
# @param [String] msg Reason for disconnect.
|
36
|
+
def disconnect msg = 'Closing connection'
|
37
|
+
emit :irc, :disconnect, self, msg
|
38
|
+
snd "QUIT :#{msg}"
|
39
|
+
@socket = nil
|
40
|
+
end
|
41
|
+
|
42
|
+
# Join a channel on the server.
|
43
|
+
#
|
44
|
+
# @param [String] chan Channel to join.
|
45
|
+
# @param [String] key Key to join, if necessary.
|
46
|
+
def join chan, key = nil
|
47
|
+
snd "JOIN #{chan}#{key.nil? ? '' : key}"
|
48
|
+
emit :irc, :send_join, self, chan, key
|
49
|
+
end
|
50
|
+
|
51
|
+
# Send /NICK to change the bot's nickname on the server.
|
52
|
+
#
|
53
|
+
# @note If the nickname is in use, the bot will append a hyphen and retry,
|
54
|
+
# repeating until success is achieved.
|
55
|
+
#
|
56
|
+
# @param [String] new The new nickname.
|
57
|
+
def nickname= new
|
58
|
+
|
59
|
+
if connected?
|
60
|
+
@newnick = new
|
61
|
+
else
|
62
|
+
@nick = new
|
63
|
+
end
|
64
|
+
|
65
|
+
snd "NICK :#{new}"
|
66
|
+
emit :irc, :send_nick, self, new
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# Supply server password.
|
71
|
+
#
|
72
|
+
# @param [String] pass
|
73
|
+
def pass password; snd "PASS :#{password}"; end
|
74
|
+
|
75
|
+
# Send /USER.
|
76
|
+
#
|
77
|
+
# @param [String] username The bot's username or ident.
|
78
|
+
# @param [String] hostname The bot's hostname.
|
79
|
+
# @param [String] server Address of the remote server.
|
80
|
+
# @param [String] realname The bot's real name or GECOS.
|
81
|
+
def user username, hostname=Socket.gethostname, server, realname
|
82
|
+
snd "USER #{username} #{hostname} #{server} :#{realname}"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Request a /WHO on ourselves.
|
86
|
+
def who
|
87
|
+
snd "WHO #@nick"
|
88
|
+
emit :irc, :who_self, self
|
89
|
+
end
|
90
|
+
|
91
|
+
end # module Commands
|
92
|
+
|
93
|
+
end # module Std
|
94
|
+
|
95
|
+
end # module IRC
|
96
|
+
|
97
|
+
end # module Auto
|
98
|
+
|
99
|
+
# vim: set ts=4 sts=2 sw=2 et:
|
@@ -0,0 +1,216 @@
|
|
1
|
+
# Copyright (c) 2013, Autumn Perrault, et al. All rights reserved.
|
2
|
+
# This free software is distributed under the FreeBSD license (LICENSE.md).
|
3
|
+
|
4
|
+
# namespace Auto
|
5
|
+
module Auto
|
6
|
+
|
7
|
+
# namespace IRC
|
8
|
+
module IRC
|
9
|
+
|
10
|
+
# namespace Std
|
11
|
+
module Std
|
12
|
+
|
13
|
+
# A module which provides constant representatives of all useful IRC numerics
|
14
|
+
# as specified by the IRC v3.1 protocol.
|
15
|
+
#
|
16
|
+
# @see http://tools.ietf.org/html/rfc1459
|
17
|
+
# @see http://ircv3.atheme.org/
|
18
|
+
module Numerics
|
19
|
+
|
20
|
+
# errors (RFC1459)
|
21
|
+
ERR_NOSUCHNICK = '401'
|
22
|
+
ERR_NOSUCHSERVER = '402'
|
23
|
+
ERR_NOSUCHCHANNEL = '403'
|
24
|
+
ERR_CANNOTSENDTOCHAN = '404'
|
25
|
+
ERR_TOOMANYCHANNELS = '405'
|
26
|
+
ERR_WASNOSUCHNICK = '406'
|
27
|
+
ERR_TOOMANYTARGETS = '407'
|
28
|
+
|
29
|
+
ERR_NOORIGIN = '409'
|
30
|
+
|
31
|
+
ERR_NORECIPIENT = '411'
|
32
|
+
ERR_NOTEXTTOSEND = '412'
|
33
|
+
ERR_NOTOPLEVEL = '413'
|
34
|
+
ERR_WILDTOPLEVEL = '414'
|
35
|
+
|
36
|
+
ERR_UNKNOWNCOMMAND = '421'
|
37
|
+
ERR_NOMOTD = '422'
|
38
|
+
ERR_NOADMININFO = '423'
|
39
|
+
ERR_FILEERROR = '424'
|
40
|
+
|
41
|
+
ERR_NONICKNAMEGIVEN = '431'
|
42
|
+
ERR_ERRONEUSNICKNAME = '432'
|
43
|
+
ERR_NICKNAMEINUSE = '433'
|
44
|
+
ERR_NICKCOLLISION = '436'
|
45
|
+
|
46
|
+
ERR_USERNOTINCHANNEL = '441'
|
47
|
+
ERR_NOTONCHANNEL = '442'
|
48
|
+
ERR_USERONCHANNEL = '443'
|
49
|
+
ERR_NOLOGIN = '444'
|
50
|
+
ERR_SUMMONDISABLED = '445'
|
51
|
+
ERR_USERSDISABLED = '446'
|
52
|
+
|
53
|
+
ERR_NOTREGISTERED = '451'
|
54
|
+
|
55
|
+
ERR_NEEDMOREPARAMS = '461'
|
56
|
+
ERR_ALEADYREGISTERED = '462'
|
57
|
+
ERR_NOPERMFORHOST = '463'
|
58
|
+
ERR_PASSWDMISMATCH = '464'
|
59
|
+
ERR_YOUREBANNEDCREEP = '465'
|
60
|
+
ERR_KEYSET = '467'
|
61
|
+
|
62
|
+
ERR_CHANNELISFULL = '471'
|
63
|
+
ERR_UNKNOWNMODE = '472'
|
64
|
+
ERR_INVITEONLYCHAN = '473'
|
65
|
+
ERR_BANNEDFROMCHAN = '474'
|
66
|
+
ERR_BADCHANNELKEY = '475'
|
67
|
+
|
68
|
+
ERR_NOPRIVILEGES = '481'
|
69
|
+
ERR_CHANOPRIVSNEEDED = '482'
|
70
|
+
ERR_CANTKILLSERVER = '483'
|
71
|
+
|
72
|
+
ERR_NOOPERHOST = '491'
|
73
|
+
|
74
|
+
ERR_UMODEUNKNOWNFLAG = '501'
|
75
|
+
ERR_USERSDONTMATCH = '502'
|
76
|
+
|
77
|
+
# responses (RFC1459)
|
78
|
+
RPL_AWAY = '301'
|
79
|
+
RPL_USERHOST = '302'
|
80
|
+
RPL_ISON = '303'
|
81
|
+
|
82
|
+
RPL_UNAWAY = '305'
|
83
|
+
RPL_NOWAWAY = '306'
|
84
|
+
|
85
|
+
RPL_WHOISUSER = '311'
|
86
|
+
RPL_WHOISSERVER = '312'
|
87
|
+
RPL_WHOISOPERATOR = '313'
|
88
|
+
RPL_WHOWASUSER = '314'
|
89
|
+
RPL_ENDOFWHO = '315'
|
90
|
+
|
91
|
+
RPL_WHOISIDLE = '317'
|
92
|
+
RPL_ENDOFWHOIS = '318'
|
93
|
+
RPL_WHOISCHANNELS = '319'
|
94
|
+
|
95
|
+
RPL_LISTSTART = '321'
|
96
|
+
RPL_LIST = '322'
|
97
|
+
RPL_LISTEND = '323'
|
98
|
+
RPL_CHANNELMODEIS = '324'
|
99
|
+
|
100
|
+
RPL_NOTOPIC = '331'
|
101
|
+
RPL_TOPIC = '332'
|
102
|
+
|
103
|
+
RPL_INVITING = '341'
|
104
|
+
RPL_SUMMONING = '342'
|
105
|
+
|
106
|
+
RPL_VERSION = '351'
|
107
|
+
RPL_WHOREPLY = '352'
|
108
|
+
RPL_NAMREPLY = '353'
|
109
|
+
|
110
|
+
RPL_LINKS = '364'
|
111
|
+
RPL_ENDOFLINKS = '365'
|
112
|
+
RPL_ENDOFNAMES = '366'
|
113
|
+
RPL_BANLIST = '367'
|
114
|
+
RPL_ENDOFBANLIST = '368'
|
115
|
+
RPL_ENDOFWHOWAS = '369'
|
116
|
+
|
117
|
+
RPL_INFO = '371'
|
118
|
+
RPL_MOTD = '372'
|
119
|
+
|
120
|
+
RPL_ENDOFINFO = '374'
|
121
|
+
RPL_MOTDSTART = '375'
|
122
|
+
RPL_ENDOFMOTD = '376'
|
123
|
+
|
124
|
+
RPL_YOUREOPER = '381'
|
125
|
+
RPL_REHASHING = '382'
|
126
|
+
|
127
|
+
RPL_TIME = '391'
|
128
|
+
RPL_USERSSTART = '392'
|
129
|
+
RPL_USERS = '393'
|
130
|
+
RPL_ENDOFUSERS = '394'
|
131
|
+
RPL_NOUSERS = '395'
|
132
|
+
|
133
|
+
# more command responses in the 200-299 range (RFC1459)
|
134
|
+
RPL_TRACELINK = '200'
|
135
|
+
RPL_TRACECONNECTING = '201'
|
136
|
+
RPL_TRACEHANDSHAKE = '202'
|
137
|
+
RPL_TRACEUNKNOWN = '203'
|
138
|
+
RPL_TRACEOPERATOR = '204'
|
139
|
+
RPL_TRACEUSER = '205'
|
140
|
+
RPL_TRACESERVER = '206'
|
141
|
+
|
142
|
+
RPL_TRACENEWTYPE = '208'
|
143
|
+
|
144
|
+
RPL_STATSLINKINFO = '211'
|
145
|
+
RPL_STATSCOMMANDS = '212'
|
146
|
+
RPL_STATSCLINE = '213'
|
147
|
+
RPL_STATSNLINE = '214'
|
148
|
+
RPL_STATSILINE = '215'
|
149
|
+
RPL_STATSKLINE = '216'
|
150
|
+
|
151
|
+
RPL_STATSYLINE = '218'
|
152
|
+
RPL_ENDOFSTATS = '219'
|
153
|
+
|
154
|
+
RPL_UMODEIS = '221'
|
155
|
+
|
156
|
+
RPL_STATSLLINE = '241'
|
157
|
+
RPL_STATSUPTIME = '242'
|
158
|
+
RPL_STATSOLINE = '243'
|
159
|
+
RPL_STATSHLINE = '244'
|
160
|
+
|
161
|
+
RPL_LUSERCLIENT = '251'
|
162
|
+
RPL_LUSEROP = '252'
|
163
|
+
RPL_LUSERUNKNOWN = '253'
|
164
|
+
RPL_LUSERCHANNELS = '254'
|
165
|
+
RPL_LUSERME = '255'
|
166
|
+
RPL_ADMINME = '256'
|
167
|
+
RPL_ADMINLOC1 = '257'
|
168
|
+
RPL_ADMINLOC2 = '258'
|
169
|
+
RPL_ADMINEMAIL = '259'
|
170
|
+
|
171
|
+
RPL_TRACELOG = '261'
|
172
|
+
|
173
|
+
# '900'+ and SASL
|
174
|
+
RPL_LOGGEDIN = '900'
|
175
|
+
RPL_LOGGEDOUT = '901'
|
176
|
+
|
177
|
+
RPL_SASLSUCCESS = '903'
|
178
|
+
|
179
|
+
ERR_SASLFAIL = '904'
|
180
|
+
ERR_SASLTOOLONG = '905'
|
181
|
+
ERR_SASLABORTED = '906'
|
182
|
+
ERR_SASLALREADY = '907'
|
183
|
+
|
184
|
+
# RFC1459 so-called 'reserved' numerics
|
185
|
+
RPL_TRACECLASS = '209'
|
186
|
+
RPL_SERVICEINFO = '231'
|
187
|
+
RPL_SERVICE = '233'
|
188
|
+
RPL_SERVLISTEND = '235'
|
189
|
+
RPL_WHOISCHANOP = '316'
|
190
|
+
RPL_CLOSING = '362'
|
191
|
+
RPL_INFOSTART = '373'
|
192
|
+
RPL_STATSQLINE = '217'
|
193
|
+
RPL_ENDOFSERVICES = '232'
|
194
|
+
RPL_SERVLIST = '234'
|
195
|
+
|
196
|
+
ERR_YOUWILLBEBANNED = '466'
|
197
|
+
ERR_NOSERVICEHOST = '492'
|
198
|
+
ERR_BADCHANMASK = '476'
|
199
|
+
|
200
|
+
# additional RFC2812 numerics
|
201
|
+
RPL_WELCOME = '001'
|
202
|
+
RPL_YOURHOST = '002'
|
203
|
+
RPL_CREATED = '003'
|
204
|
+
RPL_MYINFO = '004'
|
205
|
+
RPL_ISUPPORT = '005' # ISUPPORT favored over BOUNCE
|
206
|
+
RPL_BOUNCE = '010' # here in lieu of 005
|
207
|
+
|
208
|
+
end # module Numerics
|
209
|
+
|
210
|
+
end # module Std
|
211
|
+
|
212
|
+
end # module IRC
|
213
|
+
|
214
|
+
end # module Auto
|
215
|
+
|
216
|
+
# vim: set ts=4 sts=2 sw=2 et:
|