-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
61 lines (46 loc) · 1.91 KB
/
Copy pathconfig.py
File metadata and controls
61 lines (46 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os
from dotenv import load_dotenv
load_dotenv()
# Telegram
TELEGRAM_TOKEN = os.environ["TELEGRAM_TOKEN"]
TELEGRAM_CHANNEL_ID = os.environ["TELEGRAM_CHANNEL_ID"]
# Monitoring target
BASE_URL = os.getenv("BASE_URL", "https://example.com")
SITEMAP_URL = f"{BASE_URL}{os.getenv('SITEMAP_PATH', '/sitemap.xml')}"
# Monitoring thresholds
MIN_RESPONSE_SIZE = int(os.getenv("MIN_RESPONSE_SIZE", "1000"))
CONNECT_TIMEOUT = int(os.getenv("CONNECT_TIMEOUT", "20"))
READ_TIMEOUT = int(os.getenv("READ_TIMEOUT", "60"))
SLOW_RESPONSE_THRESHOLD = int(os.getenv("SLOW_RESPONSE_THRESHOLD", "10"))
MAX_WORKERS = int(os.getenv("MAX_WORKERS", "10"))
# Notification flags
NOTIFY_SUCCESS = os.getenv("NOTIFY_SUCCESS", "false").lower() == "true"
NOTIFY_WARNING = os.getenv("NOTIFY_WARNING", "false").lower() == "true"
NOTIFY_ERROR = os.getenv("NOTIFY_ERROR", "true").lower() == "true"
# Domain expiry warning
EXPIRY_WARNING_DAYS = int(os.getenv("EXPIRY_WARNING_DAYS", "90"))
# Log retention
LOG_RETENTION_DAYS = int(os.getenv("LOG_RETENTION_DAYS", "10"))
# Log file path
LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "logs")
os.makedirs(LOG_DIR, exist_ok=True)
LOG_FILE = os.path.join(LOG_DIR, "website_monitor.log")
def parse_domains(raw: str) -> dict:
"""Parse DOMAINS_TO_CHECK env var.
Format: domain1,domain2:expiry=2025-02-11,domain3
"""
domains = {}
for entry in raw.split(","):
entry = entry.strip()
if not entry:
continue
if ":expiry=" in entry:
domain, expiry = entry.split(":expiry=", 1)
domains[domain.strip()] = {"expiry": expiry.strip()}
else:
domains[entry] = {}
return domains
def parse_nameservers(raw: str) -> list:
return [ns.strip() for ns in raw.split(",") if ns.strip()]
DOMAINS_TO_CHECK = parse_domains(os.getenv("DOMAINS_TO_CHECK", ""))
OUR_NAMESERVERS = parse_nameservers(os.getenv("OUR_NAMESERVERS", ""))