Back to project.

Raw source file available here .

#!/usr/bin/env bash
# SPDX-License-Identifier: AGPL-3.0-or-later
# shellcheck disable=SC2001

# shellcheck source=utils/lib.sh
source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"

# ----------------------------------------------------------------------------
# config
# ----------------------------------------------------------------------------

PUBLIC_URL="${PUBLIC_URL:-${SEARXNG_URL}}"

FILTRON_ETC="/etc/filtron"

SERVICE_NAME="filtron"
SERVICE_USER="${SERVICE_USER:-${SERVICE_NAME}}"
SERVICE_SYSTEMD_UNIT="${SYSTEMD_UNITS}/${SERVICE_NAME}.service"

APACHE_FILTRON_SITE="searx.conf"
NGINX_FILTRON_SITE="searx.conf"

# ----------------------------------------------------------------------------
usage() {
# ----------------------------------------------------------------------------

# shellcheck disable=SC1117
cat <<EOF
usage::
$(basename "$0") remove all
$(basename "$0") apache remove
$(basename "$0") nginx remove

remove all : drop all components of the filtron service
apache remove : drop apache site ${APACHE_FILTRON_SITE}
nginx remove : drop nginx site ${NGINX_FILTRON_SITE}

environment:
PUBLIC_URL : ${PUBLIC_URL}
EOF

[[ -n ${1} ]] && err_msg "$1"
}

main() {
local _usage="unknown or missing $1 command $2"

case $1 in
-h|--help) usage; exit 0;;
remove)
sudo_or_exit
case $2 in
all) remove_all;;
*) usage "$_usage"; exit 42;;
esac ;;
apache)
sudo_or_exit
case $2 in
remove) remove_apache_site ;;
*) usage "$_usage"; exit 42;;
esac ;;
nginx)
sudo_or_exit
case $2 in
remove) remove_nginx_site ;;
*) usage "$_usage"; exit 42;;
esac ;;
*) usage "unknown or missing command $1"; exit 42;;
esac
}

remove_all() {
rst_title "De-Install $SERVICE_NAME (service)"

rst_para "\
It goes without saying that this script can only be used to remove
installations that were installed with this script."

if ! systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"; then
return 42
fi
drop_service_account "${SERVICE_USER}"
rm -r "$FILTRON_ETC" 2>&1 | prefix_stdout
if service_is_available "${PUBLIC_URL}"; then
MSG="** Don't forget to remove your public site! (${PUBLIC_URL}) **" wait_key 10
fi
}

remove_apache_site() {

rst_title "Remove Apache site $APACHE_FILTRON_SITE"

rst_para "\
This removes apache site ${APACHE_FILTRON_SITE}."

! apache_is_installed && err_msg "Apache is not installed."

if ! ask_yn "Do you really want to continue?" Yn; then
return
fi

apache_remove_site "$APACHE_FILTRON_SITE"

}

remove_nginx_site() {

rst_title "Remove nginx site $NGINX_FILTRON_SITE"

rst_para "\
This removes nginx site ${NGINX_FILTRON_SITE}."

! nginx_is_installed && err_msg "nginx is not installed."

if ! ask_yn "Do you really want to continue?" Yn; then
return
fi

nginx_remove_app "$FILTRON_FILTRON_SITE"

}

# ----------------------------------------------------------------------------
main "$@"
# ----------------------------------------------------------------------------