sbfaulkner-net-irc 0.9.2 → 0.9.3
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/bin/nicl +12 -6
- data/lib/net/hybrid.yml +14 -0
- data/lib/net/irc.rb +30 -2
- data/lib/net/ircu.yml +54 -0
- data/lib/net/isupport.yml +2 -0
- data/lib/net/rfc1459.yml +134 -0
- data/net-irc.gemspec +15 -2
- metadata +7 -2
data/bin/nicl
CHANGED
@@ -46,16 +46,19 @@ include Ansi
|
|
46
46
|
|
47
47
|
def prompt(text)
|
48
48
|
print text
|
49
|
-
readline.chomp
|
49
|
+
STDIN.readline.chomp
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
|
+
# TODO: a bit backwards... should probably be "Net::IRC.logger = logger"
|
53
|
+
logger = Net::IRC.logger
|
54
|
+
|
52
55
|
Net::IRC.logger.level = Logger::DEBUG
|
53
56
|
Net::IRC.logger.datetime_format = "%Y/%m/%d %H:%M:%S"
|
54
57
|
|
55
58
|
Thread.abort_on_exception = true
|
56
59
|
|
57
60
|
server = ARGV[0] || "irc.freenode.net"
|
58
|
-
port = ARGV[1] || 6667
|
61
|
+
port = ARGV[1] && ARGV[1].to_i || 6667
|
59
62
|
user = ARGV[2] || prompt('User: ')
|
60
63
|
full_name = ARGV[3] || ARGV[2] || prompt('Full name: ')
|
61
64
|
|
@@ -115,6 +118,9 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
115
118
|
|
116
119
|
when Net::IRC::ErrNeedreggednick
|
117
120
|
irc.privmsg('nickserv', 'help')
|
121
|
+
|
122
|
+
when Net::IRC::RplLoggedin, Net::IRC::RplLoggedout
|
123
|
+
puts highlight(message.text, fg(CYAN))
|
118
124
|
|
119
125
|
when Net::IRC::Error
|
120
126
|
puts highlight("Unhandled ERROR: #{message.class} (#{message.command})", BOLD, fg(RED))
|
@@ -168,9 +174,9 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
168
174
|
end
|
169
175
|
end
|
170
176
|
|
171
|
-
while line = readline
|
177
|
+
while line = STDIN.readline
|
172
178
|
scanner = StringScanner.new(line.chomp)
|
173
|
-
if command = scanner.scan(/\/(
|
179
|
+
if command = scanner.scan(/\/(\S+)\s*/) && scanner[1]
|
174
180
|
case command.upcase
|
175
181
|
when 'JOIN'
|
176
182
|
# TODO: validate arguments... support for password... etc.
|
@@ -178,7 +184,7 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
178
184
|
|
179
185
|
when 'MSG'
|
180
186
|
# TODO: validate arguments... support for password... etc.
|
181
|
-
scanner.scan(/(
|
187
|
+
scanner.scan(/([\S]+)\s+(.*)/)
|
182
188
|
irc.privmsg(scanner[1], scanner[2])
|
183
189
|
when 'PART'
|
184
190
|
# TODO: validate arguments... support for password... etc.
|
data/lib/net/hybrid.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
14: RPL_YOURCOOKIE
|
3
|
+
220: RPL_STATSPLINE
|
4
|
+
224: RPL_STATSFLINE
|
5
|
+
225: RPL_STATSDLINE
|
6
|
+
246: RPL_STATSULINE
|
7
|
+
247: RPL_STATSXLINE
|
8
|
+
249: RPL_STATSDEBUG
|
9
|
+
265: RPL_LOCALUSERS
|
10
|
+
266: RPL_GLOBALUSERS
|
11
|
+
385: RPL_NOTOPERANYMORE
|
12
|
+
479: ERR_BADCHANNAME
|
13
|
+
484: ERR_DESYNC
|
14
|
+
503: ERR_GHOSTEDCLIENT
|
data/lib/net/irc.rb
CHANGED
@@ -23,7 +23,7 @@ module Net
|
|
23
23
|
|
24
24
|
PORT_DEFAULT = 6667
|
25
25
|
|
26
|
-
VERSION = "0.9.
|
26
|
+
VERSION = "0.9.3"
|
27
27
|
|
28
28
|
class CTCP
|
29
29
|
attr_accessor :source, :target, :keyword, :parameters
|
@@ -147,7 +147,7 @@ module Net
|
|
147
147
|
attr_reader :prefix
|
148
148
|
attr_accessor :command, :parameters
|
149
149
|
|
150
|
-
COMMAND_MAPS = %w(rfc1459 rfc2812 isupport hybrid ircu)
|
150
|
+
COMMAND_MAPS = %w(rfc1459 rfc2812 isupport hybrid ircu hyperion)
|
151
151
|
|
152
152
|
def initialize(*args)
|
153
153
|
raise ArgumentError, "wrong number of arguments (#{args.size} for 2)" if args.size < 2
|
@@ -486,6 +486,34 @@ module Net
|
|
486
486
|
super(nil, 'ERR_NEEDREGGEDNICK', target, channel, text)
|
487
487
|
end
|
488
488
|
end
|
489
|
+
|
490
|
+
# 901 <target> <id> <username> <hostname> :You are now logged in. (id <id>, username <username>, hostname <hostname>)
|
491
|
+
class ReplyWithRegistryParameters < ReplyWithTarget
|
492
|
+
attr_accessor :id, :username, :hostname
|
493
|
+
|
494
|
+
def initialize(prefix, command, target, id, username, hostname, text)
|
495
|
+
@id = id
|
496
|
+
@username = username
|
497
|
+
@hostname = hostname
|
498
|
+
|
499
|
+
super(prefix, command, target, id, username, hostname, text)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
# 901 <target> <id> <username> <hostname> :You are now logged in. (id <id>, username <username>, hostname <hostname>)
|
504
|
+
class RplLoggedin < ReplyWithRegistryParameters
|
505
|
+
def initialize(target, id, username, hostname, text)
|
506
|
+
super(nil, 'RPL_LOGGED_IN', target, id, username, hostname, text)
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
# 902 <target> <id> <username> <hostname> :You are now logged out. (id <id>, username <username>, hostname <hostname>)
|
511
|
+
class RplLoggedout < ReplyWithRegistryParameters
|
512
|
+
def initialize(target, id, username, hostname, text)
|
513
|
+
super(nil, 'RPL_LOGGED_OUT', target, id, username, hostname, text)
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
489
517
|
|
490
518
|
# JOIN ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )
|
491
519
|
# / "0"
|
data/lib/net/ircu.yml
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
---
|
2
|
+
8: RPL_SNOMASK
|
3
|
+
9: RPL_STATMEMTOT
|
4
|
+
10: RPL_STATMEM
|
5
|
+
15: RPL_MAP
|
6
|
+
16: RPL_MAPMORE
|
7
|
+
17: RPL_MAPEND
|
8
|
+
217: RPL_STATSPLINE
|
9
|
+
228: RPL_STATSQLINE
|
10
|
+
236: RPL_STATSVERBOSE
|
11
|
+
237: RPL_STATSENGINE
|
12
|
+
238: RPL_STATSFLINE
|
13
|
+
246: RPL_STATSTLINE
|
14
|
+
247: RPL_STATSGLINE
|
15
|
+
248: RPL_STATSULINE
|
16
|
+
250: RPL_STATSCONN
|
17
|
+
270: RPL_PRIVS
|
18
|
+
271: RPL_SILELIST
|
19
|
+
272: RPL_ENDOFSILELIST
|
20
|
+
275: RPL_STATSDLINE
|
21
|
+
280: RPL_GLIST
|
22
|
+
281: RPL_ENDOFGLIST
|
23
|
+
282: RPL_JUPELIST
|
24
|
+
283: RPL_ENDOFJUPELIST
|
25
|
+
284: RPL_FEATURE
|
26
|
+
330: RPL_WHOISACCOUNT
|
27
|
+
333: RPL_TOPICWHOTIME
|
28
|
+
334: RPL_LISTUSAGE
|
29
|
+
338: RPL_WHOISACTUALLY
|
30
|
+
340: RPL_USERIP
|
31
|
+
354: RPL_WHOSPCRPL
|
32
|
+
391: RPL_TIME
|
33
|
+
416: ERR_QUERYTOOLONG
|
34
|
+
437: ERR_BANNICKCHANGE
|
35
|
+
438: ERR_NICKTOOFAST
|
36
|
+
439: ERR_TARGETTOOFAST
|
37
|
+
468: ERR_INVALIDUSERNAME
|
38
|
+
477: ERR_NEEDREGGEDNICK
|
39
|
+
493: ERR_NOFEATURE
|
40
|
+
494: ERR_BADFEATURE
|
41
|
+
495: ERR_BADLOGTYPE
|
42
|
+
496: ERR_BADLOGSYS
|
43
|
+
497: ERR_BADLOGVALUE
|
44
|
+
498: ERR_ISOPERLCHAN
|
45
|
+
511: ERR_SILELISTFULL
|
46
|
+
513: ERR_BADPING
|
47
|
+
514: ERR_INVALID_ERROR
|
48
|
+
515: ERR_BADEXPIRE
|
49
|
+
516: ERR_DONTCHEAT
|
50
|
+
517: ERR_DISABLED
|
51
|
+
518: ERR_LONGMASK
|
52
|
+
519: ERR_TOOMANYUSERS
|
53
|
+
520: ERR_MASKTOOWIDE
|
54
|
+
524: ERR_QUARANTINED
|
data/lib/net/rfc1459.yml
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
---
|
2
|
+
200: RPL_TRACELINK
|
3
|
+
201: RPL_TRACECONNECTING
|
4
|
+
202: RPL_TRACEHANDSHAKE
|
5
|
+
203: RPL_TRACEUNKNOWN
|
6
|
+
204: RPL_TRACEOPERATOR
|
7
|
+
205: RPL_TRACEUSER
|
8
|
+
206: RPL_TRACESERVER
|
9
|
+
208: RPL_TRACENEWTYPE
|
10
|
+
209: RPL_TRACECLASS
|
11
|
+
211: RPL_STATSLINKINFO
|
12
|
+
212: RPL_STATSCOMMANDS
|
13
|
+
213: RPL_STATSCLINE
|
14
|
+
214: RPL_STATSNLINE
|
15
|
+
215: RPL_STATSILINE
|
16
|
+
216: RPL_STATSKLINE
|
17
|
+
217: RPL_STATSQLINE
|
18
|
+
218: RPL_STATSYLINE
|
19
|
+
219: RPL_ENDOFSTATS
|
20
|
+
221: RPL_UMODEIS
|
21
|
+
231: RPL_SERVICEINFO
|
22
|
+
232: RPL_ENDOFSERVICES
|
23
|
+
233: RPL_SERVICE
|
24
|
+
234: RPL_SERVLIST
|
25
|
+
235: RPL_SERVLISTEND
|
26
|
+
241: RPL_STATSLLINE
|
27
|
+
242: RPL_STATSUPTIME
|
28
|
+
243: RPL_STATSOLINE
|
29
|
+
244: RPL_STATSHLINE
|
30
|
+
251: RPL_LUSERCLIENT
|
31
|
+
252: RPL_LUSEROP
|
32
|
+
253: RPL_LUSERUNKNOWN
|
33
|
+
254: RPL_LUSERCHANNELS
|
34
|
+
255: RPL_LUSERME
|
35
|
+
256: RPL_ADMINME
|
36
|
+
257: RPL_ADMINLOC1
|
37
|
+
258: RPL_ADMINLOC2
|
38
|
+
259: RPL_ADMINEMAIL
|
39
|
+
261: RPL_TRACELOG
|
40
|
+
300: RPL_NONE
|
41
|
+
301: RPL_AWAY
|
42
|
+
302: RPL_USERHOST
|
43
|
+
303: RPL_ISON
|
44
|
+
305: RPL_UNAWAY
|
45
|
+
306: RPL_NOWAWAY
|
46
|
+
311: RPL_WHOISUSER
|
47
|
+
312: RPL_WHOISSERVER
|
48
|
+
313: RPL_WHOISOPERATOR
|
49
|
+
314: RPL_WHOWASUSER
|
50
|
+
315: RPL_ENDOFWHO
|
51
|
+
316: RPL_WHOISCHANOP
|
52
|
+
317: RPL_WHOISIDLE
|
53
|
+
318: RPL_ENDOFWHOIS
|
54
|
+
319: RPL_WHOISCHANNELS
|
55
|
+
321: RPL_LISTSTART
|
56
|
+
322: RPL_LIST
|
57
|
+
323: RPL_LISTEND
|
58
|
+
324: RPL_CHANNELMODEIS
|
59
|
+
331: RPL_NOTOPIC
|
60
|
+
332: RPL_TOPIC
|
61
|
+
341: RPL_INVITING
|
62
|
+
342: RPL_SUMMONING
|
63
|
+
351: RPL_VERSION
|
64
|
+
352: RPL_WHOREPLY
|
65
|
+
353: RPL_NAMREPLY
|
66
|
+
361: RPL_KILLDONE
|
67
|
+
362: RPL_CLOSING
|
68
|
+
363: RPL_CLOSEEND
|
69
|
+
364: RPL_LINKS
|
70
|
+
365: RPL_ENDOFLINKS
|
71
|
+
366: RPL_ENDOFNAMES
|
72
|
+
367: RPL_BANLIST
|
73
|
+
368: RPL_ENDOFBANLIST
|
74
|
+
369: RPL_ENDOFWHOWAS
|
75
|
+
371: RPL_INFO
|
76
|
+
372: RPL_MOTD
|
77
|
+
373: RPL_INFOSTART
|
78
|
+
374: RPL_ENDOFINFO
|
79
|
+
375: RPL_MOTDSTART
|
80
|
+
376: RPL_ENDOFMOTD
|
81
|
+
381: RPL_YOUREOPER
|
82
|
+
382: RPL_REHASHING
|
83
|
+
384: RPL_MYPORTIS
|
84
|
+
391: RPL_TIME
|
85
|
+
392: RPL_USERSSTART
|
86
|
+
393: RPL_USERS
|
87
|
+
394: RPL_ENDOFUSERS
|
88
|
+
395: RPL_NOUSERS
|
89
|
+
401: ERR_NOSUCHNICK
|
90
|
+
402: ERR_NOSUCHSERVER
|
91
|
+
403: ERR_NOSUCHCHANNEL
|
92
|
+
404: ERR_CANNOTSENDTOCHAN
|
93
|
+
405: ERR_TOOMANYCHANNELS
|
94
|
+
406: ERR_WASNOSUCHNICK
|
95
|
+
407: ERR_TOOMANYTARGETS
|
96
|
+
409: ERR_NOORIGIN
|
97
|
+
411: ERR_NORECIPIENT
|
98
|
+
412: ERR_NOTEXTTOSEND
|
99
|
+
413: ERR_NOTOPLEVEL
|
100
|
+
414: ERR_WILDTOPLEVEL
|
101
|
+
421: ERR_UNKNOWNCOMMAND
|
102
|
+
422: ERR_NOMOTD
|
103
|
+
423: ERR_NOADMININFO
|
104
|
+
424: ERR_FILEERROR
|
105
|
+
431: ERR_NONICKNAMEGIVEN
|
106
|
+
432: ERR_ERRONEUSNICKNAME
|
107
|
+
433: ERR_NICKNAMEINUSE
|
108
|
+
436: ERR_NICKCOLLISION
|
109
|
+
441: ERR_USERNOTINCHANNEL
|
110
|
+
442: ERR_NOTONCHANNEL
|
111
|
+
443: ERR_USERONCHANNEL
|
112
|
+
444: ERR_NOLOGIN
|
113
|
+
445: ERR_SUMMONDISABLED
|
114
|
+
446: ERR_USERSDISABLED
|
115
|
+
451: ERR_NOTREGISTERED
|
116
|
+
461: ERR_NEEDMOREPARAMS
|
117
|
+
462: ERR_ALREADYREGISTRED
|
118
|
+
463: ERR_NOPERMFORHOST
|
119
|
+
464: ERR_PASSWDMISMATCH
|
120
|
+
465: ERR_YOUREBANNEDCREEP
|
121
|
+
466: ERR_YOUWILLBEBANNED
|
122
|
+
467: ERR_KEYSET
|
123
|
+
471: ERR_CHANNELISFULL
|
124
|
+
472: ERR_UNKNOWNMODE
|
125
|
+
473: ERR_INVITEONLYCHAN
|
126
|
+
474: ERR_BANNEDFROMCHAN
|
127
|
+
475: ERR_BADCHANNELKEY
|
128
|
+
481: ERR_NOPRIVILEGES
|
129
|
+
482: ERR_CHANOPRIVSNEEDED
|
130
|
+
483: ERR_CANTKILLSERVER
|
131
|
+
491: ERR_NOOPERHOST
|
132
|
+
492: ERR_NOSERVICEHOST
|
133
|
+
501: ERR_UMODEUNKNOWNFLAG
|
134
|
+
502: ERR_USERSDONTMATCH
|
data/net-irc.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
SPEC = Gem::Specification.new do |s|
|
2
2
|
# identify the gem
|
3
3
|
s.name = "net-irc"
|
4
|
-
s.version = "0.9.
|
4
|
+
s.version = "0.9.3"
|
5
5
|
s.author = "S. Brent Faulkner"
|
6
6
|
s.email = "brentf@unwwwired.net"
|
7
7
|
s.homepage = "http://www.unwwwired.net"
|
@@ -9,7 +9,20 @@ SPEC = Gem::Specification.new do |s|
|
|
9
9
|
s.platform = Gem::Platform::RUBY
|
10
10
|
# description of gem
|
11
11
|
s.summary = "a ruby implementation of the IRC client protocol"
|
12
|
-
s.files = %w(
|
12
|
+
s.files = %w(
|
13
|
+
bin/nicl
|
14
|
+
lib/net/irc.rb
|
15
|
+
lib/net/hybrid.yml
|
16
|
+
lib/net/hyperion.yml
|
17
|
+
lib/net/ircu.yml
|
18
|
+
lib/net/isupport.yml
|
19
|
+
lib/net/rfc1459.yml
|
20
|
+
lib/net/rfc2812.yml
|
21
|
+
MIT-LICENSE
|
22
|
+
net-irc.gemspec
|
23
|
+
Rakefile
|
24
|
+
README.markdown
|
25
|
+
)
|
13
26
|
s.require_path = "lib"
|
14
27
|
s.autorequire = "net/irc"
|
15
28
|
# s.test_file = "test/net-irc.rb"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sbfaulkner-net-irc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- S. Brent Faulkner
|
@@ -24,11 +24,16 @@ extra_rdoc_files:
|
|
24
24
|
files:
|
25
25
|
- bin/nicl
|
26
26
|
- lib/net/irc.rb
|
27
|
+
- lib/net/hybrid.yml
|
28
|
+
- lib/net/hyperion.yml
|
29
|
+
- lib/net/ircu.yml
|
30
|
+
- lib/net/isupport.yml
|
31
|
+
- lib/net/rfc1459.yml
|
27
32
|
- lib/net/rfc2812.yml
|
28
33
|
- MIT-LICENSE
|
34
|
+
- net-irc.gemspec
|
29
35
|
- Rakefile
|
30
36
|
- README.markdown
|
31
|
-
- net-irc.gemspec
|
32
37
|
has_rdoc: true
|
33
38
|
homepage: http://www.unwwwired.net
|
34
39
|
post_install_message:
|