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.
Files changed (45) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +14 -0
  3. data/History.txt +22 -3
  4. data/Manifest.txt +15 -0
  5. data/README.txt +27 -3
  6. data/Rakefile +5 -4
  7. data/ext/dnssd/dnssd.c +4 -0
  8. data/ext/dnssd/dnssd.h +13 -18
  9. data/ext/dnssd/errors.c +9 -3
  10. data/ext/dnssd/extconf.rb +51 -44
  11. data/ext/dnssd/flags.c +68 -14
  12. data/ext/dnssd/record.c +218 -0
  13. data/ext/dnssd/service.c +341 -121
  14. data/lib/dnssd.rb +46 -11
  15. data/lib/dnssd/record.rb +97 -0
  16. data/lib/dnssd/reply.rb +39 -92
  17. data/lib/dnssd/reply/addr_info.rb +47 -0
  18. data/lib/dnssd/reply/browse.rb +52 -0
  19. data/lib/dnssd/reply/domain.rb +22 -0
  20. data/lib/dnssd/reply/query_record.rb +183 -0
  21. data/lib/dnssd/reply/register.rb +37 -0
  22. data/lib/dnssd/reply/resolve.rb +105 -0
  23. data/lib/dnssd/service.rb +123 -16
  24. data/lib/dnssd/text_record.rb +28 -19
  25. data/sample/browse.rb +24 -6
  26. data/sample/enumerate_domains.rb +7 -1
  27. data/sample/getaddrinfo.rb +28 -0
  28. data/sample/growl.rb +2 -0
  29. data/sample/query_record.rb +15 -0
  30. data/sample/register.rb +19 -20
  31. data/sample/resolve.rb +31 -7
  32. data/sample/resolve_ichat.rb +5 -6
  33. data/sample/server.rb +2 -0
  34. data/sample/socket.rb +4 -0
  35. data/test/test_dnssd.rb +6 -4
  36. data/test/test_dnssd_flags.rb +1 -15
  37. data/test/test_dnssd_record.rb +92 -0
  38. data/test/test_dnssd_reply.rb +13 -79
  39. data/test/test_dnssd_reply_browse.rb +28 -0
  40. data/test/test_dnssd_reply_query_record.rb +92 -0
  41. data/test/test_dnssd_reply_resolve.rb +47 -0
  42. data/test/test_dnssd_service.rb +12 -0
  43. data/test/test_dnssd_text_record.rb +3 -3
  44. metadata +32 -11
  45. metadata.gz.sig +0 -0
@@ -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 :@fullname, 'blah'
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} \"drbrain@pincer-tip\" type: _presence._tcp domain: local interface: en2 flags: #{flags}>"
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 'Eric Hodel', @reply.name
112
- assert_equal '_http._tcp', @reply.type
113
- assert_equal 'local.', @reply.domain
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 'Dr. Pepper', @reply.name
118
- assert_equal '_http._tcp', @reply.type
119
- assert_equal 'local.', @reply.domain
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', @reply.type
127
- assert_equal 'local.', @reply.domain
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("").to_hash)
72
- assert_equal({}, @TR.new("\x00").to_hash)
73
- assert_equal({}, @TR.new("\x00\x00").to_hash)
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.2"
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-12 00:00:00 -07:00
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-complier
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.2
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