Sha256: c4a3a2653ddab85974df176aae99627d967bfe76e59c8a408d83e7e077370695

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

# Core
require 'ostruct'
require 'singleton'
require 'fileutils'

# Gems
require 'rexec'
require 'rubydns'
require 'yaml'
require 'pg'
require 'active_record'
require 'sqlite3'

# DnsOne

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/global"
require "dns_one/util"
require "dns_one/server"
require "dns_one/req_log/db"

module DnsOne; class DnsOne

    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
        @conf = Global.conf = load_conf(conf_file || DEFAULTS[:conf_file])
    end
    
    def start
        init_loggers
        chdir
        Server.new.run 
    end

    private

    def load_conf conf_file
        conf = DEFAULTS.clone
        conf.merge! YAML.load_file(conf_file).symbolize_keys
        Util.hash_to_ostruct_deep conf

    rescue => e
        $stderr.puts e.desc
        $stderr.puts "Error opening conf file #{conf_file}. Aborting."
        exit 1
    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

    def chdir
        d = @conf.work_dir
        FileUtils.mkdir_p d
        Dir.chdir d

    rescue => e
        Global.logger.error e.desc
        Global.logger.error "Cannot chdir to #{@conf.work_dir}. Will continue in #{Dir.pwd}"
    end

end; end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dns_one-0.5.8 lib/dns_one.rb
dns_one-0.5.7 lib/dns_one.rb
dns_one-0.5.6 lib/dns_one.rb