From c1bddd22d57e97a4a5e9074a522b38b1cccc1631 Mon Sep 17 00:00:00 2001 From: Ralf-Peter Wolff Date: Mon, 4 May 2026 12:23:49 +0200 Subject: [PATCH] Add build-windows: compile upterm from source via Go, no Scoop needed --- build-windows.ps1 | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 build-windows.ps1 diff --git a/build-windows.ps1 b/build-windows.ps1 new file mode 100644 index 0000000..e47ae6d --- /dev/null +++ b/build-windows.ps1 @@ -0,0 +1,116 @@ +# TLS aktivieren +[Net.ServicePointManager]::SecurityProtocol = ` + [Net.SecurityProtocolType]::Tls12 -bor ` + [Net.SecurityProtocolType]::Tls11 -bor ` + [Net.SecurityProtocolType]::Tls + +# Adminrechte pruefen und ggf. neu starten +$isAdmin = ([Security.Principal.WindowsPrincipal] ` + [Security.Principal.WindowsIdentity]::GetCurrent() ` +).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) + +if (-not $isAdmin) { + Start-Process powershell.exe ` + "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" ` + -Verb RunAs + exit +} + +Write-Host "============================================================" +Write-Host " upterm Build-Setup (Go from Source)" +Write-Host "============================================================" +Write-Host "" + +# Hilfsfunktion: Datei herunterladen mit SSL-Bypass-Fallback +function Download-File($url, $dest) { + try { + (New-Object System.Net.WebClient).DownloadFile($url, $dest) + return $true + } catch {} + Write-Host " Standard-Download fehlgeschlagen, versuche SSL-Bypass..." + $cb = [Net.ServicePointManager]::ServerCertificateValidationCallback + [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} + try { + (New-Object System.Net.WebClient).DownloadFile($url, $dest) + return $true + } catch { + Write-Host "FEHLER: Download fehlgeschlagen: $_" + return $false + } finally { + [Net.ServicePointManager]::ServerCertificateValidationCallback = $cb + } +} + +# 1. Go pruefen / installieren +Write-Host "[1/3] Pruefe Go..." +$goExe = "C:\Go\bin\go.exe" +if (-not (Test-Path $goExe)) { + $goVersion = "1.22.4" + $goMsi = "$env:TEMP\go-installer.msi" + $goUrl = "https://golang.org/dl/go$goVersion.windows-amd64.msi" + + Write-Host " Go nicht gefunden - lade go$goVersion herunter..." + if (-not (Download-File $goUrl $goMsi)) { + Read-Host "Enter zum Beenden"; exit 1 + } + Write-Host " Installiere Go (MSI silent)..." + $p = Start-Process msiexec.exe -ArgumentList "/i `"$goMsi`" /quiet /norestart" ` + -Wait -PassThru + if ($p.ExitCode -ne 0) { + Write-Host "FEHLER: Go-Installation fehlgeschlagen (Exit $($p.ExitCode))." + Read-Host "Enter zum Beenden"; exit 1 + } + Remove-Item $goMsi -ErrorAction SilentlyContinue +} + +# Go in PATH dieser Session +if ($env:PATH -notlike "*C:\Go\bin*") { + $env:PATH = "$env:PATH;C:\Go\bin" +} +$goVer = & "$goExe" version 2>&1 +Write-Host " OK ($goVer)" + +# 2. upterm bauen via go install +Write-Host "[2/3] Baue upterm (go install)..." +$env:GOPATH = "$env:USERPROFILE\go" +if ($env:PATH -notlike "*$env:GOPATH\bin*") { + $env:PATH = "$env:PATH;$env:GOPATH\bin" +} +try { + & "$goExe" install github.com/owenthereal/upterm/cmd/upterm@latest +} catch { + Write-Host "FEHLER: go install fehlgeschlagen: $_" + Read-Host "Enter zum Beenden"; exit 1 +} + +$uptermExe = "$env:USERPROFILE\go\bin\upterm.exe" +if (-not (Test-Path $uptermExe)) { + Write-Host "FEHLER: upterm.exe nicht gefunden nach Build." + Read-Host "Enter zum Beenden"; exit 1 +} +Write-Host " OK ($uptermExe)" + +# 3. Binary systemweit verfuegbar machen +Write-Host "[3/3] Kopiere upterm.exe nach C:\Windows\System32..." +try { + Copy-Item $uptermExe "C:\Windows\System32\upterm.exe" -Force + Write-Host " OK - upterm steht allen Nutzern zur Verfuegung" +} catch { + Write-Host " Hinweis: Kopieren fehlgeschlagen - upterm ist nur unter:" + Write-Host " $uptermExe" + Write-Host " verfuegbar (PATH-Eintrag manuell noetig)" +} + +Write-Host "" +Write-Host "============================================================" +Write-Host " Build abgeschlossen!" +Write-Host "============================================================" +Write-Host "" +Write-Host " PowerShell NEU STARTEN, dann Session teilen mit:" +Write-Host "" +Write-Host " upterm host --server ssh://upterm.ebesch.de:2222 --accept" +Write-Host "" +Write-Host " Client verbindet sich mit:" +Write-Host " ssh TOKEN:HASH@upterm.ebesch.de -p 2222" +Write-Host "" +Read-Host "Enter zum Beenden"