dnssd 1.4 → 2.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/History.txt +5 -0
- data/Rakefile +1 -15
- data/lib/dnssd.rb +1 -1
- data/lib/dnssd/reply/resolve.rb +18 -22
- data/lib/dnssd/service.rb +9 -6
- data/sample/getaddrinfo.rb +4 -7
- data/sample/growl.rb +1 -1
- data/sample/resolve.rb +1 -4
- data/sample/resolve_ichat.rb +2 -2
- data/test/test_dnssd_service.rb +9 -8
- metadata +23 -68
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.gemtest
ADDED
File without changes
|
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -6,6 +6,7 @@ require 'hoe'
|
|
6
6
|
Hoe.plugin :minitest
|
7
7
|
Hoe.plugin :email
|
8
8
|
Hoe.plugin :git
|
9
|
+
Hoe.plugin :compiler
|
9
10
|
|
10
11
|
HOE = Hoe.spec 'dnssd' do
|
11
12
|
self.rubyforge_name = 'dnssd'
|
@@ -17,22 +18,7 @@ HOE = Hoe.spec 'dnssd' do
|
|
17
18
|
developer 'Charles Mills', ''
|
18
19
|
developer 'Rich Kilmer', ''
|
19
20
|
|
20
|
-
spec_extras[:extensions] = 'ext/dnssd/extconf.rb'
|
21
|
-
|
22
21
|
clean_globs << 'lib/dnssd/*.{so,bundle,dll}'
|
23
|
-
|
24
|
-
extra_dev_deps << ['hoe-seattlerb', '~> 1.2']
|
25
|
-
extra_dev_deps << ['minitest', '~> 1.4']
|
26
|
-
extra_dev_deps << ['rake-compiler', '~> 0.6']
|
27
|
-
end
|
28
|
-
|
29
|
-
require 'rake/extensiontask'
|
30
|
-
|
31
|
-
Rake::ExtensionTask.new 'dnssd', HOE.spec do |ext|
|
32
|
-
ext.lib_dir = File.join 'lib', 'dnssd'
|
33
|
-
ext.config_options << '--with-warnings'
|
34
22
|
end
|
35
23
|
|
36
|
-
task :test => :compile
|
37
|
-
|
38
24
|
# vim: syntax=Ruby
|
data/lib/dnssd.rb
CHANGED
data/lib/dnssd/reply/resolve.rb
CHANGED
@@ -65,30 +65,26 @@ class DNSSD::Reply::Resolve < DNSSD::Reply
|
|
65
65
|
|
66
66
|
service = DNSSD::Service.new
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
socket.connect address, port
|
82
|
-
end
|
83
|
-
|
84
|
-
return socket
|
85
|
-
rescue
|
86
|
-
next if addrinfo.flags.more_coming?
|
87
|
-
raise
|
68
|
+
service.getaddrinfo target, addrinfo_protocol, addrinfo_flags,
|
69
|
+
@interface do |addrinfo|
|
70
|
+
address = addrinfo.address
|
71
|
+
|
72
|
+
begin
|
73
|
+
socket = nil
|
74
|
+
|
75
|
+
case protocol
|
76
|
+
when 'tcp' then
|
77
|
+
socket = TCPSocket.new address, port
|
78
|
+
when 'udp' then
|
79
|
+
socket = UDPSocket.new
|
80
|
+
socket.connect address, port
|
88
81
|
end
|
82
|
+
|
83
|
+
return socket
|
84
|
+
rescue
|
85
|
+
next if addrinfo.flags.more_coming?
|
86
|
+
raise
|
89
87
|
end
|
90
|
-
ensure
|
91
|
-
service.stop
|
92
88
|
end
|
93
89
|
end
|
94
90
|
|
data/lib/dnssd/service.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'thread'
|
2
2
|
|
3
3
|
##
|
4
|
-
# A DNSSD::Service may be used for one DNS-SD call at a time.
|
5
|
-
#
|
4
|
+
# A DNSSD::Service may be used for one DNS-SD call at a time. The service is
|
5
|
+
# automatically stopped after calling. A single service can not be reused
|
6
|
+
# multiple times.
|
6
7
|
#
|
7
|
-
# DNSSD::Service provides the raw DNS-SD functions via the _ variants.
|
8
|
+
# DNSSD::Service provides the raw DNS-SD functions via the +_+ variants.
|
8
9
|
|
9
10
|
class DNSSD::Service
|
10
11
|
|
@@ -151,6 +152,9 @@ class DNSSD::Service
|
|
151
152
|
|
152
153
|
##
|
153
154
|
# Yields results from the mDNS daemon, blocking until data is available.
|
155
|
+
# Use break or return when you wish to stop receiving results.
|
156
|
+
#
|
157
|
+
# The service is automatically stopped after calling this method.
|
154
158
|
|
155
159
|
def process # :yields: DNSSD::Result
|
156
160
|
@thread = Thread.current
|
@@ -167,6 +171,8 @@ class DNSSD::Service
|
|
167
171
|
# raised when we jump out of DNSServiceProcess() while it's waiting for a
|
168
172
|
# response
|
169
173
|
self
|
174
|
+
ensure
|
175
|
+
stop unless stopped?
|
170
176
|
end
|
171
177
|
|
172
178
|
##
|
@@ -232,9 +238,6 @@ class DNSSD::Service
|
|
232
238
|
# record, all contained in the DNSSD::Reply object passed to the required
|
233
239
|
# block.
|
234
240
|
#
|
235
|
-
# The returned service can be used to control when to stop resolving the
|
236
|
-
# service (see DNSSD::Service#stop).
|
237
|
-
#
|
238
241
|
# service.resolve "foo bar", "_http._tcp", "local" do |r|
|
239
242
|
# p r
|
240
243
|
# end
|
data/sample/getaddrinfo.rb
CHANGED
@@ -8,13 +8,10 @@ resolver = DNSSD.resolve ARGV.shift, '_http._tcp', 'local' do |reply|
|
|
8
8
|
addresses = []
|
9
9
|
|
10
10
|
service = DNSSD::Service.new
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
ensure
|
17
|
-
service.stop
|
11
|
+
|
12
|
+
service.getaddrinfo reply.target do |addrinfo|
|
13
|
+
addresses << addrinfo.address
|
14
|
+
break unless addrinfo.flags.more_coming?
|
18
15
|
end
|
19
16
|
|
20
17
|
puts "Addresses for #{reply.target}:\n#{addresses.join "\n"}"
|
data/sample/growl.rb
CHANGED
@@ -5,7 +5,7 @@ Thread.abort_on_exception = true
|
|
5
5
|
browser = DNSSD.browse '_growl._tcp' do |b|
|
6
6
|
DNSSD.resolve b.name, b.type, b.domain do |r|
|
7
7
|
puts "#{b.name} of #{b.type} in #{b.domain} => #{r.target}:#{r.port} on #{b.interface} txt #{r.text_record.inspect}"
|
8
|
-
|
8
|
+
break
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
data/sample/resolve.rb
CHANGED
@@ -20,14 +20,11 @@ browser.browse '_blackjack._tcp' do |reply|
|
|
20
20
|
end.each do |_, service|
|
21
21
|
next unless service.flags.add?
|
22
22
|
|
23
|
-
|
24
|
-
resolver.resolve service do |r|
|
23
|
+
DNSSD::Service.new.resolve service do |r|
|
25
24
|
puts "#{r.name} on #{r.target}:#{r.port}"
|
26
25
|
puts "\t#{r.text_record.inspect}" unless r.text_record.empty?
|
27
26
|
break unless r.flags.more_coming?
|
28
27
|
end
|
29
|
-
|
30
|
-
resolver.stop
|
31
28
|
end
|
32
29
|
|
33
30
|
services.clear
|
data/sample/resolve_ichat.rb
CHANGED
@@ -9,7 +9,7 @@ class ChatNameResolver
|
|
9
9
|
Thread.new reply do |reply|
|
10
10
|
DNSSD.resolve reply.name, reply.type, reply.domain do |resolve_reply|
|
11
11
|
puts "Adding: #{resolve_reply.inspect}"
|
12
|
-
|
12
|
+
break
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -17,7 +17,7 @@ class ChatNameResolver
|
|
17
17
|
Thread.new reply do |reply|
|
18
18
|
DNSSD.resolve reply.name, reply.type, reply.domain do |resolve_reply|
|
19
19
|
puts "Removing: #{resolve_reply.inspect}"
|
20
|
-
|
20
|
+
break
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/test/test_dnssd_service.rb
CHANGED
@@ -4,22 +4,23 @@ require 'dnssd'
|
|
4
4
|
class TestDNSSDService < MiniTest::Unit::TestCase
|
5
5
|
|
6
6
|
def test_class_get_property
|
7
|
+
skip 'DNSSD::Service::get_property not defined' unless
|
8
|
+
DNSSD::Service.respond_to? :get_property
|
9
|
+
|
7
10
|
assert_kind_of Numeric,
|
8
11
|
DNSSD::Service.get_property(DNSSD::Service::DaemonVersion)
|
9
|
-
end
|
12
|
+
end
|
10
13
|
|
11
14
|
def test_class_getaddrinfo
|
12
15
|
service = DNSSD::Service.new
|
13
16
|
|
14
17
|
addresses = []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
ensure
|
21
|
-
service.stop
|
18
|
+
|
19
|
+
service.getaddrinfo 'localhost' do |addrinfo|
|
20
|
+
addresses << addrinfo.address
|
21
|
+
break unless addrinfo.flags.more_coming?
|
22
22
|
end
|
23
|
+
|
23
24
|
assert addresses.index('127.0.0.1')
|
24
25
|
end
|
25
26
|
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnssd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: "
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: "2.0"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Eric Hodel
|
@@ -40,102 +40,56 @@ cert_chain:
|
|
40
40
|
x52qPcexcYZR7w==
|
41
41
|
-----END CERTIFICATE-----
|
42
42
|
|
43
|
-
date:
|
43
|
+
date: 2011-03-03 00:00:00 -08:00
|
44
44
|
default_executable:
|
45
45
|
dependencies:
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: minitest
|
48
48
|
prerelease: false
|
49
49
|
requirement: &id001 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
hash:
|
54
|
+
hash: 11
|
55
55
|
segments:
|
56
56
|
- 2
|
57
57
|
- 0
|
58
|
-
- 4
|
59
|
-
version: 2.0.4
|
60
|
-
type: :development
|
61
|
-
version_requirements: *id001
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: minitest
|
64
|
-
prerelease: false
|
65
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
hash: 3
|
71
|
-
segments:
|
72
|
-
- 1
|
73
|
-
- 5
|
74
|
-
- 0
|
75
|
-
version: 1.5.0
|
76
|
-
type: :development
|
77
|
-
version_requirements: *id002
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: hoe-seattlerb
|
80
|
-
prerelease: false
|
81
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ~>
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
hash: 11
|
87
|
-
segments:
|
88
|
-
- 1
|
89
58
|
- 2
|
90
|
-
version:
|
59
|
+
version: 2.0.2
|
91
60
|
type: :development
|
92
|
-
version_requirements: *
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: minitest
|
95
|
-
prerelease: false
|
96
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ~>
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
hash: 7
|
102
|
-
segments:
|
103
|
-
- 1
|
104
|
-
- 4
|
105
|
-
version: "1.4"
|
106
|
-
type: :development
|
107
|
-
version_requirements: *id004
|
61
|
+
version_requirements: *id001
|
108
62
|
- !ruby/object:Gem::Dependency
|
109
63
|
name: rake-compiler
|
110
64
|
prerelease: false
|
111
|
-
requirement: &
|
65
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
112
66
|
none: false
|
113
67
|
requirements:
|
114
68
|
- - ~>
|
115
69
|
- !ruby/object:Gem::Version
|
116
|
-
hash:
|
70
|
+
hash: 5
|
117
71
|
segments:
|
118
72
|
- 0
|
119
|
-
-
|
120
|
-
version: "0.
|
73
|
+
- 7
|
74
|
+
version: "0.7"
|
121
75
|
type: :development
|
122
|
-
version_requirements: *
|
76
|
+
version_requirements: *id002
|
123
77
|
- !ruby/object:Gem::Dependency
|
124
78
|
name: hoe
|
125
79
|
prerelease: false
|
126
|
-
requirement: &
|
80
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
127
81
|
none: false
|
128
82
|
requirements:
|
129
83
|
- - ">="
|
130
84
|
- !ruby/object:Gem::Version
|
131
|
-
hash:
|
85
|
+
hash: 43
|
132
86
|
segments:
|
133
87
|
- 2
|
134
|
-
-
|
135
|
-
-
|
136
|
-
version: 2.
|
88
|
+
- 9
|
89
|
+
- 0
|
90
|
+
version: 2.9.0
|
137
91
|
type: :development
|
138
|
-
version_requirements: *
|
92
|
+
version_requirements: *id003
|
139
93
|
description: |-
|
140
94
|
DNS Service Discovery (aka Bonjour, MDNS) API for Ruby. Implements browsing,
|
141
95
|
resolving, registration and domain enumeration. Supports avahi's DNSSD
|
@@ -199,6 +153,7 @@ files:
|
|
199
153
|
- test/test_dnssd_reply_resolve.rb
|
200
154
|
- test/test_dnssd_service.rb
|
201
155
|
- test/test_dnssd_text_record.rb
|
156
|
+
- .gemtest
|
202
157
|
has_rdoc: true
|
203
158
|
homepage: http://rubyforge.org/projects/dnssd
|
204
159
|
licenses: []
|
@@ -230,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
185
|
requirements: []
|
231
186
|
|
232
187
|
rubyforge_project: dnssd
|
233
|
-
rubygems_version: 1.
|
188
|
+
rubygems_version: 1.6.0
|
234
189
|
signing_key:
|
235
190
|
specification_version: 3
|
236
191
|
summary: DNS Service Discovery (aka Bonjour, MDNS) API for Ruby
|
metadata.gz.sig
CHANGED
Binary file
|