Start-MiniWebserver

EulandaXtools — Funktionsreferenz

Start-MiniWebserver

ÜBERSICHT

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.

SYNTAX

Start-MiniWebserver [[-Protocol] <string>] [[-HostName] <string>] [[-Port] <string>]
    [-RedirectToHttps] [[-RedirectFromPort] <string>] [-NoBrowser] [-NoAuth] [[-ConnStr] <string>]
    [[-MailDraftId] <string>] [[-StartPage] <string>] [<CommonParameters>]

BESCHREIBUNG

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

PARAMETER

-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: 8080

Portnummer, auf dem der HttpListener gestartet wird. Standard 8080. Bei HTTPS sollte hier üblicherweise 443 (oder ein anderer freier SSL-Port) stehen.

-RedirectToHttps

Type: switch

Wenn 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: switch

Unterdrü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: switch

Deaktiviert die eingebaute Basic-/Bearer-Authentifizierung. Falls gesetzt, kann jeder Benutzer ohne Credentials auf alle Endpunkte zugreifen.

-ConnStr

Type: string

Connection-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'.

BEISPIELE

# 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

HINWEISE