From 493ed5182ba64c1ebe8e542ecab604bf8bd6dbda Mon Sep 17 00:00:00 2001 From: soh_cah_toa Date: Tue, 7 May 2013 21:56:11 -0400 Subject: [PATCH] Made BeEF::Extension::DNS::DNS into a singleton object. This ensures that all modules/extensions that add new RR's refer to a single server instance. --- extensions/dns/api.rb | 5 ++++- extensions/dns/dns.rb | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/extensions/dns/api.rb b/extensions/dns/api.rb index e6e79eee6..1161a7ae8 100644 --- a/extensions/dns/api.rb +++ b/extensions/dns/api.rb @@ -20,7 +20,10 @@ module API address = config.get('beef.extension.dns.address') port = config.get('beef.extension.dns.port') - Thread.new { BeEF::Extension::DNS::DNS.new(address, port) } + Thread.new do + dns = BeEF::Extension::DNS::DNS.instance + dns.run_server(address, port) + end print_info "DNS Server: #{address}:#{port}" end diff --git a/extensions/dns/dns.rb b/extensions/dns/dns.rb index 0b47c5f69..c13270b7d 100644 --- a/extensions/dns/dns.rb +++ b/extensions/dns/dns.rb @@ -9,19 +9,23 @@ module DNS class DNS + include Singleton + UPSTREAM = RubyDNS::Resolver.new([[:udp, '8.8.8.8', 53], [:tcp, '8.8.8.8', 53]]) - def initialize(address, port) - @address = address - @port = port + #def initialize(address, port) + #@address = address + #@port = port - EventMachine::next_tick { run_server } - end + #EventMachine::next_tick { run_server } + #end - def run_server - RubyDNS::run_server(:listen => [[:udp, @address, @port]]) do - otherwise do |transaction| - transaction.passthrough!(UPSTREAM) + def run_server(address, port) + EventMachine::next_tick do + RubyDNS::run_server(:listen => [[:udp, address, port]]) do + otherwise do |transaction| + transaction.passthrough!(UPSTREAM) + end end end end