Sha256: 78dedd622ca5438f3dca0113c6910cabca7dc89d8ae8b1d08f903c62344f7980

Contents?: true

Size: 828 Bytes

Versions: 1

Compression:

Stored size: 828 Bytes

Contents

require 'rexec'
require 'rexec/daemon'
require 'rubydns'

module Meltdown
  class DnsServer < RExec::Daemon::Base
    class << self
      def run
        # don't buffer output (for realtime debugging)
        $stdout.sync = true
        $stderr.sync = true

        # listen on same port as Pow, registered in /etc/resolver/dev
        RubyDNS::run_server(:listen => [[:udp, "0.0.0.0", 20560]]) do
          match(/.*\.dev$/, :A) do |match, transaction|
            logger.info "DNS match A    : #{transaction.inspect}"
            transaction.respond!("127.0.0.1")
          end

          match("1.0.0.127.in-addr.arpa", :PTR) do |transaction|
            logger.info "DNS match PTR  : #{transaction.inspect}"
            transaction.respond!(Name.create("default.dev."))
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
meltdown-0.0.1 lib/meltdown/dns_server.rb