sbfaulkner-net-irc 0.9.3 → 0.9.4
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 +37 -7
- data/lib/net/hyperion.yml +3 -0
- data/lib/net/irc.rb +11 -7
- data/net-irc.gemspec +1 -1
- metadata +2 -2
data/bin/nicl
CHANGED
@@ -44,9 +44,38 @@ end
|
|
44
44
|
|
45
45
|
include Ansi
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
begin
|
48
|
+
require 'termios'
|
49
|
+
# real implementation for toggling echo
|
50
|
+
def echo(on = true)
|
51
|
+
oldt = Termios.tcgetattr(STDIN)
|
52
|
+
newt = oldt.dup
|
53
|
+
newt.lflag &= ~Termios::ECHO
|
54
|
+
Termios.tcsetattr(STDIN, Termios::TCSANOW, newt)
|
55
|
+
|
56
|
+
# if no block is provided, return the original echo setting
|
57
|
+
return (oldt.lflag & Termios::ECHO) == Termios::ECHO unless block_given?
|
58
|
+
|
59
|
+
# otherwise yield to the block and restore the original echo setting
|
60
|
+
ret = yield
|
61
|
+
Termios.tcsetattr(STDIN, Termios::TCSANOW, oldt)
|
62
|
+
ret
|
63
|
+
end
|
64
|
+
rescue LoadError
|
65
|
+
# minimal stub in case Termios is not installed
|
66
|
+
def echo(on = true)
|
67
|
+
return true unless block_given?
|
68
|
+
yield
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def prompt(text, hidden = false)
|
73
|
+
echo(false) do
|
74
|
+
print text
|
75
|
+
line = STDIN.readline.chomp
|
76
|
+
print "\n"
|
77
|
+
line
|
78
|
+
end
|
50
79
|
end
|
51
80
|
|
52
81
|
# TODO: a bit backwards... should probably be "Net::IRC.logger = logger"
|
@@ -61,8 +90,9 @@ server = ARGV[0] || "irc.freenode.net"
|
|
61
90
|
port = ARGV[1] && ARGV[1].to_i || 6667
|
62
91
|
user = ARGV[2] || prompt('User: ')
|
63
92
|
full_name = ARGV[3] || ARGV[2] || prompt('Full name: ')
|
93
|
+
password = ARGV[4] || prompt('Password: ', true)
|
64
94
|
|
65
|
-
Net::IRC.start user, full_name, server, port do |irc|
|
95
|
+
Net::IRC.start user, password, full_name, server, port do |irc|
|
66
96
|
Thread.new do
|
67
97
|
irc.each do |message|
|
68
98
|
case message
|
@@ -120,7 +150,7 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
120
150
|
irc.privmsg('nickserv', 'help')
|
121
151
|
|
122
152
|
when Net::IRC::RplLoggedin, Net::IRC::RplLoggedout
|
123
|
-
puts highlight(message.text, fg(
|
153
|
+
puts highlight(message.text, fg(GREEN))
|
124
154
|
|
125
155
|
when Net::IRC::Error
|
126
156
|
puts highlight("Unhandled ERROR: #{message.class} (#{message.command})", BOLD, fg(RED))
|
@@ -184,7 +214,7 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
184
214
|
|
185
215
|
when 'MSG'
|
186
216
|
# TODO: validate arguments... support for password... etc.
|
187
|
-
scanner.scan(/(
|
217
|
+
scanner.scan(/(\S+)\s+(.*)/)
|
188
218
|
irc.privmsg(scanner[1], scanner[2])
|
189
219
|
when 'PART'
|
190
220
|
# TODO: validate arguments... support for password... etc.
|
@@ -195,7 +225,7 @@ Net::IRC.start user, full_name, server, port do |irc|
|
|
195
225
|
else
|
196
226
|
puts highlight("Unknown COMMAND: #{command}", BOLD, fg(RED))
|
197
227
|
end
|
198
|
-
elsif scanner.scan(/(
|
228
|
+
elsif scanner.scan(/(\S+)\s+(.*)/)
|
199
229
|
irc.privmsg(scanner[1], scanner[2])
|
200
230
|
else
|
201
231
|
# TODO: error? need a concept of a current room
|
data/lib/net/irc.rb
CHANGED
@@ -673,8 +673,8 @@ module Net
|
|
673
673
|
end
|
674
674
|
|
675
675
|
class << self
|
676
|
-
def start(user, realname, address, port = nil, &block)
|
677
|
-
new(address, port).start(user, realname, &block)
|
676
|
+
def start(user, password, realname, address, port = nil, &block)
|
677
|
+
new(address, port).start(user, password, realname, &block)
|
678
678
|
end
|
679
679
|
end
|
680
680
|
|
@@ -689,18 +689,18 @@ module Net
|
|
689
689
|
@started
|
690
690
|
end
|
691
691
|
|
692
|
-
def start(user, realname, nickname = nil)
|
692
|
+
def start(user, password, realname, nickname = nil)
|
693
693
|
raise IOError, 'IRC session already started' if started?
|
694
694
|
|
695
695
|
if block_given?
|
696
696
|
begin
|
697
|
-
do_start(user, realname, nickname)
|
697
|
+
do_start(user, password, realname, nickname)
|
698
698
|
return yield(self)
|
699
699
|
ensure
|
700
700
|
do_finish
|
701
701
|
end
|
702
702
|
else
|
703
|
-
do_start(user, realname, nickname)
|
703
|
+
do_start(user, password, realname, nickname)
|
704
704
|
return self
|
705
705
|
end
|
706
706
|
end
|
@@ -782,6 +782,10 @@ module Net
|
|
782
782
|
Part.new(Array(channels).join(','))
|
783
783
|
end.write(@socket)
|
784
784
|
end
|
785
|
+
|
786
|
+
def pass(password)
|
787
|
+
Pass.new(password).write(@socket)
|
788
|
+
end
|
785
789
|
|
786
790
|
def pong(server, target = nil)
|
787
791
|
Pong.new(server, target).write(@socket)
|
@@ -800,9 +804,9 @@ module Net
|
|
800
804
|
end
|
801
805
|
|
802
806
|
private
|
803
|
-
def do_start(user, realname, nickname = nil)
|
807
|
+
def do_start(user, password, realname, nickname = nil)
|
804
808
|
@socket = InternetMessageIO.old_open(@address, @port)
|
805
|
-
|
809
|
+
pass(password) unless password.nil? || password.empty?
|
806
810
|
nick(user)
|
807
811
|
user(user, realname)
|
808
812
|
@started = true
|
data/net-irc.gemspec
CHANGED
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- S. Brent Faulkner
|
@@ -9,7 +9,7 @@ autorequire: net/irc
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-12-22 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|