Add functionality to update existing BrowserDetails keys

This commit is contained in:
Brendan Coles
2017-04-23 06:00:57 +00:00
parent c3069601e8
commit 21238254a3

View File

@@ -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}"