2025-05-05 00:57:40 +03:00

45 lines
1.5 KiB
Python

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()