summaryrefslogtreecommitdiff
path: root/dehydrated/hook.sh
blob: 9e0a009142867bbbae4e94b7daaa36366ad39516 (plain)
  1. #!/bin/sh
  2. set -e
  3. ACTION=$1; shift
  4. REALM=$(cat /etc/local-ORG/realm) || true
  5. # resolve hostnames of service installed and registered with Redpill
  6. servicehosts() {
  7. SERVICE=$1; shift
  8. for binary in "$@"; do
  9. > /dev/null which -- "$binary" || exit
  10. done
  11. cat "/etc/local-REDPILL/$REALM/${SERVICE}host" \
  12. "/etc/local-REDPILL/$REALM/${SERVICE}althosts" \
  13. 2> /dev/null \
  14. | perl -0777 -pe 's/\s*\#.*//gm;s/^\s+//;s/\s+$//;s/\s+/|/g'
  15. }
  16. MAILHOSTS=$(servicehosts mail postconf) || true
  17. CHATHOSTS=$(servicehosts chat ejabberdctl) || true
  18. cert_fix() {
  19. DOMAIN="$1"; KEYFILE="$2"; FULLCHAINFILE="$4"
  20. case "$DOMAIN" in
  21. "$MAILHOSTS")
  22. set -x
  23. cat "$FULLCHAINFILE" > "/etc/dovecot/$DOMAIN.pem"
  24. sg dovecot -c "umask 027; cat '$KEYFILE' > '/etc/dovecot/private/$DOMAIN.pem'"
  25. service dovecot force-reload
  26. ;;
  27. "$CHATHOSTS")
  28. set -x
  29. sg ejabberd -c "umask 027; cat '$KEYFILE' '$FULLCHAINFILE' > '/etc/ejabberd/$DOMAIN.pem'"
  30. #service ejabberd force-reload
  31. ;;
  32. esac
  33. }
  34. # TODO: Set file changedate to OCSP expiry expiry, and skip if 48h+ away
  35. cert_staple() {
  36. CERTFILE="$3"; CHAINFILE="$5"
  37. > /dev/null which -- ocsptool || return
  38. CERTDIR=$(dirname "$CERTFILE")
  39. set -x
  40. ocsptool --ask --load-issuer "$CHAINFILE" --load-cert "$CERTFILE" --outfile "$CERTDIR"/ocsp.der
  41. }
  42. case "$ACTION" in
  43. deploy_challenge) ;;
  44. clean_challenge) ;;
  45. deploy_cert)
  46. cert_fix "$@"
  47. #cert_staple "$@"
  48. ;;
  49. unchanged_cert)
  50. #cert_fix "$@"
  51. #cert_staple "$@"
  52. ;;
  53. esac