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.
This commit is contained in:
soh_cah_toa
2013-05-07 21:56:11 -04:00
parent ceb55ef3df
commit 493ed5182b
2 changed files with 17 additions and 10 deletions

View File

@@ -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

View File

@@ -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