skates 0.2.5 → 0.2.6

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/Rakefile CHANGED
@@ -13,9 +13,9 @@ begin
13
13
  gem.add_dependency('eventmachine', ">= 0.12.10")
14
14
  gem.add_dependency('log4r')
15
15
  gem.add_dependency('superfeedr-nokogiri', ">= 1.4.0")
16
- gem.add_dependency('julien51-sax-machine', ">= 0.0.20")
16
+ gem.add_dependency('superfeedr-sax-machine', ">= 0.0.22")
17
17
  gem.add_dependency('templater')
18
- gem.requirements = ["eventmachine", "yaml", "fileutils", "log4r", "superfeedr-nokogiri", "julien51-sax-machine", "templater", "optparse", "digest/sha1", "base64", "resolv", "activesupport"]
18
+ gem.requirements = ["eventmachine", "yaml", "fileutils", "log4r", "superfeedr-nokogiri", "superfeedr-sax-machine", "templater", "optparse", "digest/sha1", "base64", "resolv", "activesupport"]
19
19
  gem.executables = "skates"
20
20
  gem.files = [ "bin/skates",
21
21
  "lib/skates.rb",
@@ -20,7 +20,7 @@ module Skates
20
20
  # It will not resolve if params["host"] is an IP.
21
21
  # And it will always use
22
22
  def self.connect(params, handler = nil)
23
- params["host"] ||= params["jid"].split("/").first.split("@").last
23
+ params["host"] ||= "_xmpp-client._tcp." + params["jid"].split("/").first.split("@").last
24
24
  super(params, handler)
25
25
  end
26
26
 
@@ -30,20 +30,45 @@ module Skates
30
30
  Resolv::DNS.open { |dns|
31
31
  # If ruby version is too old and SRV is unknown, this will raise a NameError
32
32
  # which is caught below
33
- Skates.logger.debug {
34
- "RESOLVING: #{srv_for_host(host)} (SRV)"
35
- }
36
33
  begin
37
- srv = dns.getresources("_xmpp-client._tcp.#{host}", Resolv::DNS::Resource::IN::SRV)
34
+ found = false
35
+
36
+ Skates.logger.debug {
37
+ "RESOLVING: #{host} (SRV)"
38
+ }
39
+ srv = dns.getresources(host, Resolv::DNS::Resource::IN::SRV)
38
40
  # Sort SRV records: lowest priority first, highest weight first
39
41
  srv.sort! { |a,b| (a.priority != b.priority) ? (a.priority <=> b.priority) : (b.weight <=> a.weight) }
42
+ Skates.logger.debug {
43
+ "Found #{srv.count} SRV records for : #{host} : #{srv.inspect}"
44
+ }
40
45
  # And now, for each record, let's try to connect.
41
46
  srv.each { |record|
47
+ Skates.logger.debug {
48
+ "Trying connection with : #{record.target.to_s}:#{record.port}"
49
+ }
42
50
  ip = record.target.to_s
43
51
  port = Integer(record.port)
44
- break if block.call({"host" => ip, "port" => port})
52
+ if block.call({"host" => ip, "port" => port})
53
+ found = true
54
+ break
55
+ end
45
56
  }
46
- block.call(false) # bleh, we couldn't resolve to any valid. Too bad.
57
+ if !found
58
+ # We failover to solving A record with default port.
59
+ Skates.logger.debug {
60
+ "RESOLVING: #{host} (A record)"
61
+ }
62
+ records = dns.getresources(host, Resolv::DNS::Resource::IN::A)
63
+ records.each do |record|
64
+ ip = record.address.to_s
65
+ if block.call({"host" => ip, "port" => Integer(Skates.config["port"]) || 5222})
66
+ found = true
67
+ break
68
+ end
69
+ end
70
+ block.call(false) unless found# bleh, we couldn't resolve to host that accept connections. Too bad.
71
+ end
47
72
  rescue NameError
48
73
  Skates.logger.debug {
49
74
  "Resolv::DNS does not support SRV records. Please upgrade to ruby-1.8.3 or later! \n#{$!} : #{$!.backtrace.join("\n")}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - julien Genestoux
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-20 00:00:00 -08:00
12
+ date: 2009-11-21 00:00:00 -08:00
13
13
  default_executable: skates
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -43,14 +43,14 @@ dependencies:
43
43
  version: 1.4.0
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
- name: julien51-sax-machine
46
+ name: superfeedr-sax-machine
47
47
  type: :runtime
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 0.0.20
53
+ version: 0.0.22
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: templater
@@ -128,7 +128,7 @@ requirements:
128
128
  - fileutils
129
129
  - log4r
130
130
  - superfeedr-nokogiri
131
- - julien51-sax-machine
131
+ - superfeedr-sax-machine
132
132
  - templater
133
133
  - optparse
134
134
  - digest/sha1