From 3f654ef5d14ae236f6ee32cdb2fd6e861a49c490 Mon Sep 17 00:00:00 2001 From: Eliezer Croitoru Date: Fri, 16 Aug 2024 14:16:53 +0300 Subject: [PATCH] 7 Periodic update --- Dockerfile | 2 +- WindowsAgentAIOInstall.ps1 | 192 ++++++++++++++++--------------------- linuxclientinstall.sh | 109 ++++++++++----------- 3 files changed, 134 insertions(+), 169 deletions(-) diff --git a/Dockerfile b/Dockerfile index de50ba5..8e74564 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM alpine:latest ARG TARGETOS ARG TARGETARCH -ENV ENCRYPTED_ONLY 0 +ENV ENCRYPTED_ONLY=0 RUN apk update && apk add --no-cache supervisor && mkdir -p /opt/rustdesk && mkdir /public && mkdir /data diff --git a/WindowsAgentAIOInstall.ps1 b/WindowsAgentAIOInstall.ps1 index a50a2dc..a536fa0 100644 --- a/WindowsAgentAIOInstall.ps1 +++ b/WindowsAgentAIOInstall.ps1 @@ -1,130 +1,104 @@ $ErrorActionPreference= 'silentlycontinue' -#Run as administrator and stays in the current directory + +# Assign the value random password to the password variable +$rustdesk_pw=(-join ((65..90) + (97..122) | Get-Random -Count 12 | % {[char]$_})) + +# Get your config string from your Web portal and Fill Below +$rustdesk_cfg="secure-string" + +################################### Please Do Not Edit Below This Line ######################################### + +# Run as administrator and stays in the current directory if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`""; Exit; } } -# Replace wanipreg and keyreg with the relevant info for your install. IE wanipreg becomes your rustdesk server IP or DNS and keyreg becomes your public key. -$rustdesk_url = 'https://github.com/rustdesk/rustdesk/releases/latest' -$request = [System.Net.WebRequest]::Create($rustdesk_url) +# Checks for the latest version of RustDesk +$url = 'https://www.github.com//rustdesk/rustdesk/releases/latest' +$request = [System.Net.WebRequest]::Create($url) $response = $request.GetResponse() $realTagUrl = $response.ResponseUri.OriginalString -$rustdesk_version = $realTagUrl.split('/')[-1].Trim('v') -Write-Output("Installing Rustdesk version $rustdesk_version") +$RDLATEST = $realTagUrl.split('/')[-1].Trim('v') +echo "RustDesk $RDLATEST is the latest version." -function OutputIDandPW([String]$rustdesk_id, [String]$rustdesk_pw) { - Write-Output("######################################################") - Write-Output("# #") - Write-Output("# CONNECTION PARAMETERS: #") - Write-Output("# #") - Write-Output("######################################################") - Write-Output("") - Write-Output(" RustDesk-ID: $rustdesk_id") - Write-Output(" RustDesk-Password: $rustdesk_pw") - Write-Output("") +# Checks the version of RustDesk installed. +$rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version) + +# Skips to inputting the configuration if the latest version of RustDesk is already installed. +if($rdver -eq "$RDLATEST") { +echo "RustDesk $rdver is already installed." +cd $env:ProgramFiles\RustDesk +echo "Inputting configuration now." +.\rustdesk.exe --config $rustdesk_cfg +.\rustdesk.exe --password $rustdesk_pw +$rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id +echo "All done! Please double check the Network settings tab in RustDesk." +echo "" +echo "..............................................." +# Show the value of the ID Variable +echo "RustDesk ID: $rustdesk_id" + +# Show the value of the Password Variable +echo "Password: $rustdesk_pw" +echo "..............................................." +echo "" +echo "Press Enter to open RustDesk." +pause +.\rustdesk.exe +exit } -If (!(Test-Path $env:Temp)) { - New-Item -ItemType Directory -Force -Path $env:Temp > null +if (!(Test-Path C:\Temp)) { + New-Item -ItemType Directory -Force -Path C:\Temp > null } -If (!(Test-Path "$env:ProgramFiles\Rustdesk\RustDesk.exe")) { +cd C:\Temp +echo "Downloading RustDesk version $RDLATEST." +powershell Invoke-WebRequest "https://github.com/rustdesk/rustdesk/releases/download/$RDLATEST/rustdesk-$RDLATEST-x86_64.exe" -Outfile "rustdesk.exe" +echo "Installing RustDesk version $RDLATEST." +Start-Process .\rustdesk.exe --silent-install +Start-Sleep -Seconds 10 - cd $env:Temp +$ServiceName = 'rustdesk' +$arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue - If ([Environment]::Is64BitOperatingSystem) { - $os_arch = "x64" - } Else { - $os_arch = "x32" - } - - Invoke-WebRequest https://github.com/rustdesk/rustdesk/releases/download/$rustdesk_version/rustdesk-$rustdesk_version-windows_$os_arch.zip -Outfile rustdesk.zip - - Expand-Archive rustdesk.zip - cd rustdesk - Start-Process "rustdesk-$rustdesk_version-putes.exe" -argumentlist "--silent-install" -wait - - # Set URL Handler - New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk" > null - Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "(Default)" -Value "URL:RustDesk Protocol" > null - New-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "URL Protocol" -Type STRING > null - - New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" > null - Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" -Name "(Default)" -Value "RustDesk.exe,0" > null - - New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell" > null - New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open" > null - New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" > null - $rustdesklauncher = '"' + $env:ProgramFiles + '\RustDesk\RustDeskURLLauncher.exe" %1"' - Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" -Name "(Default)" -Value $rustdesklauncher > null - - Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force > null - Install-Module ps2exe -Force > null - -$urlhandler_ps1 = @" - `$url_handler = `$args[0] - `$rustdesk_id = `$url_handler -creplace '(?s)^.*\:','' - Start-Process -FilePath '$env:ProgramFiles\RustDesk\rustdesk.exe' -ArgumentList "--connect `$rustdesk_id" -"@ - - New-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null - Set-Content "$env:ProgramFiles\RustDesk\urlhandler.ps1" $urlhandler_ps1 > null - Invoke-Ps2Exe "$env:ProgramFiles\RustDesk\urlhandler.ps1" "$env:ProgramFiles\RustDesk\RustDeskURLLauncher.exe" > null - - # Cleanup Tempfiles - Remove-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null - cd $env:Temp - Remove-Item $env:Temp\rustdesk -Recurse > null - Remove-Item $env:Temp\rustdesk.zip > null +if ($arrService -eq $null) +{ + echo "Installing service." + cd $env:ProgramFiles\RustDesk + Start-Process .\rustdesk.exe --install-service -wait -Verbose + Start-Sleep -Seconds 20 } -# Write config -$RustDesk2_toml = @" -rendezvous_server = 'wanipreg' -nat_type = 1 -serial = 0 - -[options] -custom-rendezvous-server = 'wanipreg' -key = 'keyreg' -relay-server = 'wanipreg' -api-server = 'https://wanipreg' -enable-audio = 'N' -direct-server = 'Y' -"@ - -If (!(Test-Path $env:AppData\RustDesk\config\RustDesk2.toml)) { - New-Item $env:AppData\RustDesk\config\RustDesk2.toml > null -} -Set-Content $env:AppData\RustDesk\config\RustDesk2.toml $RustDesk2_toml > null - -If (!(Test-Path $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml)) { - New-Item $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml > null -} -Set-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml $RustDesk2_toml > null - -$random_pass = (-join ((65..90) + (97..122) | Get-Random -Count 8 | % {[char]$_})) -Start-Process "$env:ProgramFiles\RustDesk\RustDesk.exe" -argumentlist "--password $random_pass" -wait - -# Get RustDesk ID -If (!("$env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml")) { - $rustdesk_id = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") }) - $rustdesk_id = $rustdesk_id.Split("'")[1] - $rustdesk_pw = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") }) - $rustdesk_pw = $rustdesk_pw.Split("'")[1] - Write-Output("Config file found in user folder") - OutputIDandPW $rustdesk_id $rustdesk_pw -} Else { - $rustdesk_id = (Get-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") }) - $rustdesk_id = $rustdesk_id.Split("'")[1] - $rustdesk_pw = (Get-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") }) - $rustdesk_pw = $rustdesk_pw.Split("'")[1] - Write-Output "Config file found in windows service folder" - OutputIDandPW $rustdesk_id $rustdesk_pw +while ($arrService.Status -ne 'Running') +{ + Start-Service $ServiceName + Start-Sleep -seconds 5 + $arrService.Refresh() } -Stop-Process -Name RustDesk -Force > null -Start-Service -Name RustDesk > null +# Waits for installation to complete before proceeding. +echo "Please wait a few seconds." +Start-Sleep -Seconds 10 + +cd $env:ProgramFiles\RustDesk +echo "Inputting configuration now." +.\rustdesk.exe --config $rustdesk_cfg +.\rustdesk.exe --password $rustdesk_pw +$rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id +echo "All done! Please double check the Network settings tab in RustDesk." +echo "" +echo "..............................................." +# Show the value of the ID Variable +echo "RustDesk ID: $rustdesk_id" + +# Show the value of the Password Variable +echo "Password: $rustdesk_pw" +echo "..............................................." +echo "" +echo "Press Enter to open RustDesk." +pause +.\rustdesk.exe diff --git a/linuxclientinstall.sh b/linuxclientinstall.sh index 21b2b5a..387b2ab 100644 --- a/linuxclientinstall.sh +++ b/linuxclientinstall.sh @@ -1,10 +1,20 @@ #!/bin/bash -uname=$(whoami) -admintoken=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c8) +# Assign a random value to the password variable +rustdesk_pw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1) +# Get your config string from your Web portal and Fill Below +rustdesk_cfg="secure-string" -# identify OS +################################### Please Do Not Edit Below This Line ######################################### + +# Check if the script is being run as root +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root." + exit 1 +fi + +# Identify OS if [ -f /etc/os-release ]; then # freedesktop.org and systemd . /etc/os-release @@ -18,7 +28,6 @@ if [ -f /etc/os-release ]; then UPSTREAM_ID="$(echo ${ID_LIKE,,} | sed s/\"//g | cut -d' ' -f1)" fi - elif type lsb_release >/dev/null 2>&1; then # linuxbase.org OS=$(lsb_release -si) @@ -29,13 +38,13 @@ elif [ -f /etc/lsb-release ]; then OS=$DISTRIB_ID VER=$DISTRIB_RELEASE elif [ -f /etc/debian_version ]; then - # Older Debian/Ubuntu/etc. + # Older Debian, Ubuntu, etc. OS=Debian VER=$(cat /etc/debian_version) -elif [ -f /etc/SuSe-release ]; then - # Older SuSE/etc. +elif [ -f /etc/SuSE-release ]; then + # Older SuSE etc. OS=SuSE - VER=$(cat /etc/SuSe-release) + VER=$(cat /etc/SuSE-release) elif [ -f /etc/redhat-release ]; then # Older Red Hat, CentOS, etc. OS=RedHat @@ -46,14 +55,21 @@ else VER=$(uname -r) fi -# Install Rustdesk -echo "Installing Rustdesk" -if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then - wget https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9.deb - sudo apt install -fy ./rustdesk-1.1.9.deb -elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "${UPSTREAM_ID}" = "rhel" ] ; then - wget https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9.rpm - sudo yum localinstall ./rustdesk-1.1.9.rpm +# Checks the latest version of RustDesk +RDLATEST=$(curl https://api.github.com/repos/rustdesk/rustdesk/releases/latest -s | grep "tag_name" | awk -F'"' '{print $4}') + +# Install RustDesk + +echo "Installing RustDesk" +if [ "${ID}" = "debian" ] || [ "$OS" = "Ubuntu" ] || [ "$OS" = "Debian" ] || [ "${UPSTREAM_ID}" = "ubuntu" ] || [ "${UPSTREAM_ID}" = "debian" ]; then + wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}-x86_64.deb + apt-get install -fy ./rustdesk-${RDLATEST}-x86_64.deb >/dev/null +elif [ "$OS" = "CentOS" ] || [ "$OS" = "RedHat" ] || [ "$OS" = "Fedora Linux" ] || [ "${UPSTREAM_ID}" = "rhel" ]; then + wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}.x86_64.rpm + yum localinstall ./rustdesk-${RDLATEST}.x86_64.rpm -y >/dev/null +elif [ "${UPSTREAM_ID}" = "suse" ]; then + wget https://github.com/rustdesk/rustdesk/releases/download/${RDLATEST}/rustdesk-${RDLATEST}.x86_64-suse.rpm + zypper -n install --allow-unsigned-rpm ./rustdesk-${RDLATEST}.x86_64-suse.rpm >/dev/null else echo "Unsupported OS" # here you could ask the user for permission to try and install anyway @@ -62,51 +78,26 @@ else exit 1 fi -rustdesk --password ${admintoken} -sudo pkill -f "rustdesk" +# Run the rustdesk command with --get-id and store the output in the rustdesk_id variable +rustdesk_id=$(rustdesk --get-id) -# Setup Rustdesk in user profile -rustdesktoml2a="$(cat << EOF -rendezvous_server = 'wanipreg' -nat_type = 1 -serial = 3 +# Apply new password to RustDesk +rustdesk --password $rustdesk_pw &> /dev/null -[options] -rendezvous-servers = 'rs-ny.rustdesk.com,rs-sg.rustdesk.com,rs-cn.rustdesk.com' -key = 'keyreg' -custom-rendezvous-server = 'wanipreg' -api-server = 'https://wanipreg' -relay-server = 'wanipreg' -EOF -)" -echo "${rustdesktoml2a}" | sudo tee /home/${uname}/.config/rustdesk/RustDesk2.toml > /dev/null +rustdesk --config $rustdesk_cfg -# Setup Rustdesk in root profile -rustdesktoml2b="$(cat << EOF -rendezvous_server = 'wanipreg' -nat_type = 1 -serial = 3 +systemctl restart rustdesk -[options] -rendezvous-servers = 'rs-ny.rustdesk.com,rs-sg.rustdesk.com,rs-cn.rustdesk.com' -key = 'keyreg' -custom-rendezvous-server = 'wanipreg' -api-server = 'https://wanipreg' -relay-server = 'wanipreg' -direct-server = 'Y' -EOF -)" -echo "${rustdesktoml2b}" | sudo tee /root/.config/rustdesk/RustDesk2.toml > /dev/null +echo "All done! Please double check the Network settings tab in RustDesk." +echo "" +echo "..............................................." +# Check if the rustdesk_id is not empty +if [ -n "$rustdesk_id" ]; then + echo "RustDesk ID: $rustdesk_id" +else + echo "Failed to get RustDesk ID." +fi -sudo chown ${uname}:${uname} /home/${uname}/.config/rustdesk/RustDesk2.toml - - -sudo systemctl restart rustdesk - -echo "ID & Password for Rustdesk ${uname} are:" -grep -w id /home/${uname}/.config/rustdesk/RustDesk.toml -grep -w password /home/${uname}/.config/rustdesk/RustDesk.toml - -echo "ID & Password for Rustdesk (root) are:" -sudo grep -w id /root/.config/rustdesk/RustDesk.toml -sudo grep -w password /root/.config/rustdesk/RustDesk.toml +# Echo the value of the password variable +echo "Password: $rustdesk_pw" +echo "..............................................."