Verified Commit cdb5b382 authored by Jakob Moser's avatar Jakob Moser
Browse files

Implement sending password over wire

parent f9bc205d
Loading
Loading
Loading
Loading
+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})
+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: ")