class DNSUpdater::Config

Config file, configuration handling

Public Class Methods

addDefault(name, config) click to toggle source
# File lib/dnsupdater/config.rb, line 44
def self.addDefault(name, config)
    getDefaultConfig[name] = config
end
getDefaultConfig() click to toggle source
# File lib/dnsupdater/config.rb, line 10
def self.getDefaultConfig
    @@DefaultConfig ||= {
        'Default' => 'PowerDNS'
    }
    @@DefaultConfig
end
new(configFile = nil) click to toggle source
# File lib/dnsupdater/config.rb, line 17
def initialize(configFile = nil)
    @ConfigFile = nil
    @ConfigFile = Pathname.new(configFile) unless configFile.to_s.empty?
    @TargetProtocol = {}

    update(load)
end

Public Instance Methods

getDefaultProtocol() click to toggle source
# File lib/dnsupdater/config.rb, line 25
def getDefaultProtocol
    self['Default'].downcase.to_sym
end
getTargetProtocol(name) click to toggle source
# File lib/dnsupdater/config.rb, line 33
def getTargetProtocol(name)
    protocol = name.downcase.to_sym
    return @TargetProtocol[protocol] if @TargetProtocol.key?(protocol)
    return getDefaultProtocol if self[name]['Target'].to_s.empty?

    target = self[name]['Target'].downcase.to_sym
    return getDefaultProtocol if target == :default

    target
end
setTargetProtocol(source, protocol) click to toggle source
# File lib/dnsupdater/config.rb, line 29
def setTargetProtocol(source, protocol)
    @TargetProtocol[source] = protocol.downcase.to_sym unless protocol.to_s.empty?
end

Private Instance Methods

load() click to toggle source
# File lib/dnsupdater/config.rb, line 50
def load
    config = self.class.getDefaultConfig
    if @ConfigFile
        @ConfigFile = @ConfigFile.expand_path unless @ConfigFile.absolute?
        @ConfigFile = Pathname.new(Etc.sysconfdir) / 'dnsupdater.yaml' unless File.exist?(@ConfigFile)
        if File.exist?(@ConfigFile)
            configData = YAML.load_file(@ConfigFile)
            config = Utils.deepMerge(config, configData) if configData.is_a?(Hash)
        end
    end

    config
end