# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Mobius Forensic Toolkit
# Copyright (C) 2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019 Eduardo Aguiar
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
import pymobius
import pymobius.util
import pymobius.app.firefox

APP_ID = 'firefox'
APP_NAME = 'Firefox'

# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# @brief Retrieve Mozilla Firefox browser artifacts
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
def retrieve (os, item, model):

  # retrieve data from OS installed
  app_model = pymobius.app.firefox.model (item)

  # add profiles
  for profile in app_model.get_profiles ():
    p = pymobius.Data ()
    p.app = APP_ID
    p.app_name = APP_NAME
    p.name = profile.name
    p.path = profile.path
    p.username = profile.username
    
    model.profiles.append (p)

    # add URL history
    for entry in profile.get_history ():
      if not entry.url.startswith ('file:///'):
        h = pymobius.Data ()
        h.app = APP_ID
        h.app_name = APP_NAME
        h.url = entry.url
        h.timestamp = str (entry.timestamp)[:19]
        h.username = profile.username
        h.itemname = item.name
        h.profile_id = profile.name
        h.profile_path = profile.path

        h.metadata = []
        h.metadata.append (('Page Title', entry.title))
        h.metadata.append (('Typed', entry.typed))

        model.history.append (h)

    # add form history
    for entry in profile.get_form_history ():
      h = pymobius.Data ()
      h.app = APP_ID
      h.app_name = APP_NAME
      h.username = profile.username
      h.fieldname = entry.fieldname
      h.itemname = item.name
      h.value = entry.value
      h.profile_id = profile.name
      h.profile_path = profile.path

      h.metadata = []
      h.metadata.append (('First used date/time', str (entry.first_used_time)[:19]))
      h.metadata.append (('Last used date/time', str (entry.last_used_time)[:19]))

      model.form_history.append (h)
      
    # add known files to KFF list
    for f in profile.get_known_files ():
      pymobius.util.file_set_handled (item, f)
