import os import re CLICKHOUSE_HOST = os.getenv("CLICKHOUSE_HOST", "localhost") CLICKHOUSE_PORT = int(os.getenv("CLICKHOUSE_PORT", "8123")) CLICKHOUSE_USER = os.getenv("CLICKHOUSE_USER", "default") CLICKHOUSE_PASSWORD = os.getenv("CLICKHOUSE_PASSWORD", "") DB_PROCESSING = os.getenv("CLICKHOUSE_DB_PROCESSING", os.getenv("CLICKHOUSE_DB", "ja4_processing")) DB_LOGS = os.getenv("CLICKHOUSE_DB_LOGS", "ja4_logs") API_HOST = os.getenv("API_HOST", "0.0.0.0") API_PORT = int(os.getenv("API_PORT", "8000")) _SAFE_IDENT = re.compile(r"^[a-zA-Z_][a-zA-Z0-9_]*$") def safe_identifier(name: str) -> str: """Validate that a string is a safe SQL identifier.""" if not _SAFE_IDENT.match(name): raise ValueError(f"Unsafe identifier: {name!r}") return name