EulandaXtools — Funktionsreferenz
Startet einen lokalen Mini-HTTP/HTTPS-Webserver zum Ausliefern statischer Dateien und Bereitstellen einfacher CRUD-APIs (z.B. Partner-Verwaltung) mit optionaler Anzeige im Chrome-App-Modus.
Start-MiniWebserver [[-Protocol] <string>] [[-HostName] <string>] [[-Port] <string>]
[-RedirectToHttps] [[-RedirectFromPort] <string>] [-NoBrowser] [-NoAuth] [[-ConnStr] <string>]
[[-MailDraftId] <string>] [[-StartPage] <string>] [<CommonParameters>]Start-MiniWebserver richtet einen HttpListener auf dem angegebenen Host und Port ein und liefert Dateien (HTML, CSS, JS, JSON, Images etc.) aus dem Modul-Verzeichnis aus. Zusätzlich stehen vordefinierte Endpunkte (/partners, /partner/{name}, /ediHubs, /syntaxcheck, /shutdown) zur Verfügung, um Partner-Daten per REST (GET, PUT, POST, DELETE) zu verwalten sowie EDI-Syntaxprüfungen durchzuführen.
Statische Dateien
Dynamische Endpunkte
Sitzungs-Management
Authentifizierung (Standard, wenn -NoAuth nicht gesetzt)
Redirect HTTP → HTTPS (wenn -RedirectToHttps und -Protocol 'https' gesetzt)
Browser-App-Modus (Standard, wenn -NoBrowser nicht gesetzt)
Wildcard-Binding für LAN-Zugriff (wenn $HostName='*' oder '+')
HTTPS-Konfiguration
-Protocol
Type: string
Default: 'http'Gibt das Protokoll an ('http' oder 'https'). Standardmäßig 'http'. Wenn 'https', muss zuvor eine gültige SSL-Bindung (netsh http add sslcert) eingerichtet sein.
-HostName
Type: string
Default: 'localhost'Hostname oder IP-Adresse, auf dem/der der Server lauscht. Standard 'localhost'. Setze '*' oder '+' für Wildcard-Binding (LAN-Zugriff), erfordert aber Admin-URL-ACL.
-Port
Type: string
Default: 8080Portnummer, auf dem der HttpListener gestartet wird. Standard 8080. Bei HTTPS sollte hier üblicherweise 443 (oder ein anderer freier SSL-Port) stehen.
-RedirectToHttps
Type: switchWenn gesetzt und Protocol='https', wird zusätzlich ein HTTP-Listener auf RedirectFromPort (Standard 80) gestartet, der alle HTTP-Anfragen per 301 weiterleitet.
-RedirectFromPort
Type: string
Default: '80'Port, auf dem HTTP-Listener für Redirect lauscht. Nur relevant, wenn -RedirectToHttps und Protocol='https' gewählt. Standard ist '80'.
-NoBrowser
Type: switchUnterdrückt das automatische Öffnen von Google Chrome im App-Modus. Der Server läuft nur in der Konsole, bis er per STRG+C oder POST /shutdown beendet wird.
-NoAuth
Type: switchDeaktiviert die eingebaute Basic-/Bearer-Authentifizierung. Falls gesetzt, kann jeder Benutzer ohne Credentials auf alle Endpunkte zugreifen.
-ConnStr
Type: stringConnection-String zur Datenbank, beispielsweise: `"Server=DBServer;Database=MeinDB;User Id=...;Password=...;`. Wird benötigt für alle Partner-Funktionen wie `GET`, `PUT`. `POST` und `DELETE`-Handler (Invoke-MiniWebserver-HandleGetPartnerDetail, Invoke-MiniWebserver-HandlePutPartner, Invoke-MiniWebserver-HandleDeletePartner).
-MailDraftId
Type: string(Optional) Draft-ID einer zu bearbeitenden E-Mail. Wird vom Modul für modale E-Mail-Dialoge gesetzt. Wenn angegeben, liefert der Server automatisch die passende Draft-Datei über /drafts/{id} aus und nimmt Änderungen an /sendmail entgegen.
-StartPage
Type: string
Default: "partner.html"(Optional) Startseite, die direkt im Browser geöffnet werden soll. Standard ist 'partner.html', für den E-Mail-Dialog z.B. 'email.htm'.
# Startet lokalen HTTP-Server auf localhost:8080, öffnet Chrome im App-Modus
Start-MiniWebserver -ConnStr "Server=SQL01;Database=EDI;User Id=sa;Password=Secret123;"# Startet reinen Konsolen-Webserver ohne Browser, mit Basic-Auth deaktiviert
Start-MiniWebserver -ConnStr "Server=SQL01;Database=EDI;User Id=sa;Password=Secret123;" -NoBrowser -NoAuth# Startet HTTPS-Server auf Port 443, leitet Port 80 automatisch auf HTTPS weiter, ohne Browser
Start-MiniWebserver -Protocol 'https' -HostName 'www2.eulanda.eu' -Port 443 `
-RedirectToHttps -RedirectFromPort 80 -NoBrowser `
-ConnStr "Server=SQL01;Database=EDI;User Id=sa;Password=Secret123;"
# Admin-Vorbereitungen (einmalig):
$io = whoami
# SSL-Zertifikat importieren und Thumbprint ermitteln
$secPwd = ConvertTo-SecureString 'DeinPfxPasswort' -AsPlainText -Force
Import-PfxCertificate -FilePath 'C:\Users\cn\Desktop\STAR.eulanda.eu.pfx' `
-CertStoreLocation 'Cert:\LocalMachine\My' -Password $secPwd
$thumb = (Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like 'CN=*.eulanda.eu' }).Thumbprint
$appId = [guid]::NewGuid().ToString()
netsh http add sslcert ipport=0.0.0.0:443 certhash=$thumb appid="{$appId}"
# URL-ACLs setzen
netsh http add urlacl url=https://www2.eulanda.eu:443/ user=$io
netsh http add urlacl url=http://www2.eulanda.eu:80/ user=$io
# Firewall-Regeln aktivieren
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80
netsh advfirewall firewall add rule name="Open Port 443" dir=in action=allow protocol=TCP localport=443