43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
config.py -- loads all configuration from .env file.
|
|
Never import secrets directly in other modules -- always import from here.
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from datetime import timezone, timedelta
|
|
|
|
# Load .env manually (no external deps needed).
|
|
# Reads KEY=VALUE lines, ignores comments and blank lines.
|
|
def _load_env(path="/opt/umami/notifier/.env"):
|
|
env_path = Path(path)
|
|
if not env_path.exists():
|
|
raise FileNotFoundError(f".env not found at {path}. Copy .env.example and fill in values.")
|
|
for line in env_path.read_text().splitlines():
|
|
line = line.strip()
|
|
if not line or line.startswith("#") or "=" not in line:
|
|
continue
|
|
key, _, value = line.partition("=")
|
|
os.environ.setdefault(key.strip(), value.strip())
|
|
|
|
_load_env()
|
|
|
|
# Umami
|
|
UMAMI_URL = os.environ["UMAMI_URL"]
|
|
UMAMI_USER = os.environ["UMAMI_USER"]
|
|
UMAMI_PASS = os.environ["UMAMI_PASS"]
|
|
UMAMI_SITE_ID = os.environ["UMAMI_SITE_ID"]
|
|
|
|
# Telegram -- only needed for receiving /commands via getUpdates.
|
|
# Sending goes through Apprise, not directly to Telegram API.
|
|
TELEGRAM_TOKEN = os.environ["TELEGRAM_TOKEN"]
|
|
TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"]
|
|
|
|
# Apprise -- all outbound notifications go here.
|
|
# Format: https://user:pass@notify.manohargupta.com/notify/apprise
|
|
APPRISE_URL = os.environ["APPRISE_URL"]
|
|
|
|
# General
|
|
POLL_INTERVAL = int(os.environ.get("POLL_INTERVAL", "30")) # seconds
|
|
IST = timezone(timedelta(hours=5, minutes=30))
|