-
Notifications
You must be signed in to change notification settings - Fork 0
/
resolver
30 lines (30 loc) · 910 Bytes
/
resolver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'yaml'
require 'resolv'
require 'ftools'
puts "#{Time.now}\nip-resolver.rb © Leonhardt Wille"
config = YAML::load_file('hosts_allowed.yml')
config['files'].each do |k,file|
File.copy(file['path'],file['path']+".bak",true)
puts "Opening #{file['path']}"
fd=File.open(file['path'], 'r+')
line = file['line']
comment = file['comment']
lines=config['hostnames'].collect do |name,host|
puts "\tWriting entry #{name}"
ip=Resolv.getaddress host
eval "\"#{comment}\n#{line}\n\""
end
content=fd.read
if content.gsub!(/(# BEGIN allowed_hosts\n)(.*)(\n# END allowed_hosts)/m,"# BEGIN allowed_hosts\n#{lines}\n# END allowed_hosts")
fd.rewind
puts "\tsaving file"
fd.write content
else
raise "#BEGIN ... #END block not found."
end
puts "\tclosing #{file['path']}"
fd.close
unless file['after'].nil? || file['after'].empty?
system file['after']
end
end