Project

General

Profile

« Previous | Next » 

Revision 7466fc08

Added by Marc Dequènes over 13 years ago

  • ID 7466fc083799a22deae3d56779823c810028f280

[evol] server API tree reworked using a DSL (reply handling rework is WIP)

View differences:

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