#!/bin/bash
# dehydrated-Hook für DNS-01-Zertifikate (h42 cert add --challenge dns), eingetragen als HOOK in <certs>/<fqdn>/config.
#   deploy_challenge  TXT _acme-challenge.<domain> auf ns1 anlegen, warten bis alle Nameserver ihn ausliefern
#   clean_challenge   TXT wieder löschen
#   deploy_cert       nginx neu laden
# Alle anderen Ereignisse (und deploy_cert) gehen zusätzlich an DEHYDRATED_HOOK aus h42.conf, falls gesetzt –
# für einen global konfigurierten Hook, den die Zertifikats-Config sonst überdeckt.
set -euo pipefail
. "${H42_LIB:-/usr/lib/h42}/common.sh"

event=${1:-}
case $event in
  deploy_challenge|clean_challenge)
    set -- "${@:2}"
    while [ $# -ge 3 ]; do   # je Domain: <domain> <token-datei> <token-wert> (bei HOOK_CHAIN=yes mehrere)
      name=_acme-challenge.$1 value=$3
      shift 3
      if [ "$event" = deploy_challenge ]; then h42 dns txt-add "$name" "$value"; h42 dns wait "$name" "$value"
      else h42 dns txt-del "$name" "$value"; fi
    done
    exit 0
    ;;
  deploy_cert)
    if systemctl is-active -q nginx; then nginx -t -q && systemctl reload nginx; fi
    ;;
esac
if [ -n "${DEHYDRATED_HOOK:-}" ]; then exec "$DEHYDRATED_HOOK" "$@"; fi
