Sha256: d03efdda178a8819cdb8fc7b072ece468601a9165025036bf6a895044e7c6538

Contents?: true

Size: 1008 Bytes

Versions: 1

Compression:

Stored size: 1008 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(/.*\.dev$/, :AAAA) do |match, transaction|
            logger.info "DNS match AAAA : #{transaction.inspect}"
            transaction.respond!("::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.2 lib/meltdown/dns_server.rb