Initial Commit
This commit is contained in:
68
README.md
68
README.md
@@ -1,11 +1,75 @@
|
|||||||
# template_repository
|
# RustDesk Startscripte – Techniverse Fernwartung
|
||||||
|
|
||||||
|
Startscripte für [RustDesk](https://rustdesk.com/), vorkonfiguriert für den **Techniverse Fernwartungsserver**.
|
||||||
|
Der Endnutzer erhält ein einfaches Script, das RustDesk startet, den Server konfiguriert und nach Beendigung alles sauber aufräumt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scripte im Überblick
|
||||||
|
|
||||||
Wichtig: Link für Lizenz anpassen.
|
| Script | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| `START Rustdesk lokal.cmd` | Startet eine **lokal vorhandene** `rustdesk.exe` mit Techniverse-Serverkonfiguration. |
|
||||||
|
| `START Rustdesk Online-DL.cmd` | Lädt die **neueste RustDesk-Version** von GitHub herunter, konfiguriert und startet sie. Der Nutzer braucht nur diese eine Datei. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schnellstart
|
||||||
|
|
||||||
|
### Variante 1 – Lokal (offline-fähig)
|
||||||
|
|
||||||
|
1. `rustdesk.exe` neben das Script `START Rustdesk lokal.cmd` legen.
|
||||||
|
2. Script per Doppelklick starten.
|
||||||
|
3. Die angezeigte **ID** und das **Einmalpasswort** dem Techniverse-Support mitteilen.
|
||||||
|
4. RustDesk schließen – das Script räumt automatisch auf.
|
||||||
|
|
||||||
|
### Variante 2 – Online-Download
|
||||||
|
|
||||||
|
1. `START Rustdesk Online-DL.cmd` per Doppelklick starten.
|
||||||
|
2. Das Script lädt RustDesk automatisch von GitHub herunter.
|
||||||
|
3. Die angezeigte **ID** und das **Einmalpasswort** dem Techniverse-Support mitteilen.
|
||||||
|
4. RustDesk schließen – das Script räumt automatisch auf (inkl. Download).
|
||||||
|
|
||||||
|
> **Hinweis:** Für die Online-Variante wird eine Internetverbindung benötigt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Funktionsweise (Kurzfassung)
|
||||||
|
|
||||||
|
Beide Scripte führen folgende Schritte aus:
|
||||||
|
|
||||||
|
1. Bestehende RustDesk-Konfiguration sichern (Backup)
|
||||||
|
2. Techniverse-Serverkonfiguration schreiben
|
||||||
|
3. RustDesk starten
|
||||||
|
4. Warten, bis der Nutzer RustDesk schließt
|
||||||
|
5. Konfiguration wiederherstellen / aufräumen
|
||||||
|
|
||||||
|
Technische Details findest du in der [Dokumentation](docs/TECHNIK.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voraussetzungen
|
||||||
|
|
||||||
|
- **Windows 10** oder neuer (ANSI-Farbcodes werden genutzt)
|
||||||
|
- Online-Variante: PowerShell 5.1+, Internetzugang, TLS 1.2
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Konfiguration anpassen
|
||||||
|
|
||||||
|
Die Serverdaten können in beiden Scripten im Abschnitt **KONFIGURATION** geändert werden:
|
||||||
|
|
||||||
|
| Parameter | Beschreibung |
|
||||||
|
|---|---|
|
||||||
|
| `SERVER` / `$srv` | Rendezvous- und Relay-Server-Adresse |
|
||||||
|
| `KEY` / `$key` | Öffentlicher Schlüssel des Servers |
|
||||||
|
| `API_SERVER` / `$api` | Optionaler API-Server (leer lassen wenn nicht benötigt) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lizenz
|
||||||
|
|
||||||
|
[MIT License](./LICENSE) – © 2026 Patrick Asmus
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||||||
|
|||||||
151
START Rustdesk Online-DL.cmd
Normal file
151
START Rustdesk Online-DL.cmd
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
@echo off
|
||||||
|
:: Techniverse Fernwartung - Online Version
|
||||||
|
:: Laedt RustDesk direkt von GitHub, konfiguriert den Server und startet
|
||||||
|
:: Der Nutzer braucht NUR diese eine Datei.
|
||||||
|
title Techniverse Fernwartung - Online
|
||||||
|
chcp 65001 >nul 2>&1
|
||||||
|
|
||||||
|
set "PS1=%TEMP%\techniverse-starter.ps1"
|
||||||
|
|
||||||
|
:: PS1 aus dem eingebetteten Block extrahieren (alles zwischen BEGIN_PS1 und END_PS1)
|
||||||
|
setlocal
|
||||||
|
set "FOUND="
|
||||||
|
(for /f "usebackq delims=" %%a in ("%~f0") do (
|
||||||
|
if defined FOUND (
|
||||||
|
if "%%a"==":: END_PS1" (goto :run_ps1)
|
||||||
|
echo(%%a
|
||||||
|
)
|
||||||
|
if "%%a"==":: BEGIN_PS1" set "FOUND=1"
|
||||||
|
)) > "%PS1%"
|
||||||
|
|
||||||
|
:run_ps1
|
||||||
|
endlocal
|
||||||
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%PS1%"
|
||||||
|
del "%PS1%" >nul 2>&1
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: BEGIN_PS1
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$Host.UI.RawUI.WindowTitle = 'Techniverse Fernwartung'
|
||||||
|
|
||||||
|
# ========================== KONFIGURATION ===========================
|
||||||
|
# Server-Adresse (Rendezvous + Relay)
|
||||||
|
$srv = 'fernwartung.techniverse.net'
|
||||||
|
# Oeffentlicher Schluessel des Servers
|
||||||
|
$key = 'uE3lJCcnk21qN0VUdqtwJG6QAnpahdB5b2gVe40oMbU='
|
||||||
|
# API-Server (optional) - Nur setzen wenn ein eigener API-Server vorhanden ist
|
||||||
|
# Beispiel: $api = 'api.beispiel.de'
|
||||||
|
$api = ''
|
||||||
|
# ====================================================================
|
||||||
|
|
||||||
|
$tmp = Join-Path $env:TEMP 'techniverse-fernwartung'
|
||||||
|
$cfgDir = Join-Path $env:APPDATA 'RustDesk\config'
|
||||||
|
$cfg2 = Join-Path $cfgDir 'RustDesk2.toml'
|
||||||
|
$cfg2Bak = Join-Path $cfgDir 'RustDesk2.toml.techniverse-bak'
|
||||||
|
$installDir = Join-Path $env:LOCALAPPDATA 'rustdesk'
|
||||||
|
$hadBackup = $false
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host ' ==============================================' -F DarkCyan
|
||||||
|
Write-Host ' Techniverse Fernwartung (Online)' -F DarkCyan
|
||||||
|
Write-Host ' ==============================================' -F DarkCyan
|
||||||
|
Write-Host ''
|
||||||
|
|
||||||
|
Get-Process rustdesk* -EA 0 | Stop-Process -Force -EA 0
|
||||||
|
Start-Sleep 2
|
||||||
|
|
||||||
|
New-Item -ItemType Directory $tmp -Force | Out-Null
|
||||||
|
$exe = Join-Path $tmp 'rustdesk.exe'
|
||||||
|
|
||||||
|
Write-Host " [1/4] Ermittle aktuelle RustDesk-Version..." -F White
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
$ProgressPreference = 'SilentlyContinue'
|
||||||
|
$rel = Invoke-RestMethod -Uri 'https://api.github.com/repos/rustdesk/rustdesk/releases/latest' -UseBasicParsing
|
||||||
|
$ver = $rel.tag_name -replace '^v',''
|
||||||
|
$asset = $rel.assets | Where-Object { $_.name -like 'rustdesk-*-x86_64.exe' } | Select-Object -First 1
|
||||||
|
if (-not $asset) { throw 'Kein passender Download fuer x86_64 im neuesten Release gefunden.' }
|
||||||
|
$url = $asset.browser_download_url
|
||||||
|
Write-Host " Aktuelle Version: $ver" -F DarkGray
|
||||||
|
Write-Host " $url" -F DarkGray
|
||||||
|
Write-Host ' (Das kann einen Moment dauern...)' -F DarkGray
|
||||||
|
Invoke-WebRequest -Uri $url -OutFile $exe -UseBasicParsing
|
||||||
|
$ProgressPreference = 'Continue'
|
||||||
|
if (-not (Test-Path $exe)) { throw 'Download fehlgeschlagen' }
|
||||||
|
$mb = [math]::Round((Get-Item $exe).Length/1MB,1)
|
||||||
|
Write-Host " Heruntergeladen: $mb MB" -F DarkGray
|
||||||
|
|
||||||
|
Write-Host ' [2/4] Sichere bestehende Konfiguration...' -F White
|
||||||
|
New-Item -ItemType Directory $cfgDir -Force | Out-Null
|
||||||
|
if (Test-Path $cfg2) {
|
||||||
|
Copy-Item $cfg2 $cfg2Bak -Force
|
||||||
|
$hadBackup = $true
|
||||||
|
Write-Host ' Backup erstellt.' -F DarkGray
|
||||||
|
} else {
|
||||||
|
Write-Host ' Keine bestehende Konfiguration.' -F DarkGray
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ' [3/4] Konfiguriere Server...' -F White
|
||||||
|
$toml = @"
|
||||||
|
rendezvous_server = "$srv"
|
||||||
|
nat_type = 1
|
||||||
|
serial = 0
|
||||||
|
|
||||||
|
[options]
|
||||||
|
custom-rendezvous-server = "$srv"
|
||||||
|
relay-server = "$srv"
|
||||||
|
key = "$key"
|
||||||
|
"@
|
||||||
|
if ($api) { $toml += "`napi-server = `"$api`"" }
|
||||||
|
Set-Content -Path $cfg2 -Value $toml -Encoding UTF8
|
||||||
|
|
||||||
|
Write-Host ' [4/4] Starte RustDesk...' -F White
|
||||||
|
Start-Process $exe
|
||||||
|
Write-Host ' Warte auf Start...' -F DarkGray
|
||||||
|
Start-Sleep 8
|
||||||
|
if (-not (Get-Process rustdesk* -EA 0)) { throw 'RustDesk konnte nicht gestartet werden.' }
|
||||||
|
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host ' ==============================================' -F DarkCyan
|
||||||
|
Write-Host ' RustDesk laeuft.' -F White
|
||||||
|
Write-Host ' Teile deine ID mit dem Techniverse-Support.' -F White
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host ' Schliesse RustDesk um die Sitzung zu beenden.' -F DarkYellow
|
||||||
|
Write-Host ' Dieses Fenster NICHT schliessen.' -F Red
|
||||||
|
Write-Host ' ==============================================' -F DarkCyan
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host ' !! ACHTUNG - BETRUGSWARNUNG !!' -F Red
|
||||||
|
Write-Host ' Teile deine ID und dein Einmalpasswort' -F DarkYellow
|
||||||
|
Write-Host ' NUR mit Personen, denen du vertraust!' -F DarkYellow
|
||||||
|
Write-Host ' RustDesk wird haeufig fuer Betrug missbraucht.' -F DarkYellow
|
||||||
|
Write-Host ' Techniverse wird dich NIE unaufgefordert' -F DarkYellow
|
||||||
|
Write-Host ' nach deiner ID oder deinem Passwort fragen.' -F DarkYellow
|
||||||
|
Write-Host ''
|
||||||
|
do { Start-Sleep 2 } while (Get-Process rustdesk* -EA 0)
|
||||||
|
|
||||||
|
} catch {
|
||||||
|
Write-Host "`n FEHLER: $_" -F Red
|
||||||
|
Write-Host ' Bitte kontaktiere den Techniverse-Support.' -F DarkYellow
|
||||||
|
Write-Host ''
|
||||||
|
Read-Host ' Druecke Enter zum Beenden'
|
||||||
|
} finally {
|
||||||
|
Write-Host "`n Raeume auf..." -F DarkYellow
|
||||||
|
Get-Process rustdesk* -EA 0 | Stop-Process -Force -EA 0
|
||||||
|
Start-Sleep 3
|
||||||
|
if (Test-Path $cfg2Bak) {
|
||||||
|
Copy-Item $cfg2Bak $cfg2 -Force
|
||||||
|
Remove-Item $cfg2Bak -Force -EA 0
|
||||||
|
} elseif (Test-Path $cfg2) {
|
||||||
|
Remove-Item $cfg2 -Force -EA 0
|
||||||
|
}
|
||||||
|
if (Test-Path $installDir) { Remove-Item $installDir -Recurse -Force -EA 0 }
|
||||||
|
if (-not $hadBackup) {
|
||||||
|
$rdAD = Join-Path $env:APPDATA 'RustDesk'
|
||||||
|
if (Test-Path $rdAD) { Remove-Item $rdAD -Recurse -Force -EA 0 }
|
||||||
|
}
|
||||||
|
if (Test-Path $tmp) { Remove-Item $tmp -Recurse -Force -EA 0 }
|
||||||
|
Write-Host ' Aufgeraeumt. Bis zum naechsten Mal.' -F DarkGreen
|
||||||
|
Start-Sleep 3
|
||||||
|
}
|
||||||
|
:: END_PS1
|
||||||
|
|
||||||
165
START Rustdesk lokal.cmd
Normal file
165
START Rustdesk lokal.cmd
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul 2>&1
|
||||||
|
title Techniverse Fernwartung
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
:: ============================================================
|
||||||
|
:: Techniverse Fernwartung - RustDesk Portable Starter
|
||||||
|
:: Startet RustDesk mit vorkonfiguriertem Server
|
||||||
|
:: Räumt nach dem Beenden alles auf
|
||||||
|
:: ============================================================
|
||||||
|
|
||||||
|
:: ========================== KONFIGURATION ===========================
|
||||||
|
:: Server-Adresse (Rendezvous + Relay)
|
||||||
|
set "SERVER=fernwartung.techniverse.net"
|
||||||
|
:: Öffentlicher Schlüssel des Servers
|
||||||
|
set "KEY=uE3lJCcnk21qN0VUdqtwJG6QAnpahdB5b2gVe40oMbU="
|
||||||
|
:: API-Server (optional) - Nur setzen wenn ein eigener API-Server vorhanden ist
|
||||||
|
:: Beispiel: set "API_SERVER=api.beispiel.de"
|
||||||
|
set "API_SERVER="
|
||||||
|
:: ====================================================================
|
||||||
|
|
||||||
|
:: ANSI-Farbcodes definieren (Windows 10+)
|
||||||
|
for /f %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
|
||||||
|
set "CYAN=%ESC%[36m"
|
||||||
|
set "WHITE=%ESC%[97m"
|
||||||
|
set "GRAY=%ESC%[90m"
|
||||||
|
set "YELLOW=%ESC%[33m"
|
||||||
|
set "RED=%ESC%[91m"
|
||||||
|
set "GREEN=%ESC%[32m"
|
||||||
|
set "RESET=%ESC%[0m"
|
||||||
|
|
||||||
|
set "RUSTDESK_EXE=%~dp0rustdesk.exe"
|
||||||
|
set "CONFIGDIR=%APPDATA%\RustDesk\config"
|
||||||
|
set "CONFIG2=%CONFIGDIR%\RustDesk2.toml"
|
||||||
|
set "CONFIG2_BAK=%CONFIGDIR%\RustDesk2.toml.techniverse-bak"
|
||||||
|
set "INSTALLDIR=%LOCALAPPDATA%\rustdesk"
|
||||||
|
|
||||||
|
:: Prüfe ob die RustDesk EXE vorhanden ist
|
||||||
|
if not exist "%RUSTDESK_EXE%" (
|
||||||
|
echo.
|
||||||
|
echo %RED%FEHLER: rustdesk.exe nicht gefunden.%RESET%
|
||||||
|
echo %YELLOW%Bitte lege diese Datei neben %~nx0%RESET%
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo %CYAN%══════════════════════════════════════════════%RESET%
|
||||||
|
echo %CYAN% Techniverse Fernwartung%RESET%
|
||||||
|
echo %CYAN%══════════════════════════════════════════════%RESET%
|
||||||
|
echo.
|
||||||
|
echo %WHITE%RustDesk wird vorbereitet...%RESET%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: Eventuell laufende RustDesk-Instanzen beenden
|
||||||
|
taskkill /f /im rustdesk.exe >nul 2>&1
|
||||||
|
timeout /t 2 /nobreak >nul
|
||||||
|
|
||||||
|
:: Config-Verzeichnis erstellen falls nicht vorhanden
|
||||||
|
mkdir "%CONFIGDIR%" >nul 2>&1
|
||||||
|
|
||||||
|
:: Bestehende Config sichern (falls vorhanden)
|
||||||
|
echo %WHITE%[1/3] Sichere bestehende Konfiguration...%RESET%
|
||||||
|
if exist "%CONFIG2%" (
|
||||||
|
copy /y "%CONFIG2%" "%CONFIG2_BAK%" >nul
|
||||||
|
echo %GRAY%Backup erstellt.%RESET%
|
||||||
|
) else (
|
||||||
|
echo %GRAY%Keine bestehende Konfiguration gefunden.%RESET%
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Server-Konfiguration schreiben
|
||||||
|
echo %WHITE%[2/3] Konfiguriere Techniverse-Server...%RESET%
|
||||||
|
(
|
||||||
|
echo rendezvous_server = "%SERVER%"
|
||||||
|
echo nat_type = 1
|
||||||
|
echo serial = 0
|
||||||
|
echo.
|
||||||
|
echo [options]
|
||||||
|
echo custom-rendezvous-server = "%SERVER%"
|
||||||
|
echo relay-server = "%SERVER%"
|
||||||
|
echo key = "%KEY%"
|
||||||
|
) > "%CONFIG2%"
|
||||||
|
if defined API_SERVER (
|
||||||
|
echo api-server = "%API_SERVER%" >> "%CONFIG2%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:: RustDesk starten
|
||||||
|
echo %WHITE%[3/3] Starte RustDesk...%RESET%
|
||||||
|
start "" "%RUSTDESK_EXE%"
|
||||||
|
|
||||||
|
:: Warte kurz bis RustDesk sich initialisiert hat
|
||||||
|
echo %GRAY%Warte auf RustDesk-Start...%RESET%
|
||||||
|
timeout /t 8 /nobreak >nul
|
||||||
|
|
||||||
|
:: Prüfe ob RustDesk tatsächlich läuft
|
||||||
|
tasklist /fi "imagename eq rustdesk.exe" 2>nul | find /i "rustdesk.exe" >nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo.
|
||||||
|
echo %RED%FEHLER: RustDesk konnte nicht gestartet werden.%RESET%
|
||||||
|
echo %YELLOW%Versuche es erneut oder kontaktiere den Support.%RESET%
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
goto :cleanup
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo %CYAN%══════════════════════════════════════════════%RESET%
|
||||||
|
echo %WHITE%RustDesk laeuft.%RESET%
|
||||||
|
echo %WHITE%Teile deine ID mit dem Techniverse-Support.%RESET%
|
||||||
|
echo.
|
||||||
|
echo %YELLOW%Schliesse RustDesk um die Sitzung zu beenden.%RESET%
|
||||||
|
echo %RED%Dieses Fenster NICHT schliessen.%RESET%
|
||||||
|
echo %CYAN%══════════════════════════════════════════════%RESET%
|
||||||
|
echo.
|
||||||
|
echo %RED% !! ACHTUNG - BETRUGSWARNUNG !!%RESET%
|
||||||
|
echo %YELLOW% Teile deine ID und dein Einmalpasswort%RESET%
|
||||||
|
echo %YELLOW% NUR mit Personen, denen du vertraust!%RESET%
|
||||||
|
echo %YELLOW% RustDesk wird haeufig fuer Betrug missbraucht.%RESET%
|
||||||
|
echo %YELLOW% Techniverse wird dich NIE unaufgefordert%RESET%
|
||||||
|
echo %YELLOW% nach deiner ID oder deinem Passwort fragen.%RESET%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: Warte bis alle RustDesk-Prozesse beendet sind (Polling-Schleife)
|
||||||
|
:waitloop
|
||||||
|
timeout /t 2 /nobreak >nul
|
||||||
|
tasklist /fi "imagename eq rustdesk.exe" 2>nul | find /i "rustdesk.exe" >nul
|
||||||
|
if not errorlevel 1 goto :waitloop
|
||||||
|
|
||||||
|
:cleanup
|
||||||
|
echo.
|
||||||
|
echo %YELLOW%Raeume auf...%RESET%
|
||||||
|
|
||||||
|
:: RustDesk Prozesse beenden (falls noch laufend)
|
||||||
|
taskkill /f /im rustdesk.exe >nul 2>&1
|
||||||
|
timeout /t 3 /nobreak >nul
|
||||||
|
|
||||||
|
:: Config wiederherstellen oder aufräumen
|
||||||
|
if exist "%CONFIG2_BAK%" (
|
||||||
|
echo %GRAY%Stelle urspruengliche Konfiguration wieder her...%RESET%
|
||||||
|
copy /y "%CONFIG2_BAK%" "%CONFIG2%" >nul
|
||||||
|
del "%CONFIG2_BAK%" >nul 2>&1
|
||||||
|
) else (
|
||||||
|
echo %GRAY%Entferne Fernwartungs-Konfiguration...%RESET%
|
||||||
|
del "%CONFIG2%" >nul 2>&1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: RustDesk-Installation aufräumen (entpackte Dateien)
|
||||||
|
if exist "%INSTALLDIR%" (
|
||||||
|
echo %GRAY%Entferne RustDesk-Dateien...%RESET%
|
||||||
|
rmdir /s /q "%INSTALLDIR%" >nul 2>&1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: RustDesk AppData aufräumen (nur wenn es vorher nicht installiert war)
|
||||||
|
if not exist "%CONFIG2_BAK%" (
|
||||||
|
if exist "%APPDATA%\RustDesk" (
|
||||||
|
echo %GRAY%Entferne RustDesk AppData...%RESET%
|
||||||
|
rmdir /s /q "%APPDATA%\RustDesk" >nul 2>&1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo %GREEN%Aufgeraeumt. Bis zum naechsten Mal.%RESET%
|
||||||
|
echo.
|
||||||
|
timeout /t 3 /nobreak >nul
|
||||||
|
exit /b 0
|
||||||
101
docs/TECHNIK.md
Normal file
101
docs/TECHNIK.md
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
# Technische Details
|
||||||
|
|
||||||
|
## Ablauf der Scripte
|
||||||
|
|
||||||
|
### START Rustdesk lokal.cmd
|
||||||
|
|
||||||
|
```
|
||||||
|
Batch-Script (.cmd)
|
||||||
|
│
|
||||||
|
├── Prüfe ob rustdesk.exe neben dem Script liegt
|
||||||
|
├── Beende laufende RustDesk-Instanzen (taskkill)
|
||||||
|
├── Sichere bestehende RustDesk2.toml → .techniverse-bak
|
||||||
|
├── Schreibe Server-Konfiguration in RustDesk2.toml
|
||||||
|
├── Starte rustdesk.exe
|
||||||
|
├── Warte bis Nutzer RustDesk schließt (Polling-Schleife)
|
||||||
|
└── Cleanup
|
||||||
|
├── Konfiguration aus Backup wiederherstellen (oder löschen)
|
||||||
|
├── %LOCALAPPDATA%\rustdesk entfernen
|
||||||
|
└── %APPDATA%\RustDesk entfernen (nur wenn vorher nicht vorhanden)
|
||||||
|
```
|
||||||
|
|
||||||
|
### START Rustdesk Online-DL.cmd
|
||||||
|
|
||||||
|
```
|
||||||
|
Batch-Wrapper → extrahiert eingebettetes PowerShell-Script
|
||||||
|
│
|
||||||
|
├── PowerShell-Code wird aus dem .cmd in %TEMP% extrahiert
|
||||||
|
├── Ermittle neueste RustDesk-Version via GitHub API
|
||||||
|
│ └── GET https://api.github.com/repos/rustdesk/rustdesk/releases/latest
|
||||||
|
├── Download von rustdesk-*-x86_64.exe nach %TEMP%\techniverse-fernwartung\
|
||||||
|
├── Sichere bestehende RustDesk2.toml → .techniverse-bak
|
||||||
|
├── Schreibe Server-Konfiguration in RustDesk2.toml
|
||||||
|
├── Starte rustdesk.exe
|
||||||
|
├── Warte bis Nutzer RustDesk schließt (Polling-Schleife)
|
||||||
|
└── Cleanup (im finally-Block, läuft auch bei Fehler)
|
||||||
|
├── Konfiguration aus Backup wiederherstellen (oder löschen)
|
||||||
|
├── %LOCALAPPDATA%\rustdesk entfernen
|
||||||
|
├── %APPDATA%\RustDesk entfernen (nur wenn vorher nicht vorhanden)
|
||||||
|
└── %TEMP%\techniverse-fernwartung\ entfernen
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dateipfade
|
||||||
|
|
||||||
|
| Pfad | Zweck |
|
||||||
|
|---|---|
|
||||||
|
| `%APPDATA%\RustDesk\config\RustDesk2.toml` | RustDesk-Konfigurationsdatei (Server, Key, etc.) |
|
||||||
|
| `%APPDATA%\RustDesk\config\RustDesk2.toml.techniverse-bak` | Backup der originalen Konfiguration |
|
||||||
|
| `%LOCALAPPDATA%\rustdesk\` | Von RustDesk entpackte Dateien (wird beim Cleanup entfernt) |
|
||||||
|
| `%TEMP%\techniverse-fernwartung\` | Temporärer Download-Ordner (nur Online-Variante) |
|
||||||
|
| `%TEMP%\techniverse-starter.ps1` | Temporär extrahiertes PowerShell-Script (nur Online-Variante) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Generierte Konfiguration (RustDesk2.toml)
|
||||||
|
|
||||||
|
```toml
|
||||||
|
rendezvous_server = "fernwartung.techniverse.net"
|
||||||
|
nat_type = 1
|
||||||
|
serial = 0
|
||||||
|
|
||||||
|
[options]
|
||||||
|
custom-rendezvous-server = "fernwartung.techniverse.net"
|
||||||
|
relay-server = "fernwartung.techniverse.net"
|
||||||
|
key = "uE3lJCcnk21qN0VUdqtwJG6QAnpahdB5b2gVe40oMbU="
|
||||||
|
```
|
||||||
|
|
||||||
|
Falls ein API-Server konfiguriert ist, wird zusätzlich `api-server` gesetzt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Batch/PowerShell-Hybrid (Online-Variante)
|
||||||
|
|
||||||
|
Das Online-Script nutzt einen Trick: Die `.cmd`-Datei enthält eingebetteten PowerShell-Code zwischen den Markern `:: BEGIN_PS1` und `:: END_PS1`. Der Batch-Teil extrahiert diesen Code in eine temporäre `.ps1`-Datei und führt sie aus. Dadurch braucht der Nutzer nur eine einzige Datei.
|
||||||
|
|
||||||
|
**Ausführung:** `powershell.exe -NoProfile -ExecutionPolicy Bypass -File <temp>.ps1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cleanup-Verhalten
|
||||||
|
|
||||||
|
Beide Scripte räumen nach dem Beenden von RustDesk auf:
|
||||||
|
|
||||||
|
- **Backup vorhanden:** Die originale `RustDesk2.toml` wird wiederhergestellt, das Backup gelöscht.
|
||||||
|
- **Kein Backup:** Die geschriebene `RustDesk2.toml` wird gelöscht. Zusätzlich wird der gesamte `%APPDATA%\RustDesk`-Ordner entfernt (da RustDesk vorher nicht installiert war).
|
||||||
|
- **Installationsreste:** `%LOCALAPPDATA%\rustdesk` wird immer entfernt.
|
||||||
|
- **Online-Variante:** Der Cleanup läuft im `finally`-Block und wird auch bei Fehlern ausgeführt.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Voraussetzungen im Detail
|
||||||
|
|
||||||
|
| Anforderung | Lokal | Online |
|
||||||
|
|---|---|---|
|
||||||
|
| Windows 10+ | ✅ | ✅ |
|
||||||
|
| Administratorrechte | ❌ | ❌ |
|
||||||
|
| Internetverbindung | ❌ | ✅ |
|
||||||
|
| PowerShell 5.1+ | ❌ | ✅ |
|
||||||
|
| TLS 1.2 | – | ✅ |
|
||||||
|
| rustdesk.exe im gleichen Ordner | ✅ | ❌ (wird heruntergeladen) |
|
||||||
Reference in New Issue
Block a user