old_console/deb_old/skeleton/DEBIAN/postrm
2024-11-02 14:12:45 +03:00

130 lines
3.5 KiB
Bash

#!/bin/bash
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
set -e # fail on any error
PROJECT=armaconsole
# USERS CONFIG
PROJECT_USER="${PROJECT}"
SUDOERS_FILE_PATH="/etc/sudoers.d/${PROJECT}"
# SYSTEMCTL CONFIG
SYSCTL_AMC_SERVICES="amcgunicorn amccelery amccelerybeat amccorrelator amclicense amcchecker amcvector"
# AMC DIRS
AMC_ETC="/etc/${PROJECT}"
AMC_HOME="/usr/local/${PROJECT}"
AMC_WWW="/var/www/${PROJECT}"
AMC_LOG="/var/log/${PROJECT}"
AMC_PUBLIC="${AMC_WWW}/public"
# CERTS PATHES
NGINX_SSL_PATH="/etc/nginx/ssl/${PROJECT}"
# ======[ Trap Errors ]======#
set -E # let shell functions inherit ERR trap
trap err_handler 1 2 3 15 ERR # Trap non-normal exit signals: 1/HUP, 2/INT, 3/QUIT, 15/TERM, ERR
# shellcheck disable=SC2128
function err_handler() {
local exit_status=${1:-$?}
logger -s -p "syslog.err" -t "${PROJECT}.deb" \
"${PROJECT}.deb script '$0' error code $exit_status (line $BASH_LINENO: '$BASH_COMMAND')"
exit "$exit_status"
}
[ -f /usr/share/debconf/confmodule ] && . /usr/share/debconf/confmodule
if [ -f /usr/share/dbconfig-common/dpkg/postrm.pgsql ]; then
. /usr/share/dbconfig-common/dpkg/postrm.pgsql
dbc_go "${PROJECT}" "$@"
fi
[ -f /usr/share/debconf/confmodule ] && db_stop
DEBUG_INSTALL="${DEBUG_INSTALL:-0}"
[ "$DEBUG_INSTALL" == "1" ] && set -x
[ "$DEBUG_INSTALL" == "1" ] && echo "Calling postrm $*"
function restore_config() {
fpath="$1"
if [ -f "${fpath}.AMCBK" ]; then
rm -f "${fpath}"
mv "${fpath}.AMCBK" "${fpath}"
fi
}
set -u # treat unset variables as errors
case "$1" in
disappear)
exit 1
;;
remove | upgrade | abort-install | abort-upgrade | failed-upgrade)
# shellcheck disable=SC2086
systemctl stop $SYSCTL_AMC_SERVICES &>/dev/null || true
# shellcheck disable=SC2086
systemctl disable $SYSCTL_AMC_SERVICES &>/dev/null || true
# Nginx
rm -f "/etc/nginx/sites-enabled/${PROJECT}*" &>/dev/null
rm -rf "${NGINX_SSL_PATH}"
# Elasticsearch
restore_config "/etc/elasticsearch/elasticsearch.yml"
rm -rf "/usr/share/elasticsearch/data" &>/dev/null
# Logstash
# restore_config "/etc/logstash/logstash.yml"
# rm -f "${AMC_PUBLIC}/logstash/armaif_"* &>/dev/null
# if [ -f /.dockerenv ]; then
# restore_config "/etc/elasticsearch/jvm.options"
# restore_config "/etc/logstash/jvm.options"
# fi
# Vector
rm -f "${AMC_PUBLIC}/vector/"* &>/dev/null
# VENV
# User
rm -rf "${SUDOERS_FILE_PATH}"
userdel "${PROJECT_USER}" &>/dev/null || true
# Hosts, docker container not permit /etc/hosts
sed -i '/^127.0.0.1\slicense-client/d' /etc/hosts &>/dev/null || true
# Dirs
rm -rf "${AMC_ETC}"/.[^.]* "${AMC_ETC}"/*
rm -rf "${AMC_HOME}"/.[^.]* "${AMC_HOME}"/*
rm -rf "${AMC_WWW}"/.[^.]* "${AMC_WWW}"/*
rm -rf "${AMC_LOG}"/.[^.]* "${AMC_LOG}"/*
;;
purge)
# Nginx
rm -f "/etc/nginx/sites-available/${PROJECT}*" &>/dev/null
# DB
if which ucf &>/dev/null; then
ucf --purge "${AMC_ETC}/debconf_dbconfig"
ucfr --purge ${PROJECT} "${AMC_ETC}/debconf_dbconfig"
fi
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0