Revision 7466fc08
Added by Marc Dequènes over 13 years ago
- ID 7466fc083799a22deae3d56779823c810028f280
lib/cyborghood/services/dns.rb | ||
---|---|---|
end
|
||
end
|
||
|
||
def zones
|
||
master_zones + slave_zones
|
||
end
|
||
|
||
def type
|
||
@config.dns.software
|
||
end
|
||
... | ... | |
end
|
||
|
||
class Zone
|
||
def initialize(zone)
|
||
@zone = zone
|
||
def initialize(name)
|
||
@name = name
|
||
|
||
@config = Config.instance
|
||
@resolver = Dnsruby::Resolver.new
|
||
... | ... | |
raise CyberError.new(:unrecoverable, "services/dns", "erroneous configuration: unknown nameserver")
|
||
end
|
||
end
|
||
system "sudo #{script} '#{@zone}' >/dev/null"
|
||
system "sudo #{script} '#{@name}' >/dev/null"
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone activation failed") unless $?.success?
|
||
end
|
||
|
||
... | ... | |
return unless @temp_file.nil?
|
||
|
||
begin
|
||
@temp_file = Tempfile.new(@zone)
|
||
@temp_file = Tempfile.new(@name)
|
||
@temp_file.write(@content)
|
||
@temp_file.close
|
||
rescue
|
||
... | ... | |
@content = File.read(filename)
|
||
update_hash if filename == @filename
|
||
rescue
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@zone}' cannot be read from '#{filename}' (I/O error, nonexistent or lack of permission)")
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@name}' cannot be read from '#{filename}' (I/O error, nonexistent or lack of permission)")
|
||
end
|
||
end
|
||
|
||
... | ... | |
fp.print @content
|
||
end
|
||
rescue
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@zone}' cannot be written to '#{filename}' (I/O error or lack of permission)")
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@name}' cannot be written to '#{filename}' (I/O error or lack of permission)")
|
||
end
|
||
end
|
||
|
||
... | ... | |
when 'bind'
|
||
output = []
|
||
begin
|
||
IO.popen("named-checkzone -i #{check_type} '#{@zone}' #{filename}") do |fp|
|
||
IO.popen("named-checkzone -i #{check_type} '#{@name}' #{filename}") do |fp|
|
||
output << fp.gets.chomp! until fp.eof?
|
||
end
|
||
rescue
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@zone}' could not be checked (I/O error)")
|
||
raise CyberError.new(:unrecoverable, "services/dns", "zone '#{@name}' could not be checked (I/O error)")
|
||
end
|
||
|
||
serial = nil
|
Also available in: Unified diff
[evol] server API tree reworked using a DSL (reply handling rework is WIP)