summaryrefslogtreecommitdiff
path: root/dehydrated/hook.sh
blob: 71644ec0cb068bbddc07091e982f660c9277bb1b (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. MUMBLEHOSTS=$(servicehosts mumble murmurd) || true
  19. cert_fix() {
  20. DOMAIN="$1"; KEYFILE="$2"; CERTFILE="$3"; FULLCHAINFILE="$4"
  21. case "$DOMAIN" in
  22. "$MAILHOSTS")
  23. set -x
  24. cat "$FULLCHAINFILE" > "/etc/dovecot/$DOMAIN.pem"
  25. sg dovecot -c "umask 027; cat '$KEYFILE' > '/etc/dovecot/private/$DOMAIN.pem'"
  26. service dovecot force-reload
  27. ;;
  28. "$CHATHOSTS")
  29. set -x
  30. sg ejabberd -c "umask 027; cat '$KEYFILE' '$FULLCHAINFILE' > '/etc/ejabberd/$DOMAIN.pem'"
  31. service ejabberd force-reload
  32. ;;
  33. "$MUMBLEHOSTS")
  34. set -x
  35. sg mumble-server -c "umask 027; cat '$KEYFILE' > '/etc/mumble-server-$DOMAIN.key'"
  36. sg mumble-server -c "umask 027; cat '$CERTFILE' > '/etc/mumble-server-$DOMAIN.pem'"
  37. service mumble-server force-reload
  38. ;;
  39. esac
  40. }
  41. # TODO: Set file changedate to OCSP expiry expiry, and skip if 48h+ away
  42. cert_staple() {
  43. CERTFILE="$3"; CHAINFILE="$5"
  44. > /dev/null which -- ocsptool || return
  45. CERTDIR=$(dirname "$CERTFILE")
  46. set -x
  47. ocsptool --ask --load-issuer "$CHAINFILE" --load-cert "$CERTFILE" --outfile "$CERTDIR"/ocsp.der
  48. }
  49. case "$ACTION" in
  50. deploy_challenge) ;;
  51. clean_challenge) ;;
  52. deploy_cert)
  53. cert_fix "$@"
  54. #cert_staple "$@"
  55. ;;
  56. unchanged_cert)
  57. #cert_fix "$@"
  58. #cert_staple "$@"
  59. ;;
  60. esac