57 lines
2.3 KiB
PowerShell
57 lines
2.3 KiB
PowerShell
|
|
param(
|
||
|
|
[string] $HostAddress = $(if ($env:HERMODR_BIND_HOST) { $env:HERMODR_BIND_HOST } else { "127.0.0.1" }),
|
||
|
|
[int] $Port = $(if ($env:HERMODR_PORT) { [int]$env:HERMODR_PORT } else { 8798 }),
|
||
|
|
[string] $OdinCultMeshUri = $(if ($env:HERMODR_ODIN_CULTMESH_URI) { $env:HERMODR_ODIN_CULTMESH_URI } elseif ($env:ODIN_CULTMESH_URI) { $env:ODIN_CULTMESH_URI } else { "cultmesh://odin/rendezvous/provider-catalog" }),
|
||
|
|
[string] $IdunnRudpHealth = $(if ($env:HERMODR_IDUNN_RUDP_HEALTH) { $env:HERMODR_IDUNN_RUDP_HEALTH } else { $env:IDUNN_RUDP_HEALTH }),
|
||
|
|
[string] $IdunnDaemon = "hermodr",
|
||
|
|
[string] $IdunnHealthContract = "hermodr.cultnet-rudp-browser-lowering-health",
|
||
|
|
[string] $StateDir = $(Join-Path $PSScriptRoot "..\scratch\Hermodr"),
|
||
|
|
[switch] $NoWindow
|
||
|
|
)
|
||
|
|
|
||
|
|
$ErrorActionPreference = "Stop"
|
||
|
|
|
||
|
|
foreach ($name in @(
|
||
|
|
"HERMODR_ODIN_HTTP_BASE",
|
||
|
|
"HERMODR_ODIN_WS_BASE",
|
||
|
|
"HERMODR_ODIN_STATE_PATH",
|
||
|
|
"HERMODR_SLEIPNIR_COMMAND_RUDP",
|
||
|
|
"HERMODR_SLEIPNIR_COMMAND_ENDPOINT",
|
||
|
|
"HERMODR_MUNINN_RUDP",
|
||
|
|
"HERMODR_AETHERIA_COMMAND_RUDP",
|
||
|
|
"HERMODR_ODIN_CULTMESH_STORE",
|
||
|
|
"ODIN_CULTMESH_STORE"
|
||
|
|
)) {
|
||
|
|
if (-not [string]::IsNullOrWhiteSpace([Environment]::GetEnvironmentVariable($name))) {
|
||
|
|
throw "$name was removed. Hermodr lowers Odin/CultMesh state for browsers and may only publish typed CultMesh command documents."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (-not [string]::IsNullOrWhiteSpace($env:HERMODR_COMMAND_STORE)) {
|
||
|
|
throw "HERMODR_COMMAND_STORE was removed. Hermodr publishes typed commands through provider-advertised CultMesh routes and records visible witnesses in Odin's CultMesh cache."
|
||
|
|
}
|
||
|
|
|
||
|
|
$node = "node"
|
||
|
|
$Hermodr = Join-Path $PSScriptRoot "..\src\hermodr-daemon.cjs"
|
||
|
|
$arguments = @(
|
||
|
|
$Hermodr,
|
||
|
|
"--host", $HostAddress,
|
||
|
|
"--port", $Port,
|
||
|
|
"--odin-cultmesh-uri", $OdinCultMeshUri
|
||
|
|
)
|
||
|
|
if (-not [string]::IsNullOrWhiteSpace($IdunnRudpHealth)) {
|
||
|
|
$arguments += @(
|
||
|
|
"--idunn-rudp-health", $IdunnRudpHealth,
|
||
|
|
"--idunn-daemon", $IdunnDaemon,
|
||
|
|
"--idunn-health-contract", $IdunnHealthContract
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($NoWindow) {
|
||
|
|
New-Item -ItemType Directory -Force -Path $StateDir | Out-Null
|
||
|
|
$proc = Start-Process -FilePath $node -ArgumentList $arguments -WindowStyle Hidden -PassThru
|
||
|
|
$proc.Id | Set-Content -Encoding ASCII -LiteralPath (Join-Path $StateDir "hermodr.pid")
|
||
|
|
Write-Host "Started Hermodr browser lowering at http://${HostAddress}:${Port}/"
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
& $node @arguments
|