smart_proxy_dhcp_dnsmasq 0.6 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 64fb30133ada0a818bdf665a6488a4373f317144
4
- data.tar.gz: 60dd83f0e023802e77b59d54ba75bdd1ec40e75c
2
+ SHA256:
3
+ metadata.gz: b9f60a51d51d8a80edf7ebd7f841ef4f5e44397c4b86bfb5c13c8872fab3d74b
4
+ data.tar.gz: e528fe5bc8aef7b939ab6feea332ec2c0aedba81d5a101e2be1d063c242fb2b4
5
5
  SHA512:
6
- metadata.gz: 11665804f753f83922fbbabd1551b08c415b5910439f4a00319115794bbf4dd97cb472e1f75be48f5c091ab9cc3e1464c840956ecdb7bdec7da26698a4065e90
7
- data.tar.gz: eb8ae2512a23f5924d15dd0a7b89c50b555fdbfe809f45daab0e8e3f6368a5aa8523fa85d59978c947ba3688c95cb5fe17546ed1e054001370fcc6ac5965e42e
6
+ metadata.gz: 45ba84592849d76efe6725ec24723509ac3347d7a4ff15c1de47969aeb3cd5a9e019d51521b2bdddca27ff7bb25c861fd49ff6c17261a08cc1be60066099cd0c
7
+ data.tar.gz: 9d7e177853adff920b1c98892c4a240c174afdb7ff07e848ec49065434f2f59ca9e7df890cc4a2fdcfdb7e0b426dfa09417a960986f12a8b8b66e40400a94c62
@@ -0,0 +1 @@
1
+ gem 'smart_proxy_dhcp_dnsmasq'
@@ -13,6 +13,7 @@ module Proxy::DHCP::Dnsmasq
13
13
  @optsfile_content = []
14
14
 
15
15
  Dir.mkdir @config_dir unless Dir.exist? @config_dir
16
+ cleanup_optsfile if true # TODO: Only cleanup occasionally
16
17
 
17
18
  subnet_service.load!
18
19
 
@@ -72,7 +73,7 @@ module Proxy::DHCP::Dnsmasq
72
73
  def optsfile_content
73
74
  path = File.join(@config_dir, 'dhcpopts.conf').freeze
74
75
 
75
- @optsfile_content = open(path).readlines \
76
+ @optsfile_content = File.open(path).readlines.map(&:chomp).reject(&:empty?) \
76
77
  if File.exist?(path) && @optsfile_content.empty?
77
78
  @optsfile_content
78
79
  end
@@ -85,6 +86,20 @@ module Proxy::DHCP::Dnsmasq
85
86
  File.write(path, optsfile_content.join("\n") + "\n")
86
87
  end
87
88
 
89
+ def cleanup_optsfile
90
+ used_tags = []
91
+ Dir.glob(File.join(@config_dir, 'dhcphosts', '*.conf')) do |file|
92
+ File.read(file).scan(/set:(.*?),/m) { |tag| used_tags << tag }
93
+ end
94
+ used_tags = used_tags.sort.uniq
95
+
96
+ @optsfile_content = optsfile_content.select do |line|
97
+ tag = line[/tag:(.*?),/, 1]
98
+ used_tags.include?(tag)
99
+ end
100
+ File.write(File.join(@config_dir, 'dhcpopts.conf'), optsfile_content.join("\n") + "\n")
101
+ end
102
+
88
103
  def sanitize_string(string)
89
104
  string.downcase.gsub(/[^0-9a-z]/, '_')
90
105
  end
@@ -43,7 +43,7 @@ module Proxy::DHCP::Dnsmasq
43
43
  end
44
44
 
45
45
  def parse_config_for_subnet
46
- configuration = {}
46
+ configuration = { options: {} }
47
47
  files = []
48
48
  @config_paths.each do |path|
49
49
  files << path if File.exist? path
@@ -88,8 +88,6 @@ module Proxy::DHCP::Dnsmasq
88
88
  when 'dhcp-option'
89
89
  data = value.split(',')
90
90
 
91
- configuration[:options] = {} unless configuration.key? :options
92
-
93
91
  data.shift until data.empty? || /\A\d+\z/ === data.first
94
92
  next if data.empty?
95
93
 
@@ -217,27 +215,24 @@ module Proxy::DHCP::Dnsmasq
217
215
  if dupe = find_host_by_mac(record.subnet_address, record.mac)
218
216
  logger.debug "Found duplicate #{dupe} when adding record #{record}, skipping"
219
217
  next
220
- # delete_host(dupe)
221
218
  end
222
219
 
223
- logger.debug "Adding host #{record}"
220
+ # logger.debug "Adding host #{record}"
224
221
  add_host(record.subnet_address, record)
225
222
  end
226
223
 
227
- leases = [] # load_leases # FIXME: Will cause collisions if added
224
+ leases = load_leases
228
225
  leases.each do |lease|
229
226
  if dupe = find_lease_by_mac(lease.subnet_address, lease.mac)
230
- logger.debug "Removing duplicate #{dupe} when adding lease #{lease}, skipping"
227
+ logger.debug "Found duplicate #{dupe} by MAC when adding lease #{lease}, skipping"
231
228
  next
232
- # delete_lease(dupe)
233
229
  end
234
230
  if dupe = find_lease_by_ip(lease.subnet_address, lease.ip)
235
- logger.debug "Removing duplicate #{dupe} when adding lease #{lease}, skipping"
231
+ logger.debug "Found duplicate #{dupe} by IP when adding lease #{lease}, skipping"
236
232
  next
237
- # delete_lease(dupe)
238
233
  end
239
234
 
240
- logger.debug "Adding lease #{lease}"
235
+ # logger.debug "Adding lease #{lease}"
241
236
  add_lease(lease.subnet_address, lease)
242
237
  end
243
238
  end
@@ -1,7 +1,7 @@
1
1
  module Proxy
2
2
  module DHCP
3
3
  module Dnsmasq
4
- VERSION = '0.6'.freeze
4
+ VERSION = '0.7'.freeze
5
5
  end
6
6
  end
7
7
  end
@@ -6,6 +6,7 @@ class DHCPDnsmasqProductionWiringTest < Test::Unit::TestCase
6
6
  def setup
7
7
  @container = ::Proxy::DependencyInjection::Container.new
8
8
  @config = ::Proxy::DHCP::Dnsmasq::PluginConfiguration.new
9
+ Proxy::DHCP::Dnsmasq::Record.any_instance.stubs(:cleanup_optsfile)
9
10
  end
10
11
 
11
12
  def test_dns_provider_initialization_default
@@ -6,6 +6,7 @@ class DHCPDnsmasqRecordHandlingTest < Test::Unit::TestCase
6
6
  @subnet_service = mock
7
7
  @subnet_service.expects(:load!).returns(true)
8
8
  Dir.stubs(:exist?).returns(true)
9
+ Proxy::DHCP::Dnsmasq::Record.any_instance.stubs(:cleanup_optsfile)
9
10
 
10
11
  @server = ::Proxy::DHCP::Dnsmasq::Record.new('/etc/dnsmasq.d/', '/bin/true', @subnet_service)
11
12
  @server.instance_eval('@optsfile_content = []')
@@ -21,11 +21,11 @@ class DHCPDnsmasqSubnetServiceTest < Test::Unit::TestCase
21
21
 
22
22
  initializer.expects(:add_subnet).with(subnet)
23
23
  initializer.expects(:add_host)
24
- # initializer.expects(:add_lease)
24
+ initializer.expects(:add_lease)
25
25
 
26
26
  initializer.expects(:parse_config_for_subnet).returns(subnet)
27
27
  initializer.expects(:parse_config_for_dhcp_reservations).returns([host])
28
- # initializer.expects(:load_leases).returns([lease])
28
+ initializer.expects(:load_leases).returns([lease])
29
29
  # initializer.expects(:add_watch)
30
30
 
31
31
  initializer.load!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_dhcp_dnsmasq
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Olofsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-27 00:00:00.000000000 Z
11
+ date: 2019-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -61,7 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - LICENSE
63
63
  - README.md
64
- - bundler.d/dns_dnsmasq.rb
64
+ - bundler.d/dhcp_dnsmasq.rb
65
65
  - config/dhcp_dnsmasq.yml
66
66
  - lib/smart_proxy_dhcp_dnsmasq.rb
67
67
  - lib/smart_proxy_dhcp_dnsmasq/dhcp_dnsmasq_configuration.rb
@@ -74,7 +74,7 @@ files:
74
74
  - test/dhcp_dnsmasq_record_handling_test.rb
75
75
  - test/dhcp_dnsmasq_subnet_service_test.rb
76
76
  - test/test_helper.rb
77
- homepage: https://github.com/ace13/smart_proxy_dhcp_dnsmasq
77
+ homepage: https://github.com/theforeman/smart_proxy_dhcp_dnsmasq
78
78
  licenses:
79
79
  - GPL-3.0
80
80
  metadata: {}
@@ -93,14 +93,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.6.12
96
+ rubygems_version: 3.0.3
98
97
  signing_key:
99
98
  specification_version: 4
100
99
  summary: dnsmasq DHCP provider plugin for Foreman's smart proxy
101
100
  test_files:
102
101
  - test/test_helper.rb
102
+ - test/dhcp_dnsmasq_subnet_service_test.rb
103
103
  - test/dhcp_dnsmasq_default_settings_test.rb
104
104
  - test/dhcp_dnsmasq_production_wiring_test.rb
105
105
  - test/dhcp_dnsmasq_record_handling_test.rb
106
- - test/dhcp_dnsmasq_subnet_service_test.rb
@@ -1 +0,0 @@
1
- gem 'smart_proxy_dns_dnsmasq'