devdnsd 2.4.0 → 3.0.0

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. checksums.yaml +7 -0
  2. data/.rbx/8b/8b2d1928657c1eeac610d1207ff1bee6e918287c +857 -0
  3. data/.rbx/db/dbd6130694811dcd0359863bd5380c673db0fe71 +288 -0
  4. data/.travis-gemfile +1 -2
  5. data/.travis.yml +1 -0
  6. data/Gemfile +2 -3
  7. data/README.md +3 -1
  8. data/Rakefile +1 -1
  9. data/bin/devdnsd +29 -5
  10. data/config/devdnsd_config.sample +2 -5
  11. data/devdnsd.gemspec +6 -5
  12. data/doc/DevDNSd.html +4 -4
  13. data/doc/DevDNSd/Application.html +560 -520
  14. data/doc/DevDNSd/ApplicationMethods.html +4 -4
  15. data/doc/DevDNSd/ApplicationMethods/Aliases.html +780 -0
  16. data/doc/DevDNSd/ApplicationMethods/Server.html +46 -46
  17. data/doc/DevDNSd/ApplicationMethods/System.html +222 -20
  18. data/doc/DevDNSd/ApplicationMethods/System/ClassMethods.html +3 -3
  19. data/doc/DevDNSd/Configuration.html +20 -20
  20. data/doc/DevDNSd/Errors.html +3 -3
  21. data/doc/DevDNSd/Errors/InvalidRule.html +3 -3
  22. data/doc/DevDNSd/Rule.html +15 -15
  23. data/doc/DevDNSd/Version.html +5 -5
  24. data/doc/_index.html +11 -4
  25. data/doc/class_list.html +1 -1
  26. data/doc/file.README.html +6 -4
  27. data/doc/frames.html +1 -1
  28. data/doc/index.html +6 -4
  29. data/doc/method_list.html +73 -31
  30. data/doc/top-level-namespace.html +3 -3
  31. data/lib/devdnsd.rb +6 -3
  32. data/lib/devdnsd/application.rb +220 -11
  33. data/lib/devdnsd/configuration.rb +19 -1
  34. data/lib/devdnsd/errors.rb +1 -1
  35. data/lib/devdnsd/rule.rb +2 -2
  36. data/lib/devdnsd/version.rb +3 -3
  37. data/locales/en.yml +28 -2
  38. data/locales/it.yml +29 -2
  39. data/spec/coverage_helper.rb +3 -3
  40. data/spec/devdnsd/application_spec.rb +202 -51
  41. data/spec/devdnsd/configuration_spec.rb +1 -1
  42. data/spec/devdnsd/rule_spec.rb +1 -1
  43. data/spec/resolver_helper.rb +51 -0
  44. data/spec/spec_helper.rb +3 -5
  45. metadata +34 -26
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the devdnsd gem. Copyright (C) 2013 and above Shogun <shogun_panda@cowtech.it>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ # Resolvs an hostname to a nameserver.
8
+ #
9
+ # @param [String] The hostname to resolv.
10
+ # @param [String] The type of query to issue.
11
+ # @param [String] The nameserver to connect to.
12
+ # @param [Fixnum] The port to connect to.
13
+ # @param [Logger] A logger for the resolver.
14
+ # @return [Array|NilClass] Return an array of pair of addresses and types. `nil` is returned if nothing is found.
15
+ def devdnsd_resolv(address = "match.dev", type = "ANY", nameserver = "127.0.0.1", port = 7771, logger = nil)
16
+ resolver = Fiber.current
17
+ rv = []
18
+
19
+ port = port.to_i
20
+ logger = Bovem::Logger.new("/dev/null", Bovem::Logger::DEBUG) if !logger
21
+ logger.info(::Bovem::Console.replace_markers("Resolving address {mark=bright}#{address}{/mark} with type {mark=bright}#{type}{/mark} at nameserver {mark=bright}#{nameserver}{/mark}:{mark=bright}#{port.to_s}{/mark} ..."))
22
+
23
+ RubyDNS::Resolver.new([[:udp, nameserver, port], [:tcp, nameserver, port]]).query(address, "Resolv::DNS::Resource::IN::#{type}".constantize) do |response|
24
+ begin
25
+ if response.is_a?(RubyDNS::Message) then
26
+ response.answer.each do |answer|
27
+ type = answer[2].class.to_s.split("::")[-1].to_sym
28
+
29
+ name = case type
30
+ when :MX then answer[2].exchange.to_s.gsub(/\.$/, "")
31
+ when :CNAME then answer[2].name.to_s.gsub(/\.$/, "")
32
+ when :NS then answer[2].name.to_s.gsub(/\.$/, "")
33
+ when :PTR then answer[2].name.to_s.gsub(/\.$/, "")
34
+ else answer[2].address.to_s
35
+ end
36
+
37
+ rv << [name, type]
38
+ end
39
+ end
40
+ rescue => e
41
+ logger.error("[#{e.class}] #{e.to_s}")
42
+ end
43
+
44
+ resolver.resume
45
+ end
46
+
47
+ Fiber.yield
48
+ rv.uniq!
49
+ logger.info("Resolving ended with result: #{rv.inspect}")
50
+ rv.length == 1 ? rv[0] : rv
51
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,18 +1,16 @@
1
1
  # encoding: utf-8
2
2
  #
3
- # This file is part of the devdnsd gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
3
+ # This file is part of the devdnsd gem. Copyright (C) 2013 and above Shogun <shogun_panda@cowtech.it>.
4
4
  # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
5
  #
6
6
 
7
7
  require "rubygems"
8
8
  require "bundler/setup"
9
9
  require "devdnsd"
10
- require "net/dns"
10
+ require "resolver_helper"
11
11
 
12
12
  RSpec.configure do |config|
13
13
  config.expect_with :rspec do |c|
14
14
  c.syntax = :expect
15
15
  end
16
- end
17
-
18
- require File.expand_path(File.dirname(__FILE__)) + "/../utils/tester"
16
+ end
metadata CHANGED
@@ -1,67 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devdnsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
5
- prerelease:
4
+ version: 3.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shogun
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-20 00:00:00.000000000 Z
11
+ date: 2013-08-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: mamertes
14
+ name: bovem
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: 2.3.0
19
+ version: 3.0.2
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: 2.3.0
26
+ version: 3.0.2
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rubydns
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: 0.6.3
33
+ version: 0.6.4
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: 0.6.3
40
+ version: 0.6.4
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rexec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: 1.5.1
47
+ version: 1.5.2
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: 1.5.1
54
+ version: 1.5.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: mustache
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.99.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.99.4
62
69
  description: A small DNS server to enable local domain resolution.
63
70
  email:
64
- - shogun_panda@me.com
71
+ - shogun_panda@cowtech.it
65
72
  executables:
66
73
  - devdnsd
67
74
  extensions: []
@@ -69,6 +76,8 @@ extra_rdoc_files: []
69
76
  files:
70
77
  - .DS_Store
71
78
  - .gitignore
79
+ - .rbx/8b/8b2d1928657c1eeac610d1207ff1bee6e918287c
80
+ - .rbx/db/dbd6130694811dcd0359863bd5380c673db0fe71
72
81
  - .travis-gemfile
73
82
  - .travis.yml
74
83
  - .yardopts
@@ -81,6 +90,7 @@ files:
81
90
  - doc/DevDNSd.html
82
91
  - doc/DevDNSd/Application.html
83
92
  - doc/DevDNSd/ApplicationMethods.html
93
+ - doc/DevDNSd/ApplicationMethods/Aliases.html
84
94
  - doc/DevDNSd/ApplicationMethods/Server.html
85
95
  - doc/DevDNSd/ApplicationMethods/System.html
86
96
  - doc/DevDNSd/ApplicationMethods/System/ClassMethods.html
@@ -115,39 +125,37 @@ files:
115
125
  - spec/devdnsd/application_spec.rb
116
126
  - spec/devdnsd/configuration_spec.rb
117
127
  - spec/devdnsd/rule_spec.rb
128
+ - spec/resolver_helper.rb
118
129
  - spec/spec_helper.rb
119
130
  - utils/tester.rb
120
131
  homepage: http://sw.cow.tc/devdnsd
121
132
  licenses: []
133
+ metadata: {}
122
134
  post_install_message:
123
135
  rdoc_options: []
124
136
  require_paths:
125
137
  - lib
126
138
  required_ruby_version: !ruby/object:Gem::Requirement
127
- none: false
128
139
  requirements:
129
- - - ! '>='
140
+ - - '>='
130
141
  - !ruby/object:Gem::Version
131
142
  version: 1.9.3
132
143
  required_rubygems_version: !ruby/object:Gem::Requirement
133
- none: false
134
144
  requirements:
135
- - - ! '>='
145
+ - - '>='
136
146
  - !ruby/object:Gem::Version
137
147
  version: '0'
138
- segments:
139
- - 0
140
- hash: -2526218828068856826
141
148
  requirements: []
142
149
  rubyforge_project: devdnsd
143
- rubygems_version: 1.8.25
150
+ rubygems_version: 2.0.6
144
151
  signing_key:
145
- specification_version: 3
152
+ specification_version: 4
146
153
  summary: A small DNS server to enable local domain resolution.
147
154
  test_files:
148
155
  - spec/coverage_helper.rb
149
156
  - spec/devdnsd/application_spec.rb
150
157
  - spec/devdnsd/configuration_spec.rb
151
158
  - spec/devdnsd/rule_spec.rb
159
+ - spec/resolver_helper.rb
152
160
  - spec/spec_helper.rb
153
161
  has_rdoc: