#!/bin/bash # summary of how this script can be called: # * `remove' # * `purge' # * `upgrade' # * `failed-upgrade' # * `abort-install' # * `abort-install' # * `abort-upgrade' # * `disappear' # # 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