Verified Commit 082b1531 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add logging to main app script

parent 848cb9b2
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
import logging
from pathlib import Path
from threading import Thread

@@ -10,7 +11,8 @@ from poolpay.vault.Vault import Vault
from poolpay.wire.Message import Message
from poolpay.wire.Server import Server

# Prepare basic resources
logging.info("Starting PoolPay")
logging.info("Creating Vault, Display and Director")
vault = Vault(paths.vault_file, paths.instance_dir)
display = PygameDisplay(Path("/dev/fb1"), width=480, height=320)
director = Director(play, display)
@@ -18,31 +20,43 @@ director = Director(play, display)

def launch_application(password: str) -> None:
    if director.started:
        # Application is already launched, don't launch it a second time
        logging.warning(
            "Application is already launched, don't launch it a second time"
        )
        return

    logging.info("Opening vault, creating CardReader")
    with vault.open(password), Pirc522CardReader() as card_reader:
        try:
            logging.info("Opening database")
            db.open(paths.db_file)
            logging.info("Starting database")
            director.start()
            logging.info("Registering card removal handler")
            card_reader.on_card_removed(lambda reader: director.card_removed())
            logging.info("Registering card placement handler and starting to wait")
            card_reader.on_card_placed(
                lambda reader: director.card_placed(reader.read_id())
            )
        finally:
            logging.info("Closing database")
            db.close()
            logging.info("Stopping server")
            server.stop()


# Now start the wire server (over which the admin will pass us the password)
logging.info("Creating wire.Server")
server = Server(paths.socket_path)


def on_message_received(message: Message) -> None:
    if message.get("action") == "unlock" and message.get("password"):
        logging.info(
            "Unlock message received via wire, starting thread to launch main application"
        )
        Thread(target=launch_application, args=(message["password"],)).start()


server.on_receive(on_message_received)
# Wait indefinitely
logging.info("Waiting for vault unlock password via wire server")
server.start()