vagrant-dnsmasq 0.0.6 → 0.0.7
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/Gemfile.lock +1 -1
- data/README.md +6 -3
- data/lib/vagrant-dnsmasq/actions.rb +6 -4
- data/lib/vagrant-dnsmasq/config.rb +3 -2
- data/lib/vagrant-dnsmasq/includes/DnsmasqConf.class.rb +16 -0
- data/lib/vagrant-dnsmasq/includes/Resolver.class.rb +14 -7
- data/lib/vagrant-dnsmasq/version.rb +1 -1
- data/test/Resolver.class.spec.rb +11 -0
- data/test/Vagrantfile +4 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a22f37f14051709fb9d3ff209ba8f7bbf43ddf54
|
4
|
+
data.tar.gz: 31dde16d265e00a553caeed1a707da3774c82a65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d31c836656532f3b975976f94f72073be3e2ca72184682375ca11371082e56d2a2b96fac114d61960b84a7e90ee8139348b85474287a5d94e11012fbffa8fe9
|
7
|
+
data.tar.gz: f218310e2fa580f1789b9208fe8a91a5c1cdfe54279d8d21bf08701a7c138aa5748741f2f70d6b33895e10b734088ff02cdf3fe6d1bef4a97f822497e5d8d430
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -41,9 +41,12 @@ config.dnsmasq.domain = '.dev'
|
|
41
41
|
# overwrite default location for /etc/resolver directory
|
42
42
|
# config.dnsmasq.resolver = '/etc/resolver'
|
43
43
|
|
44
|
-
#
|
45
|
-
#
|
46
|
-
|
44
|
+
# 'vagrant destroy' does not delete /etc/resolver nameserver file, defaults to false
|
45
|
+
# config.dnsmasq.keep_resolver_on_destroy = true
|
46
|
+
|
47
|
+
# overwrite default location for /etc/dnsmasq.conf
|
48
|
+
brew_prefix = `brew --prefix`.strip
|
49
|
+
config.dnsmasq.dnsmasqconf = brew_prefix + '/etc/dnsmasq.conf'
|
47
50
|
|
48
51
|
# disable dnsmasq handling
|
49
52
|
# config.dnsmasq.disable = true
|
@@ -10,7 +10,7 @@ module Vagrant
|
|
10
10
|
|
11
11
|
def call(env)
|
12
12
|
if @machine.config.dnsmasq.enabled?
|
13
|
-
|
13
|
+
env[:ui].info "Dnsmasq handler actived"
|
14
14
|
|
15
15
|
@ip = @machine.config.dnsmasq.ip
|
16
16
|
|
@@ -53,7 +53,7 @@ module Vagrant
|
|
53
53
|
|
54
54
|
# update /etc/resolver
|
55
55
|
resolver = Resolver.new(@machine.config.dnsmasq.resolver, true) # true for sudo
|
56
|
-
resolver.insert(@machine.config.dnsmasq.domain,
|
56
|
+
resolver.insert(@machine.config.dnsmasq.domain, Ip.new('127.0.0.1'))
|
57
57
|
|
58
58
|
env[:ui].success "Dnsmasq handler set IP '#{use_ip}' for domain '#{@machine.config.dnsmasq.domain.dotted}'"
|
59
59
|
|
@@ -83,8 +83,10 @@ module Vagrant
|
|
83
83
|
dnsmasq.delete(@machine.config.dnsmasq.domain)
|
84
84
|
|
85
85
|
# update /etc/resolver
|
86
|
-
|
87
|
-
|
86
|
+
unless @machine.config.dnsmasq.keep_resolver_on_destroy
|
87
|
+
resolver = Resolver.new(@machine.config.dnsmasq.resolver, true) # true for sudo
|
88
|
+
resolver.delete(@machine.config.dnsmasq.domain)
|
89
|
+
end
|
88
90
|
|
89
91
|
env[:ui].success "Dnsmasq handler removed domain '#{@machine.config.dnsmasq.domain}'"
|
90
92
|
|
@@ -5,6 +5,7 @@ module Vagrant
|
|
5
5
|
attr_accessor :domain
|
6
6
|
attr_accessor :ip
|
7
7
|
attr_accessor :resolver
|
8
|
+
attr_accessor :keep_resolver_on_destroy
|
8
9
|
attr_accessor :dnsmasqconf
|
9
10
|
attr_accessor :disable
|
10
11
|
|
@@ -12,12 +13,14 @@ module Vagrant
|
|
12
13
|
@domain = UNSET_VALUE
|
13
14
|
@ip = UNSET_VALUE
|
14
15
|
@resolver = UNSET_VALUE
|
16
|
+
@keep_resolver_on_destroy = UNSET_VALUE
|
15
17
|
@dnsmasqconf = UNSET_VALUE
|
16
18
|
@disable = UNSET_VALUE
|
17
19
|
end
|
18
20
|
|
19
21
|
def finalize!
|
20
22
|
@domain = nil if @domain == UNSET_VALUE
|
23
|
+
@keep_resolver_on_destroy = false if @keep_resolver_on_destroy == UNSET_VALUE
|
21
24
|
@resolver = '/etc/resolver' if @resolver == UNSET_VALUE
|
22
25
|
@dnsmasqconf = "/etc/dnsmasq.conf" if @dnsmasqconf == UNSET_VALUE
|
23
26
|
@disable = false if @disable == UNSET_VALUE
|
@@ -64,8 +67,6 @@ module Vagrant
|
|
64
67
|
@ip = nil
|
65
68
|
end
|
66
69
|
|
67
|
-
|
68
|
-
|
69
70
|
# verify resolver
|
70
71
|
if @resolver
|
71
72
|
errors << "directory '#{@resolver}' does not exist" unless Dir.exists? @resolver
|
@@ -8,6 +8,19 @@ class DnsmasqConf
|
|
8
8
|
@filename = filename
|
9
9
|
end
|
10
10
|
|
11
|
+
def self.flush_cache!
|
12
|
+
begin
|
13
|
+
# restart dnsmasq (if installed with homebrew)
|
14
|
+
system "launchctl unload /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist"
|
15
|
+
system "launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist"
|
16
|
+
|
17
|
+
# @todo: call proc or try other fancy things to reload dnsmasq
|
18
|
+
|
19
|
+
rescue => e
|
20
|
+
# hmm ... i dont care
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
11
24
|
def insert(domain, ip)
|
12
25
|
raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain
|
13
26
|
raise ArgumentError, 'invalid ip instance' unless ip.is_a? Ip
|
@@ -17,6 +30,8 @@ class DnsmasqConf
|
|
17
30
|
File.open(@filename, 'a') { |file|
|
18
31
|
file.write "\naddress=/#{domain.dotted}/#{ip.v4}"
|
19
32
|
}
|
33
|
+
|
34
|
+
DnsmasqConf::flush_cache!
|
20
35
|
end
|
21
36
|
|
22
37
|
def includes?(domain)
|
@@ -32,6 +47,7 @@ class DnsmasqConf
|
|
32
47
|
raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain
|
33
48
|
|
34
49
|
delete_line_from_file(@filename, Regexp.new("address=/\.#{domain.name}"))
|
50
|
+
DnsmasqConf::flush_cache!
|
35
51
|
end
|
36
52
|
|
37
53
|
|
@@ -19,13 +19,15 @@ class Resolver
|
|
19
19
|
|
20
20
|
def insert(domain, ip)
|
21
21
|
raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain
|
22
|
+
raise ArgumentError, 'invalid ip instance' unless ip.is_a? Ip
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
puts "You may be asked for your password to insert #{@dirname}/#{domain.name} (ip: #{ip})" if @sudo
|
26
|
-
system("#{'sudo' if @sudo} sh -c \"echo 'nameserver #{ip.v4}' >> #{@dirname}/#{domain.name}\"")
|
27
|
-
Resolver::flush_cache!
|
24
|
+
unless includes?(domain, ip)
|
25
|
+
delete(domain)
|
28
26
|
|
27
|
+
puts "You may be asked for your password to insert #{@dirname}/#{domain.name} (ip: #{ip})" if @sudo
|
28
|
+
system("#{'sudo' if @sudo} sh -c \"echo 'nameserver #{ip.v4}' >> #{@dirname}/#{domain.name}\"")
|
29
|
+
Resolver::flush_cache!
|
30
|
+
end
|
29
31
|
end
|
30
32
|
|
31
33
|
def delete(domain)
|
@@ -38,10 +40,15 @@ class Resolver
|
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
41
|
-
def includes?(domain)
|
43
|
+
def includes?(domain, with_ip = nil)
|
42
44
|
raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain
|
43
45
|
|
44
|
-
|
46
|
+
unless with_ip.nil?
|
47
|
+
raise ArgumentError, 'invalid ip instance' unless with_ip.is_a? Ip
|
48
|
+
File.exists?("#{@dirname}/#{domain.name}") && IO.read("#{@dirname}/#{domain.name}").strip == "nameserver #{with_ip.v4}"
|
49
|
+
else
|
50
|
+
File.exists? "#{@dirname}/#{domain.name}"
|
51
|
+
end
|
45
52
|
end
|
46
53
|
|
47
54
|
end
|
data/test/Resolver.class.spec.rb
CHANGED
@@ -41,6 +41,17 @@ describe Resolver do
|
|
41
41
|
@res.includes?(@domain).should eq(false)
|
42
42
|
end
|
43
43
|
|
44
|
+
it "#includes? should verify content of domain file" do
|
45
|
+
@res.includes?(@domain).should eq(false)
|
46
|
+
@res.includes?(@domain, @ip).should eq(false)
|
47
|
+
|
48
|
+
@res.insert(@domain, @ip)
|
49
|
+
|
50
|
+
@res.includes?(@domain).should eq(true)
|
51
|
+
@res.includes?(@domain, @ip).should eq(true)
|
52
|
+
@res.includes?(@domain, Ip.new('10.10.10.11')).should eq(false)
|
53
|
+
end
|
54
|
+
|
44
55
|
it "#insert should raise if domain is nil" do
|
45
56
|
expect {
|
46
57
|
@res.insert(nil, nil)
|
data/test/Vagrantfile
CHANGED
@@ -34,7 +34,10 @@ Vagrant.configure('2') do |config|
|
|
34
34
|
# overwrite default location for /etc/resolver directory
|
35
35
|
# config.dnsmasq.resolver = '/etc/resolver'
|
36
36
|
|
37
|
-
#
|
37
|
+
# 'vagrant destroy' does not delete /etc/resolver nameserver file, defaults to false
|
38
|
+
# config.dnsmasq.keep_resolver_on_destroy = true
|
39
|
+
|
40
|
+
# overwrite default location for /etc/dnsmasq.conf
|
38
41
|
brew_prefix = `brew --prefix`.strip
|
39
42
|
config.dnsmasq.dnsmasqconf = brew_prefix + '/etc/dnsmasq.conf'
|
40
43
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-dnsmasq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mattes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|