#!/bin/bash ################################################################################################################## # Install curl and whiptail if needed if [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v whiptail)" ] then # We need curl to fetch the lib # There are the package managers for different OS: # osInfo[/etc/redhat-release]=yum # osInfo[/etc/arch-release]=pacman # osInfo[/etc/gentoo-release]=emerge # osInfo[/etc/SuSE-release]=zypp # osInfo[/etc/debian_version]=apt-get # osInfo[/etc/alpine-release]=apk NEEDED_DEPS=(curl whiptail) echo "Installing" "${NEEDED_DEPS[@]}" if [ -x "$(command -v apt-get)" ] then sudo apt-get install "${NEEDED_DEPS[@]}" -y elif [ -x "$(command -v apk)" ] then sudo apk add --no-cache "${NEEDED_DEPS[@]}" elif [ -x "$(command -v dnf)" ] then sudo dnf install "${NEEDED_DEPS[@]}" elif [ -x "$(command -v zypper)" ] then sudo zypper install "${NEEDED_DEPS[@]}" elif [ -x "$(command -v pacman)" ] then sudo pacman -S install "${NEEDED_DEPS[@]}" elif [ -x "$(command -v yum)" ] then sudo yum install "${NEEDED_DEPS[@]}" elif [ -x "$(command -v emerge)" ] then sudo emerge -av "${NEEDED_DEPS[@]}" else echo "FAILED TO INSTALL! Package manager not found. You must manually install:" "${NEEDED_DEPS[@]}" exit 1 fi fi # We need to source directly from the Github repo to be able to use the functions here # shellcheck disable=2034,2059,2164 true SCRIPT_NAME="Uninstall script" export SCRIPT_NAME # shellcheck source=lib.sh source <(curl -sL https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/lib.sh) # see https://github.com/koalaman/shellcheck/wiki/Directive unset SCRIPT_NAME ################################################################################################################## # Check if root root_check # Output debugging info if $DEBUG set if [ "$DEBUG" = "true" ] then identify_os print_text_in_color "$ICyan" "OS: $OS" print_text_in_color "$ICyan" "VER: $VER" print_text_in_color "$ICyan" "UPSTREAM_ID: $UPSTREAM_ID" exit 0 fi # Switch for Certbot if [ -d /etc/letsencrypt ] then CERTBOT_SWITCH=ON else CERTBOT_SWITCH=OFF fi # Uninstall Rustdesk Menu choice=$(whiptail --title "$TITLE" --checklist \ "Please choose what to uninstall:\n\n $CHECKLIST_GUIDE\n\n$RUN_LATER_GUIDE" "$WT_HEIGHT" "$WT_WIDTH" 4 \ "certbot" "(Everything related to Let's Encrypt)" "$CERTBOT_SWITCH" \ "rustdesk-logs" "(RustDesk LOG dir)" ON \ "rustdesk-server" "(RustDesk SERVER + RustDesk services)" ON \ "nginx-rustdesk" "(RustDesk Nginx config)" OFF \ "nginx" "(Linux webserver package + ALL configs)" ON \ "ufw" "(Linux firewall package + RustDesk rules)" ON \ "whiptail" "(Linux menu package)" ON \ "curl" "(Linux package)" OFF \ "wget" "(Linux package)" OFF \ "unzip" "(Linux package)" OFF \ "dnsutils" "(Linux package)" ON \ "bind-utils" "(Linux package)" ON \ "bind" "(Linux package)" ON 3>&1 1>&2 2>&3) case "$choice" in *"nginx-rustdesk"*) REMOVE_NGINX_CONF="yes" ;;& *"nginx"*) REMOVE_NGINX_ALL="yes" ;;& *"wget"*) REMOVE_WGET="yes" ;;& *"whiptail"*) REMOVE_WHIPTAIL="yes" ;;& *"unzip"*) REMOVE_UNZIP="yes" ;;& *"dnsutils"*) REMOVE_DNSUTILS="yes" ;;& *"bind-utils"*) REMOVE_BIND_UTILS="yes" ;;& *"bind"*) REMOVE_BIND="yes" ;;& *"ufw"*) REMOVE_UFW="yes" ;;& *"rustdesk-logs"*) REMOVE_RUSTDESK_LOG="yes" ;;& *"rustdesk-server"*) REMOVE_RUSTDESK_SERVER="yes" ;;& *"curl"*) REMOVE_CURL="yes" ;;& *"certbot"*) REMOVE_CERTBOT="yes" ;;& *) ;; esac msg_box "WARNING WARNING WARNING This script will remove EVERYTHING that was chosen in the previous selection. You can choose to opt out after you hit OK." if ! yesno_box_no "Are you REALLY sure you want to continue with the uninstallation?" then exit 0 fi if [ -n "$UFW" ] then # Deleting UFW rules ufw delete allow 21115:21119/tcp # ufw delete 22/tcp # If connected to a remote VPS, this deletion will make the connection go down ufw delete allow 21116/udp if [ -f "/etc/nginx/sites-available/rustdesk.conf" ] || [ -f "/etc/nginx/conf.d/rustdesk.conf" ] then ufw delete allow 80/tcp ufw delete allow 443/tcp else ufw delete allow 21114/tcp fi ufw --force disable ufw --force reload fi # Rustdesk Server if [ -n "$REMOVE_RUSTDESK_SERVER" ] then # Rustdesk installation dir print_text_in_color "$IGreen" "Removing RustDesk Server..." rm -rf "$RUSTDESK_INSTALL_DIR" rm -rf /usr/bin/hbbs rm -rf /usr/bin/hbbr # systemctl services # HBBS systemctl disable rustdesk-hbbs.service systemctl stop rustdesk-hbbs.service rm -f "/etc/systemd/system/rustdesk-hbbs.service" # HBBR systemctl disable rustdesk-hbbr.service systemctl stop rustdesk-hbbr.service rm -f "/etc/systemd/system/rustdesk-hbbr.service" # daemon-reload systemctl daemon-reload fi # Rustdesk LOG if [ -n "$REMOVE_RUSTDESK_LOG" ] then # Rustdesk LOG dir rm -rf "$RUSTDESK_LOG_DIR" fi # Certbot if [ -n "$REMOVE_CERTBOT" ] then if snap list | grep -q certbot > /dev/null then purge_linux_package snap snap remove certbot else purge_linux_package python3-certbot-nginx -y fi # Also remove the actual certs rm -rf /etc/letsencrypt fi # Nginx if [ -n "$REMOVE_NGINX_CONF" ] then rm -f "/etc/nginx/sites-available/rustdesk.conf" rm -f "/etc/nginx/sites-enabled/rustdesk.conf" rm -f "/etc/nginx/conf.d/rustdesk.conf" service nginx restart elif [ -n "$REMOVE_NGINX_ALL" ] then purge_linux_package nginx rm -rf "/etc/nginx" fi # The rest if [ -n "$REMOVE_CURL" ] then purge_linux_package curl fi if [ -n "$REMOVE_WGET" ] then purge_linux_package wget fi if [ -n "$REMOVE_UNZIP" ] then purge_linux_package unzip fi if [ -n "$REMOVE_DNSUTILS" ] then purge_linux_package dnsutils fi if [ -n "$REMOVE_BIND_UTILS" ] then purge_linux_package bind-utils fi if [ -n "$REMOVE_BIND" ] then purge_linux_package bind fi if [ -n "$REMOVE_UFW" ] then purge_linux_package ufw fi msg_box "Uninstallation complete! Please hit OK to remove the last package." if [ -n "$REMOVE_WHIPTAIL" ] then purge_linux_package whiptail fi