mirror of
https://gitverse.ru/kpa39l/xmpp-server-prosody.git
synced 2026-09-29 09:45:02 +00:00
Initial commit: Hermes skill xmpp-server-prosody
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
# Silent LE-cert watchdog for manual dns-01 renewal (Prosody reading certs/<domain>.crt).
|
||||
# Cron contract (Hermes no_agent cron): empty stdout = SILENT (nothing delivered to the user);
|
||||
# non-empty stdout is delivered verbatim. So stay quiet until renewal is actually due.
|
||||
# Deployed copy (ICQ): /opt/hermes/.hermes/scripts/check_icq_cert.sh, cron job ca2a23a34905,
|
||||
# daily 0 10 * * *, deliver=telegram:<chat_id> (explicit target required from CLI sessions).
|
||||
# Usage: check_icq_cert.sh [CERT_PATH] (default /opt/icq/certs/nixg.ru.crt)
|
||||
# Override: THRESHOLD=30 check_icq_cert.sh (days before expiry to start shouting)
|
||||
CERT="${1:-/opt/icq/certs/nixg.ru.crt}"
|
||||
THRESHOLD="${THRESHOLD:-45}"
|
||||
|
||||
if [ ! -f "$CERT" ]; then
|
||||
echo "⚠️ ОТСУТСТВУЕТ сертификат $CERT — XMPP c2s/s2s скоро перестанет работать!"
|
||||
echo "Проверь бэкап и восстанови (см. backup.sh)."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
END=$(openssl x509 -enddate -noout -in "$CERT" | cut -d= -f2)
|
||||
END_EPOCH=$(date -d "$END" +%s)
|
||||
NOW_EPOCH=$(date +%s)
|
||||
DAYS=$(( (END_EPOCH - NOW_EPOCH) / 86400 ))
|
||||
|
||||
if [ "$DAYS" -gt "$THRESHOLD" ]; then
|
||||
exit 0 # тишина: до истечения больше порога, напоминание не нужно
|
||||
fi
|
||||
|
||||
# ---- Шумим: до истечения <= THRESHOLD дней ----
|
||||
echo "🔐 LE-сертификат истекает через ${DAYS} дн. (${END}). Нужно продлить вручную через dns-01:"
|
||||
echo ""
|
||||
echo "1. sudo certbot renew --manual-auth-hook /bin/true --manual-cleanup-hook /bin/true"
|
||||
echo " → он напечатает НОВЫЕ TXT-значения для _acme-challenge.nixg.ru и _acme-challenge.xmpp.nixg.ru"
|
||||
echo "2. Добавить эти TXT-записи в панели DNS (заменить старые)"
|
||||
echo "3. Подождать 1–2 мин, проверить: dig @1.1.1.1 _acme-challenge.nixg.ru TXT +short"
|
||||
echo "4. Повторить ту же команду certbot renew — сертификат продлится"
|
||||
echo "5. Скопировать свежий серт:"
|
||||
echo " sudo cp -L /etc/letsencrypt/live/nixg.ru/fullchain.pem /opt/icq/certs/nixg.ru.crt"
|
||||
echo " sudo cp -L /etc/letsencrypt/live/nixg.ru/privkey.pem /opt/icq/certs/nixg.ru.key"
|
||||
echo "6. Перезапустить Prosody: cd /opt/icq && docker compose restart prosody"
|
||||
echo "7. Проверить: openssl x509 -enddate -noout -in /opt/icq/certs/nixg.ru.crt"
|
||||
|
||||
# Домашняя проверка (офлайн): запусти с THRESHOLD=100 → должен зашуметь; обычный запуск → пустой вывод.
|
||||
Reference in New Issue
Block a user