summaryrefslogtreecommitdiffstats
path: root/debian/open-infrastructure-dehydrated-tools.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/open-infrastructure-dehydrated-tools.postinst')
-rwxr-xr-xdebian/open-infrastructure-dehydrated-tools.postinst160
1 files changed, 160 insertions, 0 deletions
diff --git a/debian/open-infrastructure-dehydrated-tools.postinst b/debian/open-infrastructure-dehydrated-tools.postinst
new file mode 100755
index 0000000..116223f
--- /dev/null
+++ b/debian/open-infrastructure-dehydrated-tools.postinst
@@ -0,0 +1,160 @@
+#!/bin/sh
+
+set -e
+
+Config ()
+{
+ FILE="${1}"
+ KEY="${2}"
+ VALUE="${3}"
+
+ TMPFILE="$(mktemp --dry-run ${FILE}.XXXX)"
+
+ if [ ! -e "${FILE}" ]
+ then
+
+cat > "${FILE}" << EOF
+# ${FILE}
+
+${KEY}="${VALUE}"
+EOF
+
+ fi
+
+ cp -a -f "${FILE}" "${TMPFILE}"
+
+ test -z "${VALUE}" || \
+ grep -Eq "^ *$(echo ${KEY})=" "${FILE}" || \
+ echo "${KEY}=" >> "$FILE}"
+
+ sed -e "s|^ *\($(echo ${KEY})\)=.*|\1=\"${VALUE}\"|" \
+ < "${FILE}" > "${TMPFILE}"
+
+ mv -f "${TMPFILE}" "${FILE}"
+}
+
+Install ()
+{
+ DEFAULT="${1}"
+ TARGET="${2}"
+
+ mkdir -p "${DEFAULT}"
+ mkdir -p "${TARGET}"
+
+ if [ "${TARGET}" != "${DEFAULT}" ]
+ then
+ if [ -h "${DEFAULT}" ]
+ then
+ rm -f "${DEFAULT}"
+ ln -s "${TARGET}" "${DEFAULT}"
+ else
+ if [ -e "${DEFAULT}" ] && [ -z "$(ls -A ${DEFAULT})" ]
+ then
+ rmdir "${DEFAULT}"
+ ln -s "${TARGET}" "${DEFAULT}"
+ fi
+ fi
+ fi
+
+ if ! dpkg-statoverride --list "${DEFAULT}" > /dev/null 2>&1 &&
+ ! dpkg-statoverride --list "${TARGET}" > /dev/null 2>&1
+ then
+ if getent group ssl-cert > /dev/null 2>&1
+ then
+ GROUP="ssl-cert"
+ else
+ GROUP="root"
+ fi
+
+ chmod 0770 "${TARGET}"
+ chown root:"${GROUP}" "${TARGET}"
+
+ chmod 0770 "${DEFAULT}"
+ chown root:"${GROUP}" "${DEFAULT}"
+ fi
+}
+
+case "${1}" in
+ configure)
+ . /usr/share/debconf/confmodule
+
+ db_get open-infrastructure-dehydrated-tools/ca
+ CA="${RET}" # select
+
+ db_get open-infrastructure-dehydrated-tools/challengetype
+ CHALLENGETYPE="${RET}" # select
+
+ db_get open-infrastructure-dehydrated-tools/contact-email
+ CONTACT_EMAIL="${RET}" # string (w/ empty)
+
+ db_get open-infrastructure-dehydrated-tools/hooks
+ HOOKS="${RET}" # multi-select (w/ empty)
+
+ db_get open-infrastructure-dehydrated-tools/basedir
+ NEW_BASEDIR="${RET}" # string (w/o empty)
+
+ db_get open-infrastructure-dehydrated-tools/register
+ REGISTER="${RET}" # boolean
+
+ db_stop
+
+ Config /etc/dehydrated/conf.d/ca.sh CA ${CA}
+ Config /etc/dehydrated/conf.d/challenge.sh CHALLENGETYPE ${CHALLENGETYPE}
+ Config /etc/dehydrated/conf.d/contact.sh CONTACT_EMAIL ${CONTACT_EMAIL}
+
+ for HOOK in $(cd /usr/share/dehydrated/hooks && find -maxdepth 1 -not -type d -printf '%P\n' | sort)
+ do
+ if [ -L "/etc/dehydrated/hook.d/${HOOK}" ]
+ then
+ rm -f "/etc/dehydrated/hook.d/${HOOK}"
+ fi
+ done
+
+ if [ -n "${HOOKS}" ]
+ then
+ Config /etc/dehydrated/conf.d/hook.sh HOOK /usr/bin/dehydrated-hook.d
+
+ HOOKS="$(echo ${HOOKS} | sed -e 's|,| |g')"
+
+ for HOOK in ${HOOKS}
+ do
+ if [ ! -e "/etc/dehydrated/hook.d/${HOOK}" ]
+ then
+ ln -sf "/usr/share/dehydrated/hooks/${HOOK}" "/etc/dehydrated/hook.d/${HOOK}"
+ fi
+ done
+ fi
+
+ for FILE in /etc/dehydrated/config /etc/dehydrated/conf.d/*.sh
+ do
+ if [ -e "${FILE}" ]
+ then
+ . ${FILE} || true
+ fi
+ done
+
+ if [ -n "${NEW_BASEDIR}" ] && [ "${BASEDIR}" != "${NEW_BASEDIR}" ]
+ then
+ Install "${BASEDIR}" "${NEW_BASEDIR}"
+ fi
+
+ case "${REGISTER}" in
+ true)
+ dehydrated --register --accept-terms
+ ;;
+ esac
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0