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
# 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
# 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)
if [ -x "$(command -v apt-get)" ]
# Install curl and whiptail if needed
if [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v whiptail)" ]
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! Package manager not found. You must manually install:" "${NEEDED_DEPS[@]}"
exit 1
# 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 these packages:" "${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
@ -58,24 +64,32 @@ unset SCRIPT_NAME
##################################################################################################################
# This must run as root
# 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
# We need the WAN IP
get_wanip4
# Install needed dependencies
install_linux_package unzip
install_linux_package tar
install_linux_package dnsutils
install_linux_package ufw
if ! install_linux_package bind9-utils
# Automatic restart of services while installing
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
if [ ! -f /etc/needrestart/needrestart.conf ]
then
install_linux_package bind-utils
fi
if ! install_linux_package bind9
then
install_linux_package bind
install_linux_package needrestart
if ! grep -rq "{restart} = 'a'" /etc/needrestart/needrestart.conf
then
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
sed -i "s|#\$nrconf{restart} =.*|\$nrconf{restart} = 'a'\;|g" /etc/needrestart/needrestart.conf
fi
fi
# Select user for installation
@ -99,18 +113,20 @@ Please try again."
run_as_non_root_user() {
sudo -u "$RUSTDESK_USER" "$@";
}
chown "$RUSTDESK_USER":"$RUSTDESK_USER" lib.sh
fi
# Output debugging info if $DEBUG set
if [ "$DEBUG" = "true" ]
# Install needed dependencies
install_linux_package unzip
install_linux_package tar
install_linux_package dnsutils
install_linux_package ufw
if ! install_linux_package bind9-utils
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
install_linux_package bind-utils
fi
if ! install_linux_package bind9
then
install_linux_package bind
fi
# Setting up firewall
@ -374,7 +390,7 @@ Do you want to install Certbot with snap? (recommended)"
install_linux_package nginx
if ! install_linux_package snapd
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
else
snap install certbot --classic
@ -387,8 +403,6 @@ Do you want to install Certbot with snap? (recommended)"
# Add Nginx config
if [ ! -f "/etc/nginx/sites-available/rustdesk.conf" ]
then
rm -f "/etc/nginx/sites-available/rustdesk.conf"
rm -f "/etc/nginx/sites-enabled/rustdesk.conf"
touch "/etc/nginx/sites-available/rustdesk.conf"
cat << NGINX_RUSTDESK_CONF > "/etc/nginx/sites-available/rustdesk.conf"
server {
@ -415,8 +429,8 @@ NGINX_RUSTDESK_CONF
# Enable firewall rules for the domain
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw reload
ufw --force enable
ufw --force reload
# 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}"
@ -430,8 +444,8 @@ Please try again."
;;
"IP")
ufw allow 21114/tcp
ufw enable
ufw reload
ufw --force enable
ufw --force reload
;;
*)
;;
@ -446,8 +460,8 @@ $PUBLICKEY
Your DNS Address is:
$RUSTDESK_DOMAIN
Please login at https://$RUSTDESK_DOMAIN"
Default User/Pass: admin/test1234
Please login at https://$RUSTDESK_DOMAIN
Default User/Pass: admin/test1234"
else
msg_box "
Your Public Key is:
@ -455,8 +469,8 @@ $PUBLICKEY
Your IP Address is:
$WANIP4
Please login at http://$WANIP4:21114"
Default User/Pass: admin/test1234
Please login at http://$WANIP4:21114
Default User/Pass: admin/test1234"
fi
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/debian_version]=apt-get
# osInfo[/etc/alpine-release]=apk
print_text_in_color "$IGreen" Installing "${1}"...
if [ -x "$(command -v apt-get)" ]
then
sudo apt-get install "${1}" -y
@ -181,7 +182,7 @@ install_linux_package() {
then
sudo emerge -av "${1}"
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
}
@ -208,7 +209,7 @@ purge_linux_package() {
then
sudo emerge -Cv "${1}"
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
}

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
echo "Sorry, you are not root. You now have two options:"
echo
echo "1. Use SUDO directly:"
echo " a) :~$ sudo bash install.sh"
echo
echo "2. Become ROOT and then type your command:"
echo " a) :~$ sudo -i"
echo " b) :~# bash install.sh"
echo
echo "More information can be found here: https://unix.stackexchange.com/a/3064"
exit 1
fi
# Download the lib file
if ! curl -fSL https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/lib.sh -o lib.sh
then
echo "Failed to download the lib.sh file. Please try again"
exit 1
# 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"
SCRIPT_NAME="Uninstall script"
export SCRIPT_NAME
# 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
if [ "$DEBUG" = "true" ]
@ -40,7 +67,6 @@ then
exit 0
fi
# Switch for Certbot
if [ -d /etc/letsencrypt ]
then
@ -53,7 +79,6 @@ fi
choice=$(whiptail --title "$TITLE" --checklist \
"What do you want to uninstall?
$CHECKLIST_GUIDE\n\n$RUN_LATER_GUIDE" "$WT_HEIGHT" "$WT_WIDTH" 4 \
"curl" "(Removes curl:// linux package)" OFF \
"nginxconf" "(Removes Rustdesk Nginx config)" OFF \
"nginxall" "(Removes *everything* releated to Nginx)" 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 \
"Rustdesk LOGs" "(Removes RustDesk log dir)" 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)
case "$choice" in
*"curl"*)
REMOVE_CURL="yes"
;;&
*"nginxconf"*)
REMOVE_NGINX_CONF="yes"
;;&
@ -104,6 +127,9 @@ case "$choice" in
*"Rustdesk SERVER"*)
REMOVE_RUSTDESK_SERVER="yes"
;;&
*"curl"*)
REMOVE_CURL="yes"
;;&
*"Certbot"*)
REMOVE_CERTBOT="yes"
;;&
@ -113,7 +139,7 @@ esac
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."
if ! yesno_box_no "Are you REALLY sure you want to continue with the uninstallation?"
@ -134,8 +160,8 @@ then
else
ufw delete allow 21114/tcp
fi
ufw disable
ufw reload
ufw --force disable
ufw --force reload
fi
# Rustdesk Server
@ -231,10 +257,9 @@ fi
msg_box "Uninstallation complete!
Please hit OK to remove the last file."
Please hit OK to remove the last package."
if [ -n "$REMOVE_WHIPTAIL" ]
then
purge_linux_package whiptail
fi
rm -f lib.sh