import os from pathlib import Path from dotenv import load_dotenv BASE_DIR = Path(__file__).resolve().parent.parent load_dotenv(BASE_DIR / ".env") def _bool(name: str, default: bool = False) -> bool: v = os.getenv(name) if v is None: return default return v.lower() in ("1", "true", "yes", "on") class Config: SECRET_KEY = os.getenv("FLASK_SECRET_KEY", "dev-secret-change-me") SQLALCHEMY_DATABASE_URI = os.getenv( "DATABASE_URL", "postgresql+psycopg://mail:mail@localhost:5432/mail" ) SQLALCHEMY_TRACK_MODIFICATIONS = False REDIS_URL = os.getenv("REDIS_URL", "redis://localhost:6379/0") MEILI_URL = os.getenv("MEILI_URL", "http://localhost:7700") MEILI_KEY = os.getenv("MEILI_KEY", "masterKey") MAIL_SERVER_HOSTNAME = os.getenv("MAIL_SERVER_HOSTNAME", "mail.local") MAIL_SERVER_IP = os.getenv("MAIL_SERVER_IP", "127.0.0.1") IMAP_HOST = os.getenv("IMAP_HOST", "127.0.0.1") IMAP_PORT = int(os.getenv("IMAP_PORT", "143")) IMAP_PASSWORD = os.getenv("IMAP_PASSWORD", "") SMTP_HOST = os.getenv("SMTP_HOST", "127.0.0.1") SMTP_PORT = int(os.getenv("SMTP_PORT", "587")) SEND_DEFER_SECONDS = int(os.getenv("SEND_DEFER_SECONDS", "30")) DEFAULT_QUOTA_MB = int(os.getenv("DEFAULT_QUOTA_MB", "20480")) TRASH_RETENTION_DAYS = int(os.getenv("TRASH_RETENTION_DAYS", "30")) ELK_HOST = os.getenv("ELK_HOST", "") ELK_PORT = int(os.getenv("ELK_PORT", "5140")) ELK_PROTO = os.getenv("ELK_PROTO", "tcp") TZ = os.getenv("TZ", "Europe/Moscow") LOCALE = os.getenv("LOCALE", "ru_RU.UTF-8") USE_MOCK_MAIL = _bool("USE_MOCK_MAIL", True) # Comma-separated list of admin emails. Admins see /admin/* and the «Сервер» flyout. ADMINS = os.getenv( "ADMINS", "admin@mail.local,admin@tempmail.kimchitogo.rest", )