#!/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')" if echo "${HOOKS}" | grep -qs "ALL" then HOOKS="$(cd /usr/share/dehydrated/hooks && find -maxdepth 1 -not -type d -printf '%P\n' | sort)" fi for HOOK in ${HOOKS} do if [ ! -e "/etc/dehydrated/hook.d/${HOOK}" ] && [ -e "/usr/share/dehydrated/hooks/${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