From c6f38324d1143f6985618c9b557ced61b10b434a Mon Sep 17 00:00:00 2001 From: soh_cah_toa Date: Sat, 18 May 2013 21:00:22 -0400 Subject: [PATCH] Refactored #get_ruleset to be part of RubyDNS. All database logic should be inside RubyDNS since BeEF's DNS class is mostly just a wrapper around it. --- extensions/dns/dns.rb | 15 +-------------- extensions/dns/rest/dns.rb | 1 + extensions/dns/ruby/rubydns.rb | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/extensions/dns/dns.rb b/extensions/dns/dns.rb index 8580fa02b..0896846b5 100644 --- a/extensions/dns/dns.rb +++ b/extensions/dns/dns.rb @@ -102,20 +102,7 @@ module DNS # @return [Array] DNS ruleset (empty if no rules are currently loaded) def get_ruleset @lock.synchronize do - result = [] - - BeEF::Core::Models::DNS::Rule.each do |rule| - element = {} - - element[:id] = rule.id - element[:pattern] = rule.pattern - element[:type] = rule.type - element[:block] = rule.block - - result << element - end - - result + @server.get_ruleset end end diff --git a/extensions/dns/rest/dns.rb b/extensions/dns/rest/dns.rb index dcf7e0849..a329f466b 100644 --- a/extensions/dns/rest/dns.rb +++ b/extensions/dns/rest/dns.rb @@ -26,6 +26,7 @@ module DNS # Returns the entire current DNS ruleset get '/rules' do + result = {} result[:rules] = BeEF::Extension::DNS::DNS.instance.get_ruleset result.to_json end diff --git a/extensions/dns/ruby/rubydns.rb b/extensions/dns/ruby/rubydns.rb index 0af5744c0..3d8de48b1 100644 --- a/extensions/dns/ruby/rubydns.rb +++ b/extensions/dns/ruby/rubydns.rb @@ -84,6 +84,24 @@ module RubyDNS end end + # New method that returns the entire DNS ruleset as an AoH + def get_ruleset + result = [] + + BeEF::Core::Models::DNS::Rule.each do |rule| + element = {} + + element[:id] = rule.id + element[:pattern] = rule.pattern + element[:type] = rule.type + element[:block] = rule.block + + result << element + end + + result + end + # New method that returns a hash representing the given rule def get_rule(id) result = {}