#!/usr/bin/env ruby require 'rubydns' require 'psych' db_file = ARGV[0] port = ARGV[1] || 5300 db = if File.file? db_file $stderr.puts 'Found dns db' Psych.load_file(db_file) else $stderr.puts 'Found no dns db. Use default db.' { /www\.example\.org/ => '1.1.1.1' } end interfaces = [ [:udp, "127.0.0.1", port], [:tcp, "127.0.0.1", port] ] # Start the RubyDNS server RubyDNS::run_server(listen: interfaces) do db.each do |matcher, result| match(matcher, Resolv::DNS::Resource::IN::A) do |transaction| transaction.respond!(result) end end end