from pathlib import Path from datetime import datetime from zoneinfo import ZoneInfo from modules.config import load_mail_config from modules.domains import load_domains from modules.checker import get_cert_expiry_utc from modules.notifier import send_email # Пути к файлам BASE_DIR = Path(__file__).parent CONF_DIR = BASE_DIR / 'conf' MAIL_CONF = CONF_DIR / 'mail.conf' DOMAINS_FILE = CONF_DIR / 'domains.conf' # Настройки MOSCOW_TZ = ZoneInfo('Europe/Moscow') WARNING_DAYS = 10 def main(): # Загружаем настройки и список доменов mail_cfg = load_mail_config(MAIL_CONF) domains = load_domains(DOMAINS_FILE) now_moscow = datetime.now(MOSCOW_TZ) for host, port in domains: expiry_utc = get_cert_expiry_utc(host, port) expiry_local = expiry_utc.astimezone(MOSCOW_TZ) days_left = (expiry_local.date() - now_moscow.date()).days print(f"{host}:{port} — истекает {expiry_local:%Y-%m-%d %H:%M:%S %Z}, осталось {days_left} дн.") if days_left < WARNING_DAYS: subject = f"[WARNING] SSL {host} истекает через {days_left} дн." body = ( f"Домен: {host}\n" f"Порт: {port}\n" f"Истекает: {expiry_local:%Y-%m-%d %H:%M:%S %Z}\n" f"Осталось дней: {days_left}\n" ) send_email(mail_cfg, subject, body) if __name__ == '__main__': main()