From 21238254a36b4197e60bf1904d8743824b186b62 Mon Sep 17 00:00:00 2001 From: Brendan Coles Date: Sun, 23 Apr 2017 06:00:57 +0000 Subject: [PATCH] Add functionality to update existing BrowserDetails keys --- core/main/models/browserdetails.rb | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/core/main/models/browserdetails.rb b/core/main/models/browserdetails.rb index e85eac482..5f290862e 100644 --- a/core/main/models/browserdetails.rb +++ b/core/main/models/browserdetails.rb @@ -32,19 +32,24 @@ module Models end # - # Stores a key->value pair into the data store + # Stores or updates an existing key->value pair in the data store # def self.set(session_id, detail_key, detail_value) - # if the details already exist don't re-add them - return nil if not get(session_id, detail_key).nil? - - # store the returned browser details - browserdetails = BeEF::Core::Models::BrowserDetails.new( - :session_id => session_id, - :detail_key => detail_key, + browserdetails = BeEF::Core::Models::BrowserDetails.all( + :session_id => session_id, + :detail_key => detail_key ) + if browserdetails.nil? || browserdetails.empty? + # store the new browser details key/value + browserdetails = BeEF::Core::Models::BrowserDetails.new( + :session_id => session_id, + :detail_key => detail_key, :detail_value => detail_value || '') + result = browserdetails.save + else + # update the browser details key/value + result = browserdetails.update(:detail_value => detail_value || '') + end - result = browserdetails.save # if the attempt to save the browser details fails return a bad request if result.nil? print_error "Failed to save browser details: #{detail_key}=#{detail_value}"