aboutsummaryrefslogtreecommitdiffstats
path: root/http.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'http.sh.in')
-rw-r--r--http.sh.in51
1 files changed, 51 insertions, 0 deletions
diff --git a/http.sh.in b/http.sh.in
new file mode 100644
index 0000000..048870e
--- /dev/null
+++ b/http.sh.in
@@ -0,0 +1,51 @@
+#! /bin/sh
+# This source code is released into the public domain.
+
+. __LIBDIR__/init.sh
+
+# begin, done or failed
+ACTION=$1
+# ACME method, must be http-01.
+METHOD=$2
+# The full domain name we're authorising.
+DOMAIN=$3
+# Token name.
+TOKEN=$4
+# The token value we need to create.
+AUTH=$5
+
+if [ "$#" -ne 5 ]; then
+ _fatal "missing arguments"
+fi
+
+if [ "$METHOD" != "http-01" ]; then
+ exit 1
+fi
+
+if [ -z "$ACME_HTTP_CHALLENGE_DIR" ]; then
+ _fatal "must set ACME_HTTP_CHALLENGE_DIR"
+fi
+
+if ! [ -d "$ACME_HTTP_CHALLENGE_DIR" ]; then
+ _fatal "missing $ACME_HTTP_CHALLENGE_DIR"
+fi
+
+_file="${ACME_HTTP_CHALLENGE_DIR}/${TOKEN}"
+
+case "$ACTION" in
+ begin)
+ _verbose "creating validation token %s" "$_file"
+ echo "$AUTH" >"$_file"
+ exit $?
+ ;;
+
+ done|failed)
+ _verbose "deleting validation token %s" "$_file"
+ rm -f "$_file"
+ exit $?
+ ;;
+
+ *)
+ _fatal "unknown action: %s" "$ACTION"
+ ;;
+esac