Files
upterm/build-windows.ps1

120 lines
4.0 KiB
PowerShell

# TLS aktivieren (Windows Server 2016)
[Net.ServicePointManager]::SecurityProtocol = `
[Net.SecurityProtocolType]::Tls12 -bor `
[Net.SecurityProtocolType]::Tls11 -bor `
[Net.SecurityProtocolType]::Tls
# Adminrechte pruefen
$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: Download mit SSL-Bypass-Fallback
function Download-File($url, $dest) {
try {
(New-Object System.Net.WebClient).DownloadFile($url, $dest)
return $true
} catch {}
Write-Host " SSL-Bypass aktiv (Server 2016 Zertifikatskette)..."
$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 / als ZIP installieren (kein MSI = kein Exit 1603)
Write-Host "[1/3] Pruefe Go..."
$goRoot = "C:\Go"
$goExe = "$goRoot\bin\go.exe"
if (-not (Test-Path $goExe)) {
$goVersion = "1.22.4"
$goZip = "C:\Windows\Temp\go-windows.zip"
$goUrl = "https://golang.org/dl/go$goVersion.windows-amd64.zip"
Write-Host " Go nicht gefunden - lade go$goVersion (ZIP) herunter..."
if (-not (Download-File $goUrl $goZip)) {
Read-Host "Enter zum Beenden"; exit 1
}
Write-Host " Entpacke nach $goRoot ..."
if (Test-Path $goRoot) { Remove-Item -Recurse -Force $goRoot }
Expand-Archive -Path $goZip -DestinationPath "C:\" -Force
Remove-Item $goZip -ErrorAction SilentlyContinue
if (-not (Test-Path $goExe)) {
Write-Host "FEHLER: go.exe nach Entpacken nicht gefunden."
Read-Host "Enter zum Beenden"; exit 1
}
}
# Go in PATH dieser Session
if ($env:PATH -notlike "*$goRoot\bin*") {
$env:PATH = "$env:PATH;$goRoot\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. 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."
Write-Host " Binary liegt unter: $uptermExe"
}
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"