config.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from __future__ import annotations
  2. import os
  3. from typing import Optional
  4. from dotenv import load_dotenv
  5. load_dotenv()
  6. class Settings:
  7. db_host: str
  8. db_port: int
  9. db_user: str
  10. db_password: str
  11. db_name: str
  12. allowed_origins: list[str]
  13. geoip_db_path: str
  14. playwright_executable: Optional[str]
  15. host: str
  16. port: int
  17. def __init__(self) -> None:
  18. self.db_host = os.getenv("DB_HOST", "localhost")
  19. self.db_port = int(os.getenv("DB_PORT", "5432"))
  20. self.db_user = os.getenv("DB_USER", "user")
  21. self.db_password = os.getenv("DB_PASSWORD", "password")
  22. self.db_name = os.getenv("DB_NAME", "sentinel_lens")
  23. origins_raw = os.getenv("ALLOWED_ORIGINS", "http://localhost:5173")
  24. self.allowed_origins = [o.strip() for o in origins_raw.split(",") if o.strip()]
  25. self.geoip_db_path = os.getenv("GEOIP_DB_PATH", "./GeoLite2-City.mmdb")
  26. self.geoip_asn_db_path = os.getenv("GEOIP_ASN_DB_PATH", "./GeoLite2-ASN.mmdb")
  27. self.playwright_executable = os.getenv("PLAYWRIGHT_EXECUTABLE") or None
  28. self.host = os.getenv("HOST", "0.0.0.0")
  29. self.port = int(os.getenv("PORT", "8000"))
  30. settings = Settings()