devdnsd 3.0.8 → 3.1.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.
- checksums.yaml +4 -4
- data/.travis-gemfile +7 -1
- data/.travis.yml +2 -2
- data/CHANGELOG.md +6 -0
- data/README.md +9 -0
- data/bin/devdnsd +23 -0
- data/doc/DevDNSd.html +1 -1
- data/doc/DevDNSd/Application.html +273 -209
- data/doc/DevDNSd/ApplicationMethods.html +1 -1
- data/doc/DevDNSd/ApplicationMethods/Aliases.html +61 -61
- data/doc/DevDNSd/ApplicationMethods/Server.html +46 -44
- data/doc/DevDNSd/ApplicationMethods/System.html +199 -17
- data/doc/DevDNSd/ApplicationMethods/System/ClassMethods.html +1 -1
- data/doc/DevDNSd/Configuration.html +1 -1
- data/doc/DevDNSd/Errors.html +1 -1
- data/doc/DevDNSd/Errors/InvalidRule.html +1 -1
- data/doc/DevDNSd/Rule.html +1 -1
- data/doc/DevDNSd/Version.html +3 -3
- data/doc/_index.html +1 -1
- data/doc/file.README.html +10 -1
- data/doc/index.html +10 -1
- data/doc/method_list.html +12 -0
- data/doc/top-level-namespace.html +1 -1
- data/lib/devdnsd/application.rb +48 -7
- data/lib/devdnsd/configuration.rb +2 -2
- data/lib/devdnsd/version.rb +2 -2
- data/locales/en.yml +8 -1
- data/locales/it.yml +8 -1
- data/spec/devdnsd/application_spec.rb +44 -2
- data/spec/devdnsd/configuration_spec.rb +1 -1
- metadata +2 -2
@@ -529,7 +529,7 @@
|
|
529
529
|
</div>
|
530
530
|
|
531
531
|
<div id="footer">
|
532
|
-
Generated on
|
532
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
533
533
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
534
534
|
0.8.7.3 (ruby-2.1.0).
|
535
535
|
</div>
|
@@ -421,7 +421,7 @@ config.add_rule("match.dev", "10.0.0.1")
|
|
421
421
|
</div>
|
422
422
|
|
423
423
|
<div id="footer">
|
424
|
-
Generated on
|
424
|
+
Generated on Sun Mar 9 19:54:08 2014 by
|
425
425
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
426
426
|
0.8.7.3 (ruby-2.1.0).
|
427
427
|
</div>
|
data/doc/DevDNSd/Errors.html
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
</div>
|
117
117
|
|
118
118
|
<div id="footer">
|
119
|
-
Generated on
|
119
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
120
120
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
121
121
|
0.8.7.3 (ruby-2.1.0).
|
122
122
|
</div>
|
@@ -124,7 +124,7 @@
|
|
124
124
|
</div>
|
125
125
|
|
126
126
|
<div id="footer">
|
127
|
-
Generated on
|
127
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
128
128
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
129
129
|
0.8.7.3 (ruby-2.1.0).
|
130
130
|
</div>
|
data/doc/DevDNSd/Rule.html
CHANGED
@@ -2927,7 +2927,7 @@
|
|
2927
2927
|
</div>
|
2928
2928
|
|
2929
2929
|
<div id="footer">
|
2930
|
-
Generated on
|
2930
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
2931
2931
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
2932
2932
|
0.8.7.3 (ruby-2.1.0).
|
2933
2933
|
</div>
|
data/doc/DevDNSd/Version.html
CHANGED
@@ -134,7 +134,7 @@
|
|
134
134
|
|
135
135
|
</div>
|
136
136
|
</dt>
|
137
|
-
<dd><pre class="code"><span class='int'>
|
137
|
+
<dd><pre class="code"><span class='int'>1</span></pre></dd>
|
138
138
|
|
139
139
|
<dt id="PATCH-constant" class="">PATCH =
|
140
140
|
<div class="docstring">
|
@@ -149,7 +149,7 @@
|
|
149
149
|
|
150
150
|
</div>
|
151
151
|
</dt>
|
152
|
-
<dd><pre class="code"><span class='int'>
|
152
|
+
<dd><pre class="code"><span class='int'>0</span></pre></dd>
|
153
153
|
|
154
154
|
<dt id="STRING-constant" class="">STRING =
|
155
155
|
<div class="docstring">
|
@@ -180,7 +180,7 @@
|
|
180
180
|
</div>
|
181
181
|
|
182
182
|
<div id="footer">
|
183
|
-
Generated on
|
183
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
184
184
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
185
185
|
0.8.7.3 (ruby-2.1.0).
|
186
186
|
</div>
|
data/doc/_index.html
CHANGED
@@ -237,7 +237,7 @@
|
|
237
237
|
</div>
|
238
238
|
|
239
239
|
<div id="footer">
|
240
|
-
Generated on
|
240
|
+
Generated on Sun Mar 9 19:54:06 2014 by
|
241
241
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
242
242
|
0.8.7.3 (ruby-2.1.0).
|
243
243
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -99,6 +99,15 @@
|
|
99
99
|
|
100
100
|
<p><strong>You’re done!</strong></p>
|
101
101
|
|
102
|
+
<h2 id="dual-stack-ipv4ipv6-usage">Dual stack (IPv4/IPv6) usage</h2>
|
103
|
+
|
104
|
+
<p>If you experience slowness in resolving host from clients (Chrome, curl etc.) when you don’t specify the address type, make sure you have both a <code>A</code> and <code>AAAA</code> rules set for the same host, like this:</p>
|
105
|
+
|
106
|
+
<p><code>ruby
|
107
|
+
config.add_rule(/\.dev$/, "127.0.0.1")
|
108
|
+
config.add_rule(/\.dev$/, "::1", :AAAA)
|
109
|
+
</code></p>
|
110
|
+
|
102
111
|
<h2 id="advanced-usage">Advanced usage</h2>
|
103
112
|
|
104
113
|
<p>Just type <code>devdnsd help</code> and you’ll see all available options.</p>
|
@@ -166,7 +175,7 @@ This argument is ignored if you pass the block, as it assumes that the second ar
|
|
166
175
|
</div></div>
|
167
176
|
|
168
177
|
<div id="footer">
|
169
|
-
Generated on
|
178
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
170
179
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
171
180
|
0.8.7.3 (ruby-2.1.0).
|
172
181
|
</div>
|
data/doc/index.html
CHANGED
@@ -99,6 +99,15 @@
|
|
99
99
|
|
100
100
|
<p><strong>You’re done!</strong></p>
|
101
101
|
|
102
|
+
<h2 id="dual-stack-ipv4ipv6-usage">Dual stack (IPv4/IPv6) usage</h2>
|
103
|
+
|
104
|
+
<p>If you experience slowness in resolving host from clients (Chrome, curl etc.) when you don’t specify the address type, make sure you have both a <code>A</code> and <code>AAAA</code> rules set for the same host, like this:</p>
|
105
|
+
|
106
|
+
<p><code>ruby
|
107
|
+
config.add_rule(/\.dev$/, "127.0.0.1")
|
108
|
+
config.add_rule(/\.dev$/, "::1", :AAAA)
|
109
|
+
</code></p>
|
110
|
+
|
102
111
|
<h2 id="advanced-usage">Advanced usage</h2>
|
103
112
|
|
104
113
|
<p>Just type <code>devdnsd help</code> and you’ll see all available options.</p>
|
@@ -166,7 +175,7 @@ This argument is ignored if you pass the block, as it assumes that the second ar
|
|
166
175
|
</div></div>
|
167
176
|
|
168
177
|
<div id="footer">
|
169
|
-
Generated on
|
178
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
170
179
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
171
180
|
0.8.7.3 (ruby-2.1.0).
|
172
181
|
</div>
|
data/doc/method_list.html
CHANGED
@@ -66,11 +66,23 @@
|
|
66
66
|
|
67
67
|
|
68
68
|
<li class="r2 ">
|
69
|
+
<span class='object_link'><a href="DevDNSd/ApplicationMethods/System.html#action_restart-instance_method" title="DevDNSd::ApplicationMethods::System#action_restart (method)">#action_restart</a></span>
|
70
|
+
<small>DevDNSd::ApplicationMethods::System</small>
|
71
|
+
</li>
|
72
|
+
|
73
|
+
|
74
|
+
<li class="r1 ">
|
69
75
|
<span class='object_link'><a href="DevDNSd/ApplicationMethods/System.html#action_start-instance_method" title="DevDNSd::ApplicationMethods::System#action_start (method)">#action_start</a></span>
|
70
76
|
<small>DevDNSd::ApplicationMethods::System</small>
|
71
77
|
</li>
|
72
78
|
|
73
79
|
|
80
|
+
<li class="r2 ">
|
81
|
+
<span class='object_link'><a href="DevDNSd/ApplicationMethods/System.html#action_status-instance_method" title="DevDNSd::ApplicationMethods::System#action_status (method)">#action_status</a></span>
|
82
|
+
<small>DevDNSd::ApplicationMethods::System</small>
|
83
|
+
</li>
|
84
|
+
|
85
|
+
|
74
86
|
<li class="r1 ">
|
75
87
|
<span class='object_link'><a href="DevDNSd/ApplicationMethods/System.html#action_stop-instance_method" title="DevDNSd::ApplicationMethods::System#action_stop (method)">#action_stop</a></span>
|
76
88
|
<small>DevDNSd::ApplicationMethods::System</small>
|
@@ -103,7 +103,7 @@
|
|
103
103
|
</div>
|
104
104
|
|
105
105
|
<div id="footer">
|
106
|
-
Generated on
|
106
|
+
Generated on Sun Mar 9 19:54:07 2014 by
|
107
107
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
108
108
|
0.8.7.3 (ruby-2.1.0).
|
109
109
|
</div>
|
data/lib/devdnsd/application.rb
CHANGED
@@ -126,6 +126,31 @@ module DevDNSd
|
|
126
126
|
true
|
127
127
|
end
|
128
128
|
|
129
|
+
# Restarts the server in background.
|
130
|
+
#
|
131
|
+
# @return [Boolean] `true` if action succeeded, `false` otherwise.
|
132
|
+
def action_restart
|
133
|
+
action_stop
|
134
|
+
action_start
|
135
|
+
true
|
136
|
+
end
|
137
|
+
|
138
|
+
# Shows the status of the server
|
139
|
+
#
|
140
|
+
# @return [Boolean] `true` if action succeeded, `false` otherwise.
|
141
|
+
def action_status
|
142
|
+
daemon = self.class
|
143
|
+
status = RExec::Daemon::ProcessFile.status(daemon)
|
144
|
+
pid = RExec::Daemon::ProcessFile.recall(daemon).to_s
|
145
|
+
status = :crashed if status == :unknown && daemon.crashed?
|
146
|
+
|
147
|
+
if status == :running then
|
148
|
+
logger.info(replace_markers(i18n.status_running(pid)))
|
149
|
+
elsif
|
150
|
+
logger.info(replace_markers(i18n.send("status_#{status}")))
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
129
154
|
# Adds aliases to an interface.
|
130
155
|
#
|
131
156
|
# @param options [Hash] The options provided by the user.
|
@@ -216,8 +241,7 @@ module DevDNSd
|
|
216
241
|
logger.info(replace_markers(i18n.resolver_creating(resolver_path)))
|
217
242
|
|
218
243
|
script = Tempfile.new("devdnsd-install-script")
|
219
|
-
script.write("mkdir -p '#{File.dirname(resolver_path)}'\n")
|
220
|
-
script.write("rm -rf '#{resolver_path}'\n")
|
244
|
+
script.write("mkdir -p '#{File.dirname(resolver_path)}'\nrm -rf '#{resolver_path}'\n")
|
221
245
|
script.write("echo 'nameserver 127.0.0.1\\nport #{@config.port}' >> '#{resolver_path}'")
|
222
246
|
script.close
|
223
247
|
|
@@ -512,7 +536,8 @@ module DevDNSd
|
|
512
536
|
# @return [Object] The result of stop callbacks.
|
513
537
|
def perform_server
|
514
538
|
application = self
|
515
|
-
|
539
|
+
|
540
|
+
RubyDNS::run_server(listen: build_listen_interfaces) do
|
516
541
|
self.logger = application.logger
|
517
542
|
|
518
543
|
match(/.+/, DevDNSd::Application::ANY_CLASSES) do |transaction, match_data|
|
@@ -564,6 +589,14 @@ module DevDNSd
|
|
564
589
|
end
|
565
590
|
|
566
591
|
private
|
592
|
+
# Builds the list of listening interfaces.
|
593
|
+
#
|
594
|
+
# @return [Array] Array of addresses.
|
595
|
+
def build_listen_interfaces
|
596
|
+
port = @config.port.to_integer
|
597
|
+
@config.bind_addresses.ensure_array {|address| [:udp, address, port] }
|
598
|
+
end
|
599
|
+
|
567
600
|
# Performs the processing of a rule.
|
568
601
|
#
|
569
602
|
# @param rule [Rule] The rule to process.
|
@@ -746,16 +779,14 @@ module DevDNSd
|
|
746
779
|
@logger = nil
|
747
780
|
@logger = get_logger
|
748
781
|
rescue Bovem::Errors::InvalidConfiguration => e
|
749
|
-
|
750
|
-
logger.fatal(e.message)
|
751
|
-
logger.warn(replace_markers(i18n.application_create_config(path)))
|
782
|
+
log_failed_configuration(path, e)
|
752
783
|
raise ::SystemExit
|
753
784
|
end
|
754
785
|
end
|
755
786
|
|
756
787
|
# Creates a folder for a file.
|
757
788
|
#
|
758
|
-
# @param [String] The path of the file.
|
789
|
+
# @param path [String] The path of the file.
|
759
790
|
def ensure_directory_for(path)
|
760
791
|
begin
|
761
792
|
FileUtils.mkdir_p(File.dirname(path))
|
@@ -764,5 +795,15 @@ module DevDNSd
|
|
764
795
|
raise ::SystemExit
|
765
796
|
end
|
766
797
|
end
|
798
|
+
|
799
|
+
# Logs a failed configuration
|
800
|
+
#
|
801
|
+
# @param path [String] The path of the invalid file.
|
802
|
+
# @param exception [Exception] The occurred exception.
|
803
|
+
def log_failed_configuration(path, exception)
|
804
|
+
logger = Bovem::Logger.create($stderr)
|
805
|
+
logger.fatal(exception.message)
|
806
|
+
logger.warn(replace_markers(i18n.application_create_config(path)))
|
807
|
+
end
|
767
808
|
end
|
768
809
|
end
|
@@ -10,8 +10,8 @@ module DevDNSd
|
|
10
10
|
# If to run the server in foreground. Default: `false`.
|
11
11
|
property :foreground, default: false
|
12
12
|
|
13
|
-
# The
|
14
|
-
property :
|
13
|
+
# The addresses to listen to. Default: `["0.0.0.0"]`.
|
14
|
+
property :bind_addresses, default: ["0.0.0.0"]
|
15
15
|
|
16
16
|
# The port to listen to. Default: `7771`.
|
17
17
|
property :port, default: 7771
|
data/lib/devdnsd/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -58,12 +58,19 @@
|
|
58
58
|
application_meta_command: "COMMAND"
|
59
59
|
application_create_config: "To execute devdnsd, please create the file {mark=bright}%1{/mark}. An empty file is sufficient."
|
60
60
|
command_start: "Starts the server."
|
61
|
+
command_stop: "Stops the server."
|
62
|
+
command_restart: "Restarts the server."
|
63
|
+
command_status: "Shows the status of the server."
|
64
|
+
command_clean: "Cleans the system's DNS."
|
61
65
|
command_install: "Installs the server."
|
62
66
|
command_uninstall: "Uninstalls the server."
|
63
|
-
command_stop: "Stops the server."
|
64
67
|
command_aliases: "Adds or removes aliases to network interfaces."
|
65
68
|
command_add: "Adds aliases."
|
66
69
|
command_remove: "Removes aliases."
|
70
|
+
status_running: "The server is running with process ID {mark=bright}%1{/mark}."
|
71
|
+
status_stopped: "The server is stopped."
|
72
|
+
status_crashed: "The server crashed. See the log for more information."
|
73
|
+
status_unknown: "The server status is unknown."
|
67
74
|
removing: "Removing"
|
68
75
|
adding: "Adding"
|
69
76
|
remove: "remove"
|
data/locales/it.yml
CHANGED
@@ -59,12 +59,19 @@
|
|
59
59
|
application_meta_command: "COMANDO"
|
60
60
|
application_create_config: "Per eseguire devdnsd, per favore crea il file {mark=bright}%1{/mark}. Un file vuoto è sufficiente."
|
61
61
|
command_start: "Avvia server."
|
62
|
+
command_stop: "Ferma il server."
|
63
|
+
command_restart: "Riavvia server."
|
64
|
+
command_status: "Mostra lo status del server."
|
65
|
+
command_clean: "Pulisce la cache DNS del sistema."
|
62
66
|
command_install: "Installa il server."
|
63
67
|
command_uninstall: "Disinstalla il server."
|
64
|
-
command_stop: "Ferma il server."
|
65
68
|
command_aliases: "Aggiunge or rimuove indirizzi dalle interfacce di rete."
|
66
69
|
command_add: "Aggiungi indirizzi"
|
67
70
|
command_remove: "Rimuovi indirizzi."
|
71
|
+
status_running: "Il server è in esecuzione con ID processo {mark=bright}%1{/mark}."
|
72
|
+
status_stopped: "Il server è stato fermato."
|
73
|
+
status_crashed: "Il server è terminato con errori. Guarda il log per maggiori informazioni."
|
74
|
+
status_unknown: "Lo status del server è sconosciuto."
|
68
75
|
removing: "Rimuovo"
|
69
76
|
adding: "Aggiungo"
|
70
77
|
remove: "rimuovere"
|
@@ -192,9 +192,9 @@ describe DevDNSd::Application do
|
|
192
192
|
end
|
193
193
|
|
194
194
|
describe "#perform_server" do
|
195
|
-
let(:application){ create_application({"log_file" => log_file, "configuration" => sample_config}) }
|
195
|
+
let(:application){ create_application({"log_file" => log_file, "configuration" => sample_config, "port" => 60771}) }
|
196
196
|
|
197
|
-
def test_resolve(host = "match_1.dev", type = "ANY", nameserver = "127.0.0.1", port =
|
197
|
+
def test_resolve(host = "match_1.dev", type = "ANY", nameserver = "127.0.0.1", port = 60771, logger = nil)
|
198
198
|
result = nil
|
199
199
|
|
200
200
|
EM.run do
|
@@ -567,6 +567,48 @@ describe DevDNSd::Application do
|
|
567
567
|
end
|
568
568
|
end
|
569
569
|
|
570
|
+
describe "#action_restart" do
|
571
|
+
it "should stop and restart the server" do
|
572
|
+
expect(application).to receive(:action_stop)
|
573
|
+
expect(application).to receive(:action_start)
|
574
|
+
application.action_restart
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
describe "#action_status" do
|
579
|
+
it "should get the status of the daemon when running" do
|
580
|
+
expect(RExec::Daemon::ProcessFile).to receive(:status).and_return(:running)
|
581
|
+
expect(RExec::Daemon::ProcessFile).to receive(:recall).and_return(123)
|
582
|
+
|
583
|
+
expect(application.logger).to receive(:info).with("The server is running with process ID 123.")
|
584
|
+
application.action_status
|
585
|
+
end
|
586
|
+
|
587
|
+
it "should get the status of the daemon when stopped" do
|
588
|
+
expect(RExec::Daemon::ProcessFile).to receive(:status).and_return(:stopped)
|
589
|
+
expect(RExec::Daemon::ProcessFile).to receive(:recall).and_return(123)
|
590
|
+
|
591
|
+
expect(application.logger).to receive(:info).with("The server is stopped.")
|
592
|
+
application.action_status
|
593
|
+
end
|
594
|
+
|
595
|
+
it "should get the status of the daemon when crashed" do
|
596
|
+
expect(RExec::Daemon::ProcessFile).to receive(:status).and_return(:unknown)
|
597
|
+
expect(application.class).to receive(:crashed?).and_return(true)
|
598
|
+
|
599
|
+
expect(application.logger).to receive(:info).with("The server crashed. See the log for more information.")
|
600
|
+
application.action_status
|
601
|
+
end
|
602
|
+
|
603
|
+
it "should get the status of the daemon when unknown" do
|
604
|
+
expect(RExec::Daemon::ProcessFile).to receive(:status).and_return(:unknown)
|
605
|
+
expect(application.class).to receive(:crashed?).and_return(false)
|
606
|
+
|
607
|
+
expect(application.logger).to receive(:info).with("The server status is unknown.")
|
608
|
+
application.action_status
|
609
|
+
end
|
610
|
+
end
|
611
|
+
|
570
612
|
describe "#action_install" do
|
571
613
|
before(:each) do
|
572
614
|
allow(application).to receive(:is_osx?).and_return(true)
|
@@ -11,7 +11,7 @@ describe DevDNSd::Configuration do
|
|
11
11
|
describe "#initialize" do
|
12
12
|
it "sets default arguments and rules" do
|
13
13
|
config = DevDNSd::Configuration.new
|
14
|
-
expect(config.
|
14
|
+
expect(config.bind_addresses).to eq(["0.0.0.0"])
|
15
15
|
expect(config.port).to eq(7771)
|
16
16
|
expect(config.tld).to eq("dev")
|
17
17
|
expect(config.log_file).to eq(File.absolute_path(File.expand_path("~/.devdnsd/daemon.log")))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devdnsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shogun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bovem
|