From 6500badcdaf8b527a3482db11eab83f60ed86230 Mon Sep 17 00:00:00 2001 From: "Satur@it-depot.ru" Date: Tue, 18 Feb 2025 17:23:16 +0300 Subject: [PATCH] install-script --- RustInstall.ps1 | 205 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 RustInstall.ps1 diff --git a/RustInstall.ps1 b/RustInstall.ps1 new file mode 100644 index 0000000..1089a40 --- /dev/null +++ b/RustInstall.ps1 @@ -0,0 +1,205 @@ +$ErrorActionPreference= 'silentlycontinue' + +# Assign the value random password to the password variable +$rustdesk_pw='p986xb78' + +# Get your config string from your Web portal and Fill Below +$rustdesk_cfg="0nI1JnL09GclRWL0lmL0NXdy9yL6MHc0RHaiojIpBXYiwiI9gjYwBjbXVERFRXZiNEVYBjRGdHUZhUUvBVRx52dWlmenlTY6t0U1IlMLhlI6ISeltmIsISdy5CdvBXZk1Cdp5CdzVnciojI5FGblJnIsISdy5CdvBXZk1Cdp5CdzVnciojI0N3boJye" + +################################### 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; + } +} + +# 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 +$RDLATEST = $realTagUrl.split('/')[-1].Trim('v') +echo "RustDesk $RDLATEST is the latest version." + +# 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 + +# Добавляем параметры в конфигурационные файлы +$configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config" +$config2Path = "$configPath\RustDesk2.toml" +$configLocalPath = "$configPath\RustDesk_local.toml" + +# Создаем директорию config если она не существует +if (!(Test-Path $configPath)) { + New-Item -ItemType Directory -Force -Path $configPath +} + +# Добавляем параметр в RustDesk2.toml +if (!(Test-Path $config2Path)) { + "[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8 +} else { + $content = Get-Content $config2Path + if (!($content -match "allow-remote-config-modification")) { + if ($content -match "\[options\]") { + $content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'" + } else { + $content += "`n[options]`nallow-remote-config-modification = 'Y'" + } + $content | Out-File -FilePath $config2Path -Encoding utf8 + } +} + +# Добавляем параметр в RustDesk_local.toml +if (!(Test-Path $configLocalPath)) { + "[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8 +} else { + $content = Get-Content $configLocalPath + if (!($content -match "theme")) { + if ($content -match "\[options\]") { + $content = $content -replace "\[options\]", "[options]`ntheme = 'dark'" + } else { + $content += "`n[options]`ntheme = 'dark'" + } + $content | Out-File -FilePath $configLocalPath -Encoding utf8 + } +} + +$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 C:\ProgramData\RustDesk)) { + New-Item -ItemType Directory -Force -Path C:\ProgramData\RustDesk > null +} + +cd C:\ProgramData\RustDesk +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 + +$ServiceName = 'rustdesk' +$arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue + +if ($arrService -eq $null) +{ + echo "Installing service." + cd $env:ProgramFiles\RustDesk + Start-Process .\rustdesk.exe --install-service -wait -Verbose + Start-Sleep -Seconds 20 +} + +while ($arrService.Status -ne 'Running') +{ + Start-Service $ServiceName + Start-Sleep -seconds 5 + $arrService.Refresh() +} + +# Waits for installation to complete before proceeding. +echo "Please wait a few seconds." +Start-Sleep -Seconds 10 + +# Удаляем временные файлы после установки +Remove-Item -Path "C:\ProgramData\RustDesk\rustdesk.exe" -Force +echo "Temporary installation files have been cleaned up." + +cd $env:ProgramFiles\RustDesk +echo "Inputting configuration now." +.\rustdesk.exe --config $rustdesk_cfg +.\rustdesk.exe --password $rustdesk_pw + +# Добавляем параметры в конфигурационные файлы +$configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config" +$config2Path = "$configPath\RustDesk2.toml" +$configLocalPath = "$configPath\RustDesk_local.toml" + +# Создаем директорию config если она не существует +if (!(Test-Path $configPath)) { + New-Item -ItemType Directory -Force -Path $configPath +} + +# Добавляем параметр в RustDesk2.toml +if (!(Test-Path $config2Path)) { + "[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8 +} else { + $content = Get-Content $config2Path + if (!($content -match "allow-remote-config-modification")) { + if ($content -match "\[options\]") { + $content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'" + } else { + $content += "`n[options]`nallow-remote-config-modification = 'Y'" + } + $content | Out-File -FilePath $config2Path -Encoding utf8 + } +} + +# Добавляем параметр в RustDesk_local.toml +if (!(Test-Path $configLocalPath)) { + "[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8 +} else { + $content = Get-Content $configLocalPath + if (!($content -match "theme")) { + if ($content -match "\[options\]") { + $content = $content -replace "\[options\]", "[options]`ntheme = 'dark'" + } else { + $content += "`n[options]`ntheme = 'dark'" + } + $content | Out-File -FilePath $configLocalPath -Encoding utf8 + } +} + +$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 +$RustID = $rustdesk_id +$ComputerName = $env:COMPUTERNAME +$InstallTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" + +# URL сервера +$ServerURL = "http://rust.it-depot.ru:6661/api/install" + +# Формируем JSON +$Body = @{ + "rust_id" = $RustID + "computer_name" = $ComputerName + "install_time" = $InstallTime +} | ConvertTo-Json -Compress + +# Отправляем POST-запрос +Invoke-RestMethod -Uri $ServerURL -Method Post -Body $Body -ContentType "application/json" +echo "..............................................." +echo "" +echo "Press Enter to open RustDesk." +pause +.\rustdesk.exe