potato 0.0.12 → 0.0.13

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.
@@ -6,7 +6,12 @@ module Potato
6
6
  # @param [DAmn::Packet] pkt
7
7
  # @return [void]
8
8
  def on_login pkt
9
- @user.logged_in = true
9
+ if pkt.ok?
10
+ @user.logged_in = true
11
+ else
12
+ @user.notice "Login failure: #{pkt.error}"
13
+ @user.close
14
+ end
10
15
  end
11
16
 
12
17
  # @param [DAmn::Packet] pkt
@@ -15,6 +15,19 @@ module Potato
15
15
  end.join("&")
16
16
  end
17
17
 
18
+ def wait_for_internet
19
+ begin
20
+ s = TCPSocket.new("google.com", 80)
21
+ s.close
22
+ rescue Errno::ECONNREFUSED
23
+ return true
24
+ rescue SocketError
25
+ sleep 10
26
+ retry
27
+ end
28
+ return true
29
+ end
30
+
18
31
  # Gets an authtoken.
19
32
  # @param [String] username
20
33
  # @param [String] password
@@ -46,6 +59,10 @@ module Potato
46
59
  rescue Errno::ECONNRESET
47
60
  warn "Connection reset by peer when attempting to retrieve authtoken."
48
61
  nil
62
+ rescue SocketError
63
+ warn "Lost internet connection. Waiting for availability."
64
+ wait_for_internet
65
+ retry
49
66
  end
50
67
  end
51
68
  end
@@ -360,6 +360,11 @@ Type /pass yourpassword to authenticate.
360
360
  debug str
361
361
  end
362
362
 
363
+ def close
364
+ @client.quit
365
+ @socket.close
366
+ end
367
+
363
368
  # Sends debug messages
364
369
  # @param [Array] strs all messages to send
365
370
  # @return [void]
@@ -72,25 +72,15 @@ module Potato
72
72
  # @return [void]
73
73
  def on_pass pkt
74
74
  notice "Attempting to retrieve authtoken."
75
- begin
76
- tok = Timeout::timeout(30) {
77
- Potato::DAmn::Token.get(@config.nick, pkt.args[0])
78
- }
79
- rescue Timeout::Error
80
- notice "dAmn server is down. Try again later."
81
- @client.quit
82
- @socket.close
83
- return
84
- end
75
+ tok = Potato::DAmn::Token.get(@config.nick, pkt.args[0])
85
76
  if tok.nil?
86
77
  notice "Unable to retrieve an authtoken (server didn't respond)."
87
- @client.quit
88
- @socket.close
78
+ close
89
79
  return
90
80
  elsif tok.empty?
91
81
  notice "Wrong password or username. (no authtoken retrieved)"
92
82
  else
93
- notice "You have successfully logged in."
83
+ notice "Authtoken retrieved successfully."
94
84
  @logged_in = true
95
85
  @config.token = tok
96
86
  @client.connect_with(@config.nick, @config.token)
@@ -130,8 +120,7 @@ module Potato
130
120
  # @param [IRC::Packet] pkt
131
121
  # @return [void]
132
122
  def on_quit pkt
133
- @client.quit
134
- @socket.close
123
+ close
135
124
  end
136
125
  end
137
126
  end
@@ -63,7 +63,12 @@ module Potato
63
63
  end
64
64
  @connections = {}
65
65
  end
66
- debug pkt.raw, :damn
66
+ unless pkt.nil?
67
+ debug pkt.raw, :damn
68
+ else
69
+ cl.notice "Lost connection to dAmn (server closed connection)."
70
+ cl.socket.close
71
+ end
67
72
  client = @connections.values.find{|x|x.client.server == action}.client
68
73
  client.send("on_#{pkt.cmd}".to_sym, pkt) if client.respond_to?("on_#{pkt.cmd}".to_sym)
69
74
  else
@@ -1,4 +1,4 @@
1
1
  module Potato
2
2
  # Current version of Potato.
3
- VERSION = "0.0.12"
3
+ VERSION = "0.0.13"
4
4
  end
metadata CHANGED
@@ -1,28 +1,27 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: potato
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.13
4
5
  prerelease:
5
- version: 0.0.12
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Joel Taylor
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-26 00:00:00 Z
12
+ date: 2011-04-27 00:00:00.000000000 -04:00
13
+ default_executable:
14
14
  dependencies: []
15
-
16
- description: Potato is an IRC server that communicates with the deviantART Message Network and allows you to treat it like a regular IRC server, with support for user modes, kicks/bans, /whois-ing, etc.
17
- email:
15
+ description: Potato is an IRC server that communicates with the deviantART Message
16
+ Network and allows you to treat it like a regular IRC server, with support for user
17
+ modes, kicks/bans, /whois-ing, etc.
18
+ email:
18
19
  - holla@joeldt.net
19
- executables:
20
+ executables:
20
21
  - potato
21
22
  extensions: []
22
-
23
23
  extra_rdoc_files: []
24
-
25
- files:
24
+ files:
26
25
  - .gitignore
27
26
  - .yardopts
28
27
  - README.md
@@ -41,33 +40,29 @@ files:
41
40
  - lib/potato/irc/user.rb
42
41
  - lib/potato/version.rb
43
42
  - potato.gemspec
44
- homepage: ""
43
+ has_rdoc: true
44
+ homepage: ''
45
45
  licenses: []
46
-
47
46
  post_install_message:
48
47
  rdoc_options: []
49
-
50
- require_paths:
48
+ require_paths:
51
49
  - lib
52
- required_ruby_version: !ruby/object:Gem::Requirement
50
+ required_ruby_version: !ruby/object:Gem::Requirement
53
51
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
58
- required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
57
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
64
62
  requirements: []
65
-
66
63
  rubyforge_project: potato
67
- rubygems_version: 1.7.2
64
+ rubygems_version: 1.6.2
68
65
  signing_key:
69
66
  specification_version: 3
70
67
  summary: A dAmn <=> IRC proxy.
71
68
  test_files: []
72
-
73
- has_rdoc: