38 lines
914 B
Python
38 lines
914 B
Python
import os.path
|
|
|
|
from pykeepass import PyKeePass, create_database, Group
|
|
|
|
|
|
class Passwords:
|
|
def __init__(self):
|
|
from app.config import get_settings
|
|
settings = get_settings()
|
|
|
|
with open(settings.kp.secret, "r") as fh:
|
|
secret = fh.read()
|
|
|
|
self._kp_org = self.__get_or_create_store(settings.kp.file, secret)
|
|
self._kp = self.__get_lock(settings.kp.file, secret)
|
|
|
|
@staticmethod
|
|
def __get_or_create_store(path, passwd) -> PyKeePass:
|
|
if os.path.exists(path):
|
|
return PyKeePass(
|
|
path,
|
|
password=passwd,
|
|
)
|
|
return create_database(path, passwd)
|
|
|
|
@staticmethod
|
|
def __get_lock(path, passwd) -> PyKeePass:
|
|
lock_path = path + ".lock"
|
|
import shutil
|
|
shutil.copyfile(path, lock_path)
|
|
return Passwords.__get_or_create_store(lock_path, passwd)
|
|
|
|
@property
|
|
def store(self):
|
|
return self._kp.root_group
|
|
|
|
def save(self, group: Group):
|
|
pass
|