class Comuna::Server

Public Class Methods

new(config) click to toggle source
# File lib/comuna/server.rb, line 9
def initialize(config)
  @interfaces = config.interfaces
  @upstream_ifaces = config.upstream
  @matches = config.matches
end

Public Instance Methods

call() click to toggle source
# File lib/comuna/server.rb, line 15
def call
  matches = @matches
  upstr = upstream

  RubyDNS::run_server(:listen => @interfaces) do
    @logger.level = Logger::INFO
    
    matches.each do |(name, address)|
      match(/#{name}/, IN::A) do |transaction|
        transaction.respond!(address)
      end
    end
    
    otherwise do |transaction|
      transaction.passthrough!(upstr)
    end
  end
end
upstream() click to toggle source
# File lib/comuna/server.rb, line 34
def upstream
  RubyDNS::Resolver.new(@upstream_ifaces)
end