import logging import os from functools import lru_cache logger = logging.getLogger(__name__) @lru_cache(1) def disable_cards_check(): if os.environ.get("DISABLE_CARDS", "").lower() in ("1", "true"): return True for env in ( "MIFARE_APP_MASTER_KEY", "MIFARE_ACL_READ_BASE_KEY", "MIFARE_ACL_WRITE_BASE_KEY", ): if not os.getenv(env): logger.critical( f"Missing environment variable for scanner start: {env} \n Card scanner and related funcionality is disabled!" # noqa: E501 ) return True return False disable_cards = disable_cards_check() if not disable_cards: mifare_app_master_key = os.getenv("MIFARE_APP_MASTER_KEY") mifare_acl_read_base_key = os.getenv("MIFARE_ACL_READ_BASE_KEY") mifare_acl_write_base_key = os.getenv("MIFARE_ACL_WRITE_BASE_KEY") def verify_settings(): important_envs = ["SECRET_KEY"] other_envs = ["SQLALCHEMY_DATABASE_PATH", "LOCK_PIN", "UNLOCK_PIN", "MOCK_GPIO"] for setting in important_envs: if not os.getenv(setting): raise ValueError( f"Missing critical environment variable {setting}. Stopping..." ) for setting in other_envs: if setting not in os.environ: logger.warning(f"Env var {setting} not set. Continuing with defaults.") verify_settings() secret_key = os.getenv("SECRET_KEY") sqlalchemy_database_path = os.getenv("SQLALCHEMY_DATABASE_PATH") lock_pin = os.getenv("LOCK_PIN") unlock_pin = os.getenv("UNLOCK_PIN") mock_gpio = os.getenv("MOCK_GPIO")