""" Configuration file for the Keyword Spotting App. Contains authentication and app settings. """ import os from typing import Tuple, Optional class AppConfig: """Configuration class for the app.""" # Default authentication settings DEFAULT_USERNAME = "admin" DEFAULT_PASSWORD = "kws2024" # App settings DEFAULT_PORT = 7860 DEFAULT_HOST = "0.0.0.0" @staticmethod def get_auth_credentials() -> Optional[Tuple[str, str]]: """ Get authentication credentials from environment variables or defaults. Returns: Tuple of (username, password) or None to disable auth """ # Check environment variables first username = os.getenv("KWS_USERNAME") password = os.getenv("KWS_PASSWORD") # Check if authentication should be disabled if os.getenv("KWS_NO_AUTH", "").lower() in ["true", "1", "yes"]: return None # Use environment variables if available, otherwise use defaults if username and password: return (username, password) else: return (AppConfig.DEFAULT_USERNAME, AppConfig.DEFAULT_PASSWORD) @staticmethod def get_server_config() -> dict: """ Get server configuration. Returns: Dictionary with server configuration """ return { "server_name": os.getenv("KWS_HOST", AppConfig.DEFAULT_HOST), "server_port": int(os.getenv("KWS_PORT", AppConfig.DEFAULT_PORT)), "share": os.getenv("KWS_SHARE", "false").lower() in ["true", "1", "yes"], "debug": os.getenv("KWS_DEBUG", "false").lower() in ["true", "1", "yes"], } @staticmethod def print_config_info(): """Print configuration information.""" auth = AppConfig.get_auth_credentials() config = AppConfig.get_server_config() print("馃敡 Configuraci贸n de la aplicaci贸n:") print(f" Host: {config['server_name']}") print(f" Puerto: {config['server_port']}") print(f" Compartir p煤blicamente: {config['share']}") print(f" Modo debug: {config['debug']}") if auth: print(f"馃攼 Autenticaci贸n habilitada:") print(f" Usuario: {auth[0]}") print(f" Contrase帽a: {auth[1]}") else: print("馃敁 Autenticaci贸n deshabilitada") print("\n馃挕 Para cambiar la configuraci贸n, use variables de entorno:") print(" KWS_USERNAME=tu_usuario") print(" KWS_PASSWORD=tu_contrase帽a") print(" KWS_NO_AUTH=true (para deshabilitar autenticaci贸n)") print(" KWS_HOST=127.0.0.1 (para acceso local 煤nicamente)") print(" KWS_PORT=8080 (para cambiar puerto)") print(" KWS_SHARE=true (para crear enlace p煤blico)") print(" KWS_DEBUG=true (para modo debug)") # Quick access functions def get_auth() -> Optional[Tuple[str, str]]: """Quick function to get auth credentials.""" return AppConfig.get_auth_credentials() def get_server_config() -> dict: """Quick function to get server config.""" return AppConfig.get_server_config() def print_config() -> None: """Quick function to print config.""" AppConfig.print_config_info()