From acc6114541c60fe7300c93fdf94a370ee11ef27d Mon Sep 17 00:00:00 2001 From: soh_cah_toa Date: Thu, 24 Apr 2014 23:35:21 -0400 Subject: [PATCH] Re-implemented DELETE /rule/:id handler for new API. Removed old #format_response method since this is now handled by the Rule model. --- extensions/dns/rest/dns.rb | 85 ++------------------------------------ 1 file changed, 3 insertions(+), 82 deletions(-) diff --git a/extensions/dns/rest/dns.rb b/extensions/dns/rest/dns.rb index c92592e6e..dbadd1445 100644 --- a/extensions/dns/rest/dns.rb +++ b/extensions/dns/rest/dns.rb @@ -100,18 +100,16 @@ module BeEF end end -=begin # Removes a rule given its id delete '/rule/:id' do begin id = params[:id] - unless BeEF::Filters.alphanums_only?(id) - raise InvalidParamError, 'id' - end + removed = BeEF::Extension::Dns::Server.instance.remove_rule!(id) + raise InvalidParamError, 'id' if removed.nil? result = {} - result['success'] = BeEF::Extension::Dns::Server.instance.remove_rule(id) + result['success'] = removed result.to_json rescue InvalidParamError => e print_error e.message @@ -122,83 +120,6 @@ module BeEF end end - private - - # Generates a formatted string representation of the callback to invoke as a response. - # - # @param [String] type resource record type (e.g. A, CNAME, NS, etc.) - # @param [Array] rdata record data to include in response - # - # @return [String] string representation of response callback - def format_response(type, rdata) - src = 'proc { |t| t.respond!(%s) }' - - args = case type - when 'A' - data = {:address => rdata[0]} - sprintf "'%
s'", data - when 'AAAA' - data = {:address => rdata[0]} - sprintf "'%
s'", data - when 'CNAME' - data = {:cname => rdata[0]} - sprintf "Resolv::DNS::Name.create('%s')", data - when 'HINFO' - data = {:cpu => rdata[0], :os => rdata[1]} - sprintf "'%s', '%s'", data - when 'MINFO' - data = {:rmailbx => rdata[0], :emailbx => rdata[1]} - - sprintf "Resolv::DNS::Name.create('%s'), " + - "Resolv::DNS::Name.create('%s')", - data - when 'MX' - data = {:preference => rdata[0], :exchange => rdata[1]} - sprintf "%d, Resolv::DNS::Name.create('%s')", data - when 'NS' - data = {:nsdname => rdata[0]} - sprintf "Resolv::DNS::Name.create('%s')", data - when 'PTR' - data = {:ptrdname => rdata[0]} - sprintf "Resolv::DNS::Name.create('%s')", data - when 'SOA' - data = { - :mname => rdata[0], - :rname => rdata[1], - :serial => rdata[2], - :refresh => rdata[3], - :retry => rdata[4], - :expire => rdata[5], - :minimum => rdata[6] - } - - sprintf "Resolv::DNS::Name.create('%s'), " + - "Resolv::DNS::Name.create('%s'), " + - '%d, ' + - '%d, ' + - '%d, ' + - '%d, ' + - '%d', - data - when 'TXT' - data = {:txtdata => rdata[0]} - sprintf "'%s'", data - when 'WKS' - data = { - :address => rdata[0], - :protocol => rdata[1], - :bitmap => rdata[2] - } - - sprintf "'%
s', %d, %d", data - else - raise InvalidJsonError, 'Unknown "type" key passed to endpoint /api/dns/rule' - end - - sprintf(src, args) - end -=end - # Raised when invalid JSON input is passed to an /api/dns handler. class InvalidJsonError < StandardError