lib/dns_one.rb in dns_one-0.5.5 vs lib/dns_one.rb in dns_one-0.5.6

- old
+ new

@@ -1,8 +1,6 @@ # Core -require 'syslog' -require 'syslog/logger' require 'ostruct' require 'singleton' require 'fileutils' # Gems @@ -18,78 +16,65 @@ require "dns_one/core_ext/exception" require "dns_one/core_ext/string" require "dns_one/core_ext/blank" require "dns_one/core_ext/hash" -require "dns_one/log" +require "dns_one/global" require "dns_one/util" require "dns_one/server" -require "dns_one/stat" +require "dns_one/req_log/db" module DnsOne; class DnsOne - DEFAULT_CONF_FILE = '/etc/dns_one/conf.yml' - WORK_DIR = "/var/local/dns_one" - CONF_DIR = "/etc/dns_one" + DEFAULTS = { + conf_file: "/etc/dns_one.yml", + work_dir: "/var/local/dns_one", + log_file: "/var/log/dns_one/dns_one.log", + rubydns_log_file: "/var/log/dns_one/dns_one_rubydns.log", + run_as: "dnsone", + interfaces: [ [:udp, "0.0.0.0", 53], + [:tcp, "0.0.0.0", 53], + [:udp, "::", 5300], + [:tcp, "::", 5300] + ], + log_req_socket_file: '/tmp/dns_one_log_result.sock' + } - def initialize conf_file: nil, work_dir: nil - Log.setup - - conf_file ||= DEFAULT_CONF_FILE - @conf_all = parse_conf conf_file - @conf = @conf_all.main - - work_dir ||= WORK_DIR - - begin - Dir.chdir work_dir - rescue => e - Log.w "Cannot change working dir to #{WORK_DIR}. Will continue in #{Dir.pwd}." - end + def initialize conf_file: nil + @conf = Global.conf = load_conf(conf_file || DEFAULTS[:conf_file]) end - + def start - Server.new(@conf_all.server, @conf_all.zone_search).run + init_loggers + chdir + Server.new.run end private - - def parse_conf conf_file - check_conf_file conf_file - conf = YAML.load_file conf_file - conf = conf.symbolize_keys + def load_conf conf_file + conf = DEFAULTS.clone + conf.merge! YAML.load_file(conf_file).symbolize_keys + Util.hash_to_ostruct_deep conf - OpenStruct.new( - main: { - work_dir: conf[:config][:work_dir] - }, - server: { - run_as: conf[:config][:run_as], - save_stats: conf[:config][:save_stats], - log_result_file: conf[:config][:log_result_file], - log_result_socket: conf[:config][:log_result_socket], - log_result_socket_file: conf[:config][:log_result_socket_file], - }, - zone_search: { - ignore_subdomains: conf[:config][:ignore_subdomains], - cache_max: conf[:config][:cache_max], - record_sets: conf[:record_sets], - backend: conf[:backend] - } - ) + rescue => e + $stderr.puts e.desc + $stderr.puts "Error opening conf file #{conf_file}. Aborting." + exit 1 end - def check_conf_file conf_file - unless File.readable? conf_file - Util.die "Conf file #{conf_file} not found or unreadable. Aborting." - end + def init_loggers + Global.logger = Util.init_logger @conf.log_file , Logger::INFO + Global.ruby_dns_logger = Util.init_logger @conf.ruby_dns_logger, Logger::WARN + end - conf_stat = File.stat conf_file + def chdir + d = @conf.work_dir + FileUtils.mkdir_p d + Dir.chdir d - unless conf_stat.mode.to_s(8) =~ /0600$/ - Util.die "Conf file #{conf_file} must have mode 0600. Aborting." - end + rescue => e + Global.logger.error e.desc + Global.logger.error "Cannot chdir to #{@conf.work_dir}. Will continue in #{Dir.pwd}" end end; end -