def self.parse(path, zonelist_filename, kasp_filename, syslog, conf_file,
working_folder, zone)
zones = []
File.open((zonelist_filename.to_s+"").untaint, 'r') {|file|
doc = REXML::Document.new(file)
doc.elements.each("ZoneList/Zone") {|z|
zone_name = z.attributes['name'].chomp(".")
if (zone)
next if (zone_name.downcase != zone.downcase)
end
policy = z.elements['Policy'].text
config_file_loc = z.elements["SignerConfiguration"].text
if (config_file_loc.index(File::SEPARATOR) != 0)
config_file_loc = path + config_file_loc
end
begin
config = Config.new(zone_name, kasp_filename, policy,
config_file_loc, syslog)
output_file_loc = z.elements["Adapters"].elements['Output'].elements["File"].text
if (output_file_loc.index(File::SEPARATOR) != 0)
output_file_loc = path + output_file_loc
end
zones.push([config, output_file_loc])
changed_config = ChangedConfig.new(zone_name, conf_file, kasp_filename, config, working_folder, syslog)
config.changed_config = changed_config
rescue Config::ConfigLoadError => e
msg = "Can't load #{zone_name} SignerConfiguration file (#{config_file_loc}) : #{e}"
print msg+"\n"
syslog.log(LOG_ERR, msg)
end
}
}
return zones
end