mirror of https://github.com/captn3m0/hackertray
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
import sqlite3
|
|
import shutil
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
import configparser
|
|
|
|
class Firefox:
|
|
HISTORY_TMP_LOCATION = '/tmp/hackertray.firefox'
|
|
HISTORY_FILE_NAME = '/places.sqlite'
|
|
|
|
@staticmethod
|
|
def default_firefox_profile_path():
|
|
profile_file_path = str(Path.home().joinpath(".mozilla/firefox/profiles.ini"))
|
|
profile_path = None
|
|
if (os.path.exists(profile_file_path)):
|
|
parser = configparser.ConfigParser()
|
|
parser.read(profile_file_path)
|
|
for section in parser.sections():
|
|
if parser.has_option(section,"Default") and parser[section]["Default"] == "1":
|
|
if parser.has_option(section,"IsRelative") and parser[section]["IsRelative"] == "1":
|
|
profile_path = str(Path.home().joinpath(".mozilla/firefox/").joinpath(parser[section]["Path"]))
|
|
else:
|
|
profile_path = parser[section]["Path"]
|
|
if profile_path and Path.is_dir(Path(profile_path)):
|
|
return profile_path
|
|
else:
|
|
raise RuntimeError("Couldn't find default Firefox profile")
|
|
|
|
@staticmethod
|
|
def search(urls, config_folder_path):
|
|
Firefox.setup(config_folder_path)
|
|
conn = sqlite3.connect(Firefox.HISTORY_TMP_LOCATION)
|
|
db = conn.cursor()
|
|
result = []
|
|
for url in urls:
|
|
db_result = db.execute('SELECT url from moz_places WHERE url=:url', {"url": url})
|
|
if(db.fetchone() == None):
|
|
result.append(False)
|
|
else:
|
|
result.append(True)
|
|
os.remove(Firefox.HISTORY_TMP_LOCATION)
|
|
return result
|
|
|
|
@staticmethod
|
|
def setup(config_folder_path):
|
|
file_name = os.path.abspath(config_folder_path + Firefox.HISTORY_FILE_NAME)
|
|
if not os.path.isfile(file_name):
|
|
print("ERROR: Could not find Firefox history file, using %s" % file_name)
|
|
sys.exit(1)
|
|
shutil.copyfile(file_name, Firefox.HISTORY_TMP_LOCATION)
|