You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-overlay/www-plugins/chrome-passman/files/configure.py

38 lines
1021 B

#!/usr/bin/python3
import plyvel
from sjcl import SJCL
import json
import sys
import base64
from os import path
data = json.load(sys.stdin)
if len(sys.argv) < 4:
sys.stderr.write("configure.py chrome-dir ext-id cryptpw")
sys.exit(1)
chrome_dir = sys.argv[1]
ext_id = sys.argv[2]
cryptpw = sys.argv[3]
settings = data['settings']
accounts = settings['accounts']
encrypted_accounts = SJCL().encrypt(bytes(json.dumps(accounts),encoding='utf-8'),cryptpw, count=1000, dkLen=32)
json_accounts = json.dumps(
{x:str(y,encoding='utf-8') if isinstance(y,bytes) else y for x,y in encrypted_accounts.items()})
settings['accounts'] = str(base64.b64encode(
bytes(json_accounts,encoding='utf-8')), encoding='utf-8')
data['settings'] = json.dumps(settings)
data['activeTab'] = '"search"'
db_path = path.join(chrome_dir,"Default/Local Extension Settings", ext_id)
db = plyvel.DB(db_path, create_if_missing=True)
for k,v in data.items():
db.put(bytes(k,encoding='utf-8'), bytes(v,encoding='utf-8'))
db.close()