diff --git a/extensions/dns/dns.rb b/extensions/dns/dns.rb index b64b86190..7304d8621 100644 --- a/extensions/dns/dns.rb +++ b/extensions/dns/dns.rb @@ -79,6 +79,9 @@ module Dns # Removes the given DNS rule. Any future queries for it will be passed through. # # @param id [Integer] id returned from {#add_rule} + # + # @return [Boolean] true on success, false on failure + # # @see #add_rule def remove_rule(id) @lock.synchronize do diff --git a/extensions/dns/ruby/rubydns.rb b/extensions/dns/ruby/rubydns.rb index 5c98dc785..924bbd0ae 100644 --- a/extensions/dns/ruby/rubydns.rb +++ b/extensions/dns/ruby/rubydns.rb @@ -44,7 +44,6 @@ module RubyDNS class Rule - # XXX Can this be removed? attr_accessor :id # Now uses an 'id' parameter to uniquely identify rules @@ -109,15 +108,13 @@ module RubyDNS id end - # New method that removes a rule given its id + # New method that removes a rule given its id and returns boolean result def remove_rule(id) @rules.delete_if { |rule| rule.id == id } - begin - BeEF::Core::Models::Dns::Rule.get!(id).destroy - rescue DataMapper::ObjectNotFoundError => e - @logger.error(e.message) - end + rule = BeEF::Core::Models::Dns::Rule.get(id) + + rule != nil ? rule.destroy : false end # New method that loads all rules from the database at server startup