vagrant-dnsmasq 0.0.9 → 0.1.1
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/.ruby-version +1 -0
- data/.travis.yml +1 -1
- data/Gemfile.lock +19 -15
- data/README.md +3 -0
- data/lib/vagrant-dnsmasq/actions.rb +2 -2
- data/lib/vagrant-dnsmasq/config.rb +10 -1
- data/lib/vagrant-dnsmasq/includes/DnsmasqConf.class.rb +14 -18
- data/lib/vagrant-dnsmasq/includes/Domain.class.rb +1 -1
- data/lib/vagrant-dnsmasq/version.rb +1 -1
- data/test/Dnsmasq.class.spec.rb +2 -2
- data/test/Domain.class.spec.rb +44 -2
- data/test/Vagrantfile +3 -0
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32fa6a951824651c68fc45260332a031c5cac985
|
4
|
+
data.tar.gz: 1dc26c7cf06d98bd76d5a56713a2abac4242be2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9abe56b4521cd162621b34c409daa324406bb1619322a050aa1fd5a76a3607fdb417374c11513512bec0edbdaf884dc056c0939c3493718e2ee982eca9c474a
|
7
|
+
data.tar.gz: b45905b0a184b75100758da736c46d0e8a220bac5c9e379f9918a1f173e59698da9a104070a481bf48e34b72c1e4e7f65a310c8fb03bdc7a8d4ae4e4adc5640e
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.3
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -15,31 +15,35 @@ GIT
|
|
15
15
|
PATH
|
16
16
|
remote: .
|
17
17
|
specs:
|
18
|
-
vagrant-dnsmasq (0.
|
18
|
+
vagrant-dnsmasq (0.1.1)
|
19
19
|
|
20
20
|
GEM
|
21
21
|
remote: https://rubygems.org/
|
22
22
|
specs:
|
23
23
|
childprocess (0.3.9)
|
24
24
|
ffi (~> 1.0, >= 1.0.11)
|
25
|
-
diff-lcs (1.2.
|
25
|
+
diff-lcs (1.2.5)
|
26
26
|
erubis (2.7.0)
|
27
|
-
ffi (1.9.
|
28
|
-
i18n (0.6.
|
27
|
+
ffi (1.9.3)
|
28
|
+
i18n (0.6.11)
|
29
29
|
json (1.7.7)
|
30
30
|
log4r (1.1.10)
|
31
|
-
net-scp (1.1.
|
31
|
+
net-scp (1.1.2)
|
32
32
|
net-ssh (>= 2.6.5)
|
33
|
-
net-ssh (2.6.
|
34
|
-
rake (10.
|
35
|
-
rspec (
|
36
|
-
rspec-core (~>
|
37
|
-
rspec-expectations (~>
|
38
|
-
rspec-mocks (~>
|
39
|
-
rspec-core (
|
40
|
-
|
41
|
-
|
42
|
-
|
33
|
+
net-ssh (2.6.8)
|
34
|
+
rake (10.3.2)
|
35
|
+
rspec (3.1.0)
|
36
|
+
rspec-core (~> 3.1.0)
|
37
|
+
rspec-expectations (~> 3.1.0)
|
38
|
+
rspec-mocks (~> 3.1.0)
|
39
|
+
rspec-core (3.1.4)
|
40
|
+
rspec-support (~> 3.1.0)
|
41
|
+
rspec-expectations (3.1.1)
|
42
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
43
|
+
rspec-support (~> 3.1.0)
|
44
|
+
rspec-mocks (3.1.1)
|
45
|
+
rspec-support (~> 3.1.0)
|
46
|
+
rspec-support (3.1.0)
|
43
47
|
|
44
48
|
PLATFORMS
|
45
49
|
ruby
|
data/README.md
CHANGED
@@ -48,6 +48,9 @@ config.dnsmasq.domain = '.dev'
|
|
48
48
|
brew_prefix = `brew --prefix`.strip
|
49
49
|
config.dnsmasq.dnsmasqconf = brew_prefix + '/etc/dnsmasq.conf'
|
50
50
|
|
51
|
+
# command for reloading dnsmasq after config changes
|
52
|
+
config.dnsmasq.reload_command = 'sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist; sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist'
|
53
|
+
|
51
54
|
# disable dnsmasq handling
|
52
55
|
# config.dnsmasq.disable = true
|
53
56
|
```
|
@@ -48,7 +48,7 @@ module Vagrant
|
|
48
48
|
# use ip to update dnsmasq.conf and /etc/resolver
|
49
49
|
|
50
50
|
# update dnsmasq.conf
|
51
|
-
dnsmasq = DnsmasqConf.new(@machine.config.dnsmasq.dnsmasqconf)
|
51
|
+
dnsmasq = DnsmasqConf.new(@machine.config.dnsmasq.dnsmasqconf, @machine.config.dnsmasq.reload_command)
|
52
52
|
dnsmasq.insert(@machine.config.dnsmasq.domain, use_ip)
|
53
53
|
|
54
54
|
# update /etc/resolver
|
@@ -79,7 +79,7 @@ module Vagrant
|
|
79
79
|
# remove records from dnsmasq.conf and /etc/resolver
|
80
80
|
|
81
81
|
# update dnsmasq.conf
|
82
|
-
dnsmasq = DnsmasqConf.new(@machine.config.dnsmasq.dnsmasqconf)
|
82
|
+
dnsmasq = DnsmasqConf.new(@machine.config.dnsmasq.dnsmasqconf, @machine.config.dnsmasq.reload_command)
|
83
83
|
dnsmasq.delete(@machine.config.dnsmasq.domain)
|
84
84
|
|
85
85
|
# update /etc/resolver
|
@@ -7,6 +7,7 @@ module Vagrant
|
|
7
7
|
attr_accessor :resolver
|
8
8
|
attr_accessor :keep_resolver_on_destroy
|
9
9
|
attr_accessor :dnsmasqconf
|
10
|
+
attr_accessor :reload_command
|
10
11
|
attr_accessor :disable
|
11
12
|
|
12
13
|
def initialize
|
@@ -15,14 +16,22 @@ module Vagrant
|
|
15
16
|
@resolver = UNSET_VALUE
|
16
17
|
@keep_resolver_on_destroy = UNSET_VALUE
|
17
18
|
@dnsmasqconf = UNSET_VALUE
|
19
|
+
@reload_command = UNSET_VALUE
|
18
20
|
@disable = UNSET_VALUE
|
19
21
|
end
|
20
22
|
|
21
23
|
def finalize!
|
22
|
-
|
24
|
+
|
25
|
+
if @domain == UNSET_VALUE
|
26
|
+
@domain = nil
|
27
|
+
elsif !@domain.is_a?(Domain)
|
28
|
+
@domain = Domain.new @domain;
|
29
|
+
end
|
30
|
+
|
23
31
|
@keep_resolver_on_destroy = false if @keep_resolver_on_destroy == UNSET_VALUE
|
24
32
|
@resolver = '/etc/resolver' if @resolver == UNSET_VALUE
|
25
33
|
@dnsmasqconf = "/etc/dnsmasq.conf" if @dnsmasqconf == UNSET_VALUE
|
34
|
+
@reload_command = nil if @reload_command == UNSET_VALUE
|
26
35
|
@disable = false if @disable == UNSET_VALUE
|
27
36
|
|
28
37
|
# default way to obtain ip address
|
@@ -1,28 +1,24 @@
|
|
1
1
|
class DnsmasqConf
|
2
2
|
|
3
3
|
attr_reader :filename
|
4
|
+
attr_reader :reload_command
|
4
5
|
|
5
|
-
def initialize(filename)
|
6
|
+
def initialize(filename, reload_command)
|
6
7
|
raise ArgumentError, 'wrong filename' if filename.blank?
|
7
8
|
raise IOError unless File.exists? filename
|
8
9
|
@filename = filename
|
10
|
+
@reload_command = reload_command
|
9
11
|
end
|
10
12
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
# @todo: call proc or try other fancy things to reload dnsmasq
|
23
|
-
|
24
|
-
rescue => e
|
25
|
-
# hmm ... i dont care
|
13
|
+
def reload
|
14
|
+
if @reload_command
|
15
|
+
begin
|
16
|
+
# reload dnsmasq config if command specified
|
17
|
+
puts "You might be asked for your password to restart the dnsmasq daemon."
|
18
|
+
system @reload_command
|
19
|
+
rescue => e
|
20
|
+
# hmm ... i dont care
|
21
|
+
end
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
@@ -34,7 +30,7 @@ class DnsmasqConf
|
|
34
30
|
File.open(@filename, 'a') { |file|
|
35
31
|
file.write "\naddress=/#{domain.dotted}/#{ip.v4}"
|
36
32
|
}
|
37
|
-
|
33
|
+
reload
|
38
34
|
end
|
39
35
|
end
|
40
36
|
|
@@ -51,7 +47,7 @@ class DnsmasqConf
|
|
51
47
|
raise ArgumentError, 'invalid domain instance' unless domain.is_a? Domain
|
52
48
|
|
53
49
|
delete_line_from_file(@filename, Regexp.new("address=/\.#{domain.name}"))
|
54
|
-
|
50
|
+
reload
|
55
51
|
end
|
56
52
|
|
57
53
|
|
data/test/Dnsmasq.class.spec.rb
CHANGED
@@ -7,7 +7,7 @@ random = (0...50).map{ ('a'..'z').to_a[rand(26)] }.join
|
|
7
7
|
describe "At first" do
|
8
8
|
it "should fail if there is no conf file" do
|
9
9
|
expect {
|
10
|
-
DnsmasqConf.new("/tmp/some-non-existing-file-#{random}-h25hch345b3k5")
|
10
|
+
DnsmasqConf.new("/tmp/some-non-existing-file-#{random}-h25hch345b3k5", nil)
|
11
11
|
}.to raise_error IOError
|
12
12
|
end
|
13
13
|
end
|
@@ -16,7 +16,7 @@ end
|
|
16
16
|
describe DnsmasqConf do
|
17
17
|
before(:each) do
|
18
18
|
system "touch /tmp/dnsmasq-conf-#{random}"
|
19
|
-
@dnsm = DnsmasqConf.new("/tmp/dnsmasq-conf-#{random}")
|
19
|
+
@dnsm = DnsmasqConf.new("/tmp/dnsmasq-conf-#{random}", nil)
|
20
20
|
@domain = Domain.new('.foobar')
|
21
21
|
@ip = Ip.new('10.10.10.10')
|
22
22
|
end
|
data/test/Domain.class.spec.rb
CHANGED
@@ -5,11 +5,25 @@ describe Domain do
|
|
5
5
|
it "should return normal domain" do
|
6
6
|
Domain.new('foobar').name.should eq('foobar')
|
7
7
|
Domain.new('.foobar').name.should eq('foobar')
|
8
|
+
Domain.new('foo.bar').name.should eq('foo.bar')
|
9
|
+
Domain.new('.foo.bar').name.should eq('foo.bar')
|
10
|
+
Domain.new('foo8ar').name.should eq('foo8ar')
|
11
|
+
Domain.new('.foo8ar').name.should eq('foo8ar')
|
12
|
+
Domain.new('foo.8ar').name.should eq('foo.8ar')
|
13
|
+
Domain.new('.foo.8ar').name.should eq('foo.8ar')
|
14
|
+
Domain.new('foo-bar').name.should eq('foo-bar')
|
8
15
|
end
|
9
16
|
|
10
17
|
it "should return dotted domain" do
|
11
18
|
Domain.new('foobar').dotted.should eq('.foobar')
|
12
19
|
Domain.new('.foobar').dotted.should eq('.foobar')
|
20
|
+
Domain.new('foo.bar').dotted.should eq('.foo.bar')
|
21
|
+
Domain.new('.foo.bar').dotted.should eq('.foo.bar')
|
22
|
+
Domain.new('foo8ar').dotted.should eq('.foo8ar')
|
23
|
+
Domain.new('.foo8ar').dotted.should eq('.foo8ar')
|
24
|
+
Domain.new('foo.8ar').dotted.should eq('.foo.8ar')
|
25
|
+
Domain.new('.foo.8ar').dotted.should eq('.foo.8ar')
|
26
|
+
Domain.new('foo-bar').dotted.should eq('.foo-bar')
|
13
27
|
end
|
14
28
|
|
15
29
|
it "should return valid domain if domain is passed" do
|
@@ -17,6 +31,19 @@ describe Domain do
|
|
17
31
|
Domain.new(Domain.new('.foobar')).name.should eq('foobar')
|
18
32
|
Domain.new(Domain.new('foobar')).dotted.should eq('.foobar')
|
19
33
|
Domain.new(Domain.new('.foobar')).dotted.should eq('.foobar')
|
34
|
+
Domain.new(Domain.new('foo.bar')).name.should eq('foo.bar')
|
35
|
+
Domain.new(Domain.new('.foo.bar')).name.should eq('foo.bar')
|
36
|
+
Domain.new(Domain.new('foo.bar')).dotted.should eq('.foo.bar')
|
37
|
+
Domain.new(Domain.new('.foo.bar')).dotted.should eq('.foo.bar')
|
38
|
+
Domain.new(Domain.new('foo8ar')).name.should eq('foo8ar')
|
39
|
+
Domain.new(Domain.new('.foo8ar')).name.should eq('foo8ar')
|
40
|
+
Domain.new(Domain.new('foo8ar')).dotted.should eq('.foo8ar')
|
41
|
+
Domain.new(Domain.new('.foo8ar')).dotted.should eq('.foo8ar')
|
42
|
+
Domain.new(Domain.new('foo.8ar')).name.should eq('foo.8ar')
|
43
|
+
Domain.new(Domain.new('.foo.8ar')).name.should eq('foo.8ar')
|
44
|
+
Domain.new(Domain.new('foo.8ar')).dotted.should eq('.foo.8ar')
|
45
|
+
Domain.new(Domain.new('.foo.8ar')).dotted.should eq('.foo.8ar')
|
46
|
+
Domain.new(Domain.new('foo-bar')).name.should eq('foo-bar')
|
20
47
|
end
|
21
48
|
|
22
49
|
it "should make the domain lowercase" do
|
@@ -25,7 +52,15 @@ describe Domain do
|
|
25
52
|
|
26
53
|
it "should fail for invalid domains" do
|
27
54
|
expect {
|
28
|
-
Domain.new('
|
55
|
+
Domain.new('foo*')
|
56
|
+
}.to raise_error ArgumentError
|
57
|
+
|
58
|
+
expect {
|
59
|
+
Domain.new('.')
|
60
|
+
}.to raise_error ArgumentError
|
61
|
+
|
62
|
+
expect {
|
63
|
+
Domain.new('foo..bar')
|
29
64
|
}.to raise_error ArgumentError
|
30
65
|
|
31
66
|
expect {
|
@@ -36,6 +71,10 @@ describe Domain do
|
|
36
71
|
Domain.new('foo.')
|
37
72
|
}.to raise_error ArgumentError
|
38
73
|
|
74
|
+
expect {
|
75
|
+
Domain.new('-foo')
|
76
|
+
}.to raise_error ArgumentError
|
77
|
+
|
39
78
|
expect {
|
40
79
|
Domain.new('foo-')
|
41
80
|
}.to raise_error ArgumentError
|
@@ -50,9 +89,12 @@ describe Domain do
|
|
50
89
|
end
|
51
90
|
|
52
91
|
it "#valid? should fail for invalid domains" do
|
53
|
-
Domain::valid?('
|
92
|
+
Domain::valid?('foo*').should eq(false)
|
93
|
+
Domain::valid?('.').should eq(false)
|
94
|
+
Domain::valid?('foo..bar').should eq(false)
|
54
95
|
Domain::valid?('foo_').should eq(false)
|
55
96
|
Domain::valid?('foo.').should eq(false)
|
97
|
+
Domain::valid?('-foo').should eq(false)
|
56
98
|
Domain::valid?('foo-').should eq(false)
|
57
99
|
Domain::valid?('').should eq(false)
|
58
100
|
Domain::valid?(nil).should eq(false)
|
data/test/Vagrantfile
CHANGED
@@ -41,6 +41,9 @@ Vagrant.configure('2') do |config|
|
|
41
41
|
brew_prefix = `brew --prefix`.strip
|
42
42
|
config.dnsmasq.dnsmasqconf = brew_prefix + '/etc/dnsmasq.conf'
|
43
43
|
|
44
|
+
# specify command to reload dnsmasq
|
45
|
+
config.dnsmasq.reload_command = 'sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist; sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist'
|
46
|
+
|
44
47
|
# disable dnsmasq handling
|
45
48
|
# config.dnsmasq.disable = true
|
46
49
|
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-dnsmasq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mattes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: A Dnsmasq Vagrant plugin that manages the dnsmasq.conf file and /etc/resolver
|
@@ -60,8 +60,9 @@ executables: []
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
- .gitignore
|
64
|
-
- .
|
63
|
+
- ".gitignore"
|
64
|
+
- ".ruby-version"
|
65
|
+
- ".travis.yml"
|
65
66
|
- Gemfile
|
66
67
|
- Gemfile.lock
|
67
68
|
- LICENSE.txt
|
@@ -94,17 +95,17 @@ require_paths:
|
|
94
95
|
- lib
|
95
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
97
|
requirements:
|
97
|
-
- -
|
98
|
+
- - ">="
|
98
99
|
- !ruby/object:Gem::Version
|
99
100
|
version: '0'
|
100
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
102
|
requirements:
|
102
|
-
- -
|
103
|
+
- - ">="
|
103
104
|
- !ruby/object:Gem::Version
|
104
105
|
version: '0'
|
105
106
|
requirements: []
|
106
107
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.2.2
|
108
109
|
signing_key:
|
109
110
|
specification_version: 4
|
110
111
|
summary: A Dnsmasq Vagrant plugin that manages the dnsmasq.conf file and /etc/resolver
|