diff --git a/rustdesk.sh b/rustdesk.sh new file mode 100755 index 0000000..1a862d3 --- /dev/null +++ b/rustdesk.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +function distribution() { + local DISTRIBUTION="" + + if [ -f "/etc/debian_version" ]; then + source /etc/os-release + DISTRIBUTION="${ID}" + else + echo "ERROR: Distribution must be ubuntu!" + exit 1 + fi +} + +function root() { + if [ "$(echo ${USER})" != "root" ]; then + echo "WARNING: You must be root to run the script!" + exit 1 + fi +} + +function install() { + if [ -f "/usr/bin/hbbs" ] && [ -f "/usr/bin/hbbr" ]; then + echo "NOTICE: Installed, no need to reinstall!" + exit 0 + fi + + local DEB_ARCHITECTURE=$(dpkg --print-architecture) + local SERVER_PUBLIC_IPV4="$(curl -s -4 https://cloudflare.com/cdn-cgi/trace | grep ip | awk -F '=' '{ print $2 }')" + + wget -q https://github.com/rustdesk/rustdesk-server/releases/download/${LATEST_TAG_NAME}/rustdesk-server-hbbs_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb + wget -q https://github.com/rustdesk/rustdesk-server/releases/download/${LATEST_TAG_NAME}/rustdesk-server-hbbr_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb + + dpkg -i rustdesk-server-hbbs_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb >/dev/null 2>&1 + dpkg -i rustdesk-server-hbbr_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb >/dev/null 2>&1 + + ufw allow proto tcp from 0.0.0.0/0 to any port 21115:21119 >/dev/null 2>&1 + ufw allow proto udp from 0.0.0.0/0 to any port 21116 >/dev/null 2>&1 + + rm rustdesk-server-hbbs_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb + rm rustdesk-server-hbbr_${LATEST_TAG_NAME}_${DEB_ARCHITECTURE}.deb + + echo "ID Server: ${SERVER_PUBLIC_IPV4}" + echo "Key: $(cat /var/lib/rustdesk-server/id_ed25519.pub) (/var/lib/rustdesk-server/id_ed25519.pub)" + exit 0 +} + +function update() { + if [ -f "/usr/bin/hbbs" ] && [ -f "/usr/bin/hbbr" ]; then + if [ "${LATEST_TAG_NAME}" != "$(hbbs -h | head -1 | awk '{ print $2 }')" ] && [ "${LATEST_TAG_NAME}" != "$(hbbr -h | head -1 | awk '{ print $2 }')" ]; then + install + else + echo "NOTICE: Version \"${LATEST_TAG_NAME}\" is the latest version, no need to update!" + fi + else + echo "NOTICE: Not installed, no need to update!" + fi + exit 0 +} + +function remove() { + if [ ! -f "/usr/bin/hbbs" ] && [ ! -f "/usr/bin/hbbr" ]; then + echo "NOTICE: Not installed, no need to remove!" + exit 0 + fi + + if systemctl is-active --quiet rustdesk-hbbs.service && systemctl is-active --quiet rustdesk-hbbr.service; then + systemctl stop rustdesk-hbbs.service + systemctl stop rustdesk-hbbr.service + fi + + apt purge rustdesk-server-hbbs rustdesk-server-hbbr -y >/dev/null 2>&1 + rm -rf /var/lib/rustdesk-server >/dev/null 2>&1 + rm -rf /var/log/rustdesk-server >/dev/null 2>&1 + + ufw delete allow proto tcp from 0.0.0.0/0 to any port 21115:21119 >/dev/null 2>&1 + ufw delete allow proto udp from 0.0.0.0/0 to any port 21116 >/dev/null 2>&1 + exit 0 +} + +function help() { + cat <