Loading poolpay/admin/__main__.py +33 −1 Original line number Diff line number Diff line import argparse from rich import print from poolpay import db, paths from poolpay.admin import app from poolpay.admin.get_password import get_password from poolpay.paths import socket_path from poolpay.vault.Vault import Vault from poolpay.wire.Client import Client password = "hunter2" # TODO Prompt for this instead of hardcoding it into the file def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( prog="poolpay.admin", description="Admin interface for PoolPay" ) parser.add_argument( "action", choices=["ui", "unlock"], help="the action to be done: show the admin ui (default), or unlock the PoolPay main app over wire", default="ui", nargs="?", ) return parser.parse_args() args = parse_args() vault = Vault(paths.vault_file, paths.instance_dir) if not vault.is_open: password = get_password() else: print("🔓 The PoolPay database is already [green]unlocked[/green].") match args.action: case "ui": with vault.open(password): try: db.open(paths.db_file) app.run() finally: db.close() case "unlock": with Client(socket_path) as c: c.send({"action": "unlock", "password": password}) poolpay/admin/get_password.py 0 → 100644 +9 −0 Original line number Diff line number Diff line from getpass import getpass from rich import print def get_password() -> str: print("🔒 The PoolPay database is currently [red]locked[/red].") return getpass("Password: ") Loading
poolpay/admin/__main__.py +33 −1 Original line number Diff line number Diff line import argparse from rich import print from poolpay import db, paths from poolpay.admin import app from poolpay.admin.get_password import get_password from poolpay.paths import socket_path from poolpay.vault.Vault import Vault from poolpay.wire.Client import Client password = "hunter2" # TODO Prompt for this instead of hardcoding it into the file def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( prog="poolpay.admin", description="Admin interface for PoolPay" ) parser.add_argument( "action", choices=["ui", "unlock"], help="the action to be done: show the admin ui (default), or unlock the PoolPay main app over wire", default="ui", nargs="?", ) return parser.parse_args() args = parse_args() vault = Vault(paths.vault_file, paths.instance_dir) if not vault.is_open: password = get_password() else: print("🔓 The PoolPay database is already [green]unlocked[/green].") match args.action: case "ui": with vault.open(password): try: db.open(paths.db_file) app.run() finally: db.close() case "unlock": with Client(socket_path) as c: c.send({"action": "unlock", "password": password})
poolpay/admin/get_password.py 0 → 100644 +9 −0 Original line number Diff line number Diff line from getpass import getpass from rich import print def get_password() -> str: print("🔒 The PoolPay database is currently [red]locked[/red].") return getpass("Password: ")