dnssd 1.2 → 1.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.tar.gz.sig +0 -0
- data/.autotest +14 -0
- data/History.txt +22 -3
- data/Manifest.txt +15 -0
- data/README.txt +27 -3
- data/Rakefile +5 -4
- data/ext/dnssd/dnssd.c +4 -0
- data/ext/dnssd/dnssd.h +13 -18
- data/ext/dnssd/errors.c +9 -3
- data/ext/dnssd/extconf.rb +51 -44
- data/ext/dnssd/flags.c +68 -14
- data/ext/dnssd/record.c +218 -0
- data/ext/dnssd/service.c +341 -121
- data/lib/dnssd.rb +46 -11
- data/lib/dnssd/record.rb +97 -0
- data/lib/dnssd/reply.rb +39 -92
- data/lib/dnssd/reply/addr_info.rb +47 -0
- data/lib/dnssd/reply/browse.rb +52 -0
- data/lib/dnssd/reply/domain.rb +22 -0
- data/lib/dnssd/reply/query_record.rb +183 -0
- data/lib/dnssd/reply/register.rb +37 -0
- data/lib/dnssd/reply/resolve.rb +105 -0
- data/lib/dnssd/service.rb +123 -16
- data/lib/dnssd/text_record.rb +28 -19
- data/sample/browse.rb +24 -6
- data/sample/enumerate_domains.rb +7 -1
- data/sample/getaddrinfo.rb +28 -0
- data/sample/growl.rb +2 -0
- data/sample/query_record.rb +15 -0
- data/sample/register.rb +19 -20
- data/sample/resolve.rb +31 -7
- data/sample/resolve_ichat.rb +5 -6
- data/sample/server.rb +2 -0
- data/sample/socket.rb +4 -0
- data/test/test_dnssd.rb +6 -4
- data/test/test_dnssd_flags.rb +1 -15
- data/test/test_dnssd_record.rb +92 -0
- data/test/test_dnssd_reply.rb +13 -79
- data/test/test_dnssd_reply_browse.rb +28 -0
- data/test/test_dnssd_reply_query_record.rb +92 -0
- data/test/test_dnssd_reply_resolve.rb +47 -0
- data/test/test_dnssd_service.rb +12 -0
- data/test/test_dnssd_text_record.rb +3 -3
- metadata +32 -11
- metadata.gz.sig +0 -0
data/test/test_dnssd_reply.rb
CHANGED
@@ -4,72 +4,10 @@ require 'dnssd'
|
|
4
4
|
class TestDNSSDReply < MiniTest::Unit::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
@reply = DNSSD::Reply.new
|
7
|
+
@reply = DNSSD::Reply.new nil, 0, 0
|
8
8
|
@fullname = "Eric\\032Hodel._http._tcp.local."
|
9
9
|
end
|
10
10
|
|
11
|
-
def test_class_from_service
|
12
|
-
reply = DNSSD::Reply.from_service :service, 4
|
13
|
-
|
14
|
-
assert_equal :service, reply.service
|
15
|
-
assert_equal DNSSD::Flags::Default, reply.flags
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_connect_tcp
|
19
|
-
port = Socket.getservbyname 'blackjack'
|
20
|
-
@reply.set_fullname 'blackjack._http._tcp.local.'
|
21
|
-
@reply.instance_variable_set :@port, port
|
22
|
-
@reply.instance_variable_set :@target, 'localhost'
|
23
|
-
|
24
|
-
server = TCPServer.new 'localhost', port
|
25
|
-
|
26
|
-
socket = @reply.connect
|
27
|
-
|
28
|
-
assert_instance_of TCPSocket, socket
|
29
|
-
assert_equal port, socket.peeraddr[1]
|
30
|
-
assert_equal 'localhost', socket.peeraddr[2]
|
31
|
-
ensure
|
32
|
-
socket.close
|
33
|
-
server.close
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_connect_tcp_no_port_target
|
37
|
-
port = Socket.getservbyname 'blackjack'
|
38
|
-
server = TCPServer.new nil, port
|
39
|
-
Thread.start do server.accept end
|
40
|
-
|
41
|
-
DNSSD.announce server, 'blackjack no port'
|
42
|
-
|
43
|
-
@reply.set_fullname "blackjack\\032no\\032port._blackjack._tcp.local."
|
44
|
-
|
45
|
-
socket = @reply.connect
|
46
|
-
|
47
|
-
assert_instance_of TCPSocket, socket
|
48
|
-
assert_equal port, socket.peeraddr[1]
|
49
|
-
ensure
|
50
|
-
socket.close if socket
|
51
|
-
server.close if server
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_connect_udp
|
55
|
-
port = Socket.getservbyname 'blackjack'
|
56
|
-
@reply.set_fullname 'blackjack._http._udp.local.'
|
57
|
-
@reply.instance_variable_set :@port, port
|
58
|
-
@reply.instance_variable_set :@target, 'localhost'
|
59
|
-
|
60
|
-
server = UDPSocket.new
|
61
|
-
server.bind 'localhost', port
|
62
|
-
|
63
|
-
socket = @reply.connect
|
64
|
-
|
65
|
-
assert_instance_of UDPSocket, socket
|
66
|
-
assert_equal port, socket.peeraddr[1]
|
67
|
-
assert_equal 'localhost', socket.peeraddr[2]
|
68
|
-
ensure
|
69
|
-
socket.close
|
70
|
-
server.close
|
71
|
-
end
|
72
|
-
|
73
11
|
def test_fullname
|
74
12
|
@reply.set_fullname @fullname
|
75
13
|
|
@@ -81,15 +19,11 @@ class TestDNSSDReply < MiniTest::Unit::TestCase
|
|
81
19
|
end
|
82
20
|
|
83
21
|
def test_inspect
|
84
|
-
flags = DNSSD::Flags.new
|
85
|
-
@reply.instance_variable_set :@
|
86
|
-
@reply.instance_variable_set :@name, 'drbrain@pincer-tip'
|
87
|
-
@reply.instance_variable_set :@interface, 'en2'
|
88
|
-
@reply.instance_variable_set :@domain, 'local'
|
22
|
+
flags = DNSSD::Flags.new DNSSD::Flags::MoreComing
|
23
|
+
@reply.instance_variable_set :@interface, 'lo0'
|
89
24
|
@reply.instance_variable_set :@flags, flags
|
90
|
-
@reply.instance_variable_set :@type, '_presence._tcp'
|
91
25
|
|
92
|
-
expected = "#<DNSSD::Reply:0x#{@reply.object_id.to_s 16}
|
26
|
+
expected = "#<DNSSD::Reply:0x#{@reply.object_id.to_s 16} interface: lo0 flags: #{flags.inspect}>"
|
93
27
|
assert_equal expected, @reply.inspect
|
94
28
|
end
|
95
29
|
|
@@ -108,23 +42,23 @@ class TestDNSSDReply < MiniTest::Unit::TestCase
|
|
108
42
|
def test_set_fullname
|
109
43
|
@reply.set_fullname @fullname
|
110
44
|
|
111
|
-
assert_equal
|
112
|
-
assert_equal '_http._tcp',
|
113
|
-
assert_equal 'local.',
|
45
|
+
assert_equal "Eric Hodel", @reply.instance_variable_get(:@name)
|
46
|
+
assert_equal '_http._tcp', @reply.instance_variable_get(:@type)
|
47
|
+
assert_equal 'local.', @reply.instance_variable_get(:@domain)
|
114
48
|
|
115
49
|
@reply.set_fullname "Dr\\.\\032Pepper._http._tcp.local."
|
116
50
|
|
117
|
-
assert_equal
|
118
|
-
assert_equal '_http._tcp',
|
119
|
-
assert_equal 'local.',
|
51
|
+
assert_equal "Dr. Pepper", @reply.instance_variable_get(:@name)
|
52
|
+
assert_equal '_http._tcp', @reply.instance_variable_get(:@type)
|
53
|
+
assert_equal 'local.', @reply.instance_variable_get(:@domain)
|
120
54
|
end
|
121
55
|
|
122
56
|
def test_set_names
|
123
57
|
@reply.set_names "Dr\\.\032Pepper", '_http._tcp', 'local.'
|
124
58
|
|
125
|
-
assert_equal "Dr.\032Pepper", @reply.name
|
126
|
-
assert_equal '_http._tcp',
|
127
|
-
assert_equal 'local.',
|
59
|
+
assert_equal "Dr.\032Pepper", @reply.instance_variable_get(:@name)
|
60
|
+
assert_equal '_http._tcp', @reply.instance_variable_get(:@type)
|
61
|
+
assert_equal 'local.', @reply.instance_variable_get(:@domain)
|
128
62
|
end
|
129
63
|
|
130
64
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'dnssd'
|
3
|
+
|
4
|
+
class TestDNSSDReplyBrowse < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@reply = DNSSD::Reply::Browse.new nil, 0, 0, "blackjack\\032no\\032port",
|
8
|
+
'_blackjack._tcp', 'local'
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_connect
|
12
|
+
port = Socket.getservbyname 'blackjack'
|
13
|
+
server = TCPServer.new nil, port
|
14
|
+
Thread.start do server.accept end
|
15
|
+
|
16
|
+
DNSSD.announce server, 'blackjack no port'
|
17
|
+
|
18
|
+
socket = @reply.connect
|
19
|
+
|
20
|
+
assert_instance_of TCPSocket, socket
|
21
|
+
assert_equal port, socket.peeraddr[1]
|
22
|
+
ensure
|
23
|
+
socket.close if socket
|
24
|
+
server.close if server
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'dnssd'
|
3
|
+
|
4
|
+
class TestDNSSDReplyQueryRecord < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@fullname = 'blackjack._blackjack._tcp.test.'
|
8
|
+
@IN = DNSSD::Record::IN
|
9
|
+
@ipv4 = "\300\000\002\001"
|
10
|
+
@ipv6 = " \001\r\270\000\000\000\000\000\000\000\000\000\000\000\001"
|
11
|
+
@nowhere = "\007nowhere\007example\000"
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_record_data_A
|
15
|
+
qr = util_qr DNSSD::Record::A, @ipv4
|
16
|
+
|
17
|
+
assert_equal IPAddr.new_ntoh(@ipv4), qr.record_data
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_record_data_AAAA
|
21
|
+
qr = util_qr DNSSD::Record::A, @ipv6
|
22
|
+
|
23
|
+
assert_equal IPAddr.new_ntoh(@ipv6), qr.record_data
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_record_data_CNAME
|
27
|
+
qr = util_qr DNSSD::Record::CNAME, @nowhere
|
28
|
+
|
29
|
+
assert_equal 'nowhere.example.', qr.record_data
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_record_data_MX
|
33
|
+
qr = util_qr DNSSD::Record::MX, "\000\010#{@nowhere}"
|
34
|
+
|
35
|
+
assert_equal [8, 'nowhere.example.'], qr.record_data
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_record_data_NS
|
39
|
+
qr = util_qr DNSSD::Record::NS, @nowhere
|
40
|
+
|
41
|
+
assert_equal 'nowhere.example.', qr.record_data
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_record_data_PTR
|
45
|
+
qr = util_qr DNSSD::Record::PTR, @nowhere
|
46
|
+
|
47
|
+
assert_equal 'nowhere.example.', qr.record_data
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_record_data_SOA
|
51
|
+
serial = 1
|
52
|
+
refresh = 86400
|
53
|
+
rtry = 3600
|
54
|
+
expire = 86400 * 2
|
55
|
+
minimum = 3600 * 12
|
56
|
+
|
57
|
+
data = "#{@nowhere}\002me#{@nowhere}#{[serial, refresh, rtry, expire, minimum].pack 'NNNNN'}"
|
58
|
+
|
59
|
+
qr = util_qr DNSSD::Record::SOA, data
|
60
|
+
|
61
|
+
expected = [
|
62
|
+
'nowhere.example.', 'me.nowhere.example.',
|
63
|
+
serial, refresh, rtry, expire, minimum
|
64
|
+
]
|
65
|
+
|
66
|
+
assert_equal expected, qr.record_data
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_record_data_SRV
|
70
|
+
priority = 1
|
71
|
+
weight = 5
|
72
|
+
port = 1025
|
73
|
+
|
74
|
+
data = "#{[priority, weight, port].pack 'nnn'}#{@nowhere}"
|
75
|
+
|
76
|
+
qr = util_qr DNSSD::Record::SRV, data
|
77
|
+
|
78
|
+
assert_equal [1, 5, 1025, 'nowhere.example.'], qr.record_data
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_record_data_TXT
|
82
|
+
qr = util_qr DNSSD::Record::TXT, "\005Hello\006World!"
|
83
|
+
|
84
|
+
assert_equal %w[Hello World!], qr.record_data
|
85
|
+
end
|
86
|
+
|
87
|
+
def util_qr(rtype, rdata)
|
88
|
+
DNSSD::Reply::QueryRecord.new nil, 0, 0, @fullname, rtype, @IN, rdata, 120
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'dnssd'
|
3
|
+
|
4
|
+
class TestDNSSDReplyResolve < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@port = Socket.getservbyname 'blackjack'
|
8
|
+
@interface = DNSSD::InterfaceAny
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_connect_tcp
|
12
|
+
fullname = "blackjack\\032no\\032port._blackjack._tcp.local."
|
13
|
+
reply = DNSSD::Reply::Resolve.new nil, 0, @interface, fullname,
|
14
|
+
'localhost', @port, nil
|
15
|
+
|
16
|
+
server = TCPServer.new nil, @port
|
17
|
+
|
18
|
+
socket = reply.connect
|
19
|
+
|
20
|
+
assert_instance_of TCPSocket, socket
|
21
|
+
assert_equal @port, socket.peeraddr[1]
|
22
|
+
assert_equal 'localhost', socket.peeraddr[2]
|
23
|
+
ensure
|
24
|
+
socket.close if socket
|
25
|
+
server.close if server
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_connect_udp
|
29
|
+
fullname = "blackjack\\032no\\032port._blackjack._udp.local."
|
30
|
+
reply = DNSSD::Reply::Resolve.new nil, 0, @interface, fullname,
|
31
|
+
'localhost', @port, nil
|
32
|
+
|
33
|
+
server = UDPSocket.new
|
34
|
+
server.bind 'localhost', @port
|
35
|
+
|
36
|
+
socket = reply.connect
|
37
|
+
|
38
|
+
assert_instance_of UDPSocket, socket
|
39
|
+
assert_equal @port, socket.peeraddr[1]
|
40
|
+
assert_equal 'localhost', socket.peeraddr[2]
|
41
|
+
ensure
|
42
|
+
socket.close if socket
|
43
|
+
server.close if server
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'dnssd'
|
3
|
+
|
4
|
+
class TestDNSSDService < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_class_get_property
|
7
|
+
assert_kind_of Numeric,
|
8
|
+
DNSSD::Service.get_property(DNSSD::Service::DaemonVersion)
|
9
|
+
end if DNSSD::Service.respond_to? :get_property
|
10
|
+
|
11
|
+
end
|
12
|
+
|
@@ -68,9 +68,9 @@ class TestDNSSDTextRecord < MiniTest::Unit::TestCase
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_decode_empty
|
71
|
-
assert_equal({}, @TR.new("")
|
72
|
-
assert_equal({}, @TR.new("\x00")
|
73
|
-
assert_equal({}, @TR.new("\x00\x00")
|
71
|
+
assert_equal({}, @TR.new(""))
|
72
|
+
assert_equal({}, @TR.new("\x00"))
|
73
|
+
assert_equal({}, @TR.new("\x00\x00"))
|
74
74
|
end
|
75
75
|
|
76
76
|
def test_decode_value
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnssd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "1.
|
4
|
+
version: "1.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Eric Hodel
|
8
|
+
- Aaron Patterson
|
9
|
+
- Phil Hagelberg
|
7
10
|
- Chad Fowler
|
8
11
|
- Charles Mills
|
9
12
|
- Rich Kilmer
|
10
|
-
- Phil Hagelberg
|
11
|
-
- Aaron Patterson
|
12
|
-
- Eric Hodel
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain:
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
x52qPcexcYZR7w==
|
36
36
|
-----END CERTIFICATE-----
|
37
37
|
|
38
|
-
date: 2009-08-
|
38
|
+
date: 2009-08-18 00:00:00 -07:00
|
39
39
|
default_executable:
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
version: "1.4"
|
60
60
|
version:
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name: rake-
|
62
|
+
name: rake-compiler
|
63
63
|
type: :development
|
64
64
|
version_requirement:
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -76,18 +76,19 @@ dependencies:
|
|
76
76
|
requirements:
|
77
77
|
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: 2.3.
|
79
|
+
version: 2.3.3
|
80
80
|
version:
|
81
81
|
description: |-
|
82
82
|
DNS Service Discovery (aka Bonjour, MDNS) API for Ruby. Implements browsing,
|
83
|
-
resolving, registration and domain enumeration.
|
83
|
+
resolving, registration and domain enumeration. Supports avahi's DNSSD
|
84
|
+
compatibility layer for avahi 0.6.25 or newer.
|
84
85
|
email:
|
86
|
+
- drbrain@segment.net
|
87
|
+
- aaronp@rubyforge.org
|
88
|
+
- phil@hagelb.org
|
85
89
|
- chad@chadfowler.com
|
86
90
|
- ""
|
87
91
|
- ""
|
88
|
-
- phil@hagelb.org
|
89
|
-
- aaronp@rubyforge.org
|
90
|
-
- drbrain@segment.net
|
91
92
|
executables: []
|
92
93
|
|
93
94
|
extensions:
|
@@ -107,15 +108,25 @@ files:
|
|
107
108
|
- ext/dnssd/errors.c
|
108
109
|
- ext/dnssd/extconf.rb
|
109
110
|
- ext/dnssd/flags.c
|
111
|
+
- ext/dnssd/record.c
|
110
112
|
- ext/dnssd/service.c
|
111
113
|
- lib/dnssd.rb
|
112
114
|
- lib/dnssd/flags.rb
|
115
|
+
- lib/dnssd/record.rb
|
113
116
|
- lib/dnssd/reply.rb
|
117
|
+
- lib/dnssd/reply/addr_info.rb
|
118
|
+
- lib/dnssd/reply/browse.rb
|
119
|
+
- lib/dnssd/reply/domain.rb
|
120
|
+
- lib/dnssd/reply/query_record.rb
|
121
|
+
- lib/dnssd/reply/register.rb
|
122
|
+
- lib/dnssd/reply/resolve.rb
|
114
123
|
- lib/dnssd/service.rb
|
115
124
|
- lib/dnssd/text_record.rb
|
116
125
|
- sample/browse.rb
|
117
126
|
- sample/enumerate_domains.rb
|
127
|
+
- sample/getaddrinfo.rb
|
118
128
|
- sample/growl.rb
|
129
|
+
- sample/query_record.rb
|
119
130
|
- sample/register.rb
|
120
131
|
- sample/resolve.rb
|
121
132
|
- sample/resolve_ichat.rb
|
@@ -123,7 +134,12 @@ files:
|
|
123
134
|
- sample/socket.rb
|
124
135
|
- test/test_dnssd.rb
|
125
136
|
- test/test_dnssd_flags.rb
|
137
|
+
- test/test_dnssd_record.rb
|
126
138
|
- test/test_dnssd_reply.rb
|
139
|
+
- test/test_dnssd_reply_browse.rb
|
140
|
+
- test/test_dnssd_reply_query_record.rb
|
141
|
+
- test/test_dnssd_reply_resolve.rb
|
142
|
+
- test/test_dnssd_service.rb
|
127
143
|
- test/test_dnssd_text_record.rb
|
128
144
|
has_rdoc: true
|
129
145
|
homepage: http://rubyforge.org/projects/dnssd
|
@@ -158,5 +174,10 @@ summary: DNS Service Discovery (aka Bonjour, MDNS) API for Ruby
|
|
158
174
|
test_files:
|
159
175
|
- test/test_dnssd.rb
|
160
176
|
- test/test_dnssd_flags.rb
|
177
|
+
- test/test_dnssd_record.rb
|
161
178
|
- test/test_dnssd_reply.rb
|
179
|
+
- test/test_dnssd_reply_browse.rb
|
180
|
+
- test/test_dnssd_reply_query_record.rb
|
181
|
+
- test/test_dnssd_reply_resolve.rb
|
182
|
+
- test/test_dnssd_service.rb
|
162
183
|
- test/test_dnssd_text_record.rb
|
metadata.gz.sig
CHANGED
Binary file
|