130 lines
3.5 KiB
Bash
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
|