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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user