#! /bin/bash script_dir="$(dirname $(readlink -f $0))" app_name='biscd' install_dir="/opt/$app_name" logging_dir="/var/log/$app_name" systemd_service=`systemctl list-unit-files | cut -d ' ' -f 1 | grep -swcF "$app_name.service"` > 0 # exit when any command fails set -e function help () { echo "Usage: $0 [OPTIONS]" echo " -f force uninstallation: Don't stop when something fails" echo ' -l remove logfiles and logdirectory as well' echo ' -h display this output.' echo '' echo "This script uninstalls $app_name. All application files will be removed," echo 'as will the logrotate and apache config(section).' echo 'Apache will be reloaded in this process.' echo '' echo 'For more info visit https://git.sciuro.org/Burathar/biscd' exit 1 } function echo_header () { echo -e "\e[33m== $1 ==\e[0;m" } while getopts 'flh' opt ; do case "$opt" in f) set +e; force='true';; l) delete_logs='true';; h) help ;; esac done # Make sure running as root if [ `id -u` -ne 0 ]; then echo 'Please run as root' exit 1 fi if [ "$force" != 'true' ]; then read -p "Are you sure you want to delete $app_name? Apache will be reloaded during this process (y/N) " confirm_delete [ -z "$confirm_delete" ] && confirm_delete='no' # if no input, assume no case ${confirm_delete:0:1} in n|N|0 ) exit 0;; esac fi if [ "$delete_logs" != 'true' ]; then read -p "Do you wish to delete any $app_name log files as well? (y/N) " delete_logs [ -z "$delete_logs" ] && delete_logs='no' # if no input, assume no case ${delete_logs:0:1} in n|N|0 ) delete_logs='false';; *) delete_logs='true';; esac fi echo_header "Removing Apache virtualhost" rm -v "/etc/apache2/sites-enabled/$app_name.conf" systemctl reload apache2.service if [ "$systemd_service" -eq 1 ]; then echo_header "Removing Systemd service" systemctl stop "$app_name.service" sleep 1s systemctl disable "$app_name.service" rm "/etc/systemd/system/$app_name.service" systemctl daemon-reload fi echo_header "Removing $app_name user and group==" deluser -q "$app_name" delgroup -q "$app_name" && echo "group $app_name is removed, ignore previous warning" || true echo_header "Removing application files" rm -v "/etc/apache2/sites-available/$app_name.conf" rm -v "/var/www/wsgi-scripts/$app_name.wsgi" || true rm -vd "/var/www/wsgi-scripts/" || true rm -vrf "/etc/$app_name" rm -rf "$install_dir" && echo "removed '$install_dir'" if [ "$delete_logs" = 'true' ]; then echo_header "Removing logfiles" rm -vrf "$logging_dir" fi echo_header "Remaining artifacts(feel free to remove these manually)" dpkg -l | grep libapache2-mod-wsgi-py3 | awk '{print $2}' echo python3-venv echo_header "$app_name is uninstalled!" exit 0