Merge pull request #115 from enoch85/patch-1

Consistency is key!
This commit is contained in:
RustDesk 2023-10-06 12:16:35 +08:00 committed by GitHub
commit 3f86b8aa1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 138 additions and 98 deletions

View File

@ -8,44 +8,50 @@
# 5. Create systemd services for hbbs and hbbr # 5. Create systemd services for hbbs and hbbr
# 6. If you choose Domain, it will install Nginx and Certbot, allowing the API to be available on port 443 (https) and get an SSL certificate over port 80, it is automatically renewed # 6. If you choose Domain, it will install Nginx and Certbot, allowing the API to be available on port 443 (https) and get an SSL certificate over port 80, it is automatically renewed
# Please note; even if the script is run as root, you will still be able to choose a non-root user during setup.
################################################################################################################## ##################################################################################################################
# We need curl to fetch the lib # Install curl and whiptail if needed
# There are the package managers for different OS: if [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v whiptail)" ]
# 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)
if [ -x "$(command -v apt-get)" ]
then then
sudo apt-get install "${NEEDED_DEPS[@]}" -y # We need curl to fetch the lib
elif [ -x "$(command -v apk)" ] # There are the package managers for different OS:
then # osInfo[/etc/redhat-release]=yum
sudo apk add --no-cache "${NEEDED_DEPS[@]}" # osInfo[/etc/arch-release]=pacman
elif [ -x "$(command -v dnf)" ] # osInfo[/etc/gentoo-release]=emerge
then # osInfo[/etc/SuSE-release]=zypp
sudo dnf install "${NEEDED_DEPS[@]}" # osInfo[/etc/debian_version]=apt-get
elif [ -x "$(command -v zypper)" ] # osInfo[/etc/alpine-release]=apk
then NEEDED_DEPS=(curl whiptail)
sudo zypper install "${NEEDED_DEPS[@]}" echo "Installing these packages:" "${NEEDED_DEPS[@]}"
elif [ -x "$(command -v pacman)" ] if [ -x "$(command -v apt-get)" ]
then then
sudo pacman -S install "${NEEDED_DEPS[@]}" sudo apt-get install "${NEEDED_DEPS[@]}" -y
elif [ -x "$(command -v yum)" ] elif [ -x "$(command -v apk)" ]
then then
sudo yum install "${NEEDED_DEPS[@]}" sudo apk add --no-cache "${NEEDED_DEPS[@]}"
elif [ -x "$(command -v emerge)" ] elif [ -x "$(command -v dnf)" ]
then then
sudo emerge -av "${NEEDED_DEPS[@]}" sudo dnf install "${NEEDED_DEPS[@]}"
else elif [ -x "$(command -v zypper)" ]
echo "FAILED TO INSTALL PACKAGE! Package manager not found. You must manually install:" "${NEEDED_DEPS[@]}" then
exit 1 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 fi
# We need to source directly from the Github repo to be able to use the functions here # We need to source directly from the Github repo to be able to use the functions here
# shellcheck disable=2034,2059,2164 # shellcheck disable=2034,2059,2164
true true
@ -58,24 +64,32 @@ unset SCRIPT_NAME
################################################################################################################## ##################################################################################################################
# This must run as root # Check if root
root_check 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
# We need the WAN IP # We need the WAN IP
get_wanip4 get_wanip4
# Install needed dependencies # Automatic restart of services while installing
install_linux_package unzip # Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
install_linux_package tar if [ ! -f /etc/needrestart/needrestart.conf ]
install_linux_package dnsutils
install_linux_package ufw
if ! install_linux_package bind9-utils
then then
install_linux_package bind-utils install_linux_package needrestart
fi if ! grep -rq "{restart} = 'a'" /etc/needrestart/needrestart.conf
if ! install_linux_package bind9 then
then # Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
install_linux_package bind sed -i "s|#\$nrconf{restart} =.*|\$nrconf{restart} = 'a'\;|g" /etc/needrestart/needrestart.conf
fi
fi fi
# Select user for installation # Select user for installation
@ -99,18 +113,20 @@ Please try again."
run_as_non_root_user() { run_as_non_root_user() {
sudo -u "$RUSTDESK_USER" "$@"; sudo -u "$RUSTDESK_USER" "$@";
} }
chown "$RUSTDESK_USER":"$RUSTDESK_USER" lib.sh
fi fi
# Output debugging info if $DEBUG set # Install needed dependencies
if [ "$DEBUG" = "true" ] install_linux_package unzip
install_linux_package tar
install_linux_package dnsutils
install_linux_package ufw
if ! install_linux_package bind9-utils
then then
identify_os install_linux_package bind-utils
print_text_in_color "$ICyan" "OS: $OS" fi
print_text_in_color "$ICyan" "VER: $VER" if ! install_linux_package bind9
print_text_in_color "$ICyan" "UPSTREAM_ID: $UPSTREAM_ID" then
exit 0 install_linux_package bind
fi fi
# Setting up firewall # Setting up firewall
@ -374,7 +390,7 @@ Do you want to install Certbot with snap? (recommended)"
install_linux_package nginx install_linux_package nginx
if ! install_linux_package snapd if ! install_linux_package snapd
then then
print_text_in_color "$IRed" "Sorry, snapd wasn't found on your system, reverting to python-certbot." print_text_in_color "$IRed" "Sorry, snapd wasn't found on your system, using 'python3-certbot-nginx' instead."
install_linux_package python3-certbot-nginx install_linux_package python3-certbot-nginx
else else
snap install certbot --classic snap install certbot --classic
@ -387,8 +403,6 @@ Do you want to install Certbot with snap? (recommended)"
# Add Nginx config # Add Nginx config
if [ ! -f "/etc/nginx/sites-available/rustdesk.conf" ] if [ ! -f "/etc/nginx/sites-available/rustdesk.conf" ]
then then
rm -f "/etc/nginx/sites-available/rustdesk.conf"
rm -f "/etc/nginx/sites-enabled/rustdesk.conf"
touch "/etc/nginx/sites-available/rustdesk.conf" touch "/etc/nginx/sites-available/rustdesk.conf"
cat << NGINX_RUSTDESK_CONF > "/etc/nginx/sites-available/rustdesk.conf" cat << NGINX_RUSTDESK_CONF > "/etc/nginx/sites-available/rustdesk.conf"
server { server {
@ -415,8 +429,8 @@ NGINX_RUSTDESK_CONF
# Enable firewall rules for the domain # Enable firewall rules for the domain
ufw allow 80/tcp ufw allow 80/tcp
ufw allow 443/tcp ufw allow 443/tcp
ufw enable ufw --force enable
ufw reload ufw --force reload
# Generate the certifictae # Generate the certifictae
if ! certbot --nginx --cert-name "${RUSTDESK_DOMAIN}" --key-type ecdsa --renew-by-default --no-eff-email --agree-tos --server https://acme-v02.api.letsencrypt.org/directory -d "${RUSTDESK_DOMAIN}" if ! certbot --nginx --cert-name "${RUSTDESK_DOMAIN}" --key-type ecdsa --renew-by-default --no-eff-email --agree-tos --server https://acme-v02.api.letsencrypt.org/directory -d "${RUSTDESK_DOMAIN}"
@ -430,8 +444,8 @@ Please try again."
;; ;;
"IP") "IP")
ufw allow 21114/tcp ufw allow 21114/tcp
ufw enable ufw --force enable
ufw reload ufw --force reload
;; ;;
*) *)
;; ;;
@ -446,8 +460,8 @@ $PUBLICKEY
Your DNS Address is: Your DNS Address is:
$RUSTDESK_DOMAIN $RUSTDESK_DOMAIN
Please login at https://$RUSTDESK_DOMAIN" Please login at https://$RUSTDESK_DOMAIN
Default User/Pass: admin/test1234 Default User/Pass: admin/test1234"
else else
msg_box " msg_box "
Your Public Key is: Your Public Key is:
@ -455,8 +469,8 @@ $PUBLICKEY
Your IP Address is: Your IP Address is:
$WANIP4 $WANIP4
Please login at http://$WANIP4:21114" Please login at http://$WANIP4:21114
Default User/Pass: admin/test1234 Default User/Pass: admin/test1234"
fi fi
print_text_in_color "$IGreen" "Cleaning up..." print_text_in_color "$IGreen" "Cleaning up..."

5
lib.sh
View File

@ -159,6 +159,7 @@ install_linux_package() {
# osInfo[/etc/SuSE-release]=zypp # osInfo[/etc/SuSE-release]=zypp
# osInfo[/etc/debian_version]=apt-get # osInfo[/etc/debian_version]=apt-get
# osInfo[/etc/alpine-release]=apk # osInfo[/etc/alpine-release]=apk
print_text_in_color "$IGreen" Installing "${1}"...
if [ -x "$(command -v apt-get)" ] if [ -x "$(command -v apt-get)" ]
then then
sudo apt-get install "${1}" -y sudo apt-get install "${1}" -y
@ -181,7 +182,7 @@ install_linux_package() {
then then
sudo emerge -av "${1}" sudo emerge -av "${1}"
else else
echo "FAILED TO INSTALL ${1}! Package manager not found: Your OS is currently unsupported." print_text_in_color "$IRed" "FAILED TO INSTALL ${1}! Package manager not found: Your OS is currently unsupported."
fi fi
} }
@ -208,7 +209,7 @@ purge_linux_package() {
then then
sudo emerge -Cv "${1}" sudo emerge -Cv "${1}"
else else
echo "FAILED TO REMOVE ${1}! Package manager not found: Your OS is currently unsupported." print_text_in_color "$IRed" "FAILED TO REMOVE ${1}! Package manager not found: Your OS is currently unsupported."
fi fi
} }

View File

@ -2,33 +2,60 @@
################################################################################################################## ##################################################################################################################
if [[ "$EUID" -ne 0 ]] # Install curl and whiptail if needed
if [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v whiptail)" ]
then then
echo "Sorry, you are not root. You now have two options:" # We need curl to fetch the lib
echo # There are the package managers for different OS:
echo "1. Use SUDO directly:" # osInfo[/etc/redhat-release]=yum
echo " a) :~$ sudo bash install.sh" # osInfo[/etc/arch-release]=pacman
echo # osInfo[/etc/gentoo-release]=emerge
echo "2. Become ROOT and then type your command:" # osInfo[/etc/SuSE-release]=zypp
echo " a) :~$ sudo -i" # osInfo[/etc/debian_version]=apt-get
echo " b) :~# bash install.sh" # osInfo[/etc/alpine-release]=apk
echo NEEDED_DEPS=(curl whiptail)
echo "More information can be found here: https://unix.stackexchange.com/a/3064" echo "Installing" "${NEEDED_DEPS[@]}"
exit 1 if [ -x "$(command -v apt-get)" ]
fi then
sudo apt-get install "${NEEDED_DEPS[@]}" -y
# Download the lib file elif [ -x "$(command -v apk)" ]
if ! curl -fSL https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/lib.sh -o lib.sh then
then sudo apk add --no-cache "${NEEDED_DEPS[@]}"
echo "Failed to download the lib.sh file. Please try again" elif [ -x "$(command -v dnf)" ]
exit 1 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 fi
# We need to source directly from the Github repo to be able to use the functions here
# shellcheck disable=2034,2059,2164 # shellcheck disable=2034,2059,2164
true true
SCRIPT_NAME="Uninstall Script" SCRIPT_NAME="Uninstall script"
export SCRIPT_NAME
# shellcheck source=lib.sh # shellcheck source=lib.sh
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 # Output debugging info if $DEBUG set
if [ "$DEBUG" = "true" ] if [ "$DEBUG" = "true" ]
@ -40,7 +67,6 @@ then
exit 0 exit 0
fi fi
# Switch for Certbot # Switch for Certbot
if [ -d /etc/letsencrypt ] if [ -d /etc/letsencrypt ]
then then
@ -53,7 +79,6 @@ fi
choice=$(whiptail --title "$TITLE" --checklist \ choice=$(whiptail --title "$TITLE" --checklist \
"What do you want to uninstall? "What do you want to uninstall?
$CHECKLIST_GUIDE\n\n$RUN_LATER_GUIDE" "$WT_HEIGHT" "$WT_WIDTH" 4 \ $CHECKLIST_GUIDE\n\n$RUN_LATER_GUIDE" "$WT_HEIGHT" "$WT_WIDTH" 4 \
"curl" "(Removes curl:// linux package)" OFF \
"nginxconf" "(Removes Rustdesk Nginx config)" OFF \ "nginxconf" "(Removes Rustdesk Nginx config)" OFF \
"nginxall" "(Removes *everything* releated to Nginx)" ON \ "nginxall" "(Removes *everything* releated to Nginx)" ON \
"wget" "(Removes wget linux package)" ON \ "wget" "(Removes wget linux package)" ON \
@ -65,12 +90,10 @@ $CHECKLIST_GUIDE\n\n$RUN_LATER_GUIDE" "$WT_HEIGHT" "$WT_WIDTH" 4 \
"UFW" "(Removes UFW linux package plus rules)" ON \ "UFW" "(Removes UFW linux package plus rules)" ON \
"Rustdesk LOGs" "(Removes RustDesk log dir)" ON \ "Rustdesk LOGs" "(Removes RustDesk log dir)" ON \
"Rustdesk Server" "(Removes Rustdesk server + services)" ON \ "Rustdesk Server" "(Removes Rustdesk server + services)" ON \
"curl" "(Removes curl:// linux package)" OFF \
"Certbot" "(Removes Certbot package plus Let's Encrypt)" "$CERTBOT_SWITCH" 3>&1 1>&2 2>&3) "Certbot" "(Removes Certbot package plus Let's Encrypt)" "$CERTBOT_SWITCH" 3>&1 1>&2 2>&3)
case "$choice" in case "$choice" in
*"curl"*)
REMOVE_CURL="yes"
;;&
*"nginxconf"*) *"nginxconf"*)
REMOVE_NGINX_CONF="yes" REMOVE_NGINX_CONF="yes"
;;& ;;&
@ -104,6 +127,9 @@ case "$choice" in
*"Rustdesk SERVER"*) *"Rustdesk SERVER"*)
REMOVE_RUSTDESK_SERVER="yes" REMOVE_RUSTDESK_SERVER="yes"
;;& ;;&
*"curl"*)
REMOVE_CURL="yes"
;;&
*"Certbot"*) *"Certbot"*)
REMOVE_CERTBOT="yes" REMOVE_CERTBOT="yes"
;;& ;;&
@ -113,7 +139,7 @@ esac
msg_box "WARNING WARNING WARNING msg_box "WARNING WARNING WARNING
This script will remove EVERYTHING that was you chose in the previous selection. This script will remove EVERYTHING that was chosen in the previous selection.
You can choose to opt out after you hit OK." 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?" if ! yesno_box_no "Are you REALLY sure you want to continue with the uninstallation?"
@ -134,8 +160,8 @@ then
else else
ufw delete allow 21114/tcp ufw delete allow 21114/tcp
fi fi
ufw disable ufw --force disable
ufw reload ufw --force reload
fi fi
# Rustdesk Server # Rustdesk Server
@ -231,10 +257,9 @@ fi
msg_box "Uninstallation complete! msg_box "Uninstallation complete!
Please hit OK to remove the last file." Please hit OK to remove the last package."
if [ -n "$REMOVE_WHIPTAIL" ] if [ -n "$REMOVE_WHIPTAIL" ]
then then
purge_linux_package whiptail purge_linux_package whiptail
fi fi
rm -f lib.sh