summaryrefslogtreecommitdiffstats
path: root/debian/progress-linux.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/progress-linux.postinst')
-rwxr-xr-xdebian/progress-linux.postinst267
1 files changed, 267 insertions, 0 deletions
diff --git a/debian/progress-linux.postinst b/debian/progress-linux.postinst
new file mode 100755
index 0000000..180770e
--- /dev/null
+++ b/debian/progress-linux.postinst
@@ -0,0 +1,267 @@
+#!/bin/sh
+
+set -e
+
+PROJECT="progress-linux"
+DOMAIN="progress-linux.org"
+PACKAGES="https://deb.progress-linux.org/packages"
+KEY="/usr/share/progress-linux/pgp-keys/deb.progress-linux.org.gpg"
+
+Install_apt_sources ()
+{
+cat > "/etc/apt/sources.list.d/${PROJECT}.sources" << EOF
+# /etc/apt/sources.list.d/${PROJECT}.sources
+EOF
+}
+
+Remove_apt_sources ()
+{
+ rm -f "/etc/apt/sources.list.d/${PROJECT}.sources"
+}
+
+Install_apt_preferences ()
+{
+cat > "/etc/apt/preferences.d/${PROJECT}.pref" << EOF
+# /etc/apt/preferences.d/${PROJECT}.pref
+EOF
+}
+
+Remove_apt_preferences ()
+{
+ rm -f "/etc/apt/preferences.d/${PROJECT}.pref"
+}
+
+Configure_apt_sources ()
+{
+ # Configure repositories: ${release}, ${release}-security, ${release}-updates, ${release}-backports
+ SUITES=""
+
+ for ARCHIVE in ${ARCHIVES}
+ do
+ case "${ARCHIVE}" in
+ *-extras)
+ ;;
+
+ *)
+ SUITES="${SUITES} ${ARCHIVE}"
+
+ Configure_apt_preferences ${ARCHIVE}
+ ;;
+ esac
+ done
+
+ COMPONENTS="$(echo ${ARCHIVE_AREAS} | sed -e 's| restricted||')"
+ SUITES="$(echo ${SUITES} | sed -e 's|^ *||')"
+
+ if [ -n "${SUITES}" ]
+ then
+ Configure_apt_sources_stanza "${SUITES}" "${COMPONENTS}"
+ fi
+
+ # Configure repositories: ${release}-extras, ${release}-backports-extras
+ SUITES=""
+
+ for ARCHIVE in ${ARCHIVES}
+ do
+ case "${ARCHIVE}" in
+ *-extras)
+ SUITES="${SUITES} ${ARCHIVE}"
+
+ Configure_apt_preferences ${ARCHIVE}
+ ;;
+
+ *)
+ ;;
+ esac
+ done
+
+ COMPONENTS="${ARCHIVE_AREAS}"
+ SUITES="$(echo ${SUITES} | sed -e 's|^ *||')"
+
+ if [ -n "${SUITES}" ]
+ then
+ Configure_apt_sources_stanza "${SUITES}" "${COMPONENTS}"
+ fi
+}
+
+Configure_apt_sources_stanza ()
+{
+ SUITES="${1}"
+ COMPONENTS="${2}"
+
+cat >> "/etc/apt/sources.list.d/${PROJECT}.sources" << EOF
+
+Types: deb
+URIs: ${MIRROR}
+Suites: ${SUITES}
+Components: ${COMPONENTS}
+PDiffs: no
+Signed-By: ${KEY}
+EOF
+}
+
+Configure_apt_preferences ()
+{
+ ARCHIVE="${1}"
+
+ case "${ARCHIVE}" in
+ *-backports*)
+ PIN_PRIORITY="${BACKPORTS_PRIORITY}"
+ ;;
+
+ *)
+ PIN_PRIORITY="999"
+ ;;
+ esac
+
+cat >> "/etc/apt/preferences.d/${PROJECT}.pref" << EOF
+
+Package: *
+Pin: release o=${PROJECT}, n=${ARCHIVE}
+Pin-Priority: ${PIN_PRIORITY}
+EOF
+}
+
+Configure_ssh_known_hosts ()
+{
+ KEY="$(cat /usr/share/${PROJECT}/ssh-keys/ssh.${DOMAIN}.pub)"
+
+ if [ ! -e "/etc/ssh/ssh_known_hosts" ]
+ then
+ mkdir -p /etc/ssh
+
+cat > "/etc/ssh/ssh_known_hosts" << EOF
+# /etc/ssh/ssh_known_hosts
+
+@cert-authority *.${DOMAIN} ${KEY}
+EOF
+
+ else
+ grep -v "^@cert-authority \*.${DOMAIN}" /etc/ssh/ssh_known_hosts > /etc/ssh/ssh_known_hosts.tmp
+
+cat >> "/etc/ssh/ssh_known_hosts.tmp" << EOF
+@cert-authority *.${DOMAIN} ${KEY}
+EOF
+
+ mv -f /etc/ssh/ssh_known_hosts.tmp /etc/ssh/ssh_known_hosts
+ fi
+}
+
+Remove_ssh_known_hosts ()
+{
+ if [ ! -e /etc/ssh/ssh_known_hosts ]
+ then
+ return
+ fi
+
+ # ssh cert-authority
+ grep -v "^@cert-authority \*.${DOMAIN}" /etc/ssh/ssh_known_hosts > /etc/ssh/ssh_known_hosts.tmp
+
+ if [ "$(md5sum /etc/ssh/ssh_known_hosts.tmp | cut -d' ' -f1)" = "2a2b4fdd70705b2029b35a24217138e6" ]
+ then
+ rm -f /etc/ssh/ssh_known_hosts.tmp
+ rm -f /etc/ssh/ssh_known_hosts
+
+ rmdir /etc/ssh > /dev/null 2>&1 || true
+ else
+ mv -f /etc/ssh/ssh_known_hosts.tmp /etc/ssh/ssh_known_hosts
+ fi
+}
+
+Clean ()
+{
+ # Remove apt keys
+ rm -f "/etc/apt/trusted.gpg.d/${PROJECT}.gpg"
+
+ # Remove apt lists
+ rm -f "/etc/apt/sources.list.d/${PROJECT}.list"
+}
+
+case "${1}" in
+ configure)
+ . /usr/share/debconf/confmodule
+
+ db_get ${PROJECT}/archives
+ ARCHIVES="$(echo ${RET} | sed -e 's|, | |g')" # multiselect w/ empty
+
+ db_get ${PROJECT}/archive-areas
+ ARCHIVE_AREAS="$(echo ${RET:-main} | sed -e 's|, | |g')" # string w/o empty
+
+ db_get ${PROJECT}/mirror
+ MIRROR="$(echo ${RET:-${PACKAGES}})" # string w/o empty
+
+ db_stop
+
+ BACKPORTS_PRIORITY="100"
+
+ for ARCHIVE in ${ARCHIVES}
+ do
+ case "${ARCHIVE}" in
+ engywuck|fuchur|graograman|horok|illuan)
+ BACKPORTS_PRIORITY="999"
+ ;;
+ esac
+ done
+
+ DEBIAN_VERSION="$(cat /etc/debian_version)"
+
+ case "${DEBIAN_VERSION}" in
+ 10.*|buster/sid)
+ ;;
+
+ 11.*|bullseye/sid)
+ ;;
+
+ 12.*|bookworm/sid)
+ ;;
+
+ 13.*|trixie/sid)
+ ;;
+
+ 14.*|forky/sid)
+ ;;
+
+ *)
+ echo "W: unsupported debian release"
+
+ Remove_apt_sources
+ Remove_apt_preferences
+
+ Remove_ssh_known_hosts
+
+ exit 0
+ ;;
+ esac
+
+ # apt
+ if [ -n "${ARCHIVES}" ]
+ then
+ Install_apt_sources
+ Install_apt_preferences
+
+ Configure_apt_sources
+ else
+ Remove_apt_sources
+ Remove_apt_preferences
+ fi
+
+ # openssh-server
+ Configure_ssh_known_hosts
+
+ # upgrading from buster
+ Clean
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0