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