From 1377a91ae2e66471698f5a83b3a43a5f5edc5d55 Mon Sep 17 00:00:00 2001 From: Florian Gilcher Date: Mon, 14 May 2012 21:04:15 +0200 Subject: [PATCH] Implement passthrough --- CHANGELOG.md | 4 ++++ lib/vagrant-dns/service.rb | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbc9920..5a6095c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# v0.2.4 + +* Enable passthrough in DNS service. Helpful if you insist to hook a standard tld like .io. + # v0.2.3 * Remove unneeded iteraton in installers/mac.rb. (thanks to JonathanTron for reporting) diff --git a/lib/vagrant-dns/service.rb b/lib/vagrant-dns/service.rb index 3552caf..6bcbb34 100644 --- a/lib/vagrant-dns/service.rb +++ b/lib/vagrant-dns/service.rb @@ -19,9 +19,22 @@ def stop! def run!(run_options) Daemons.run_proc("vagrant-dns", run_options) do + require 'resolv' require 'rubydns' + # come on, this is Ruby + # Ruby 1.9.3 does not implement :make_requester anymore + # Luckily :make_udp_requester is just the same + begin + Resolv::DNS.instance_method(:make_requester) + rescue NameError + Resolv::DNS.class_eval { + alias :make_requester :make_udp_requester + } + end + registry = YAML.load(File.read(config_file)) + std_resolver = Resolv::DNS.new RubyDNS::run_server(:listen => VagrantDNS::Config.listen) do registry.each do |pattern, ip| @@ -29,6 +42,13 @@ def run!(run_options) transaction.respond!(ip) end end + + otherwise do |transaction| + transaction.passthrough!(std_resolver) do |reply, reply_name| + puts reply + puts reply_name + end + end end end end