test(validation): #800 Windows service gate harness + windev results (SDK 1.5 -> 2.0.1 in place, rollback)
v2-ci / unit-tests (push) Has been cancelled

Adds scripts/validation/opcua-windows-service/: a phased PowerShell gate (Invoke-ServiceGate.ps1)
that installs the known-good build as the real OtOpcUaHost service via Install-Services.ps1, seeds
LocalDb through the production cache API (Seeder, built against the baseline tree), upgrades in
place with config/PKI/LocalDb carried with their ACLs, starts/stops through the SCM, runs a strict
SDK 2 probe matrix (Sign + SignAndEncrypt, valid/wrong/unknown/disabled/anonymous keys, untrusted
client and server), exercises the ScriptWorker isolation, rolls back and cleans up.

windev 2026-11-12 (efb9197a -> 438484fd -> efb9197a): app cert CEF9D91F... reused byte-for-byte
with identical PKI SDDL on every start, all gating checks pass, 0 secrets in logs. Findings filed:
#879 (None endpoint cannot be dropped), #880 (SDK 2 client 65-char key vs SDK 1.5 server:
rollback/QA risk), #883 (Install-ScriptWorkerIsolation.ps1 fails on pwsh 7 and 5.1; runtime
isolation proven with the patch in the evidence directory).

Claude-Session: https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi
This commit is contained in:
Joseph Doherty
2026-11-12 10:28:48 -05:00
parent 0f001bccdb
commit ac4c4d40dc
55 changed files with 13754 additions and 0 deletions
@@ -0,0 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup><OutputType>Exe</OutputType></PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../../../src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,11 @@
using Microsoft.Extensions.Configuration;
using ZB.MOM.WW.OtOpcUa.OpcUaServer;
// The documented hardening (docs/security.md): list only the secure profiles.
var config = new ConfigurationBuilder().AddInMemoryCollection(new Dictionary<string, string?>
{
["OpcUa:EnabledSecurityProfiles:0"] = "Basic256Sha256Sign",
["OpcUa:EnabledSecurityProfiles:1"] = "Basic256Sha256SignAndEncrypt",
}).Build();
var options = new OpcUaApplicationHostOptions();
config.GetSection("OpcUa").Bind(options);
Console.WriteLine(string.Join(", ", options.EnabledSecurityProfiles));
@@ -0,0 +1,576 @@
<#
.SYNOPSIS
lmxopcua#800 Windows service gate: install a known-good OtOpcUa build as the OtOpcUaHost service, upgrade it in
place to the SDK 2 candidate with preserved config/LocalDb/PKI, restart it, exercise the ScriptWorker isolation,
roll back, and clean up. One phase per invocation so an operator can stop between phases.
.DESCRIPTION
Run elevated, in PowerShell 7, on an approved Windows node that has no OtOpcUaHost service. Everything lives under
-Root (default C:\OtOpcUa800). Inputs are unpacked under <Root>\upload (see README.md). Task secrets (API keys,
pepper, fetch key, secrets KEK) are generated once into <Root>\private\secrets.json, which only SYSTEM and
Administrators can read; they reach the service through its registry Environment value and the probes through
process environment variables, never through arguments or output. Evidence (no secrets) goes to <Root>\evidence.
Phases, in order:
Prepare dirs + ACLs, secrets, baseline staged into <Root>\OtOpcUa, Install-Services.ps1, node env
Boot -Label L Start-Service, wait for readiness, snapshot PKI/ACLs, health
Seed (after the first Stop) seed the deployment into the service-created LocalDb
Trust cross-trust the probe/CLI certificates with the server PKI
Checks -Label L strict-peer/API-key/anonymous probe matrix + the actual CLI read
Stop -Label L Stop-Service, exit code, redaction scan of the logs and event log
Upgrade backup, stage the candidate separately, carry config/PKI/LocalDb with ACLs, swap folders
IsolationInstall Install-ScriptWorkerIsolation.ps1 (-WhatIf, apply, re-apply) + Scripting__Runner=OutOfProcess
IsolationVerify (service running) worker processes, restricted token, pipe ACL, firewall rule, PE cache
IsolationUninstall -Uninstall twice, Scripting__Runner removed
Rollback quarantine the candidate, restore the known-good folder, carry current PKI/LocalDb back
Compare compare every PKI snapshot and the node environment across labels
Cleanup delete the service, isolation leftovers, CLI state, the root folder (evidence copied first)
#>
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[ValidateSet('Prepare', 'Boot', 'Observe', 'Seed', 'Trust', 'Checks', 'Stop', 'Upgrade', 'IsolationInstall', 'IsolationVerify',
'IsolationUninstall', 'Rollback', 'Compare', 'Cleanup')]
[string]$Phase,
[string]$Label = 'x',
[string]$Root = 'C:\OtOpcUa800',
[string]$ServiceAccount = 'NT SERVICE\OtOpcUaHost',
[int]$HttpPort = 18800,
[int]$OpcUaPort = 14841,
[int]$AkkaPort = 18801,
[switch]$AllowNotReady,
# The server under test is the SDK 1.5 known-good build. An SDK 2 client sends a password over 64 bytes (every
# production 65-character API key) as RsaEncryptedSecret, which that server rejects; see README.md.
[switch]$BaselineServer,
[switch]$PatchedIsolation
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$PSStyle.OutputRendering = 'PlainText'
$Service = 'OtOpcUaHost'
$Install = Join-Path $Root 'OtOpcUa'
$Upload = Join-Path $Root 'upload'
$Private = Join-Path $Root 'private'
$State = Join-Path $Root 'state'
$Evidence = Join-Path $Root 'evidence'
$Previous = Join-Path $Root 'OtOpcUa.prev-baseline'
$Stage = Join-Path $Root 'stage-candidate'
$Quarantine = Join-Path $Root 'quarantine-candidate'
$Backup = Join-Path $Root 'backup-baseline'
$PeCache = Join-Path $State 'pe-cache'
$SvcKey = "HKLM:\SYSTEM\CurrentControlSet\Services\$Service"
$Url = "opc.tcp://localhost:$OpcUaPort/OtOpcUa"
$Http = "http://127.0.0.1:$HttpPort"
$ProbeDll = Join-Path $Upload 'probe\Probe.dll'
$CliExe = Join-Path $Upload 'candidate-cli\ZB.MOM.WW.OtOpcUa.Client.CLI.exe'
$LegacyCliExe = Join-Path $Upload 'baseline-cli\ZB.MOM.WW.OtOpcUa.Client.CLI.exe'
$CliRoot = Join-Path $env:LOCALAPPDATA 'OtOpcUaClient'
function Write-Evidence([string]$Name, $Value) {
$path = Join-Path $Evidence "$Name.json"
$Value | ConvertTo-Json -Depth 12 | Set-Content -LiteralPath $path -Encoding utf8
Write-Host "evidence: $path"
}
function Get-Secrets { Get-Content -LiteralPath (Join-Path $Private 'secrets.json') -Raw | ConvertFrom-Json }
function Get-SecretValues {
$s = Get-Secrets
$values = @($s.ApiKey, $s.ApiKey.Split('_', 3)[2], $s.DisabledKey, $s.DisabledKey.Split('_', 3)[2], $s.Pepper,
$s.FetchKey, $s.MasterKey, $s.WrongKey, $s.UnknownKey)
foreach ($n in 'ShortKey', 'WrongShortKey', 'UnknownShortKey', 'DisabledShortKey') {
if ($s.PSObject.Properties[$n]) { $values += @($s.$n, $s.$n.Split('_', 3)[2]) }
}
$values | Where-Object { $_ }
}
function Protect-Text([string]$Text) {
foreach ($secret in Get-SecretValues) { $Text = $Text.Replace($secret, '<task-secret>') }
$Text
}
function New-TaskKey {
$hex = -join ((1..8) | ForEach-Object { '{0:x2}' -f (Get-Random -Maximum 256) })
$bytes = [byte[]]::new(32); [System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
$secret = [Convert]::ToBase64String($bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_')
"otua_${hex}_$secret"
}
function New-ShortTaskKey {
# Same otua_<id>_<secret> form with a 24-byte secret: 54 characters, under the SDK 2 client's 64-byte
# RsaEncryptedSecret threshold.
$hex = -join ((1..8) | ForEach-Object { '{0:x2}' -f (Get-Random -Maximum 256) })
$bytes = [byte[]]::new(24); [System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
"otua_${hex}_" + [Convert]::ToBase64String($bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_')
}
function Invoke-Cli([string]$Name, [string]$Exe, [string]$Key, [string]$Security) {
$out = & $Exe read --url $Url --security $Security --username apikey --password $Key --node 'i=2259' 2>&1 | Out-String
$code = $LASTEXITCODE
$raw = 0; foreach ($x in Get-SecretValues) { $raw += ([regex]::Matches($out, [regex]::Escape($x))).Count }
[ordered]@{ name = $Name; exe = $Exe; argv = "read --url <url> --security $Security --username apikey --password <task-secret> --node i=2259"
exit = $code; good = [bool]($out -match '(?m)^Status:\s+Good'); secretOccurrencesInOutput = $raw; output = (Protect-Text $out) }
}
function New-RandomB64([int]$Bytes) {
$b = [byte[]]::new($Bytes); [System.Security.Cryptography.RandomNumberGenerator]::Fill($b); [Convert]::ToBase64String($b)
}
function Set-ProtectedAcl([string]$Path, [string[]]$ExtraRules) {
# Protected: SYSTEM + Administrators full control, plus any explicit extra rules ("account|rights").
$acl = [System.Security.AccessControl.DirectorySecurity]::new()
$acl.SetAccessRuleProtection($true, $false)
$inherit = [System.Security.AccessControl.InheritanceFlags]'ContainerInherit, ObjectInherit'
$none = [System.Security.AccessControl.PropagationFlags]::None
foreach ($id in 'NT AUTHORITY\SYSTEM', 'BUILTIN\Administrators') {
$acl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new($id, 'FullControl', $inherit, $none, 'Allow'))
}
foreach ($rule in $ExtraRules) {
$account, $rights = $rule.Split('|')
$acl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new($account, $rights, $inherit, $none, 'Allow'))
}
Set-Acl -LiteralPath $Path -AclObject $acl
}
function Add-AllowRule([string]$Path, [string]$Account, [string]$Rights) {
$acl = Get-Acl -LiteralPath $Path
$acl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new($Account, $Rights,
[System.Security.AccessControl.InheritanceFlags]'ContainerInherit, ObjectInherit', 'None', 'Allow'))
Set-Acl -LiteralPath $Path -AclObject $acl
}
function Get-EnvNames {
@((Get-ItemProperty -Path $SvcKey -Name Environment).Environment | ForEach-Object { $_.Split('=', 2)[0] }) | Sort-Object
}
function Get-EnvDigest {
$joined = (@((Get-ItemProperty -Path $SvcKey -Name Environment).Environment) | Sort-Object) -join "`n"
[Convert]::ToHexString([System.Security.Cryptography.SHA256]::HashData([Text.Encoding]::UTF8.GetBytes($joined))).ToLowerInvariant()
}
function Get-PkiSnapshot([string]$InstallDir) {
$pki = Join-Path $InstallDir 'pki'
$certs = @(Get-ChildItem -LiteralPath (Join-Path $pki 'own\certs') -Filter *.der -File -ErrorAction SilentlyContinue | ForEach-Object {
$c = [System.Security.Cryptography.X509Certificates.X509CertificateLoader]::LoadCertificateFromFile($_.FullName)
[ordered]@{ file = $_.Name; sha256 = (Get-FileHash -LiteralPath $_.FullName -Algorithm SHA256).Hash; thumbprint = $c.Thumbprint;
subject = $c.Subject; notBefore = $c.NotBefore.ToUniversalTime().ToString('o'); notAfter = $c.NotAfter.ToUniversalTime().ToString('o');
keySize = $c.PublicKey.GetRSAPublicKey().KeySize }
})
$files = @(Get-ChildItem -LiteralPath $pki -Recurse -Force -ErrorAction SilentlyContinue | Sort-Object FullName | ForEach-Object {
$rel = $_.FullName.Substring($InstallDir.Length + 1)
[ordered]@{ path = $rel; dir = $_.PSIsContainer
sha256 = if ($_.PSIsContainer) { $null } else { (Get-FileHash -LiteralPath $_.FullName -Algorithm SHA256).Hash }
sddl = (Get-Acl -LiteralPath $_.FullName).Sddl }
})
$data = @(Get-ChildItem -LiteralPath (Join-Path $InstallDir 'data') -Recurse -Force -ErrorAction SilentlyContinue | Sort-Object FullName | ForEach-Object {
[ordered]@{ path = $_.FullName.Substring($InstallDir.Length + 1); dir = $_.PSIsContainer; length = if ($_.PSIsContainer) { $null } else { $_.Length }
sddl = (Get-Acl -LiteralPath $_.FullName).Sddl }
})
[ordered]@{ certs = $certs; pki = $files; data = $data
roots = [ordered]@{ install = (Get-Acl -LiteralPath $InstallDir).Sddl
appsettings = @(Get-ChildItem -LiteralPath $InstallDir -Filter 'appsettings*.json' -File | ForEach-Object { [ordered]@{ file = $_.Name; sha256 = (Get-FileHash -LiteralPath $_.FullName).Hash; sddl = (Get-Acl -LiteralPath $_.FullName).Sddl } }) } }
}
function Get-ServiceRecord {
$svc = Get-CimInstance Win32_Service -Filter "Name='$Service'"
[ordered]@{ name = $svc.Name; state = $svc.State; startMode = $svc.StartMode; pathName = $svc.PathName; startName = $svc.StartName
processId = $svc.ProcessId; exitCode = $svc.ExitCode; serviceSpecificExitCode = $svc.ServiceSpecificExitCode
envNames = @(Get-EnvNames); envDigest = Get-EnvDigest
exe = [ordered]@{ path = Join-Path $Install 'OtOpcUa.Host.exe'; sha256 = (Get-FileHash -LiteralPath (Join-Path $Install 'OtOpcUa.Host.exe')).Hash
productVersion = (Get-Item -LiteralPath (Join-Path $Install 'OtOpcUa.Host.exe')).VersionInfo.ProductVersion }
opcUaCore = (Get-Item -LiteralPath (Join-Path $Install 'Opc.Ua.Core.dll')).VersionInfo.FileVersion }
}
function Invoke-Isolation([string[]]$Extra, [string]$PsHost = 'powershell.exe') {
# lmxopcua#883: the repository installer fails on both hosts (PowerShell 7: no DirectoryInfo.GetAccessControl;
# 5.1: StrictMode .Count on a scalar), and so does -Uninstall. With -PatchedIsolation the gate uses the #883 patch
# (install-candidate-patched) so the runtime isolation can still be exercised.
$dir = if ($PatchedIsolation) { 'install-candidate-patched' } else { 'install-candidate' }
$script = Join-Path $Upload "$dir\Install-ScriptWorkerIsolation.ps1"
$out = & $PsHost -NoProfile -ExecutionPolicy Bypass -File $script -InstallRoot $Install -HostServiceAccount $ServiceAccount `
-PeCacheDir $PeCache -ConfigureHostService @Extra 2>&1 | Out-String
[ordered]@{ script = $dir; host = $PsHost; args = ($Extra -join ' '); exit = $LASTEXITCODE; output = $out }
}
function Invoke-Http([string]$Path) {
try {
$r = Invoke-WebRequest -UseBasicParsing -Uri "$Http$Path" -TimeoutSec 10 -SkipHttpErrorCheck
[ordered]@{ path = $Path; status = [int]$r.StatusCode; body = $r.Content }
} catch { [ordered]@{ path = $Path; status = -1; body = $_.Exception.Message } }
}
function Invoke-Probe([string]$Name, [string[]]$ProbeArgs, [string]$Key) {
$env:GATE_PROBE_KEY = $Key
try { $out = & dotnet $ProbeDll @ProbeArgs 2>&1 | Out-String; $code = $LASTEXITCODE }
finally { Remove-Item Env:\GATE_PROBE_KEY -ErrorAction SilentlyContinue }
$raw = 0; foreach ($s in Get-SecretValues) { $raw += ([regex]::Matches($out, [regex]::Escape($s))).Count }
$clean = Protect-Text $out
$json = $null
$last = ($clean.Trim() -split "`r?`n")[-1]
try { $json = $last | ConvertFrom-Json } catch { }
[ordered]@{ name = $Name; args = $ProbeArgs; exit = $code; secretOccurrencesInOutput = $raw; result = $json
output = if ($json) { $null } else { $clean } }
}
function Wait-Ready([int]$Seconds = 180) {
$deadline = (Get-Date).AddSeconds($Seconds)
while ((Get-Date) -lt $deadline) {
$svc = Get-Service $Service
if ($svc.Status -ne 'Running') { throw "service left Running while waiting for readiness: $($svc.Status)" }
$r = Invoke-Http '/health/ready'
if ($r.status -eq 200) { return $r }
Start-Sleep -Seconds 2
}
$last = Invoke-Http '/health/ready'
if ($AllowNotReady) { return $last }
throw "readiness not 200 within $Seconds s (last: $($last.status))"
}
function Get-OtOpcUaSid([string]$Name) {
# NT SERVICE\<Name> virtual-account SID (same algorithm as ScriptWorkerIsolation.psm1 / sc.exe showsid).
$hash = [System.Security.Cryptography.SHA1]::HashData([System.Text.Encoding]::Unicode.GetBytes($Name.ToUpperInvariant()))
'S-1-5-80-' + ((0..4 | ForEach-Object { [BitConverter]::ToUInt32($hash, $_ * 4) }) -join '-')
}
function Read-SharedText([string]$Path) {
# A live log reports a stale length while open (windows-file-length-is-stale-while-open); read through a stream.
$fs = [System.IO.FileStream]::new($Path, 'Open', 'Read', 'ReadWrite, Delete')
try { $sr = [System.IO.StreamReader]::new($fs); $sr.ReadToEnd() } finally { $fs.Dispose() }
}
function Get-RedactionScan([string]$Since) {
$secrets = @(Get-SecretValues)
$rows = @()
foreach ($f in Get-ChildItem -LiteralPath (Join-Path $Install 'logs') -File -ErrorAction SilentlyContinue) {
$text = Read-SharedText $f.FullName
$n = 0; foreach ($s in $secrets) { $n += ([regex]::Matches($text, [regex]::Escape($s))).Count }
$rows += [ordered]@{ source = "logs\$($f.Name)"; chars = $text.Length; secretOccurrences = $n }
Set-Content -LiteralPath (Join-Path $Evidence "log-$Label-$($f.Name)") -Value (Protect-Text $text) -Encoding utf8
}
$events = @(Get-WinEvent -FilterHashtable @{ LogName = 'Application'; StartTime = [datetime]$Since } -ErrorAction SilentlyContinue |
Where-Object { $_.ProviderName -match 'OtOpcUa|\.NET Runtime|Application Error' })
$etext = ($events | ForEach-Object { "$($_.TimeCreated.ToString('o')) $($_.ProviderName) $($_.Id) $($_.LevelDisplayName) $($_.Message)" }) -join "`n"
$n = 0; foreach ($s in $secrets) { $n += ([regex]::Matches($etext, [regex]::Escape($s))).Count }
$rows += [ordered]@{ source = 'EventLog:Application'; events = $events.Count; secretOccurrences = $n }
Set-Content -LiteralPath (Join-Path $Evidence "eventlog-$Label.txt") -Value (Protect-Text $etext) -Encoding utf8
$rows
}
switch ($Phase) {
'Prepare' {
if (Get-Service $Service -ErrorAction SilentlyContinue) { throw "$Service already exists on this node - refusing" }
foreach ($d in $Private, $State, $Evidence) { New-Item -ItemType Directory -Force -Path $d | Out-Null }
Set-ProtectedAcl $Root @()
Set-ProtectedAcl $Private @()
$secretsPath = Join-Path $Private 'secrets.json'
if (-not (Test-Path $secretsPath)) {
$key = New-TaskKey
$wrong = $key.Substring(0, $key.Length - 4) + ($(if ($key.EndsWith('AAAA')) { 'BBBB' } else { 'AAAA' }))
[ordered]@{ ApiKey = $key; WrongKey = $wrong; DisabledKey = New-TaskKey; UnknownKey = New-TaskKey
Pepper = New-RandomB64 32; FetchKey = New-RandomB64 32; MasterKey = New-RandomB64 32 } |
ConvertTo-Json | Set-Content -LiteralPath $secretsPath -Encoding utf8
}
$s = Get-Secrets
# Known-good binaries into the service path, with an explicit service-account ACL.
robocopy (Join-Path $Upload 'baseline-host') $Install /E /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
if ($LASTEXITCODE -ge 8) { throw 'baseline copy failed' }
# The repository-supported install (Install-Services.ps1) creates the service and its 2-entry environment.
# It runs first because the NT SERVICE\ virtual account only resolves once its service exists.
& (Join-Path $Upload 'install-baseline\Install-Services.ps1') -InstallRoot $Install -ServiceAccount $ServiceAccount -Roles driver
if (-not (Get-Service $Service -ErrorAction SilentlyContinue)) { throw 'Install-Services.ps1 did not create the service' }
Add-AllowRule $Install $ServiceAccount 'ReadAndExecute'
foreach ($d in 'pki', 'data', 'logs') {
$p = Join-Path $Install $d; New-Item -ItemType Directory -Force -Path $p | Out-Null; Add-AllowRule $p $ServiceAccount 'Modify'
}
$secretsDir = Join-Path $State 'secrets'; New-Item -ItemType Directory -Force -Path $secretsDir | Out-Null
Set-ProtectedAcl $secretsDir @("$ServiceAccount|Modify")
$base = @((Get-ItemProperty -Path $SvcKey -Name Environment).Environment)
$nodeEnv = @(
"ASPNETCORE_URLS=$Http", 'Cluster__Roles__0=driver', 'Cluster__SystemName=otopcua', 'Cluster__Hostname=127.0.0.1',
'Cluster__PublicHostname=127.0.0.1', "Cluster__Port=$AkkaPort", "Cluster__SeedNodes__0=akka.tcp://otopcua@127.0.0.1:$AkkaPort",
'ConfigSource__Mode=FetchAndCache', 'ConfigSource__CentralFetchEndpoints__0=http://127.0.0.1:1', "ConfigSource__ApiKey=$($s.FetchKey)",
'ConfigSource__FetchTimeoutSeconds=1', "Secrets__SqlitePath=$secretsDir\secrets.db", "ZB_SECRETS_MASTER_KEY=$($s.MasterKey)",
"Security__ApiKeys__Pepper=$($s.Pepper)", 'Security__Ldap__Enabled=false', 'Security__Acl__Enabled=false',
'OpcUa__ApplicationName=OtOpcUaGate800', 'OpcUa__ApplicationUri=urn:localhost:OtOpcUaGate800', 'OpcUa__PublicHostname=localhost',
"OpcUa__OpcUaPort=$OpcUaPort", 'OpcUa__AllowAnonymous=false', 'OpcUa__AutoAcceptUntrustedClientCertificates=false',
'OpcUa__EnabledSecurityProfiles__0=Basic256Sha256SignAndEncrypt', 'OpcUa__EnabledSecurityProfiles__1=Basic256Sha256Sign')
Set-ItemProperty -Path $SvcKey -Name Environment -Type MultiString -Value ([string[]]($base + $nodeEnv))
# Probe and CLI client identities (the CLI keeps its PKI in this user's LocalAppData: back it up first).
if (Test-Path $CliRoot) { robocopy $CliRoot (Join-Path $Private 'cli-backup') /E /COPYALL /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null }
Set-Content -LiteralPath (Join-Path $Private 'cli-existed.txt') -Value ([string](Test-Path $CliRoot))
$prep = @(
Invoke-Probe 'prepare-trusted-client' @('prepare', (Join-Path $State 'client-pki')) ''
Invoke-Probe 'prepare-untrusted-client' @('prepare', (Join-Path $State 'untrusted-client-pki')) ''
)
$cliPrep = & $CliExe read --url 'opc.tcp://localhost:1/OtOpcUa' --security encrypt --node 'i=2259' 2>&1 | Out-String
Write-Evidence 'prepare' ([ordered]@{ utc = (Get-Date).ToUniversalTime().ToString('o'); probes = $prep
cliClosedPortExit = $LASTEXITCODE; cliClosedPortOutput = (Protect-Text $cliPrep)
service = Get-ServiceRecord; rootSddl = (Get-Acl $Root).Sddl; privateSddl = (Get-Acl $Private).Sddl
secretsDirSddl = (Get-Acl $secretsDir).Sddl })
}
'Boot' {
$start = (Get-Date).ToUniversalTime().ToString('o')
Set-Content -LiteralPath (Join-Path $Evidence "boot-$Label.since") -Value $start
Start-Service -Name $Service
(Get-Service $Service).WaitForStatus('Running', [TimeSpan]::FromSeconds(60))
$ready = Wait-Ready $(if ($AllowNotReady) { 90 } else { 180 })
Write-Evidence "boot-$Label" ([ordered]@{ label = $Label; startUtc = $start; readyUtc = (Get-Date).ToUniversalTime().ToString('o')
service = Get-ServiceRecord; health = @($ready, (Invoke-Http '/healthz'), (Invoke-Http '/health/active'))
snapshot = Get-PkiSnapshot $Install })
}
'Observe' {
# A start the gate did not make (e.g. the SCM auto-start after a host reboot): record it like a Boot.
$svc = Get-CimInstance Win32_Service -Filter "Name='$Service'"
if ($svc.State -ne 'Running') { throw "service is $($svc.State), not Running" }
$started = (Get-Process -Id $svc.ProcessId).StartTime.ToUniversalTime().ToString('o')
$boot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime.ToUniversalTime().ToString('o')
Set-Content -LiteralPath (Join-Path $Evidence "boot-$Label.since") -Value $boot
Write-Evidence "boot-$Label" ([ordered]@{ label = $Label; observedOnly = $true; osBootUtc = $boot; processStartUtc = $started
service = Get-ServiceRecord; health = @((Invoke-Http '/health/ready'), (Invoke-Http '/healthz'), (Invoke-Http '/health/active'))
snapshot = Get-PkiSnapshot $Install })
}
'Seed' {
if ((Get-Service $Service).Status -ne 'Stopped') { throw 'stop the service before seeding' }
$s = Get-Secrets
# 54-character keys keep the SDK 2 client on the legacy UserName-token path, so the SDK 1.5 server's own key
# checks (wrong secret, unknown id, disabled) are reached rather than failing on the token format.
$changed = $false
foreach ($n in 'ShortKey', 'UnknownShortKey', 'DisabledShortKey') {
if (-not $s.PSObject.Properties[$n]) { $s | Add-Member -NotePropertyName $n -NotePropertyValue (New-ShortTaskKey); $changed = $true }
}
if (-not $s.PSObject.Properties['WrongShortKey']) {
$w = $s.ShortKey.Substring(0, $s.ShortKey.Length - 4) + $(if ($s.ShortKey.EndsWith('AAAA')) { 'BBBB' } else { 'AAAA' })
$s | Add-Member -NotePropertyName WrongShortKey -NotePropertyValue $w; $changed = $true
}
if ($changed) { $s | ConvertTo-Json | Set-Content -LiteralPath (Join-Path $Private 'secrets.json') -Encoding utf8 }
$env:GATE_API_KEY = $s.ApiKey; $env:GATE_API_KEY_SHORT = $s.ShortKey; $env:GATE_API_KEY_DISABLED = $s.DisabledShortKey; $env:Security__ApiKeys__Pepper = $s.Pepper
try { $out = & dotnet (Join-Path $Upload 'seeder-baseline\Seeder.dll') (Join-Path $Install 'data\otopcua-localdb.db') 2>&1 | Out-String; $code = $LASTEXITCODE }
finally { Remove-Item Env:\GATE_API_KEY, Env:\GATE_API_KEY_SHORT, Env:\GATE_API_KEY_DISABLED, Env:\Security__ApiKeys__Pepper -ErrorAction SilentlyContinue }
Write-Evidence 'seed' ([ordered]@{ exit = $code; output = (Protect-Text $out); data = (Get-PkiSnapshot $Install).data })
if ($code -ne 0) { throw "seed failed: $code" }
}
'Trust' {
$trusted = Join-Path $Install 'pki\trusted\certs'
New-Item -ItemType Directory -Force -Path $trusted | Out-Null
$copied = @()
foreach ($src in (Join-Path $State 'client-pki\own\certs'), (Join-Path $CliRoot 'pki\own\certs')) {
foreach ($c in Get-ChildItem -LiteralPath $src -Filter *.der -File) { Copy-Item -LiteralPath $c.FullName -Destination $trusted -Force; $copied += $c.Name }
}
foreach ($client in 'client-pki', 'untrusted-client-pki') {
$t = Join-Path $State "$client\trusted\certs"; New-Item -ItemType Directory -Force -Path $t | Out-Null
Get-ChildItem -LiteralPath (Join-Path $Install 'pki\own\certs') -Filter *.der -File | Copy-Item -Destination $t -Force
}
Write-Evidence 'trust' ([ordered]@{ serverTrusted = $copied; untrustedClientNotCopied = (Get-ChildItem (Join-Path $State 'untrusted-client-pki\own\certs') -Filter *.der).Name })
}
'Checks' {
$s = Get-Secrets
$client = Join-Path $State 'client-pki'
$untrusted = Join-Path $State 'untrusted-client-pki'
$long = if ($BaselineServer) { 'key-deny' } else { 'allow' }
$cases = @(
Invoke-Probe 'encrypt-valid-key-65' @('probe', $client, $Url, 'encrypt', $long) $s.ApiKey
Invoke-Probe 'sign-valid-key-65' @('probe', $client, $Url, 'sign', $long) $s.ApiKey
Invoke-Probe 'encrypt-valid-key-54' @('probe', $client, $Url, 'encrypt', 'allow') $s.ShortKey
Invoke-Probe 'sign-valid-key-54' @('probe', $client, $Url, 'sign', 'allow') $s.ShortKey
Invoke-Probe 'encrypt-wrong-secret-54' @('probe', $client, $Url, 'encrypt', 'key-deny') $s.WrongShortKey
Invoke-Probe 'sign-wrong-secret-54' @('probe', $client, $Url, 'sign', 'key-deny') $s.WrongShortKey
Invoke-Probe 'encrypt-unknown-key-id-54' @('probe', $client, $Url, 'encrypt', 'key-deny') $s.UnknownShortKey
Invoke-Probe 'encrypt-disabled-key-54' @('probe', $client, $Url, 'encrypt', 'key-deny') $s.DisabledShortKey
Invoke-Probe 'encrypt-wrong-secret-65' @('probe', $client, $Url, 'encrypt', 'key-deny') $s.WrongKey
Invoke-Probe 'encrypt-unknown-key-id-65' @('probe', $client, $Url, 'encrypt', 'key-deny') $s.UnknownKey
Invoke-Probe 'encrypt-anonymous' @('probe', $client, $Url, 'encrypt', 'anon-deny') ''
Invoke-Probe 'encrypt-untrusted-client' @('probe', $untrusted, $Url, 'encrypt', 'peer-deny') $s.ShortKey
Invoke-Probe 'sign-untrusted-client' @('probe', $untrusted, $Url, 'sign', 'peer-deny') $s.ShortKey
)
# Untrusted server: the trusted client with its server trust list emptied for one attempt.
$t = Join-Path $client 'trusted\certs'; $hold = Join-Path $State 'hold-server-trust'
Move-Item -LiteralPath $t -Destination $hold; New-Item -ItemType Directory -Path $t | Out-Null
try { $cases += Invoke-Probe 'encrypt-untrusted-server' @('probe', $client, $Url, 'encrypt', 'peer-deny') $s.ShortKey }
finally { Remove-Item -LiteralPath $t -Recurse -Force; Move-Item -LiteralPath $hold -Destination $t }
# Actual published CLIs (they auto-accept the server certificate by design; not strict-peer coverage).
$clis = @(
Invoke-Cli 'cli-sdk1-encrypt-key-65' $LegacyCliExe $s.ApiKey 'encrypt'
Invoke-Cli 'cli-sdk2-encrypt-key-54' $CliExe $s.ShortKey 'encrypt'
)
$cli65 = Invoke-Cli 'cli-sdk2-encrypt-key-65' $CliExe $s.ApiKey 'encrypt'
if (-not $BaselineServer) { $clis += $cli65 }
# Findings recorded but not gating here (pre-existing; see README.md): the advertised endpoint set, a session
# over the None endpoint, and the SDK 2 CLI's 65-character key against the SDK 1.5 server.
$findings = @(
Invoke-Probe 'endpoints-advertised' @('endpoints', $client, $Url) ''
Invoke-Probe 'none-endpoint-valid-key-54' @('probe', $client, $Url, 'none', 'allow') $s.ShortKey
)
if ($BaselineServer) { $findings += $cli65 }
$failed = @($cases | Where-Object { $_.exit -ne 0 }) + @($clis | Where-Object { $_.exit -ne 0 -or -not $_.good })
$leaks = @(@($cases) + @($clis) + @($findings) | Where-Object { $_.secretOccurrencesInOutput -ne 0 })
Write-Evidence "checks-$Label" ([ordered]@{ label = $Label; baselineServer = [bool]$BaselineServer; utc = (Get-Date).ToUniversalTime().ToString('o')
cases = $cases; clis = $clis; findings = $findings
health = @((Invoke-Http '/health/ready'), (Invoke-Http '/healthz'), (Invoke-Http '/health/active'))
failed = @($failed | ForEach-Object { $_.name }); outputsWithSecrets = @($leaks | ForEach-Object { $_.name }) })
if ($failed.Count -or $leaks.Count) { throw "checks failed: $(@($failed + $leaks | ForEach-Object { $_.name }) -join ', ')" }
}
'Stop' {
$since = Get-Content -LiteralPath (Join-Path $Evidence "boot-$Label.since") -ErrorAction SilentlyContinue
if (-not $since) { $since = (Get-Date).AddHours(-1).ToUniversalTime().ToString('o') }
$svcPid = (Get-CimInstance Win32_Service -Filter "Name='$Service'").ProcessId
$sw = [Diagnostics.Stopwatch]::StartNew()
Stop-Service -Name $Service
(Get-Service $Service).WaitForStatus('Stopped', [TimeSpan]::FromSeconds(60))
$sw.Stop()
Start-Sleep -Seconds 2
$workers = @(Get-Process -Name 'ZB.MOM.WW.OtOpcUa.ScriptWorker' -ErrorAction SilentlyContinue)
Write-Evidence "stop-$Label" ([ordered]@{ label = $Label; utc = (Get-Date).ToUniversalTime().ToString('o'); stopSeconds = [math]::Round($sw.Elapsed.TotalSeconds, 1)
hostProcessGone = -not (Get-Process -Id $svcPid -ErrorAction SilentlyContinue); leftoverWorkers = $workers.Count
service = Get-ServiceRecord; redaction = @(Get-RedactionScan $since) })
}
'Upgrade' {
if ((Get-Service $Service).Status -ne 'Stopped') { throw 'stop the service first' }
$before = Get-ServiceRecord
reg.exe export "HKLM\SYSTEM\CurrentControlSet\Services\$Service" (Join-Path $Private 'service-baseline.reg') /y | Out-Null
robocopy $Install $Backup /E /COPYALL /DCOPY:DAT /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
if ($LASTEXITCODE -ge 8) { throw 'known-good backup failed' }
# Stage the candidate separately, give it the install folder's DACL, then carry the node's own state over.
robocopy (Join-Path $Upload 'candidate-host') $Stage /E /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
if ($LASTEXITCODE -ge 8) { throw 'candidate stage failed' }
Set-Acl -LiteralPath $Stage -AclObject (Get-Acl -LiteralPath $Install)
$appsettingsDiff = @(Get-ChildItem -LiteralPath $Install -Filter 'appsettings*.json' -File | ForEach-Object {
$cand = Join-Path $Stage $_.Name
[ordered]@{ file = $_.Name; node = (Get-FileHash $_.FullName).Hash; publisher = if (Test-Path $cand) { (Get-FileHash $cand).Hash } else { $null } }
})
foreach ($f in Get-ChildItem -LiteralPath $Install -Filter 'appsettings*.json' -File) { Copy-Item -LiteralPath $f.FullName -Destination $Stage -Force }
foreach ($d in 'pki', 'data', 'logs') {
robocopy (Join-Path $Install $d) (Join-Path $Stage $d) /E /COPYALL /DCOPY:DAT /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
if ($LASTEXITCODE -ge 8) { throw "carry $d failed" }
}
$stagedSnapshot = Get-PkiSnapshot $Stage
Move-Item -LiteralPath $Install -Destination $Previous
Move-Item -LiteralPath $Stage -Destination $Install
Write-Evidence 'upgrade' ([ordered]@{ utc = (Get-Date).ToUniversalTime().ToString('o'); before = $before; after = Get-ServiceRecord
appsettingsNodeVsPublisher = $appsettingsDiff; stagedSnapshot = $stagedSnapshot
backup = [ordered]@{ path = $Backup; files = (Get-ChildItem $Backup -Recurse -File).Count }; previous = $Previous })
}
'IsolationInstall' {
if ((Get-Service $Service).Status -ne 'Stopped') { throw 'stop the service first' }
$envBefore = @(Get-EnvNames)
$aclBefore = (& icacls $Install | Out-String)
$whatIf = Invoke-Isolation @('-WhatIf') 'pwsh'
$whatIfChanged = ((& icacls $Install | Out-String) -ne $aclBefore) -or [bool](Get-NetFirewallRule -Name 'OtOpcUa-ScriptWorker-BlockOutbound' -ErrorAction SilentlyContinue) -or ((@(Get-EnvNames) -join ',') -ne ($envBefore -join ','))
$apply = Invoke-Isolation @() 'pwsh'
$again = Invoke-Isolation @() 'powershell.exe'
if ($apply.exit -ne 0 -or $again.exit -ne 0) { throw "isolation install failed: $($apply.output)$($again.output)" }
$env = @((Get-ItemProperty -Path $SvcKey -Name Environment).Environment) + 'Scripting__Runner=OutOfProcess'
Set-ItemProperty -Path $SvcKey -Name Environment -Type MultiString -Value ([string[]]$env)
$rule = Get-NetFirewallRule -Name 'OtOpcUa-ScriptWorker-BlockOutbound'
Write-Evidence 'isolation-install' ([ordered]@{ whatIf = $whatIf; whatIfChangedState = $whatIfChanged; apply = $apply; reapply = $again
reapplyAllUnchanged = -not ($again.output -match '\[(?!unchanged)[a-z]+\s*\]')
envBefore = $envBefore; envAfter = @(Get-EnvNames)
anchor = (& sc.exe qc OtOpcUaScriptWorker | Out-String); anchorSid = (& sc.exe showsid OtOpcUaScriptWorker | Out-String)
installAcl = (& icacls $Install | Out-String); workerDirAcl = (& icacls (Join-Path $Install 'script-worker') | Out-String)
peCacheAcl = (& icacls $PeCache | Out-String); peAcl = (& icacls (Join-Path $PeCache 'pe') | Out-String)
firewall = [ordered]@{ name = $rule.Name; direction = "$($rule.Direction)"; action = "$($rule.Action)"; enabled = "$($rule.Enabled)"; profile = "$($rule.Profile)"
program = ($rule | Get-NetFirewallApplicationFilter).Program }
workerExeSha256 = (Get-FileHash (Join-Path $Install 'script-worker\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe')).Hash
workerFiles = (Get-ChildItem (Join-Path $Install 'script-worker') -Recurse -File).Count })
}
'IsolationVerify' {
Add-Type -TypeDefinition @'
using System; using System.Runtime.InteropServices;
public static class Tok {
[DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr OpenProcess(uint a, bool i, int pid);
[DllImport("advapi32.dll", SetLastError=true)] public static extern bool OpenProcessToken(IntPtr p, uint a, out IntPtr t);
[DllImport("advapi32.dll", SetLastError=true)] public static extern bool IsTokenRestricted(IntPtr t);
[DllImport("advapi32.dll", SetLastError=true)] public static extern bool GetTokenInformation(IntPtr t, int c, IntPtr b, int l, out int r);
[DllImport("kernel32.dll")] public static extern bool CloseHandle(IntPtr h);
public static string Inspect(int pid) {
IntPtr p = OpenProcess(0x1000, false, pid); if (p == IntPtr.Zero) return "OpenProcess failed " + Marshal.GetLastWin32Error();
IntPtr t; if (!OpenProcessToken(p, 0x0008, out t)) { int e = Marshal.GetLastWin32Error(); CloseHandle(p); return "OpenProcessToken failed " + e; }
bool r = IsTokenRestricted(t); int len; GetTokenInformation(t, 3, IntPtr.Zero, 0, out len);
IntPtr b = Marshal.AllocHGlobal(len); int privs = -1;
if (GetTokenInformation(t, 3, b, len, out len)) privs = Marshal.ReadInt32(b);
Marshal.FreeHGlobal(b); CloseHandle(t); CloseHandle(p);
return "restricted=" + r + " privilegeCount=" + privs;
}
}
'@
$hostPid = (Get-CimInstance Win32_Service -Filter "Name='$Service'").ProcessId
$workers = @(Get-CimInstance Win32_Process -Filter "Name='ZB.MOM.WW.OtOpcUa.ScriptWorker.exe'")
$procs = @($workers | ForEach-Object { [ordered]@{ pid = $_.ProcessId; parent = $_.ParentProcessId; parentIsHost = ($_.ParentProcessId -eq $hostPid)
path = $_.ExecutablePath; owner = (Invoke-CimMethod -InputObject $_ -MethodName GetOwner | ForEach-Object { "$($_.Domain)\$($_.User)" })
token = [Tok]::Inspect([int]$_.ProcessId) } })
$pipes = @([System.IO.Directory]::GetFiles('\\.\pipe\') | Where-Object { $_ -match 'otopcua-sw-' })
$pipeChecks = @($pipes | ForEach-Object {
$name = $_.Substring(9)
$c = [System.IO.Pipes.NamedPipeClientStream]::new('.', $name, 'InOut')
$outcome = try { $c.Connect(2000); 'CONNECTED (unexpected)' } catch [UnauthorizedAccessException] { 'denied (UnauthorizedAccessException)' } catch { "other: $($_.Exception.GetType().Name): $($_.Exception.Message)" } finally { $c.Dispose() }
[ordered]@{ pipe = 'otopcua-sw-<random>'; adminConnect = $outcome }
})
$ready = Invoke-Http '/health/ready'
Write-Evidence 'isolation-verify' ([ordered]@{ hostPid = $hostPid; workers = $procs; pipes = $pipeChecks; ready = $ready
peFiles = @(Get-ChildItem (Join-Path $PeCache 'pe') -File -ErrorAction SilentlyContinue).Count
hostLogWorkerLines = @(Get-ChildItem (Join-Path $Install 'logs') -File | ForEach-Object { (Read-SharedText $_.FullName) -split "`r?`n" } |
Where-Object { $_ -match 'ScriptWorker|script-runner|OutOfProcess' } | Select-Object -Last 30 | ForEach-Object { Protect-Text $_ }) })
}
'IsolationUninstall' {
if ((Get-Service $Service).Status -ne 'Stopped') { throw 'stop the service first' }
$first = Invoke-Isolation @('-Uninstall') 'powershell.exe'
$second = Invoke-Isolation @('-Uninstall') 'pwsh'
if ($first.exit -ne 0 -or $second.exit -ne 0) { throw "isolation uninstall failed: $($first.output)$($second.output)" }
$env = @((Get-ItemProperty -Path $SvcKey -Name Environment).Environment | Where-Object { $_ -notlike 'Scripting__Runner=*' })
Set-ItemProperty -Path $SvcKey -Name Environment -Type MultiString -Value ([string[]]$env)
Write-Evidence 'isolation-uninstall' ([ordered]@{ first = $first; second = $second
secondAllUnchanged = -not ($second.output -match '\[(?!unchanged)[a-z]+\s*\]')
anchorGone = -not (Get-Service OtOpcUaScriptWorker -ErrorAction SilentlyContinue)
firewallGone = -not (Get-NetFirewallRule -Name 'OtOpcUa-ScriptWorker-BlockOutbound' -ErrorAction SilentlyContinue)
installAcl = (& icacls $Install | Out-String); envNames = @(Get-EnvNames); envDigest = Get-EnvDigest })
}
'Rollback' {
if ((Get-Service $Service).Status -ne 'Stopped') { throw 'stop the service first' }
$before = Get-PkiSnapshot $Install
Move-Item -LiteralPath $Install -Destination $Quarantine
Move-Item -LiteralPath $Previous -Destination $Install
foreach ($d in 'pki', 'data') {
robocopy (Join-Path $Quarantine $d) (Join-Path $Install $d) /E /COPYALL /DCOPY:DAT /IS /IT /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
if ($LASTEXITCODE -ge 8) { throw "restore $d failed" }
}
Write-Evidence 'rollback' ([ordered]@{ utc = (Get-Date).ToUniversalTime().ToString('o'); candidateSnapshot = $before
restored = Get-ServiceRecord; restoredSnapshot = Get-PkiSnapshot $Install; quarantine = $Quarantine })
}
'Compare' {
$labels = $Label.Split(',')
$rows = foreach ($l in $labels) {
$b = Get-Content (Join-Path $Evidence "boot-$l.json") -Raw | ConvertFrom-Json
[ordered]@{ label = $l; exe = $b.service.exe.productVersion; opcUaCore = $b.service.opcUaCore; envDigest = $b.service.envDigest
certs = @($b.snapshot.certs | ForEach-Object { "$($_.thumbprint) $($_.sha256)" })
pkiDigest = [Convert]::ToHexString([System.Security.Cryptography.SHA256]::HashData([Text.Encoding]::UTF8.GetBytes((($b.snapshot.pki | ForEach-Object { "$($_.path)|$($_.sha256)|$($_.sddl)" }) -join "`n")))).ToLowerInvariant()
pkiEntries = @($b.snapshot.pki).Count
dataAcl = @($b.snapshot.data | ForEach-Object { "$($_.path)|$($_.sddl)" }) }
}
$first = $rows[0]
$same = [ordered]@{
certificate = @($rows | Where-Object { ($_.certs -join ';') -ne ($first.certs -join ';') }).Count -eq 0
pkiFilesAndAcls = @($rows | Where-Object { $_.pkiDigest -ne $first.pkiDigest }).Count -eq 0
environment = @($rows | Where-Object { $_.envDigest -ne $first.envDigest }).Count -eq 0 }
Write-Evidence "compare-$($labels -join '-')" ([ordered]@{ rows = $rows; identical = $same })
}
'Cleanup' {
$out = [ordered]@{}
if (Get-Service $Service -ErrorAction SilentlyContinue) {
Stop-Service $Service -ErrorAction SilentlyContinue
(Get-Service $Service).WaitForStatus('Stopped', [TimeSpan]::FromSeconds(60))
$out.delete = (& sc.exe delete $Service | Out-String) # NOT Uninstall-Services.ps1: it also removes OtOpcUaWonderwareHistorian
}
if (Get-Service OtOpcUaScriptWorker -ErrorAction SilentlyContinue) { $out.anchorDelete = (& sc.exe delete OtOpcUaScriptWorker | Out-String) }
Get-NetFirewallRule -Name 'OtOpcUa-ScriptWorker-BlockOutbound' -ErrorAction SilentlyContinue | Remove-NetFirewallRule
Remove-Item -LiteralPath $CliRoot -Recurse -Force -ErrorAction SilentlyContinue
if ((Get-Content (Join-Path $Private 'cli-existed.txt')) -eq 'True') {
robocopy (Join-Path $Private 'cli-backup') $CliRoot /E /COPYALL /R:1 /W:1 /NFL /NDL /NJH /NP | Out-Null
}
$out.cliRestored = @(Get-ChildItem $CliRoot -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object { $_.FullName })
foreach ($sid in @((Get-OtOpcUaSid 'OtOpcUaHost'), (Get-OtOpcUaSid 'OtOpcUaScriptWorker'))) {
$p = Get-CimInstance Win32_UserProfile | Where-Object { $_.SID -eq $sid }
if ($p) { $out["profile-$sid"] = $p.LocalPath; $p | Remove-CimInstance }
}
$out | ConvertTo-Json -Depth 5
}
}
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<!-- SDK 2.0.1 strict-peer client probe for the #800 Windows service gate. Talks OPC UA on the wire, so
it probes the SDK 1.5 baseline server and the SDK 2 candidate alike. -->
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<!-- DataValue.Value / Variant.Value are obsolete in SDK 2; a probe only prints the value. -->
<NoWarn>$(NoWarn);CS0618</NoWarn>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../../../src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,135 @@
// #800 Windows service gate probe. Peer auto-accept is always false.
// prepare <pki> [applicationName] create the client application certificate
// endpoints <pki> <url> list advertised endpoints; fail if None or anonymous is offered
// probe <pki> <url> <none|sign|encrypt> <expected> expected = allow | key-deny | peer-deny | anon-deny
// The API key comes from GATE_PROBE_KEY (never an argument). One JSON line is printed per run.
using System.Text;
using System.Text.Json;
using Opc.Ua;
using Opc.Ua.Client;
using Opc.Ua.Configuration;
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(60));
var ct = deadline.Token;
var mode = args[0];
var root = Path.GetFullPath(args[1]);
var telemetry = DefaultTelemetry.Create(_ => { });
var clientName = mode == "prepare" && args.Length > 2 ? args[2] : "Gate800Client";
var security = new SecurityConfiguration
{
ApplicationCertificate = new CertificateIdentifier { StoreType = CertificateStoreType.Directory,
StorePath = Path.Combine(root, "own"), SubjectName = "CN=" + clientName },
TrustedIssuerCertificates = new CertificateTrustList { StoreType = CertificateStoreType.Directory, StorePath = Path.Combine(root, "issuer") },
TrustedPeerCertificates = new CertificateTrustList { StoreType = CertificateStoreType.Directory, StorePath = Path.Combine(root, "trusted") },
RejectedCertificateStore = new CertificateTrustList { StoreType = CertificateStoreType.Directory, StorePath = Path.Combine(root, "rejected") },
AutoAcceptUntrustedCertificates = false,
};
var configuration = new ApplicationConfiguration(telemetry)
{
ApplicationName = clientName, ApplicationUri = "urn:localhost:" + clientName,
ApplicationType = ApplicationType.Client, SecurityConfiguration = security,
ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60_000 },
};
await using var application = new ApplicationInstance(telemetry)
{ ApplicationName = configuration.ApplicationName, ApplicationType = ApplicationType.Client, ApplicationConfiguration = configuration };
await configuration.ValidateAsync(ApplicationType.Client, ct);
await application.CheckApplicationInstanceCertificatesAsync(true, lifeTimeInMonths: 12, ct);
if (mode == "prepare")
{
Emit(new { mode, result = "prepared", clientName, autoAccept = security.AutoAcceptUntrustedCertificates });
return 0;
}
var url = args[2];
List<EndpointDescription> advertised;
using (var discovery = await DiscoveryClient.CreateAsync(configuration, new Uri(url), DiagnosticsMasks.None, ct))
advertised = (await discovery.GetEndpointsAsync(default, ct)).ToList();
var summary = advertised.Select(e => new
{
mode = e.SecurityMode.ToString(),
policy = (e.SecurityPolicyUri ?? "").Split('#').Last(),
tokens = TokenTypes(e),
certSha1 = e.ServerCertificate.Length > 0 ? Convert.ToHexString(System.Security.Cryptography.SHA1.HashData(e.ServerCertificate.ToArray())) : "",
}).ToList();
if (mode == "endpoints")
{
var insecure = summary.Any(e => e.mode == nameof(MessageSecurityMode.None));
var anonymous = summary.Any(e => e.tokens.Contains(nameof(UserTokenType.Anonymous)));
Emit(new { mode, result = insecure || anonymous ? "insecure-offered" : "secure-only", endpoints = summary });
return insecure || anonymous ? 3 : 0;
}
var wanted = args[3] switch { "sign" => MessageSecurityMode.Sign, "none" => MessageSecurityMode.None, _ => MessageSecurityMode.SignAndEncrypt };
var wantedPolicy = wanted == MessageSecurityMode.None ? SecurityPolicies.None : SecurityPolicies.Basic256Sha256;
var expected = args[4];
var selected = advertised.FirstOrDefault(e => e.SecurityMode == wanted && e.SecurityPolicyUri == wantedPolicy)
?? throw new InvalidOperationException("No " + wantedPolicy + " " + wanted + " endpoint advertised.");
var identity = expected == "anon-deny"
? new UserIdentity()
: new UserIdentity("apikey", Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable("GATE_PROBE_KEY") ?? throw new InvalidOperationException("Missing GATE_PROBE_KEY.")));
try
{
using var session = await new DefaultSessionFactory(telemetry).CreateAsync(configuration,
new ConfiguredEndpoint(null, selected, EndpointConfiguration.Create(configuration)), false, true,
"Gate800Probe", 60_000, identity, default, ct);
if (expected != "allow")
{
Emit(new { mode, securityMode = wanted.ToString(), expected, result = "UNEXPECTED-ADMIT" });
await session.CloseAsync(ct);
return 4;
}
var uns = session.NamespaceUris.GetIndex("https://zb.com/otopcua/uns");
var reads = new[]
{
new ReadValueId { NodeId = VariableIds.Server_ServerStatus_State, AttributeId = Attributes.Value },
new ReadValueId { NodeId = VariableIds.Server_ServiceLevel, AttributeId = Attributes.Value },
new ReadValueId { NodeId = new NodeId("EQ-000000000800/GateValue", (ushort)Math.Max(uns, 0)), AttributeId = Attributes.Value },
};
// The timer-driven virtual tag needs a moment after boot; retry its read for up to 20 s.
List<DataValue>? results = null;
for (var attempt = 0; attempt < 20; attempt++)
{
var response = await session.ReadAsync(null, 0, TimestampsToReturn.Both, reads, ct);
results = response.Results.ToList();
if (uns >= 0 && StatusCode.IsGood(results[2].StatusCode)) break;
await Task.Delay(1000, ct);
}
var state = results![0];
var level = results[1];
var vt = results[2];
var ok = StatusCode.IsGood(state.StatusCode) && StatusCode.IsGood(level.StatusCode);
Emit(new
{
mode, securityMode = wanted.ToString(), policy = wantedPolicy.Split('#').Last(), expected, result = ok ? "allowed" : "READ-FAILED",
serverState = $"{state.Value} ({state.StatusCode})",
serviceLevel = $"{level.Value} ({level.StatusCode})",
unsNamespaceIndex = uns,
virtualTag = $"{vt.Value} ({vt.StatusCode})",
serverCertSha1 = summary.First(e => e.mode == wanted.ToString()).certSha1,
autoAccept = false,
});
await session.CloseAsync(ct);
return ok ? 0 : 5;
}
catch (ServiceResultException error) when (expected != "allow")
{
var accepted = expected switch
{
"key-deny" => new[] { StatusCodes.BadUserAccessDenied, StatusCodes.BadIdentityTokenRejected, StatusCodes.BadIdentityTokenInvalid },
"anon-deny" => new[] { StatusCodes.BadUserAccessDenied, StatusCodes.BadIdentityTokenRejected, StatusCodes.BadIdentityTokenInvalid, StatusCodes.BadSecurityPolicyRejected },
_ => new[] { StatusCodes.BadCertificateUntrusted, StatusCodes.BadSecurityChecksFailed, StatusCodes.BadSecureChannelClosed },
};
var good = accepted.Contains(error.StatusCode);
Emit(new { mode, securityMode = wanted.ToString(), expected, result = good ? "denied" : "DENIED-WITH-UNEXPECTED-CODE",
status = error.StatusCode.ToString(), autoAccept = false });
return good ? 0 : 6;
}
static string[] TokenTypes(EndpointDescription e)
{
var types = new List<string>();
foreach (var t in e.UserIdentityTokens) types.Add(t.TokenType.ToString());
return types.Distinct().ToArray();
}
static void Emit(object value) => Console.WriteLine(JsonSerializer.Serialize(value));
@@ -0,0 +1,80 @@
# Windows service gate (lmxopcua#800)
This harness checks the SDK 2 upgrade on a real Windows node with the real `OtOpcUaHost` service. It installs a known-good SDK 1.5 build with
`scripts/install/Install-Services.ps1`, then upgrades that install in place to the SDK 2 candidate. Config, LocalDb and PKI carry
over with their ACLs. The service is then started and stopped twice, the ScriptWorker isolation installer is exercised, the
known-good build is restored, and the node is cleaned up. The results of the first run are in
[`evidence/2026-11-12-windev/RESULTS.md`](evidence/2026-11-12-windev/RESULTS.md).
**Where it may run.** Use an approved Windows node that has no `OtOpcUaHost` service, from an elevated local or SSH session
in PowerShell 7. The Wonder-box hold still applies: this is not a deploy tool for vd03/vq03/vq04.
## Parts
| Part | What it is |
|---|---|
| `Invoke-ServiceGate.ps1` | One phase per invocation (see its header). Everything lives under `-Root` (default `C:\OtOpcUa800`). |
| `Seeder/` | Writes a deployment artifact into the LocalDb that the service created, through the production `IDeploymentArtifactCache`. The artifact contains: one raw folder; one UNS area/line/equipment; a timer-driven virtual tag whose script is `return 800;`; three API keys (a 65-char enabled key, a 54-char enabled key, a disabled key); and read grants. It uses only APIs that exist at both SDK lines, so it is **built against the baseline tree** (copy the folder to the same path in a baseline checkout). |
| `Probe/` | An SDK 2.0.1 client with peer auto-accept off. It can prepare a client certificate, list the advertised endpoints, or open a None/Sign/SignAndEncrypt Basic256Sha256 session and check for an expected result: `allow`, `key-deny`, `peer-deny` or `anon-deny`. On `allow` it reads `ServerStatus.State`, `ServiceLevel` and the virtual tag. The key comes from `GATE_PROBE_KEY`, never from an argument. |
| `BindRepro/` | Reproduces lmxopcua#879 (listing only the secure profiles does not remove `None`). |
## Inputs (`<Root>\upload`)
`baseline-host`, `baseline-cli`, `candidate-host`, `candidate-cli` are self-contained `win-x64` publishes, made with
`-p:PublishSingleFile=false -p:PublishTrimmed=false`. `probe` is the framework-dependent build of `Probe/`, and
`seeder-baseline` is the framework-dependent publish of `Seeder/` from the baseline tree. `install-baseline` and
`install-candidate` are `scripts/install/*.ps1,*.psm1` from each tree. Keep a manifest (`sha256 relative/path`, sorted) of
every directory and compare it on the node before you start.
## Order
```powershell
$g = 'C:\OtOpcUa800\upload\Invoke-ServiceGate.ps1'
& $g -Phase Prepare # Install-Services.ps1 -Roles driver as NT SERVICE\OtOpcUaHost, node env, ACLs
& $g -Phase Boot -Label b0 -AllowNotReady; & $g -Phase Stop -Label b0 # service creates PKI + LocalDb
& $g -Phase Seed; & $g -Phase Trust
& $g -Phase Boot -Label b1; & $g -Phase Checks -Label b1 -BaselineServer; & $g -Phase Stop -Label b1
& $g -Phase Upgrade # backup, stage separately, carry appsettings/pki/data/logs with /COPYALL, swap
& $g -Phase Boot -Label c1; & $g -Phase Checks -Label c1; & $g -Phase Stop -Label c1
& $g -Phase Boot -Label c2; & $g -Phase Checks -Label c2; & $g -Phase Stop -Label c2
& $g -Phase IsolationInstall -PatchedIsolation # see lmxopcua#883; drop the switch once the repo installer is fixed
& $g -Phase Boot -Label c3; & $g -Phase Checks -Label c3; & $g -Phase IsolationVerify -Label c3; & $g -Phase Stop -Label c3
& $g -Phase IsolationUninstall -PatchedIsolation
& $g -Phase Rollback
& $g -Phase Boot -Label r1; & $g -Phase Checks -Label r1 -BaselineServer; & $g -Phase Stop -Label r1
& $g -Phase Compare -Label b1,c1,c2,c3,r1
& $g -Phase Cleanup # then copy evidence off and remove <Root>
```
`-Phase Observe -Label L` records a start the gate did not make (an SCM auto-start after a host reboot). Every phase stops
at the first error. A `Checks` failure lists the failing cases by name. Secrets live in
`<Root>\private\secrets.json`, which only SYSTEM and Administrators can read. Every output and log is checked against every
task secret, and the evidence keeps only the redacted copies and the occurrence counts.
## What the checks mean
- **Strict channel.** These are gating cases. The probe's peer auto-accept is off. A trusted client gets a Basic256Sha256 Sign
session and a SignAndEncrypt session. An untrusted client (both modes) must be refused with `BadSecurityChecksFailed`, and a
server the client does not trust must be refused with `BadCertificateUntrusted`.
- **Credentials.** These are gating cases. The 65-character production-format key and the 54-character key must both be
admitted. A wrong secret, an unknown key id, a disabled key and anonymous must all be refused.
- **Against the SDK 1.5 server** (`-BaselineServer`), the SDK 2 client's 65-character key is expected to be refused
(lmxopcua#880). An SDK 2 client sends any password over 64 bytes as `RsaEncryptedSecret`, which 1.5.378 rejects with
`BadIdentityTokenInvalid`. The 54-character key and the SDK 1.5 CLI with the 65-character key are the positive controls.
- **CLIs.** The CLI that matches each SDK line reads `ServerStatus` over SignAndEncrypt with an API key. The CLIs auto-accept
the server certificate by design, so these reads do not count as strict-peer coverage.
- **ScriptWorker isolation.** `IsolationInstall`/`IsolationUninstall` run `Install-ScriptWorkerIsolation.ps1`. The script
runs once under PowerShell 7 and once under Windows PowerShell 5.1, so both must work. The script's dry run happens first.
Without `-PatchedIsolation` the repository copy is used, and that copy fails on both hosts (lmxopcua#883). With
`-PatchedIsolation` it uses `<Root>\upload\install-candidate-patched`, which is the repository copy plus
`evidence/2026-11-12-windev/isolation-installer-883.diff`. `IsolationVerify` needs the service running. It checks:
- worker processes are children of the host and run under a restricted token;
- the elevated administrator is refused on the worker pipe;
- `script-runner` health and the PE cache.
- **Findings, not gating.** The script records which endpoints the server advertises, and the result of a session over the
`None` endpoint (lmxopcua#879).
**Cleanup caution.** `Cleanup` deletes `OtOpcUaHost` with `sc.exe delete`. It deliberately does not run
`scripts/install/Uninstall-Services.ps1`, because that script also stops and deletes `OtOpcUaWonderwareHistorian`, which
other work may still run (windev does). A virtual-account profile (`C:\Windows\ServiceProfiles\OtOpcUaHost`) stays loaded until
the next reboot. Remove it afterwards.
@@ -0,0 +1,54 @@
// #800 Windows service gate: seed a deployment artifact into an existing (service-created) LocalDb through
// the production cache API. Usage: Seeder <localdb-path>. Credentials come from the environment only:
// GATE_API_KEY (enabled key, production 65-character form), GATE_API_KEY_SHORT (enabled key whose secret is
// short enough that the whole password stays <= 64 bytes, so an SDK 2 client sends it in the legacy
// UserName-token format instead of RsaEncryptedSecret), GATE_API_KEY_DISABLED (carried with Enabled=false) and
// Security__ApiKeys__Pepper. Nothing secret is printed.
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using ZB.MOM.WW.OtOpcUa.Core.Authorization;
using ZB.MOM.WW.OtOpcUa.Host.Configuration;
using ZB.MOM.WW.OtOpcUa.Runtime.DeploymentCache;
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(60));
var localDb = Path.GetFullPath(args[0]);
if (!File.Exists(localDb)) throw new InvalidOperationException("The LocalDb must already exist (created by the service).");
var config = new ConfigurationBuilder().AddInMemoryCollection(new Dictionary<string, string?> { ["LocalDb:Path"] = localDb }).Build();
await using var provider = new ServiceCollection().AddLogging().AddOtOpcUaLocalDb(config).BuildServiceProvider();
var pepper = Environment.GetEnvironmentVariable("Security__ApiKeys__Pepper") ?? throw new InvalidOperationException("Missing pepper.");
object Key(string variable, string name, bool enabled)
{
var presented = Environment.GetEnvironmentVariable(variable) ?? throw new InvalidOperationException("Missing " + variable + ".");
if (!ApiKeySecret.TryParse(presented, out var id, out var secret)) throw new InvalidOperationException("Invalid key format in " + variable + ".");
return new { ApiKeyId = id, Name = name, Principal = name, Enabled = enabled,
SecretHash = ApiKeySecret.ComputeHash(secret, pepper), CreatedUtc = DateTime.UtcNow };
}
const string source = "return 800;";
var artifact = JsonSerializer.SerializeToUtf8Bytes(new
{
Clusters = new[] { new { ClusterId = "gate800", Name = "Gate800" } },
RawFolders = new[] { new { RawFolderId = "gate800", Name = "Gate800", ClusterId = "gate800" } },
UnsAreas = new[] { new { UnsAreaId = "gate800-area", Name = "GateArea", ClusterId = "gate800" } },
UnsLines = new[] { new { UnsLineId = "gate800-line", UnsAreaId = "gate800-area", Name = "GateLine" } },
Equipment = new[] { new { EquipmentId = "EQ-000000000800", UnsLineId = "gate800-line", Name = "GateEquipment", MachineCode = "GATE800" } },
Scripts = new[] { new { ScriptId = "gate800-script", Name = "Gate800Script", SourceCode = source,
SourceHash = Convert.ToHexStringLower(SHA256.HashData(Encoding.UTF8.GetBytes(source))), Language = "CSharp" } },
VirtualTags = new[] { new { VirtualTagId = "gate800-vt", EquipmentId = "EQ-000000000800", Name = "GateValue",
DataType = "Int32", ScriptId = "gate800-script", ChangeTriggered = false, TimerIntervalMs = 1000, Historize = false, Enabled = true } },
ApiKeys = new[] { Key("GATE_API_KEY", "gate800-enabled", true), Key("GATE_API_KEY_SHORT", "gate800-short", true),
Key("GATE_API_KEY_DISABLED", "gate800-disabled", false) },
NodeAcls = new[]
{
new { NodeAclId = "gate800-read", ClusterId = "gate800", Principal = "gate800-enabled", ScopeKind = 0, ScopeId = (string?)null, PermissionFlags = 7 },
new { NodeAclId = "gate800-short-read", ClusterId = "gate800", Principal = "gate800-short", ScopeKind = 0, ScopeId = (string?)null, PermissionFlags = 7 },
},
});
var revision = Convert.ToHexStringLower(SHA256.HashData(artifact));
await provider.GetRequiredService<IDeploymentArtifactCache>().StoreAsync("gate800",
ZB.MOM.WW.OtOpcUa.Commons.Types.DeploymentId.NewId().ToString(), revision, artifact, deadline.Token);
Console.WriteLine(JsonSerializer.Serialize(new { result = "seeded-through-public-cache", localDb, revision, bytes = artifact.Length }));
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<!-- Seed-only tool for the #800 Windows service gate. It uses only the LocalDb/cache/API-key
surface that exists unchanged at the SDK 1.5 baseline and at SDK 2 master, so the same source
is built against the baseline tree to seed the baseline install (see README.md). -->
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../../../src/Server/ZB.MOM.WW.OtOpcUa.Host/ZB.MOM.WW.OtOpcUa.Host.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,185 @@
# lmxopcua#800: Windows service gate on windev (2026-11-12)
**Result: steps 1, 2, 4 and 5 passed; step 3 passed only partly.** The SDK 2 candidate upgraded in place under the real
`OtOpcUaHost` Windows service:
- it reused the existing application certificate byte-for-byte, with its file ACLs unchanged;
- it passed the strict-peer and API-key checks on three starts;
- it rolled back to the known-good build with the same identity.
The ScriptWorker runtime isolation works under a real service session, but **the repository installer fails on Windows**
(lmxopcua#883). The runtime part of step 3 was proven with the #883 patch, not with the shipped script. Three
pre-existing findings were filed: #879, #880 (a rollback and QA-compat risk) and #883.
## Environment
- **Node:** windev (`DESKTOP-6JL3KKO`, 10.100.0.48). Elevated SSH session, PowerShell 7.6.10; Windows PowerShell 5.1 was also
used for the installer.
- **Host change during the run:** the coordinator power-cycled the node between steps 1 and 2 to reconfigure it (36 → 16 vCPUs,
latency sensitivity High). The installed service auto-started across that reboot (row `b2reboot`). Timings before and after the
reboot are not like-for-like.
- **Clock:** the Windows Time service is stopped. Before the reboot the clock was about 9 minutes slow, after it about 14 s.
All probes ran on the same box, so #873 skew does not apply.
- **Left untouched:** the existing MxAccessGw (`:5120`/`:5130`) and OtOpcUaWonderwareHistorian services were never touched.
- **Ports:** the test service used only task ports: HTTP `127.0.0.1:18800`, OPC UA `14841`, Akka `18801`.
## Artifacts
Every artifact is a self-contained win-x64 publish, built on macOS (.NET SDK 10.0.204). Each manifest lists `sha256 path` and
was matched file-for-file on windev before use.
| Artifact | Source | Files | Manifest SHA-256 | Main binary SHA-256 |
|---|---|---:|---|---|
| Known-good Host | master `efb9197a0f48802450474413c58b9d0c461b836d` (last SDK 1.5.378.182 master commit) | 1376 | `28bdba9e…49d18d` | `OtOpcUa.Host.exe` `f9a193c6c7d224006094e26ce4cd1616961bcb9048ff38a468786618a26e3a91` |
| Candidate Host | master `438484fdca4df12be6fbcae71cfbbeabb9386004` (SDK 2.0.1; Opc.Ua.Core file version 2.0.1.2) | 1396 | `e7b6683e…090c5e34` | `OtOpcUa.Host.exe` `6e9efdde592eb342719e9c0d47783e306bc9dd697ae80fc32d45dd1538a52000` |
| Candidate CLI | `438484fd` | 241 | `dee9a60e…2fdd1504` | `e2c88c071733e5807a260ee33d5064e1ec13178d2562aab8d7faff763b6974a0` |
| Known-good CLI | `efb9197a` | 210 | `f7715725…0c217c66` | `257b5b13e980072e46f9405aeddbbddb440a17ad9d26e122ede3fddb15cb27cf` |
| Probe (SDK 2.0.1) | this directory at `438484fd` | 1132 | `abe1d8b6…ba070` | `Probe.dll` `64597faadab6511b174c4c9aa1f5fd06054ffccbb5b77b841c318838e6cbb9fa` |
| Seeder | this directory, built in the `efb9197a` tree | 413 | `ec93daf8…7106561` | `Seeder.dll` `18690a15628f028df95bd4a578049a3997f31e41c22a5a06ee04e50739920de5` |
The full manifests are `manifest-*.txt` in this directory. The candidate `script-worker\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe` is
`9dc0558bb62231487dafcd1b792bbe280b5bafc8849cb0347b14fb50483cfc04`, one of the 275 files in `script-worker\`.
## Install
- **Install command:** `scripts/install/Install-Services.ps1 -InstallRoot C:\OtOpcUa800\OtOpcUa -ServiceAccount 'NT SERVICE\OtOpcUaHost' -Roles driver`,
from the known-good tree. It is the repository-supported method; vd03 runs the same `OtOpcUaHost` sc.exe service.
- **Node configuration:** set in the service `Environment` value, 26 entries, digest `fd534f8d…`. The digest was the same at every
known-good and candidate start except `c3`, where the isolation run adds 3 entries.
- single-node driver: `FetchAndCache`, with an unreachable central;
- secrets SQLite outside the content root;
- pepper;
- LDAP and ACL off;
- `AllowAnonymous=false`, auto-accept off;
- `EnabledSecurityProfiles=[SignAndEncrypt, Sign]`.
- **ACLs:** `C:\OtOpcUa800` was protected with SYSTEM and Administrators only. The service account got RX on the install folder
and Modify on `pki\`, `data\` and `logs\`.
- **First start (`b0`):** the service created its PKI (owner = the service SID; the private key inherits service-M,
SYSTEM-F, Administrators-F), its LocalDb and its logs. It reached Healthy with no deployment.
- **Seed:** the service was stopped, and the `efb9197a`-built seeder wrote one deployment through `IDeploymentArtifactCache`. The
deployment holds a raw folder, a UNS equipment with a timer virtual tag (`return 800;`), a 65-character key, a 54-character key, a
disabled key and read grants.
- **Trust:** the probe and CLI certificates were placed in `pki\trusted\certs`.
## Start/stop record
Every start was through `Start-Service` and every stop through `Stop-Service`, except `b2reboot`. Health means `/health/ready`,
`/healthz` and `/health/active`, all 200 and Healthy. ServiceLevel was read over OPC UA.
| Start | Build | How | Ready after | ServiceLevel | App cert thumbprint (SHA-1) | Stop | Exit | Secrets in logs |
|---|---|---|---|---|---|---|---|---|
| b0 | known-good | Start-Service, empty LocalDb | 13.4 s | — | `CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA` (created) | 1.6 s | 0 | 0 |
| b1 | known-good | Start-Service | 12.4 s | 250 | same | 1.6 s | 0 | 0 |
| b2reboot | known-good | **SCM auto-start after the host reboot** | — | — | same | 1.6 s | 0 | 0 |
| b3, b4 | known-good | Start-Service (b4 after re-seeding the negative keys) | 8.4 s, 8.3 s | 250 | same | 1.6 s | 0 | 0 |
| **c1** | **candidate** | Start-Service after the in-place upgrade | 15.3 s | 255 | **same** | 1.8 s | 0 | 0 |
| **c2** | **candidate** | Start-Service | 15.1 s | 255 | **same** | 1.8 s | 0 | 0 |
| c3 | candidate | Start-Service, `Scripting:Runner=OutOfProcess` with a worker identity | 15.1 s | 255 | same | 1.8 s | 0 | 0 |
| **r1** | **known-good (rollback)** | Start-Service | 8.5 s | 250 | **same** | 1.6 s | 0 | 0 |
**Certificate:** the DER SHA-256 was `F38E6B2E…3F845` at every start.
**PKI tree:** `compare-b2reboot-…-r1.json` digests every PKI path with its SHA-256 and SDDL. The digest was identical
(`c8517c1d0298…`, 13 entries) at b2reboot, b3, b4, c1, c2 and r1. At c3 the only difference was the inherited
`(D;…;CC;;;<worker SID>)` deny ACE from the isolation installer; file hashes were unchanged, and the ACE was gone again at r1.
b1 had 10 entries; the 3 later ones are `pki\rejected\…`, the untrusted test client that the SDK filed as rejected.
**Other observations:**
- The LocalDb file ACLs were the same across all starts.
- Each stop left no leftover host process and no leftover workers.
- The scans covered the rolling logs, the Serilog selflog and the Application event log, with redacted copies kept. They found
0 occurrences of any task secret: the API keys and their secret parts, the pepper, the fetch key and the KEK.
- ServiceLevel is 250 on the known-good build and 255 on the candidate, which matches vd03's 255 on `5fb4b4db`.
- Readiness took about 15 s on the candidate against about 8.4 s on the known-good build after the reboot. This is an observation,
not a gate criterion.
## Protocol checks (same case set at every checked start; `checks-*.json`)
Every check used the SDK 2.0.1 probe with peer auto-accept off, Basic256Sha256. "Gating" cases must all pass.
| Case | Known-good (b4, r1) | Candidate (c1, c2, c3) |
|---|---|---|
| SignAndEncrypt + Sign, 54-char valid key | admitted; State 0 Good, ServiceLevel 250, VT 800 Good | admitted; ServiceLevel 255, VT 800 Good |
| SignAndEncrypt + Sign, 65-char valid key (production form) | **`BadIdentityTokenInvalid`** (#880, expected denial) | admitted, Good |
| wrong secret (Sign + SignAndEncrypt), unknown id, disabled key, 54-char | `BadIdentityTokenRejected` | `BadIdentityTokenRejected` |
| wrong secret / unknown id, 65-char | `BadIdentityTokenInvalid` | `BadIdentityTokenRejected` |
| anonymous | denied (`BadIdentityTokenInvalid`; not advertised) | denied |
| untrusted client, Sign + SignAndEncrypt | `BadSecurityChecksFailed` | `BadSecurityChecksFailed` |
| untrusted server (client trust list emptied) | `BadCertificateUntrusted` | `BadCertificateUntrusted` |
| actual CLI read `ServerStatus`, SignAndEncrypt + API key | SDK 1.5 CLI 65-char Good; SDK 2 CLI 54-char Good | SDK 1.5 CLI 65-char Good; SDK 2 CLI 54- and 65-char Good |
| *finding:* SDK 2 CLI with the 65-char key | `BadIdentityTokenInvalid` (#880) | Good |
| *finding:* advertised endpoints | **None/None + Sign + SignAndEncrypt** (#879) | same |
| *finding:* session over the None endpoint, valid key | admitted (#879) | admitted |
## Step 3: ScriptWorker (`isolation-*.json`)
The out-of-process runner is opt-in, and no deployed node configures it; vd03 runs InProcess. On windev:
1. **Package.** The candidate's `script-worker\` holds the self-contained worker apphost and is 275 files.
2. **The repository installer fails** (#883). This is the step #794 requires.
- **pwsh 7:** `-WhatIf` lists 7 steps and changes nothing. The real run creates the anchor service and the PE cache, then
throws `DirectoryInfo … GetAccessControl`.
- **Windows PowerShell 5.1:** it throws `property 'Count' cannot be found` (StrictMode) at PeEntriesDir.
- **`-Uninstall`** fails the same way, so the partial state could not be rolled back with the tool.
3. **With the #883 patch** (`isolation-installer-883.diff`):
- **Install and re-apply.** Apply ran under pwsh, then re-apply under 5.1 left all 7 steps `unchanged`.
- **Anchor service.** `OtOpcUaScriptWorker` is DISABLED, as `NT SERVICE\OtOpcUaScriptWorker`, SID
`S-1-5-80-1846135827-…-3023753135` (matches #794).
- **Folder ACLs.** The install folder has `(OI)(CI)(DENY)(S,RD)` for the worker and `script-worker\` has `(RX)`.
- **PE cache.** It is protected with SYSTEM, Administrators and the host account at F; `pe\` adds the worker at M.
- **Firewall.** `OtOpcUa-ScriptWorker-BlockOutbound` is Outbound/Block/Any on the worker exe.
- **Service environment.** It gained exactly `Scripting__Worker__Identity` and `Scripting__Worker__PeCacheDir`, plus the
gate's `Scripting__Runner=OutOfProcess`; the other entries were kept.
4. **Runtime under the real service (c3).**
- **Worker process.** `ScriptWorker[0] started` as the child of the host, run as a restricted copy of
`NT SERVICE\OtOpcUaHost` (`IsTokenRestricted=true`, 1 privilege).
- **Window-station grant.** It works under a real service session: coreclr loaded, which windev over SSH could not prove
for #794.
- **Pipe ACL.** The `otopcua-sw-*` pipe refuses the elevated administrator (`UnauthorizedAccessException`).
- **Health.** `script-runner` reports Healthy "Out-of-process script runner ready", with the PE cache on and 1 `pe\` entry.
- **Virtual tag.** It evaluated out of process to 800 Good.
- **Stop.** No worker survived the stop.
- **Not exercised:** dropped-packet firewall logging.
5. **Uninstall.** `-Uninstall` under 5.1 and then again under pwsh left every step `unchanged`. The anchor and the firewall rule
were gone, the environment digest was back to `fd534f8d…`, and the install-folder ACL was back to its original state.
## Upgrade and rollback mechanics (`upgrade.json`, `rollback.json`)
**Upgrade**, with the service stopped:
- `reg export` of the service key, and a `robocopy /E /COPYALL /DCOPY:DAT` backup (1386 files).
- The candidate was staged in a separate folder and given the install-folder DACL.
- The box's `appsettings*.json` were carried over; they are byte-identical to the candidate publisher's.
- `pki\`, `data\` and `logs\` were carried over with `/COPYALL`.
- The folders were swapped with `Move-Item`. The service `PathName` was unchanged.
**Rollback**, with the service stopped:
- The candidate was moved to quarantine and the known-good folder was moved back.
- The current `pki\` and `data\` were carried back with `/COPYALL`. No data rollback: the candidate-written LocalDb opened
cleanly in the known-good build, as on vd03.
## Cleanup
These were removed:
- the service, with `sc.exe delete`;
- the `OtOpcUaScriptWorker` anchor and its firewall rule;
- `C:\OtOpcUa800`;
- the gate scripts in the profile.
Do **not** use `Uninstall-Services.ps1` on windev: it also stops and deletes `OtOpcUaWonderwareHistorian`.
After cleanup:
- `%LOCALAPPDATA%\OtOpcUaClient` was restored from its backup (its `settings.json` and `logs\` are from 2026-05-24).
- The firewall rule count is back to 876.
- MxAccessGw is Running with `:5130/health/ready` 200, and OtOpcUaWonderwareHistorian is Running.
**Residual:** the virtual-account profile `C:\Windows\ServiceProfiles\OtOpcUaHost`, with its ProfileList entry, stays loaded
until the next reboot. Remove it after that with
`Get-CimInstance Win32_UserProfile | ? SID -eq 'S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059' | Remove-CimInstance`.
`gate-run.log` lists every phase invocation and its exit code. The first `Prepare` line reported exit 0 even though the wrapper
had failed (the remote `$PSStyle` quoting). That attempt stopped before creating the service, and the phase was re-run.
## Real-world cross-reference
wonder-app-vd03 (DEV) has run master `5fb4b4db` on SDK 2.0.1 since 2026-11-12. It reused the app cert `A873DF51…` and reports
ServiceLevel 255 with Good reads; see #782 and `docs/deploy/vd03-upgrade-b8b4c18f-to-master.md`. That record is consistent
with this run but is not a controlled install/rollback.
@@ -0,0 +1,180 @@
{
"label": "b0",
"startUtc": "2026-11-12T14:47:18.1970129Z",
"readyUtc": "2026-11-12T14:47:31.5487425Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 34212,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":29.855,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":8.6509,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":8.6794},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":8.6977,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.272,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1087,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2461,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.7643,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.5322}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 4096,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 37112,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,192 @@
{
"label": "b1",
"startUtc": "2026-11-12T14:48:19.0862606Z",
"readyUtc": "2026-11-12T14:48:31.5156681Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 30296,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":30.1769,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":6.1396,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":6.1854},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":11.0363,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":15.7473,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1077,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.3796,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":6.0234,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":9.4713}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 90112,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,211 @@
{
"label": "b2reboot",
"observedOnly": true,
"osBootUtc": "2026-11-12T15:04:11.5000000Z",
"processStartUtc": "2026-11-12T15:04:50.3472397Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 6608,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":25.365,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":5.3026,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":5.4619},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":7.9438,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.3351,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1093,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1924,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.9423,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.3108}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 90112,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,210 @@
{
"label": "b3",
"startUtc": "2026-11-12T15:08:05.6801720Z",
"readyUtc": "2026-11-12T15:08:14.0315324Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 8796,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":23.0889,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":4.816,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":5.784},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":8.0389,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.8999,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1007,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2109,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.9478,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.8223}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 98304,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,210 @@
{
"label": "b4",
"startUtc": "2026-11-12T15:09:50.1618664Z",
"readyUtc": "2026-11-12T15:09:58.4770896Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 18400,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":23.981,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":4.8648,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":5.4181},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":7.7352,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.7062,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1116,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2289,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.3046,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.6803}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,210 @@
{
"label": "c1",
"startUtc": "2026-11-12T15:11:49.9031494Z",
"readyUtc": "2026-11-12T15:12:05.2270581Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 13908,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":24.8702,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":4.6094,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":6.0269},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":8.3375,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":8.0621,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1374,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2333,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.678,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.8852}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,210 @@
{
"label": "c2",
"startUtc": "2026-11-12T15:13:20.4976467Z",
"readyUtc": "2026-11-12T15:13:35.5660747Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 19340,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":23.5057,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":4.4901,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":5.1086},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":8.1631,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.2614,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1266,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2399,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.4544,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.3776}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,213 @@
{
"label": "c3",
"startUtc": "2026-11-12T15:18:45.5096154Z",
"readyUtc": "2026-11-12T15:19:00.6042443Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 22564,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Scripting__Runner",
"Scripting__Worker__Identity",
"Scripting__Worker__PeCacheDir",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "24622724efc7a949f1abc1a99eb9312b6808d8c962c0f70bf92b9f7e253e3be4",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":40.2869,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":4.7419,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Out-of-process script runner ready.\",\"durationMs\":30.4737,\"data\":{\"state\":\"Ready\",\"suspects\":0,\"quarantined\":0,\"peCache\":true,\"shard.0\":\"not started\",\"shard.1\":\"not started\",\"shard.iso\":\"not started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":7.0756,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":8.0117,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.1178,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2403,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.7678,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":5.0213}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;OICIID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;OICI;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,210 @@
{
"label": "r1",
"startUtc": "2026-11-12T15:21:11.9269626Z",
"readyUtc": "2026-11-12T15:21:20.3872449Z",
"service": {
"name": "OtOpcUaHost",
"state": "Running",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 23576,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":24.4506,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":5.2988,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":5.5822},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":8.6047,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":7.2399,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.14,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2441,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":3.4978,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":4.4174}}}"
}
],
"snapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-shm",
"dir": false,
"length": 32768,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "data\\otopcua-localdb.db-wal",
"dir": false,
"length": 0,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
}
}
@@ -0,0 +1,274 @@
{
"label": "b1",
"utc": "2026-11-12T14:49:27.6538031Z",
"cases": [
{
"name": "endpoints-secure-only",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "encrypt-valid-key",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": -532462766,
"secretOccurrencesInOutput": 0,
"result": null,
"output": "Unhandled exception. [80200000] (BadIdentityTokenInvalid)\r\n[80200000] (BadIdentityTokenInvalid)\r\n"
},
{
"name": "sign-valid-key",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": -532462766,
"secretOccurrencesInOutput": 0,
"result": null,
"output": "Unhandled exception. [80200000] (BadIdentityTokenInvalid)\r\n[80200000] (BadIdentityTokenInvalid)\r\n"
},
{
"name": "encrypt-wrong-secret",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"cli": {
"name": "actual-cli-encrypt-read",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 1,
"good": false,
"secretOccurrencesInOutput": 0,
"output": "ERROR\r\nOpc.Ua.ServiceResultException: [80200000] (BadIdentityTokenInvalid)\r\n at Opc.Ua.ClientBase.ValidateResponse(ResponseHeader header) \r\n at Opc.Ua.SessionClient.ActivateSessionAsync(RequestHeader requestHeader, SignatureData clientSignature, ArrayOf`1 clientSoftwareCertificates, ArrayOf`1 localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, DiagnosticsMasks returnDiagnostics, CancellationToken ct) \r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters.DefaultSessionFactory.CreateSessionAsync(ApplicationConfiguration config, EndpointDescription endpoint, String sessionName, UInt32 sessionTimeoutMs, UserIdentity identity, Boolean validateServerHostName, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\Adapters\\DefaultSessionFactory.cs:27\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectToEndpointAsync(ConnectionSettings settings, String endpointUrl, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:801\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectAsync(ConnectionSettings settings, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:129\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.CommandBase.CreateServiceAndConnectAsync(CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\CommandBase.cs:116\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:47\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:78\r\n at CliFx.CliApplication.RunAsync(ApplicationSchema applicationSchema, CommandInput commandInput) in \\_\\CliFx\\CliApplication.cs:144\r\n at CliFx.CliApplication.RunAsync(IReadOnlyList`1 commandLineArguments, IReadOnlyDictionary`2 environmentVariables) in \\_\\CliFx\\CliApplication.cs:185\r\n"
},
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.108,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0338,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.1396},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2145,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.8042,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0195,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1708,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1307,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":0.932}}}"
}
],
"failed": [
"endpoints-secure-only",
"encrypt-valid-key",
"sign-valid-key",
"actual-cli-encrypt-read"
]
}
@@ -0,0 +1,386 @@
{
"label": "b3",
"baselineServer": true,
"utc": "2026-11-12T15:09:08.8712399Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:08:56.8887040Z\r\nServer Time: 2026-11-12T15:08:56.8887040Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:09:00\r\nServer Time: 11/12/2026 15:09:00\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 1,
"good": false,
"secretOccurrencesInOutput": 0,
"output": "ERROR\r\nOpc.Ua.ServiceResultException: [80200000] (BadIdentityTokenInvalid)\r\n at Opc.Ua.ClientBase.ValidateResponse(ResponseHeader header) \r\n at Opc.Ua.SessionClient.ActivateSessionAsync(RequestHeader requestHeader, SignatureData clientSignature, ArrayOf`1 clientSoftwareCertificates, ArrayOf`1 localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, DiagnosticsMasks returnDiagnostics, CancellationToken ct) \r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters.DefaultSessionFactory.CreateSessionAsync(ApplicationConfiguration config, EndpointDescription endpoint, String sessionName, UInt32 sessionTimeoutMs, UserIdentity identity, Boolean validateServerHostName, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\Adapters\\DefaultSessionFactory.cs:27\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectToEndpointAsync(ConnectionSettings settings, String endpointUrl, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:801\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectAsync(ConnectionSettings settings, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:129\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.CommandBase.CreateServiceAndConnectAsync(CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\CommandBase.cs:116\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:47\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:78\r\n at CliFx.CliApplication.RunAsync(ApplicationSchema applicationSchema, CommandInput commandInput) in \\_\\CliFx\\CliApplication.cs:144\r\n at CliFx.CliApplication.RunAsync(IReadOnlyList`1 commandLineArguments, IReadOnlyDictionary`2 environmentVariables) in \\_\\CliFx\\CliApplication.cs:185\r\n"
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":0.767,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0183,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.0326},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1027,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.3042,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0179,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1307,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1167,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":0.7645}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,428 @@
{
"label": "b4",
"baselineServer": true,
"utc": "2026-11-12T15:10:57.9938311Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:10:46.4132866Z\r\nServer Time: 2026-11-12T15:10:46.4132866Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:10:49\r\nServer Time: 11/12/2026 15:10:49\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 1,
"good": false,
"secretOccurrencesInOutput": 0,
"output": "ERROR\r\nOpc.Ua.ServiceResultException: [80200000] (BadIdentityTokenInvalid)\r\n at Opc.Ua.ClientBase.ValidateResponse(ResponseHeader header) \r\n at Opc.Ua.SessionClient.ActivateSessionAsync(RequestHeader requestHeader, SignatureData clientSignature, ArrayOf`1 clientSoftwareCertificates, ArrayOf`1 localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, DiagnosticsMasks returnDiagnostics, CancellationToken ct) \r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters.DefaultSessionFactory.CreateSessionAsync(ApplicationConfiguration config, EndpointDescription endpoint, String sessionName, UInt32 sessionTimeoutMs, UserIdentity identity, Boolean validateServerHostName, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\Adapters\\DefaultSessionFactory.cs:27\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectToEndpointAsync(ConnectionSettings settings, String endpointUrl, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:801\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectAsync(ConnectionSettings settings, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:129\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.CommandBase.CreateServiceAndConnectAsync(CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\CommandBase.cs:116\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:47\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:78\r\n at CliFx.CliApplication.RunAsync(ApplicationSchema applicationSchema, CommandInput commandInput) in \\_\\CliFx\\CliApplication.cs:144\r\n at CliFx.CliApplication.RunAsync(IReadOnlyList`1 commandLineArguments, IReadOnlyDictionary`2 environmentVariables) in \\_\\CliFx\\CliApplication.cs:185\r\n"
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":0.9159,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0201,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.1409},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1152,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.6714,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0181,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.101,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1893,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":1.0444}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,438 @@
{
"label": "c1",
"baselineServer": false,
"utc": "2026-11-12T15:13:04.8497018Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:12:53.0936370Z\r\nServer Time: 2026-11-12T15:12:53.0936370Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:12:56\r\nServer Time: 11/12/2026 15:12:56\r\n"
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:12:59\r\nServer Time: 11/12/2026 15:12:59\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.0117,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0223,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.0737},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1811,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":2.1305,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0191,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.3989,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1264,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":1.0621}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,438 @@
{
"label": "c2",
"baselineServer": false,
"utc": "2026-11-12T15:14:35.3220231Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:14:23.7255185Z\r\nServer Time: 2026-11-12T15:14:23.7255185Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:14:26\r\nServer Time: 11/12/2026 15:14:26\r\n"
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:14:30\r\nServer Time: 11/12/2026 15:14:30\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.02,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0233,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.0864},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1824,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.6986,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0176,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1567,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1421,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":0.7848}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,438 @@
{
"label": "c3",
"baselineServer": false,
"utc": "2026-11-12T15:20:01.3312759Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:19:49.5647995Z\r\nServer Time: 2026-11-12T15:19:49.5647995Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:19:52\r\nServer Time: 11/12/2026 15:19:52\r\n"
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:19:55\r\nServer Time: 11/12/2026 15:19:55\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "255 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":3.6484,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0868,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Out-of-process script runner ready.\",\"durationMs\":3.429,\"data\":{\"state\":\"Ready\",\"suspects\":0,\"quarantined\":0,\"peCache\":true,\"shard.0\":\"up pid 20708, 0 in flight\",\"shard.1\":\"not started\",\"shard.iso\":\"not started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2006,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":1.5915,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0192,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1154,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1425,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":0.8783}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,428 @@
{
"label": "r1",
"baselineServer": true,
"utc": "2026-11-12T15:22:20.1216845Z",
"cases": [
{
"name": "encrypt-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "sign-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"policy": "Basic256Sha256",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "sign-wrong-secret-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-disabled-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenRejected",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-wrong-secret-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-unknown-key-id-65",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"key-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "key-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-anonymous",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"anon-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "anon-deny",
"result": "denied",
"status": "BadIdentityTokenInvalid",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "sign-untrusted-client",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\untrusted-client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"sign",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "Sign",
"expected": "peer-deny",
"result": "denied",
"status": "BadSecurityChecksFailed",
"autoAccept": false
},
"output": null
},
{
"name": "encrypt-untrusted-server",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"encrypt",
"peer-deny"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "SignAndEncrypt",
"expected": "peer-deny",
"result": "denied",
"status": "BadCertificateUntrusted",
"autoAccept": false
},
"output": null
}
],
"clis": [
{
"name": "cli-sdk1-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\baseline-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 2026-11-12T15:22:08.4019503Z\r\nServer Time: 2026-11-12T15:22:08.4019503Z\r\n"
},
{
"name": "cli-sdk2-encrypt-key-54",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 0,
"good": true,
"secretOccurrencesInOutput": 0,
"output": "Node: i=2259\r\nValue: 0\r\nStatus: Good [0x00000000]\r\nSource Time: 11/12/2026 15:22:11\r\nServer Time: 11/12/2026 15:22:11\r\n"
}
],
"findings": [
{
"name": "endpoints-advertised",
"args": [
"endpoints",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa"
],
"exit": 3,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "endpoints",
"result": "insecure-offered",
"endpoints": [
{
"mode": "None",
"policy": "None",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "Sign",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
},
{
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"tokens": [
"UserName"
],
"certSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA"
}
]
},
"output": null
},
{
"name": "none-endpoint-valid-key-54",
"args": [
"probe",
"C:\\OtOpcUa800\\state\\client-pki",
"opc.tcp://localhost:14841/OtOpcUa",
"none",
"allow"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "probe",
"securityMode": "None",
"policy": "None",
"expected": "allow",
"result": "allowed",
"serverState": "0 (Good [0x00000000])",
"serviceLevel": "250 (Good [0x00000000])",
"unsNamespaceIndex": 3,
"virtualTag": "800 (Good [0x00000000])",
"serverCertSha1": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"autoAccept": false
},
"output": null
},
{
"name": "cli-sdk2-encrypt-key-65",
"exe": "C:\\OtOpcUa800\\upload\\candidate-cli\\ZB.MOM.WW.OtOpcUa.Client.CLI.exe",
"argv": "read --url <url> --security encrypt --username apikey --password <task-secret> --node i=2259",
"exit": 1,
"good": false,
"secretOccurrencesInOutput": 0,
"output": "ERROR\r\nOpc.Ua.ServiceResultException: [80200000] (BadIdentityTokenInvalid)\r\n at Opc.Ua.ClientBase.ValidateResponse(ResponseHeader header) \r\n at Opc.Ua.SessionClient.ActivateSessionAsync(RequestHeader requestHeader, SignatureData clientSignature, ArrayOf`1 clientSoftwareCertificates, ArrayOf`1 localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.Session.OpenCoreAsync(SessionClient serviceClient, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, Boolean checkDomain, Boolean closeChannel, CancellationToken ct, ArrayOf`1 refreshedEndpoints) \r\n at Opc.Ua.Client.DefaultSessionFactory.CreateAsync(ApplicationConfiguration configuration, ITransportWaitingConnection connection, ConfiguredEndpoint endpoint, Boolean updateBeforeConnect, Boolean checkDomain, String sessionName, UInt32 sessionTimeout, IUserIdentity identity, ArrayOf`1 preferredLocales, DiagnosticsMasks returnDiagnostics, CancellationToken ct) \r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters.DefaultSessionFactory.CreateSessionAsync(ApplicationConfiguration config, EndpointDescription endpoint, String sessionName, UInt32 sessionTimeoutMs, UserIdentity identity, Boolean validateServerHostName, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\Adapters\\DefaultSessionFactory.cs:27\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectToEndpointAsync(ConnectionSettings settings, String endpointUrl, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:801\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectAsync(ConnectionSettings settings, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:129\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.CommandBase.CreateServiceAndConnectAsync(CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\CommandBase.cs:116\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:47\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:78\r\n at CliFx.CliApplication.RunAsync(ApplicationSchema applicationSchema, CommandInput commandInput) in \\_\\CliFx\\CliApplication.cs:144\r\n at CliFx.CliApplication.RunAsync(IReadOnlyList`1 commandLineArguments, IReadOnlyDictionary`2 environmentVariables) in \\_\\CliFx\\CliApplication.cs:185\r\n"
}
],
"health": [
{
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":0.8278,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0201,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Scripts run in process (Scripting:Runner=InProcess).\",\"durationMs\":0.0834},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.0966,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
{
"path": "/healthz",
"status": 200,
"body": "Healthy"
},
{
"path": "/health/active",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":2.2825,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.0195,\"data\":{\"status\":\"Started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.1182,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"cluster-primary\":{\"status\":\"Healthy\",\"description\":\"Active node for role \\u0027driver\\u0027 (oldest Up member).\",\"durationMs\":0.1288,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"activeRole\":\"driver\",\"activeNode\":\"akka.tcp://otopcua@127.0.0.1:18801\"}},\"localdb-replication\":{\"status\":\"Healthy\",\"description\":\"LocalDb replication is not configured on this node (default-OFF).\",\"durationMs\":1.677}}}"
}
],
"failed": [],
"outputsWithSecrets": []
}
@@ -0,0 +1,105 @@
{
"rows": [
{
"label": "b1",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "1725dca654a9879b582186b711cbf2474f84f68a9749cde4f997fd3d0f74bb94",
"pkiEntries": 10,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "b2reboot",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "b3",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "b4",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "c1",
"exe": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004",
"opcUaCore": "2.0.1.2",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "c2",
"exe": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004",
"opcUaCore": "2.0.1.2",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
}
],
"identical": {
"certificate": true,
"pkiFilesAndAcls": false,
"environment": true
}
}
@@ -0,0 +1,121 @@
{
"rows": [
{
"label": "b2reboot",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "b3",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "b4",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "c1",
"exe": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004",
"opcUaCore": "2.0.1.2",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "c2",
"exe": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004",
"opcUaCore": "2.0.1.2",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "c3",
"exe": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004",
"opcUaCore": "2.0.1.2",
"envDigest": "24622724efc7a949f1abc1a99eb9312b6808d8c962c0f70bf92b9f7e253e3be4",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "ce1d5ebc52768f9fe1df18aac343c589eaf74724012a269fb3e48fe3eec818ca",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(D;ID;CC;;;S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
},
{
"label": "r1",
"exe": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d",
"opcUaCore": "1.5.378.182",
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"certs": [
"CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845"
],
"pkiDigest": "c8517c1d02985ca739c6259829827ddfedbcecd33055d60df0aaad5f3b892a77",
"pkiEntries": 13,
"dataAcl": [
"data\\otopcua-localdb.db|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-shm|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)",
"data\\otopcua-localdb.db-wal|O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
]
}
],
"identical": {
"certificate": true,
"pkiFilesAndAcls": false,
"environment": false
}
}
@@ -0,0 +1,84 @@
### 2026-11-12T14:55:25Z phase=Prepare label=x
### exit 0
### 2026-11-12T14:55:55Z phase=Prepare label=x
### exit 0
### 2026-11-12T14:56:27Z phase=Boot label=b0 -AllowNotReady
### exit 0
### 2026-11-12T14:56:55Z phase=Stop label=b0
### exit 0
### 2026-11-12T14:57:06Z phase=Seed label=x
### exit 0
### 2026-11-12T14:57:13Z phase=Trust label=x
### exit 0
### 2026-11-12T14:57:28Z phase=Boot label=b1
### exit 0
### 2026-11-12T14:57:47Z phase=Checks label=b1
### exit 1
### 2026-11-12T15:00:37Z phase=Stop label=b1
### exit 0
### 2026-11-12T15:06:32Z phase=Observe label=b2reboot
### exit 0
### 2026-11-12T15:06:49Z phase=Stop label=b2reboot
### exit 0
### 2026-11-12T15:08:12Z phase=Seed label=x
### exit 0
### 2026-11-12T15:08:19Z phase=Boot label=b3
### exit 0
### 2026-11-12T15:08:34Z phase=Checks label=b3 -BaselineServer
### exit 0
### 2026-11-12T15:09:58Z phase=Stop label=b3
### exit 0
### 2026-11-12T15:10:09Z phase=Seed label=x
### exit 0
### 2026-11-12T15:10:15Z phase=Boot label=b4
### exit 0
### 2026-11-12T15:10:30Z phase=Checks label=b4 -BaselineServer
### exit 0
### 2026-11-12T15:11:53Z phase=Stop label=b4
### exit 0
### 2026-11-12T15:12:04Z phase=Upgrade label=x
### exit 0
### 2026-11-12T15:12:28Z phase=Boot label=c1
### exit 0
### 2026-11-12T15:12:51Z phase=Checks label=c1
### exit 0
### 2026-11-12T15:13:56Z phase=Stop label=c1
### exit 0
### 2026-11-12T15:14:08Z phase=Boot label=c2
### exit 0
### 2026-11-12T15:14:31Z phase=Checks label=c2
### exit 0
### 2026-11-12T15:15:36Z phase=Stop label=c2
### exit 0
### 2026-11-12T15:16:02Z phase=Compare label=b1,b2reboot,b3,b4,c1,c2
### exit 0
### 2026-11-12T15:16:22Z phase=IsolationInstall label=x
### exit 1
### 2026-11-12T15:17:21Z phase=IsolationInstall label=x
### exit 1
### 2026-11-12T15:18:19Z phase=IsolationUninstall label=x
### exit 1
### 2026-11-12T15:19:31Z phase=IsolationInstall label=x -PatchedIsolation
### exit 0
### 2026-11-12T15:20:09Z phase=Boot label=c3
### exit 0
### 2026-11-12T15:20:33Z phase=Checks label=c3
### exit 0
### 2026-11-12T15:21:39Z phase=IsolationVerify label=c3
### exit 0
### 2026-11-12T15:22:00Z phase=Stop label=c3
### exit 0
### 2026-11-12T15:22:11Z phase=IsolationUninstall label=x -PatchedIsolation
### exit 0
### 2026-11-12T15:22:46Z phase=Rollback label=x
### exit 0
### 2026-11-12T15:22:52Z phase=Boot label=r1
### exit 0
### 2026-11-12T15:23:08Z phase=Checks label=r1 -BaselineServer
### exit 0
### 2026-11-12T15:24:13Z phase=Stop label=r1
### exit 0
### 2026-11-12T15:24:23Z phase=Compare label=b2reboot,b3,b4,c1,c2,c3,r1
### exit 0
### 2026-11-12T15:25:06Z phase=Cleanup label=x
### exit 1
@@ -0,0 +1,100 @@
{
"whatIf": {
"script": "install-candidate-patched",
"host": "pwsh",
"args": "-WhatIf",
"exit": 0,
"output": "ScriptWorker isolation install: worker identity NT SERVICE\\OtOpcUaScriptWorker (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135), host account NT SERVICE\\OtOpcUaHost (S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)\r\nWhat if: Performing the operation \"AnchorService: register the disabled anchor service 'OtOpcUaScriptWorker' so the virtual account 'NT SERVICE\\OtOpcUaScriptWorker' (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135) resolves by name (never started)\" on target \"OtOpcUaScriptWorker\".\r\nWhat if: Performing the operation \"PeCacheDir: create the PE cache directory and set its ACL (protected; SYSTEM, Administrators, host account full control; no Users; no worker access to the key or markers)\" on target \"C:\\OtOpcUa800\\state\\pe-cache\".\r\nWhat if: Performing the operation \"PeEntriesDir: create the PE entries directory and grant the worker identity Modify (it compiles and writes HMAC'd entries)\" on target \"C:\\OtOpcUa800\\state\\pe-cache\\pe\".\r\nWhat if: Performing the operation \"WorkerFolderAcl: grant the worker identity read+execute on its own binaries\" on target \"C:\\OtOpcUa800\\OtOpcUa\\script-worker\".\r\nWhat if: Performing the operation \"InstallRootDeny: deny the worker identity ReadData/ListDirectory on the install folder (appsettings, logs, host binaries); script-worker\\ stays readable\" on target \"C:\\OtOpcUa800\\OtOpcUa\".\r\nWhat if: Performing the operation \"FirewallBlockOutbound: add a Windows Firewall rule blocking ALL outbound traffic from 'C:\\OtOpcUa800\\OtOpcUa\\script-worker\\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe' (every profile)\" on target \"OtOpcUa-ScriptWorker-BlockOutbound\".\r\nWhat if: Performing the operation \"HostServiceEnv: set Scripting__Worker__Identity=NT SERVICE\\OtOpcUaScriptWorker and Scripting__Worker__PeCacheDir=C:\\OtOpcUa800\\state\\pe-cache in the 'OtOpcUaHost' service environment (other entries kept; takes effect on the next service start)\" on target \"OtOpcUaHost\".\r\n"
},
"whatIfChangedState": false,
"apply": {
"script": "install-candidate-patched",
"host": "pwsh",
"args": "",
"exit": 0,
"output": "ScriptWorker isolation install: worker identity NT SERVICE\\OtOpcUaScriptWorker (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135), host account NT SERVICE\\OtOpcUaHost (S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)\r\n [unchanged] AnchorService OtOpcUaScriptWorker\r\n [unchanged] PeCacheDir C:\\OtOpcUa800\\state\\pe-cache\r\n [changed ] PeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe\r\n [changed ] WorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker\r\n [changed ] InstallRootDeny C:\\OtOpcUa800\\OtOpcUa\r\n [changed ] FirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound\r\n [changed ] HostServiceEnv OtOpcUaHost\r\n\r\nDone. Host configuration for this node:\r\n Scripting:Worker:Identity = NT SERVICE\\OtOpcUaScriptWorker\r\n Scripting:Worker:PeCacheDir = C:\\OtOpcUa800\\state\\pe-cache\r\n Restart OtOpcUaHost for a configuration change to take effect.\r\n\r\n\u001b[32;1mId \u001b[0m\u001b[32;1m Target \u001b[0m\u001b[32;1m Outcome\u001b[0m\r\n\u001b[32;1m-- \u001b[0m \u001b[32;1m------ \u001b[0m \u001b[32;1m-------\u001b[0m\r\nAnchorService OtOpcUaScriptWorker unchanged\r\nPeCacheDir C:\\OtOpcUa800\\state\\pe-cache unchanged\r\nPeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe changed\r\nWorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker changed\r\nInstallRootDeny C:\\OtOpcUa800\\OtOpcUa changed\r\nFirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound changed\r\nHostServiceEnv OtOpcUaHost changed\r\n\r\n"
},
"reapply": {
"script": "install-candidate-patched",
"host": "powershell.exe",
"args": "",
"exit": 0,
"output": "ScriptWorker isolation install: worker identity NT SERVICE\\OtOpcUaScriptWorker (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135), host account NT SERVICE\\OtOpcUaHost (S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)\r\n [unchanged] AnchorService OtOpcUaScriptWorker\r\n [unchanged] PeCacheDir C:\\OtOpcUa800\\state\\pe-cache\r\n [unchanged] PeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe\r\n [unchanged] WorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker\r\n [unchanged] InstallRootDeny C:\\OtOpcUa800\\OtOpcUa\r\n [unchanged] FirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound\r\n [unchanged] HostServiceEnv OtOpcUaHost\r\n\r\nDone. Host configuration for this node:\r\n Scripting:Worker:Identity = NT SERVICE\\OtOpcUaScriptWorker\r\n Scripting:Worker:PeCacheDir = C:\\OtOpcUa800\\state\\pe-cache\r\n Restart OtOpcUaHost for a configuration change to take effect.\r\n\r\nId Target Outcome \r\n-- ------ ------- \r\nAnchorService OtOpcUaScriptWorker unchanged\r\nPeCacheDir C:\\OtOpcUa800\\state\\pe-cache unchanged\r\nPeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe unchanged\r\nWorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker unchanged\r\nInstallRootDeny C:\\OtOpcUa800\\OtOpcUa unchanged\r\nFirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound unchanged\r\nHostServiceEnv OtOpcUaHost unchanged\r\n\r\n\r\n"
},
"reapplyAllUnchanged": true,
"envBefore": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envAfter": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Scripting__Runner",
"Scripting__Worker__Identity",
"Scripting__Worker__PeCacheDir",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"anchor": "[SC] QueryServiceConfig SUCCESS\r\n\r\nSERVICE_NAME: OtOpcUaScriptWorker\r\n TYPE : 10 WIN32_OWN_PROCESS \r\n START_TYPE : 4 DISABLED\r\n ERROR_CONTROL : 1 NORMAL\r\n BINARY_PATH_NAME : \"C:\\OtOpcUa800\\OtOpcUa\\script-worker\\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe\"\r\n LOAD_ORDER_GROUP : \r\n TAG : 0\r\n DISPLAY_NAME : OtOpcUa ScriptWorker identity (anchor, never started)\r\n DEPENDENCIES : \r\n SERVICE_START_NAME : NT SERVICE\\OtOpcUaScriptWorker\r\n",
"anchorSid": "\r\nNAME: OtOpcUaScriptWorker\r\nSERVICE SID: S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135\r\nSTATUS: Active\r\n",
"installAcl": "C:\\OtOpcUa800\\OtOpcUa NT SERVICE\\OtOpcUaScriptWorker:(OI)(CI)(DENY)(S,RD)\r\n NT SERVICE\\OtOpcUaHost:(OI)(CI)(RX)\r\n NT AUTHORITY\\SYSTEM:(I)(OI)(CI)(F)\r\n BUILTIN\\Administrators:(I)(OI)(CI)(F)\r\n\r\nSuccessfully processed 1 files; Failed processing 0 files\r\n",
"workerDirAcl": "C:\\OtOpcUa800\\OtOpcUa\\script-worker NT SERVICE\\OtOpcUaScriptWorker:(OI)(CI)(RX)\r\n NT SERVICE\\OtOpcUaScriptWorker:(I)(OI)(CI)(DENY)(S,RD)\r\n NT SERVICE\\OtOpcUaHost:(I)(OI)(CI)(RX)\r\n NT AUTHORITY\\SYSTEM:(I)(OI)(CI)(F)\r\n BUILTIN\\Administrators:(I)(OI)(CI)(F)\r\n\r\nSuccessfully processed 1 files; Failed processing 0 files\r\n",
"peCacheAcl": "C:\\OtOpcUa800\\state\\pe-cache NT AUTHORITY\\SYSTEM:(OI)(CI)(F)\r\n BUILTIN\\Administrators:(OI)(CI)(F)\r\n NT SERVICE\\OtOpcUaHost:(OI)(CI)(F)\r\n\r\nSuccessfully processed 1 files; Failed processing 0 files\r\n",
"peAcl": "C:\\OtOpcUa800\\state\\pe-cache\\pe NT SERVICE\\OtOpcUaScriptWorker:(OI)(CI)(M)\r\n NT AUTHORITY\\SYSTEM:(I)(OI)(CI)(F)\r\n BUILTIN\\Administrators:(I)(OI)(CI)(F)\r\n NT SERVICE\\OtOpcUaHost:(I)(OI)(CI)(F)\r\n\r\nSuccessfully processed 1 files; Failed processing 0 files\r\n",
"firewall": {
"name": "OtOpcUa-ScriptWorker-BlockOutbound",
"direction": "Outbound",
"action": "Block",
"enabled": "True",
"profile": "Any",
"program": "C:\\OtOpcUa800\\OtOpcUa\\script-worker\\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe"
},
"workerExeSha256": "9DC0558BB62231487DAFCD1B792BBE280B5BAFC8849CB0347B14FB50483CFC04",
"workerFiles": 275
}
@@ -0,0 +1,49 @@
--- /private/tmp/claude-501/-Users-dohertj2-Desktop-scadaproj/a6d396bd-5e2c-4e21-a60d-576a5e97f6b7/scratchpad/wt800/scripts/install/ScriptWorkerIsolation.psm1 2026-11-12 09:40:54
+++ /private/tmp/claude-501/-Users-dohertj2-Desktop-scadaproj/a6d396bd-5e2c-4e21-a60d-576a5e97f6b7/scratchpad/art/install-candidate-patched/ScriptWorkerIsolation.psm1 2026-11-12 10:18:53
@@ -188,16 +188,17 @@
if ($Remove) { return 'unchanged' }
throw "$Path does not exist"
}
- $item = Get-Item -LiteralPath $Path
- $acl = $item.GetAccessControl('Access')
+ $acl = Get-Acl -LiteralPath $Path # #800: DirectoryInfo.GetAccessControl does not exist on PowerShell 7 (.NET)
$identity = [System.Security.Principal.SecurityIdentifier]::new($Sid)
$explicit = @($acl.GetAccessRules($true, $false, [System.Security.Principal.SecurityIdentifier]) |
Where-Object { $_.IdentityReference -eq $identity })
$inherit = [System.Security.AccessControl.InheritanceFlags]'ContainerInherit, ObjectInherit'
- $wanted = if ($Remove) { @() } else {
- , [System.Security.AccessControl.FileSystemAccessRule]::new($identity, [System.Security.AccessControl.FileSystemRights]$Mask,
+ # #800: @() keeps $wanted an array; the if-expression unrolled it to a scalar ($null on -Remove), and .Count on that
+ # throws under Set-StrictMode -Version Latest on Windows PowerShell 5.1.
+ $wanted = @(if (-not $Remove) {
+ [System.Security.AccessControl.FileSystemAccessRule]::new($identity, [System.Security.AccessControl.FileSystemRights]$Mask,
$inherit, [System.Security.AccessControl.PropagationFlags]::None, [System.Security.AccessControl.AccessControlType]$Type)
- }
+ })
$same = ($explicit.Count -eq $wanted.Count) -and (
$wanted.Count -eq 0 -or (
[int]$explicit[0].FileSystemRights -eq $Mask -and $explicit[0].AccessControlType -eq $wanted[0].AccessControlType -and
@@ -205,7 +206,7 @@
if ($same) { return 'unchanged' }
$acl.PurgeAccessRules($identity)
foreach ($rule in $wanted) { $acl.AddAccessRule($rule) }
- $item.SetAccessControl($acl)
+ Set-Acl -LiteralPath $Path -AclObject $acl
'changed'
}
@@ -252,12 +253,11 @@
}
$changed = $false
if (-not (Test-Path -LiteralPath $d.Path)) { New-Item -ItemType Directory -Path $d.Path -Force | Out-Null; $changed = $true }
- $item = Get-Item -LiteralPath $d.Path
- $current = $item.GetAccessControl('Access, Owner').GetSecurityDescriptorSddlForm('Access, Owner')
+ $current = (Get-Acl -LiteralPath $d.Path).GetSecurityDescriptorSddlForm('Access, Owner')
$desired = [System.Security.AccessControl.DirectorySecurity]::new()
$desired.SetSecurityDescriptorSddlForm($d.Sddl, 'Access, Owner')
if ($current -ne $desired.GetSecurityDescriptorSddlForm('Access, Owner')) {
- $item.SetAccessControl($desired) # propagates to the key file, pe\ and workers\ (inherited ACEs)
+ Set-Acl -LiteralPath $d.Path -AclObject $desired # propagates to the key file, pe\ and workers\ (inherited ACEs)
$changed = $true
}
return $(if ($changed) { 'changed' } else { 'unchanged' })
@@ -0,0 +1,49 @@
{
"first": {
"script": "install-candidate-patched",
"host": "powershell.exe",
"args": "-Uninstall",
"exit": 0,
"output": "ScriptWorker isolation ROLLBACK: worker identity NT SERVICE\\OtOpcUaScriptWorker (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135), host account NT SERVICE\\OtOpcUaHost (S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)\r\n [changed ] HostServiceEnv OtOpcUaHost\r\n [changed ] FirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound\r\n [changed ] InstallRootDeny C:\\OtOpcUa800\\OtOpcUa\r\n [changed ] WorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker\r\n [changed ] PeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe\r\n [changed ] AnchorService OtOpcUaScriptWorker\r\n\r\nRolled back. If the host still sets Scripting:Worker:Identity (appsettings or env), unset it and restart the host.\r\n\r\nId Target Outcome\r\n-- ------ -------\r\nHostServiceEnv OtOpcUaHost changed\r\nFirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound changed\r\nInstallRootDeny C:\\OtOpcUa800\\OtOpcUa changed\r\nWorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker changed\r\nPeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe changed\r\nAnchorService OtOpcUaScriptWorker changed\r\n\r\n\r\n"
},
"second": {
"script": "install-candidate-patched",
"host": "pwsh",
"args": "-Uninstall",
"exit": 0,
"output": "ScriptWorker isolation ROLLBACK: worker identity NT SERVICE\\OtOpcUaScriptWorker (S-1-5-80-1846135827-3903057317-1998105452-3938448374-3023753135), host account NT SERVICE\\OtOpcUaHost (S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)\r\n [unchanged] HostServiceEnv OtOpcUaHost\r\n [unchanged] FirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound\r\n [unchanged] InstallRootDeny C:\\OtOpcUa800\\OtOpcUa\r\n [unchanged] WorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker\r\n [unchanged] PeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe\r\n [unchanged] AnchorService OtOpcUaScriptWorker\r\n\r\nRolled back. If the host still sets Scripting:Worker:Identity (appsettings or env), unset it and restart the host.\r\n\r\n\u001b[32;1mId \u001b[0m\u001b[32;1m Target \u001b[0m\u001b[32;1m Outcome\u001b[0m\r\n\u001b[32;1m-- \u001b[0m \u001b[32;1m------ \u001b[0m \u001b[32;1m-------\u001b[0m\r\nHostServiceEnv OtOpcUaHost unchanged\r\nFirewallBlockOutbound OtOpcUa-ScriptWorker-BlockOutbound unchanged\r\nInstallRootDeny C:\\OtOpcUa800\\OtOpcUa unchanged\r\nWorkerFolderAcl C:\\OtOpcUa800\\OtOpcUa\\script-worker unchanged\r\nPeEntriesDir C:\\OtOpcUa800\\state\\pe-cache\\pe unchanged\r\nAnchorService OtOpcUaScriptWorker unchanged\r\n\r\n"
},
"secondAllUnchanged": true,
"anchorGone": true,
"firewallGone": true,
"installAcl": "C:\\OtOpcUa800\\OtOpcUa NT SERVICE\\OtOpcUaHost:(OI)(CI)(RX)\r\n NT AUTHORITY\\SYSTEM:(I)(OI)(CI)(F)\r\n BUILTIN\\Administrators:(I)(OI)(CI)(F)\r\n\r\nSuccessfully processed 1 files; Failed processing 0 files\r\n",
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c"
}
@@ -0,0 +1,28 @@
{
"hostPid": 22564,
"workers": [
{
"pid": 20708,
"parent": 22564,
"parentIsHost": true,
"path": "C:\\OtOpcUa800\\OtOpcUa\\script-worker\\ZB.MOM.WW.OtOpcUa.ScriptWorker.exe",
"owner": "NT SERVICE\\OtOpcUaHost",
"token": "restricted=True privilegeCount=1"
}
],
"pipes": [
{
"pipe": "otopcua-sw-<random>",
"adminConnect": "denied (UnauthorizedAccessException)"
}
],
"ready": {
"path": "/health/ready",
"status": 200,
"body": "{\"status\":\"Healthy\",\"totalDurationMs\":0.4111,\"entries\":{\"opcua-endpoint\":{\"status\":\"Healthy\",\"description\":\"OPC UA endpoint is listening\",\"durationMs\":0.021,\"data\":{\"status\":\"Started\"}},\"script-runner\":{\"status\":\"Healthy\",\"description\":\"Out-of-process script runner ready.\",\"durationMs\":0.1255,\"data\":{\"state\":\"Ready\",\"suspects\":0,\"quarantined\":0,\"peCache\":true,\"shard.0\":\"up pid 20708, 0 in flight\",\"shard.1\":\"not started\",\"shard.iso\":\"not started\"}},\"akka\":{\"status\":\"Healthy\",\"description\":\"Akka cluster member status: Up\",\"durationMs\":0.2321,\"data\":{\"selfAddress\":\"akka.tcp://otopcua@127.0.0.1:18801\",\"selfRoles\":[\"driver\"],\"memberCount\":1,\"unreachableCount\":0,\"leader\":\"akka.tcp://otopcua@127.0.0.1:18801\"}}}}"
},
"peFiles": 1,
"hostLogWorkerLines": [
"2026-11-12 10:19:01.608 -05:00 [INF] ScriptWorker[0] started, pid 20708"
]
}
@@ -0,0 +1,827 @@
2026-11-12 09:47:21.912 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 09:47:22.071 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 09:47:23.231 -05:00 [INF] Starting remoting
2026-11-12 09:47:23.798 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:23.799 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:23.830 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 09:47:23.839 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 09:47:23.911 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 09:47:24.090 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 09:47:24.090 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 09:47:24.144 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 09:47:24.202 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 09:47:29.129 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:29.190 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 09:47:29.199 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:29.211 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 09:47:29.213 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 09:47:29.439 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:47:29.456 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:29.472 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 09:47:29.492 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 09:47:29.493 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 09:47:29.516 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — the LocalDb cache is empty; entering Steady (no revision). The first dispatch will fetch this node's configuration from central.
2026-11-12 09:47:30.414 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:30.981 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:47:31.322 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:31.499 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:31.507 -05:00 [INF] HTTP GET /health/ready responded 200 in 182.5640 ms
2026-11-12 09:47:31.512 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 574.1624ms
2026-11-12 09:47:32.632 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:47:32.640 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:32.643 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:32.643 -05:00 [INF] HTTP GET /healthz responded 200 in 2.9354 ms
2026-11-12 09:47:32.644 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 14.0992ms
2026-11-12 09:47:32.795 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:47:32.800 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:32.810 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:32.810 -05:00 [INF] HTTP GET /health/active responded 200 in 9.8417 ms
2026-11-12 09:47:32.810 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 15.5104ms
2026-11-12 09:47:46.858 -05:00 [INF] Application is shutting down...
2026-11-12 09:47:46.896 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 09:47:46.937 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 09:47:46.948 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 09:47:46.954 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:46.967 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 09:47:46.969 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 09:47:46.969 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:47:47.226 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1574929041] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 6b97cc89b57041bc800aec12f68624f7 }
2026-11-12 09:47:47.984 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:47.984 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 09:47:47.991 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 09:47:48.011 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 09:47:48.015 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 09:47:48.016 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 09:47:48.048 -05:00 [INF] Shutting down remote daemon.
2026-11-12 09:47:48.055 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 09:47:48.129 -05:00 [INF] Remoting shut down
2026-11-12 09:47:48.130 -05:00 [INF] Remoting shut down.
2026-11-12 09:47:48.147 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:48.242 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 09:48:21.887 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 09:48:22.023 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 09:48:23.107 -05:00 [INF] Starting remoting
2026-11-12 09:48:23.666 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:48:23.667 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:48:23.699 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 09:48:23.707 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 09:48:23.759 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 09:48:23.905 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 09:48:23.906 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 09:48:23.968 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 09:48:24.083 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 09:48:28.817 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:48:28.873 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 09:48:28.880 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:48:28.891 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 09:48:28.892 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 09:48:29.114 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:48:29.130 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:48:29.150 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 09:48:29.162 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 09:48:29.164 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 09:48:29.365 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 09:48:29.373 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 643e5ab0bace45f4ab4ef14ceaf39add (rev 4ed5c123b0e328ea4745a10b2a36e875082642333760d320996d39162f9cd7b4) from the LocalDb pointer.
2026-11-12 09:48:29.434 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=4ed5c123b0e3, keys=2, grants=1, resolvedScopes=0)
2026-11-12 09:48:29.436 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 1 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 09:48:29.450 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 09:48:29.462 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 2:48:29 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 09:48:29.493 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 09:48:29.499 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 09:48:29.515 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 09:48:29.546 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=5429a1f78a59487db3c8abe1f1ca92c4, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 09:48:30.094 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:48:30.905 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:48:31.250 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:31.467 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:31.475 -05:00 [INF] HTTP GET /health/ready responded 200 in 222.9444 ms
2026-11-12 09:48:31.483 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 610.0994ms
2026-11-12 09:48:32.582 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:48:32.591 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:32.594 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:32.595 -05:00 [INF] HTTP GET /healthz responded 200 in 3.4068 ms
2026-11-12 09:48:32.596 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 16.1997ms
2026-11-12 09:48:32.765 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:48:32.767 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:32.787 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:32.788 -05:00 [INF] HTTP GET /health/active responded 200 in 20.8320 ms
2026-11-12 09:48:32.789 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 24.2242ms
2026-11-12 09:49:27.832 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:49:27.833 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:27.835 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:27.835 -05:00 [INF] HTTP GET /health/ready responded 200 in 2.3181 ms
2026-11-12 09:49:27.836 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 4.6432ms
2026-11-12 09:49:27.901 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:49:27.901 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:27.902 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:27.902 -05:00 [INF] HTTP GET /healthz responded 200 in 1.0003 ms
2026-11-12 09:49:27.903 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.9765ms
2026-11-12 09:49:28.064 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:49:28.064 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:28.067 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:28.067 -05:00 [INF] HTTP GET /health/active responded 200 in 2.8578 ms
2026-11-12 09:49:28.067 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.8678ms
2026-11-12 09:51:29.033 -05:00 [INF] Application is shutting down...
2026-11-12 09:51:29.077 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 09:51:29.121 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 09:51:29.135 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:51:29.148 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 38b220d7b51f4941b6ce0c8860538dd7 }
2026-11-12 09:51:29.153 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 09:51:29.154 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 09:51:29.788 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 09:51:29.806 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:51:30.045 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = d54a63d230a544cea51229d1c79f51b2 }
2026-11-12 09:51:30.159 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:51:30.160 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 09:51:30.165 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 09:51:30.182 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 09:51:30.184 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 09:51:30.186 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 09:51:30.215 -05:00 [INF] Shutting down remote daemon.
2026-11-12 09:51:30.225 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 09:51:30.303 -05:00 [INF] Remoting shut down
2026-11-12 09:51:30.304 -05:00 [INF] Remoting shut down.
2026-11-12 09:51:30.321 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:51:30.401 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:04:56.024 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:04:56.179 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:04:57.507 -05:00 [INF] Starting remoting
2026-11-12 10:04:58.103 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:04:58.105 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:04:58.139 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:04:58.147 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:04:58.200 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:04:58.332 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:04:58.332 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:04:58.405 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:04:58.515 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:05:03.710 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:05:03.787 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:05:03.795 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:05:03.806 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:05:03.807 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:05:04.129 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:05:04.135 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:05:04.145 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:05:04.145 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:05:04.216 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:05:04.221 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:05:04.483 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:05:04.501 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 643e5ab0bace45f4ab4ef14ceaf39add (rev 4ed5c123b0e328ea4745a10b2a36e875082642333760d320996d39162f9cd7b4) from the LocalDb pointer.
2026-11-12 10:05:04.517 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=4ed5c123b0e3, keys=2, grants=1, resolvedScopes=0)
2026-11-12 10:05:04.519 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 1 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:05:04.531 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:05:04.556 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1448635752] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:05:04 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:05:04.573 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:05:04.579 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:05:04.597 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:05:04.637 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=de9842c1962c46ed8c997fa12e1c7861, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:06:31.428 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:06:31.661 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:31.837 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:31.844 -05:00 [INF] HTTP GET /health/ready responded 200 in 201.5272 ms
2026-11-12 10:06:31.850 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 501.0846ms
2026-11-12 10:06:31.899 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:06:31.906 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:31.909 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:31.909 -05:00 [INF] HTTP GET /healthz responded 200 in 2.8073 ms
2026-11-12 10:06:31.910 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 13.1742ms
2026-11-12 10:06:32.049 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:06:32.051 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:32.059 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:32.059 -05:00 [INF] HTTP GET /health/active responded 200 in 9.4557 ms
2026-11-12 10:06:32.060 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 11.9931ms
2026-11-12 10:06:46.165 -05:00 [INF] Application is shutting down...
2026-11-12 10:06:46.196 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:06:46.225 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:06:46.233 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:06:46.244 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:06:46.245 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:06:46.463 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1448635752] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = c49207ade9504980bb5e067875c3b6a3 }
2026-11-12 10:06:47.014 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:06:47.030 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:06:47.149 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:06:47.149 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:06:47.153 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:06:47.167 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:06:47.169 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:06:47.170 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:06:47.190 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:06:47.197 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:06:47.258 -05:00 [INF] Remoting shut down
2026-11-12 10:06:47.259 -05:00 [INF] Remoting shut down.
2026-11-12 10:06:47.270 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:06:47.353 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:08:07.790 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:08:07.914 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:08:08.767 -05:00 [INF] Starting remoting
2026-11-12 10:08:09.205 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:08:09.206 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:08:09.232 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:08:09.239 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:08:09.281 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:08:09.386 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:08:09.387 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:08:09.434 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:08:09.515 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:08:13.142 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:08:13.189 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:08:13.195 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:08:13.205 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:08:13.206 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:08:13.382 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:08:13.393 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:08:13.405 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:08:13.422 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:08:13.423 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:08:13.583 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:08:13.592 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 3d8f782a33c14d68a0d171b466627cf8 (rev eec886c75573d93a4dfbdcc66c820e8c9c91b476a0786e8bd2c0ddce697397b9) from the LocalDb pointer.
2026-11-12 10:08:13.618 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=eec886c75573, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:08:13.622 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:08:13.621 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:08:13.632 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:08:13.648 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1653866231] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:08:13 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:08:13.668 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:08:13.674 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:08:13.689 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:08:13.715 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=44e4e11ddc984e0a87bbe062eec3484a, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:08:13.857 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:13.996 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:14.004 -05:00 [INF] HTTP GET /health/ready responded 200 in 160.0664 ms
2026-11-12 10:08:14.009 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 475.4836ms
2026-11-12 10:08:14.265 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:08:15.022 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:08:15.030 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:15.033 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:15.033 -05:00 [INF] HTTP GET /healthz responded 200 in 3.5944 ms
2026-11-12 10:08:15.034 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 15.6364ms
2026-11-12 10:08:15.171 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:08:15.174 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:15.183 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:15.183 -05:00 [INF] HTTP GET /health/active responded 200 in 10.8910 ms
2026-11-12 10:08:15.184 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.9139ms
2026-11-12 10:08:28.597 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:28.600 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:08:31.552 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:31.552 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:08:56.606 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:08:56.607 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:08:59.977 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:59.977 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:09:08.535 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:09:08.536 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:09:09.011 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:09:09.012 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.014 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.014 -05:00 [INF] HTTP GET /health/ready responded 200 in 2.2574 ms
2026-11-12 10:09:09.014 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 4.6294ms
2026-11-12 10:09:09.070 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:09:09.071 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.071 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.072 -05:00 [INF] HTTP GET /healthz responded 200 in 0.8873 ms
2026-11-12 10:09:09.072 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.779ms
2026-11-12 10:09:09.205 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:09:09.206 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.207 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.208 -05:00 [INF] HTTP GET /health/active responded 200 in 2.2448 ms
2026-11-12 10:09:09.208 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.0775ms
2026-11-12 10:09:35.707 -05:00 [INF] Application is shutting down...
2026-11-12 10:09:35.736 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:09:35.766 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:09:35.775 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:35.786 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:09:35.787 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:09:36.012 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1653866231] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = faf56e9311e145f7ac79d1d47c07b181 }
2026-11-12 10:09:36.616 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:09:36.632 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:09:36.697 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:36.697 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:09:36.701 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:09:36.714 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:09:36.716 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:09:36.718 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:09:36.737 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:09:36.744 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:09:36.800 -05:00 [INF] Remoting shut down
2026-11-12 10:09:36.801 -05:00 [INF] Remoting shut down.
2026-11-12 10:09:36.812 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:36.876 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:09:52.278 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:09:52.390 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:09:53.241 -05:00 [INF] Starting remoting
2026-11-12 10:09:53.665 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:53.666 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:53.689 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:09:53.695 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:09:53.735 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:09:53.843 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:09:53.843 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:09:53.894 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:09:53.969 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:09:57.513 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:57.558 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:09:57.565 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:57.574 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:09:57.576 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:09:57.884 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:09:57.891 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:57.904 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:09:57.917 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:09:57.919 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:09:58.050 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:09:58.086 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:09:58.097 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:09:58.119 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:09:58.124 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:09:58.135 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:09:58.153 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:09:58 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:09:58.175 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:09:58.184 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:09:58.199 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:09:58.226 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=a7a3ddc7f5b64ff2a9d3854689a50ddd, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:09:58.299 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:58.442 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:58.449 -05:00 [INF] HTTP GET /health/ready responded 200 in 163.7473 ms
2026-11-12 10:09:58.454 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 486.493ms
2026-11-12 10:09:58.642 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:59.385 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:09:59.392 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:59.395 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:59.395 -05:00 [INF] HTTP GET /healthz responded 200 in 2.9748 ms
2026-11-12 10:09:59.396 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 13.9311ms
2026-11-12 10:09:59.533 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:09:59.535 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:59.544 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:59.544 -05:00 [INF] HTTP GET /health/active responded 200 in 10.3647 ms
2026-11-12 10:09:59.545 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.1326ms
2026-11-12 10:10:12.848 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:12.851 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:15.982 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:15.982 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:18.909 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:10:18.910 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:21.733 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:10:21.733 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:24.592 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:10:24.592 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:27.438 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:10:27.439 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:46.131 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:10:46.131 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:10:49.488 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:49.488 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:57.663 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:57.663 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:58.139 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:10:58.140 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.141 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.142 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.9211 ms
2026-11-12 10:10:58.142 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 3.7812ms
2026-11-12 10:10:58.200 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:10:58.200 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.201 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.201 -05:00 [INF] HTTP GET /healthz responded 200 in 0.6878 ms
2026-11-12 10:10:58.201 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.4756ms
2026-11-12 10:10:58.334 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:10:58.334 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.336 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.336 -05:00 [INF] HTTP GET /health/active responded 200 in 2.6780 ms
2026-11-12 10:10:58.337 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.589ms
2026-11-12 10:11:19.518 -05:00 [INF] Application is shutting down...
2026-11-12 10:11:19.549 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:11:19.581 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:11:19.590 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:11:19.601 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:11:19.601 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:11:19.821 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = fa00b28a5f37482988cc3249d7cdfbcf }
2026-11-12 10:11:20.154 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:11:20.171 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:11:20.395 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = a5cb7474db6c4dc0ab0fd57165ff6c88 }
2026-11-12 10:11:20.516 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:11:20.516 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:11:20.521 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:11:20.534 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:11:20.537 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:11:20.538 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:11:20.557 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:11:20.564 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:11:20.623 -05:00 [INF] Remoting shut down
2026-11-12 10:11:20.624 -05:00 [INF] Remoting shut down.
2026-11-12 10:11:20.636 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:11:20.700 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:11:52.203 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:11:52.319 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:11:53.201 -05:00 [INF] Starting remoting
2026-11-12 10:11:53.633 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:11:53.634 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:11:53.659 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:11:53.665 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:11:53.705 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:11:53.810 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:11:53.811 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:11:53.858 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:11:53.955 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:12:04.048 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:12:04.308 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:12:04.314 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:12:04.326 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:12:04.328 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:12:04.506 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:12:04.521 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:12:04.533 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:12:04.548 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:12:04.550 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:12:04.700 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:12:04.709 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:12:04.747 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:12:04.752 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:12:04.758 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:12:04.774 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#161310405] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:12:04 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:12:04.782 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:12:04.871 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:12:04.876 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:12:04.891 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:12:04.913 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=1a5e5816bf9d4b2ca2a712c3c9f54533, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:12:05.048 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:12:05.192 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:12:05.199 -05:00 [INF] HTTP GET /health/ready responded 200 in 165.8171 ms
2026-11-12 10:12:05.204 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 530.5234ms
2026-11-12 10:12:05.387 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:12:06.105 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:12:06.112 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:12:06.115 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:12:06.115 -05:00 [INF] HTTP GET /healthz responded 200 in 3.2429 ms
2026-11-12 10:12:06.116 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 14.5421ms
2026-11-12 10:12:06.262 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:12:06.265 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:12:06.274 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:12:06.274 -05:00 [INF] HTTP GET /health/active responded 200 in 10.8077 ms
2026-11-12 10:12:06.275 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.819ms
2026-11-12 10:12:13.898 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:12:13.909 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:12:17.236 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:12:17.236 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:12:20.156 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:12:20.156 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:12:23.039 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:12:23.039 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:12:25.954 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:12:25.955 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:25.991 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:28.794 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:12:28.794 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:28.795 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:31.529 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:12:31.530 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:31.530 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:34.283 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:12:34.283 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:34.283 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:37.027 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a0d4ef215dba7e64
2026-11-12 10:12:37.027 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:37.028 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:39.867 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 2fb099d966a5070e
2026-11-12 10:12:39.867 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:12:39.868 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:12:45.063 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:12:45.109 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:12:45.140 -05:00 [ERR] ChannelId 24: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:12:47.591 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:12:47.592 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:12:47.592 -05:00 [ERR] ChannelId 26: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:12:50.188 -05:00 [ERR] TCPSERVERCHANNEL ForceChannelFault Transport=[::1]:51518, ChannelId=28, TokenId=1, Reason=[80AE0000] (BadConnectionClosed) 'Remote side closed the connection.'
2026-11-12 10:12:52.816 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:12:52.816 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:12:56.130 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:12:56.130 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:12:59.317 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:12:59.317 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:13:04.521 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:13:04.521 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:13:04.991 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:13:04.992 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:04.994 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:04.994 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.8856 ms
2026-11-12 10:13:04.995 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 3.7252ms
2026-11-12 10:13:05.051 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:13:05.052 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:05.052 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:05.052 -05:00 [INF] HTTP GET /healthz responded 200 in 0.6389 ms
2026-11-12 10:13:05.052 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.3727ms
2026-11-12 10:13:05.185 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:13:05.186 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:05.188 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:05.188 -05:00 [INF] HTTP GET /health/active responded 200 in 2.9062 ms
2026-11-12 10:13:05.188 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.7421ms
2026-11-12 10:13:09.816 -05:00 [INF] Application is shutting down...
2026-11-12 10:13:09.848 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:13:09.880 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:13:09.888 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:13:09.899 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:13:09.899 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:13:10.113 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#161310405] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 773bdf4e3d2348dfb5c06d6c36012c03 }
2026-11-12 10:13:10.231 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:13:10.239 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:13:10.464 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#161310405] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 2b1a832063264f30b6c858d6e8721d9b }
2026-11-12 10:13:10.809 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:13:10.809 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:13:10.813 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:13:10.826 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:13:10.828 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:13:10.830 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:13:10.850 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:13:10.857 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:13:10.919 -05:00 [INF] Remoting shut down
2026-11-12 10:13:10.920 -05:00 [INF] Remoting shut down.
2026-11-12 10:13:10.931 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:13:22.555 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:13:22.667 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:13:23.515 -05:00 [INF] Starting remoting
2026-11-12 10:13:23.941 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:13:23.942 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:13:23.965 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:13:23.971 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:13:24.010 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:13:24.112 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:13:24.113 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:13:24.160 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:13:24.253 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:13:34.203 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:13:34.455 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:13:34.461 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:13:34.474 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:13:34.475 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:13:34.648 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:13:34.666 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:13:34.677 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:13:34.686 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:13:34.687 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:13:34.843 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:13:34.851 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:13:34.885 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:13:34.890 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:13:34.902 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:13:34.903 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#75715599] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:13:34 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:13:34.986 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:13:34.991 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:13:35.005 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:13:35.029 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=be6a83ae39104dccafede7aef91d5b4d, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:13:35.123 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:13:35.382 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:35.531 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:13:35.532 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:35.539 -05:00 [INF] HTTP GET /health/ready responded 200 in 172.9391 ms
2026-11-12 10:13:35.545 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 496.3598ms
2026-11-12 10:13:36.438 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:13:36.445 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:36.448 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:36.448 -05:00 [INF] HTTP GET /healthz responded 200 in 3.2593 ms
2026-11-12 10:13:36.449 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 14.4956ms
2026-11-12 10:13:36.593 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:13:36.595 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:13:36.604 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:13:36.604 -05:00 [INF] HTTP GET /health/active responded 200 in 9.7515 ms
2026-11-12 10:13:36.605 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 12.5724ms
2026-11-12 10:13:44.082 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:13:44.093 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:13:47.460 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:13:47.460 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:13:50.397 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:13:50.398 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:13:53.362 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:13:53.362 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:13:56.392 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:13:56.393 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:13:56.429 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:13:59.181 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:13:59.181 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:13:59.182 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:14:02.030 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:14:02.030 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:14:02.031 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:14:04.871 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:14:04.871 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:14:04.872 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:14:07.705 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a0d4ef215dba7e64
2026-11-12 10:14:07.705 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:14:07.705 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:14:10.520 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 2fb099d966a5070e
2026-11-12 10:14:10.520 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:14:10.521 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:14:15.817 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:14:15.859 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:14:15.887 -05:00 [ERR] ChannelId 24: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:14:18.337 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:14:18.338 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:14:18.338 -05:00 [ERR] ChannelId 26: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:14:20.909 -05:00 [ERR] TCPSERVERCHANNEL ForceChannelFault Transport=[::1]:51734, ChannelId=28, TokenId=1, Reason=[80AE0000] (BadConnectionClosed) 'Remote side closed the connection.'
2026-11-12 10:14:23.444 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:14:23.444 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:14:26.760 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:14:26.760 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:14:29.905 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:14:29.905 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:14:34.993 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:14:34.994 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:14:35.465 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:14:35.466 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:14:35.468 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:14:35.468 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.9052 ms
2026-11-12 10:14:35.468 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 3.7748ms
2026-11-12 10:14:35.525 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:14:35.525 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:14:35.525 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:14:35.525 -05:00 [INF] HTTP GET /healthz responded 200 in 0.4768 ms
2026-11-12 10:14:35.525 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.0221ms
2026-11-12 10:14:35.659 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:14:35.660 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:14:35.662 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:14:35.662 -05:00 [INF] HTTP GET /health/active responded 200 in 2.4626 ms
2026-11-12 10:14:35.662 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.1399ms
2026-11-12 10:14:40.047 -05:00 [INF] Application is shutting down...
2026-11-12 10:14:40.079 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:14:40.110 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:14:40.119 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:14:40.130 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:14:40.131 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:14:40.350 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#75715599] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = e9cc4a3962b3413dbd73d36efaadf344 }
2026-11-12 10:14:40.538 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:14:40.556 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:14:40.772 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#75715599] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = d78eec4799084958b6604f2649e233f0 }
2026-11-12 10:14:41.045 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:14:41.045 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:14:41.049 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:14:41.062 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:14:41.065 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:14:41.066 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:14:41.085 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:14:41.092 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:14:41.149 -05:00 [INF] Remoting shut down
2026-11-12 10:14:41.150 -05:00 [INF] Remoting shut down.
2026-11-12 10:14:41.162 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:18:47.623 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:18:47.743 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:18:48.591 -05:00 [INF] Starting remoting
2026-11-12 10:18:49.014 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:18:49.015 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:18:49.040 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:18:49.046 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:18:49.084 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:18:49.192 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:18:49.192 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:18:49.240 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:18:49.330 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:18:59.357 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:18:59.615 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:18:59.621 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:18:59.634 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:18:59.635 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:18:59.844 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:18:59.851 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:18:59.862 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:18:59.877 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:18:59.879 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:19:00.021 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:19:00.029 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:19:00.063 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:19:00.068 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:19:00.079 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:19:00.082 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#296270987] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:19:00 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:19:00.143 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:19:00.148 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:19:00.163 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:19:00.164 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:19:00.186 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=574aa8bba2784738a46c3215c02e6e70, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:19:00.414 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:19:00.570 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:19:00.577 -05:00 [INF] HTTP GET /health/ready responded 200 in 179.1380 ms
2026-11-12 10:19:00.582 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 493.9721ms
2026-11-12 10:19:00.724 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:19:01.489 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:19:01.496 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:19:01.498 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:19:01.498 -05:00 [INF] HTTP GET /healthz responded 200 in 2.7944 ms
2026-11-12 10:19:01.499 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 13.091ms
2026-11-12 10:19:01.608 -05:00 [INF] ScriptWorker[0] started, pid 20708
2026-11-12 10:19:01.634 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:19:01.636 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:19:01.645 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:19:01.646 -05:00 [INF] HTTP GET /health/active responded 200 in 10.6588 ms
2026-11-12 10:19:01.646 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.6661ms
2026-11-12 10:19:09.673 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:19:09.685 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:19:13.010 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:19:13.011 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:19:16.136 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:19:16.136 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:19:19.062 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:19:19.062 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:19:22.083 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:19:22.084 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:22.120 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:24.883 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:19:24.884 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:24.885 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:27.679 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:19:27.680 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:27.680 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:30.447 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:19:30.447 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:30.447 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:33.194 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a0d4ef215dba7e64
2026-11-12 10:19:33.194 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:33.195 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:36.071 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 2fb099d966a5070e
2026-11-12 10:19:36.071 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:19:36.072 -05:00 [WRN] SERVER - Service Fault Occurred. Reason=BadIdentityTokenRejected
2026-11-12 10:19:41.393 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:19:41.433 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:19:41.460 -05:00 [ERR] ChannelId 24: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:19:44.040 -05:00 [ERR] Certificate [Subject=CN=Gate800Client, Thumbprint=C91ACD459294599052131D438FE9C4F4128637F5, NotBefore=2026-11-10, NotAfter=2027-11-10, KeyAlgorithm=1.2.840.113549.1.1.1] validation failed with suppressible errors but was rejected. Reason=Id: BadCertificateUntrusted
SymbolicId: BadCertificateUntrusted
Description: Certificate is not trusted..
2026-11-12 10:19:44.041 -05:00 [ERR] Could not verify security on OpenSecureChannel request.
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
[801A0000] (BadCertificateUntrusted) 'BadCertificateInvalid'
2026-11-12 10:19:44.041 -05:00 [ERR] ChannelId 26: ForceChannelFault due to Could not verify security on OpenSecureChannel request..
2026-11-12 10:19:46.706 -05:00 [ERR] TCPSERVERCHANNEL ForceChannelFault Transport=[::1]:52421, ChannelId=28, TokenId=1, Reason=[80AE0000] (BadConnectionClosed) 'Remote side closed the connection.'
2026-11-12 10:19:49.287 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:19:49.287 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:19:52.564 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:19:52.564 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:19:55.776 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:19:55.776 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:20:00.985 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:20:00.985 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:20:01.475 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:20:01.476 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:20:01.480 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:20:01.480 -05:00 [INF] HTTP GET /health/ready responded 200 in 4.6206 ms
2026-11-12 10:20:01.480 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 6.241ms
2026-11-12 10:20:01.537 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:20:01.537 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:20:01.537 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:20:01.538 -05:00 [INF] HTTP GET /healthz responded 200 in 0.4935 ms
2026-11-12 10:20:01.538 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.0736ms
2026-11-12 10:20:01.669 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:20:01.670 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:20:01.672 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:20:01.672 -05:00 [INF] HTTP GET /health/active responded 200 in 2.2441 ms
2026-11-12 10:20:01.672 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 2.958ms
2026-11-12 10:20:09.876 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:20:09.877 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:20:09.878 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:20:09.878 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.0382 ms
2026-11-12 10:20:09.878 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 1.8189ms
2026-11-12 10:20:25.926 -05:00 [INF] Application is shutting down...
2026-11-12 10:20:25.983 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:20:26.013 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:20:26.021 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:20:26.032 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:20:26.033 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:20:26.245 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#296270987] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 8f8b33abdc33414280ab272cf8795a12 }
2026-11-12 10:20:26.308 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:20:26.316 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:20:26.541 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#296270987] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 90e536ee79384f988ec9d34797188b88 }
2026-11-12 10:20:26.941 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:20:26.941 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:20:26.945 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:20:26.957 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:20:26.960 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:20:26.961 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:20:26.981 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:20:26.987 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:20:27.044 -05:00 [INF] Remoting shut down
2026-11-12 10:20:27.045 -05:00 [INF] Remoting shut down.
2026-11-12 10:20:27.055 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
@@ -0,0 +1,8 @@
2026-11-12 09:48:29.400 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:05:04.505 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:08:13.604 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:09:58.110 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:12:04.726 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:13:34.863 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
2026-11-12 10:19:00.041 -05:00 [INF] ScriptedAlarmEngine loaded 0 alarm(s)
@@ -0,0 +1,526 @@
2026-11-12 09:47:21.912 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 09:47:22.071 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 09:47:23.231 -05:00 [INF] Starting remoting
2026-11-12 09:47:23.798 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:23.799 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:23.830 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 09:47:23.839 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 09:47:23.911 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 09:47:24.090 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 09:47:24.090 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 09:47:24.144 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 09:47:24.202 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 09:47:29.129 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:29.190 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 09:47:29.199 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:29.211 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 09:47:29.213 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 09:47:29.439 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:47:29.456 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:29.472 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 09:47:29.492 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 09:47:29.493 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 09:47:29.516 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — the LocalDb cache is empty; entering Steady (no revision). The first dispatch will fetch this node's configuration from central.
2026-11-12 09:47:30.414 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:30.981 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:47:31.322 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:31.499 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:31.507 -05:00 [INF] HTTP GET /health/ready responded 200 in 182.5640 ms
2026-11-12 09:47:31.512 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 574.1624ms
2026-11-12 09:47:32.632 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:47:32.640 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:32.643 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:32.643 -05:00 [INF] HTTP GET /healthz responded 200 in 2.9354 ms
2026-11-12 09:47:32.644 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 14.0992ms
2026-11-12 09:47:32.795 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:47:32.800 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:47:32.810 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:47:32.810 -05:00 [INF] HTTP GET /health/active responded 200 in 9.8417 ms
2026-11-12 09:47:32.810 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 15.5104ms
2026-11-12 09:47:46.858 -05:00 [INF] Application is shutting down...
2026-11-12 09:47:46.896 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 09:47:46.937 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 09:47:46.948 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 09:47:46.954 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:47:46.967 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 09:47:46.969 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 09:47:46.969 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:47:47.226 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1574929041] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 6b97cc89b57041bc800aec12f68624f7 }
2026-11-12 09:47:47.984 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:47:47.984 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 09:47:47.991 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 09:47:48.011 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 09:47:48.015 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 09:47:48.016 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 09:47:48.048 -05:00 [INF] Shutting down remote daemon.
2026-11-12 09:47:48.055 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 09:47:48.129 -05:00 [INF] Remoting shut down
2026-11-12 09:47:48.130 -05:00 [INF] Remoting shut down.
2026-11-12 09:47:48.147 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:47:48.242 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 09:48:21.887 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 09:48:22.023 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 09:48:23.107 -05:00 [INF] Starting remoting
2026-11-12 09:48:23.666 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:48:23.667 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:48:23.699 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 09:48:23.707 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 09:48:23.759 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 09:48:23.905 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 09:48:23.906 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 09:48:23.968 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 09:48:24.083 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 09:48:28.817 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:48:28.873 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 09:48:28.880 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:48:28.891 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 09:48:28.892 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 09:48:29.114 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:48:29.130 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:48:29.150 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 09:48:29.162 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 09:48:29.164 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 09:48:29.365 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 09:48:29.373 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 643e5ab0bace45f4ab4ef14ceaf39add (rev 4ed5c123b0e328ea4745a10b2a36e875082642333760d320996d39162f9cd7b4) from the LocalDb pointer.
2026-11-12 09:48:29.434 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=4ed5c123b0e3, keys=2, grants=1, resolvedScopes=0)
2026-11-12 09:48:29.436 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 1 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 09:48:29.450 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 09:48:29.462 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 2:48:29 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 09:48:29.493 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 09:48:29.499 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 09:48:29.515 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 09:48:29.546 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=5429a1f78a59487db3c8abe1f1ca92c4, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 09:48:30.094 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:48:30.905 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:48:31.250 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:31.467 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:31.475 -05:00 [INF] HTTP GET /health/ready responded 200 in 222.9444 ms
2026-11-12 09:48:31.483 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 610.0994ms
2026-11-12 09:48:32.582 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:48:32.591 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:32.594 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:32.595 -05:00 [INF] HTTP GET /healthz responded 200 in 3.4068 ms
2026-11-12 09:48:32.596 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 16.1997ms
2026-11-12 09:48:32.765 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:48:32.767 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:48:32.787 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:48:32.788 -05:00 [INF] HTTP GET /health/active responded 200 in 20.8320 ms
2026-11-12 09:48:32.789 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 24.2242ms
2026-11-12 09:49:27.832 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 09:49:27.833 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:27.835 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:27.835 -05:00 [INF] HTTP GET /health/ready responded 200 in 2.3181 ms
2026-11-12 09:49:27.836 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 4.6432ms
2026-11-12 09:49:27.901 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 09:49:27.901 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:27.902 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:27.902 -05:00 [INF] HTTP GET /healthz responded 200 in 1.0003 ms
2026-11-12 09:49:27.903 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.9765ms
2026-11-12 09:49:28.064 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 09:49:28.064 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 09:49:28.067 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 09:49:28.067 -05:00 [INF] HTTP GET /health/active responded 200 in 2.8578 ms
2026-11-12 09:49:28.067 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.8678ms
2026-11-12 09:51:29.033 -05:00 [INF] Application is shutting down...
2026-11-12 09:51:29.077 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 09:51:29.121 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 09:51:29.135 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 09:51:29.148 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = 38b220d7b51f4941b6ce0c8860538dd7 }
2026-11-12 09:51:29.153 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 09:51:29.154 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 09:51:29.788 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 09:51:29.806 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 09:51:30.045 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#78719026] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = d54a63d230a544cea51229d1c79f51b2 }
2026-11-12 09:51:30.159 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 09:51:30.160 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 09:51:30.165 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 09:51:30.182 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 09:51:30.184 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 09:51:30.186 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 09:51:30.215 -05:00 [INF] Shutting down remote daemon.
2026-11-12 09:51:30.225 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 09:51:30.303 -05:00 [INF] Remoting shut down
2026-11-12 09:51:30.304 -05:00 [INF] Remoting shut down.
2026-11-12 09:51:30.321 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 09:51:30.401 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:04:56.024 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:04:56.179 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:04:57.507 -05:00 [INF] Starting remoting
2026-11-12 10:04:58.103 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:04:58.105 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:04:58.139 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:04:58.147 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:04:58.200 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:04:58.332 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:04:58.332 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:04:58.405 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:04:58.515 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:05:03.710 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:05:03.787 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:05:03.795 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:05:03.806 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:05:03.807 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:05:04.129 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:05:04.135 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:05:04.145 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:05:04.145 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:05:04.216 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:05:04.221 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:05:04.483 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:05:04.501 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 643e5ab0bace45f4ab4ef14ceaf39add (rev 4ed5c123b0e328ea4745a10b2a36e875082642333760d320996d39162f9cd7b4) from the LocalDb pointer.
2026-11-12 10:05:04.517 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=4ed5c123b0e3, keys=2, grants=1, resolvedScopes=0)
2026-11-12 10:05:04.519 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 1 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:05:04.531 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:05:04.556 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1448635752] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:05:04 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:05:04.573 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:05:04.579 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:05:04.597 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:05:04.637 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=de9842c1962c46ed8c997fa12e1c7861, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:06:31.428 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:06:31.661 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:31.837 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:31.844 -05:00 [INF] HTTP GET /health/ready responded 200 in 201.5272 ms
2026-11-12 10:06:31.850 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 501.0846ms
2026-11-12 10:06:31.899 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:06:31.906 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:31.909 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:31.909 -05:00 [INF] HTTP GET /healthz responded 200 in 2.8073 ms
2026-11-12 10:06:31.910 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 13.1742ms
2026-11-12 10:06:32.049 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:06:32.051 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:06:32.059 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:06:32.059 -05:00 [INF] HTTP GET /health/active responded 200 in 9.4557 ms
2026-11-12 10:06:32.060 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 11.9931ms
2026-11-12 10:06:46.165 -05:00 [INF] Application is shutting down...
2026-11-12 10:06:46.196 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:06:46.225 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:06:46.233 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:06:46.244 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:06:46.245 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:06:46.463 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1448635752] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = c49207ade9504980bb5e067875c3b6a3 }
2026-11-12 10:06:47.014 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:06:47.030 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:06:47.149 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:06:47.149 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:06:47.153 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:06:47.167 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:06:47.169 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:06:47.170 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:06:47.190 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:06:47.197 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:06:47.258 -05:00 [INF] Remoting shut down
2026-11-12 10:06:47.259 -05:00 [INF] Remoting shut down.
2026-11-12 10:06:47.270 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:06:47.353 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:08:07.790 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:08:07.914 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:08:08.767 -05:00 [INF] Starting remoting
2026-11-12 10:08:09.205 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:08:09.206 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:08:09.232 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:08:09.239 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:08:09.281 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:08:09.386 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:08:09.387 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:08:09.434 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:08:09.515 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:08:13.142 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:08:13.189 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:08:13.195 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:08:13.205 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:08:13.206 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:08:13.382 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:08:13.393 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:08:13.405 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:08:13.422 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:08:13.423 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:08:13.583 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:08:13.592 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment 3d8f782a33c14d68a0d171b466627cf8 (rev eec886c75573d93a4dfbdcc66c820e8c9c91b476a0786e8bd2c0ddce697397b9) from the LocalDb pointer.
2026-11-12 10:08:13.618 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=eec886c75573, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:08:13.622 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:08:13.621 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:08:13.632 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:08:13.648 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1653866231] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:08:13 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:08:13.668 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:08:13.674 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:08:13.689 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:08:13.715 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=44e4e11ddc984e0a87bbe062eec3484a, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:08:13.857 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:13.996 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:14.004 -05:00 [INF] HTTP GET /health/ready responded 200 in 160.0664 ms
2026-11-12 10:08:14.009 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 475.4836ms
2026-11-12 10:08:14.265 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:08:15.022 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:08:15.030 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:15.033 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:15.033 -05:00 [INF] HTTP GET /healthz responded 200 in 3.5944 ms
2026-11-12 10:08:15.034 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 15.6364ms
2026-11-12 10:08:15.171 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:08:15.174 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:08:15.183 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:08:15.183 -05:00 [INF] HTTP GET /health/active responded 200 in 10.8910 ms
2026-11-12 10:08:15.184 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.9139ms
2026-11-12 10:08:28.597 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:28.600 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:08:31.552 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:31.552 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:08:56.606 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:08:56.607 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:08:59.977 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:08:59.977 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:09:08.535 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:09:08.536 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:09:09.011 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:09:09.012 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.014 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.014 -05:00 [INF] HTTP GET /health/ready responded 200 in 2.2574 ms
2026-11-12 10:09:09.014 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 4.6294ms
2026-11-12 10:09:09.070 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:09:09.071 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.071 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.072 -05:00 [INF] HTTP GET /healthz responded 200 in 0.8873 ms
2026-11-12 10:09:09.072 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.779ms
2026-11-12 10:09:09.205 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:09:09.206 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:09.207 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:09.208 -05:00 [INF] HTTP GET /health/active responded 200 in 2.2448 ms
2026-11-12 10:09:09.208 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.0775ms
2026-11-12 10:09:35.707 -05:00 [INF] Application is shutting down...
2026-11-12 10:09:35.736 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:09:35.766 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:09:35.775 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:35.786 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:09:35.787 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:09:36.012 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1653866231] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = faf56e9311e145f7ac79d1d47c07b181 }
2026-11-12 10:09:36.616 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:09:36.632 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:09:36.697 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:36.697 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:09:36.701 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:09:36.714 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:09:36.716 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:09:36.718 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:09:36.737 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:09:36.744 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:09:36.800 -05:00 [INF] Remoting shut down
2026-11-12 10:09:36.801 -05:00 [INF] Remoting shut down.
2026-11-12 10:09:36.812 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:36.876 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:09:52.278 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:09:52.390 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:09:53.241 -05:00 [INF] Starting remoting
2026-11-12 10:09:53.665 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:53.666 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:09:53.689 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:09:53.695 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:09:53.735 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:09:53.843 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:09:53.843 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:09:53.894 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:09:53.969 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:09:57.513 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:57.558 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:09:57.565 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:09:57.574 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:09:57.576 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:09:57.884 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:09:57.891 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:57.904 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:09:57.917 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:09:57.919 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:09:58.050 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:09:58.086 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:09:58.097 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:09:58.119 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:09:58.124 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:09:58.135 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:09:58.153 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:09:58 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:09:58.175 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:09:58.184 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:09:58.199 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:09:58.226 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=a7a3ddc7f5b64ff2a9d3854689a50ddd, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:09:58.299 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:58.442 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:58.449 -05:00 [INF] HTTP GET /health/ready responded 200 in 163.7473 ms
2026-11-12 10:09:58.454 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 486.493ms
2026-11-12 10:09:58.642 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:09:59.385 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:09:59.392 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:59.395 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:59.395 -05:00 [INF] HTTP GET /healthz responded 200 in 2.9748 ms
2026-11-12 10:09:59.396 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 13.9311ms
2026-11-12 10:09:59.533 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:09:59.535 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:09:59.544 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:09:59.544 -05:00 [INF] HTTP GET /health/active responded 200 in 10.3647 ms
2026-11-12 10:09:59.545 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 13.1326ms
2026-11-12 10:10:12.848 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:12.851 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:15.982 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:15.982 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:18.909 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:10:18.910 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:21.733 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:10:21.733 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:24.592 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:10:24.592 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:27.438 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:10:27.439 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:10:46.131 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:10:46.131 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:10:49.488 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:49.488 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:57.663 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:10:57.663 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:10:58.139 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:10:58.140 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.141 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.142 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.9211 ms
2026-11-12 10:10:58.142 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 3.7812ms
2026-11-12 10:10:58.200 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:10:58.200 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.201 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.201 -05:00 [INF] HTTP GET /healthz responded 200 in 0.6878 ms
2026-11-12 10:10:58.201 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.4756ms
2026-11-12 10:10:58.334 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:10:58.334 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:10:58.336 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:10:58.336 -05:00 [INF] HTTP GET /health/active responded 200 in 2.6780 ms
2026-11-12 10:10:58.337 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 3.589ms
2026-11-12 10:11:19.518 -05:00 [INF] Application is shutting down...
2026-11-12 10:11:19.549 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:11:19.581 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:11:19.590 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:11:19.601 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:11:19.601 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:11:19.821 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = fa00b28a5f37482988cc3249d7cdfbcf }
2026-11-12 10:11:20.154 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:11:20.171 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:11:20.395 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#1417454299] to [akka://otopcua/deadLetters] was not delivered. [3] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = a5cb7474db6c4dc0ab0fd57165ff6c88 }
2026-11-12 10:11:20.516 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:11:20.516 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:11:20.521 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:11:20.534 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:11:20.537 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:11:20.538 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:11:20.557 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:11:20.564 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:11:20.623 -05:00 [INF] Remoting shut down
2026-11-12 10:11:20.624 -05:00 [INF] Remoting shut down.
2026-11-12 10:11:20.636 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:11:20.700 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
2026-11-12 10:21:14.053 -05:00 [INF] OtOpcUa.Host starting with roles=[driver] (admin=false, driver=true) source="Configured"
2026-11-12 10:21:14.166 -05:00 [INF] Log-pipeline self-check marker
2026-11-12 10:21:15.016 -05:00 [INF] Starting remoting
2026-11-12 10:21:15.443 -05:00 [INF] Remoting started; listening on addresses : [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:21:15.445 -05:00 [INF] Remoting now listens on addresses: [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:21:15.469 -05:00 [WRN] The `auto-down-unreachable-after` feature has been deprecated as of Akka.NET v1.5.2 and will be removed in a future version of Akka.NET. The `keep-majority` split brain resolver will be used instead. See https://getakka.net/articles/cluster/split-brain-resolver.html for more details.
2026-11-12 10:21:15.475 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Starting up...
2026-11-12 10:21:15.515 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Started up successfully
2026-11-12 10:21:15.618 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Node [akka.tcp://otopcua@127.0.0.1:18801] is JOINING itself (with roles [driver], version [1.0.0]) and forming a new cluster
2026-11-12 10:21:15.619 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - is the new leader among reachable nodes (more leaders may exist)
2026-11-12 10:21:15.666 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Up"]
2026-11-12 10:21:15.748 -05:00 [INF] passive node — no peer configured, sync initiator idle
2026-11-12 10:21:19.337 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:21:19.382 -05:00 [INF] OPC UA server started on opc.tcp://localhost:14841
2026-11-12 10:21:19.389 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:21:19.398 -05:00 [INF] AclRevalidationTimer: live monitored items will be re-authorized every "00:01:00"
2026-11-12 10:21:19.399 -05:00 [INF] OtOpcUaServerHostedService: SDK started, address-space + ServiceLevel sinks bound
2026-11-12 10:21:19.569 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:21:19.591 -05:00 [INF] Singleton manager started singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:21:19.603 -05:00 [INF] ClusterSingletonManager state change ["Start" -> "Oldest"] Akka.Cluster.Tools.Singleton.Uninitialized
2026-11-12 10:21:19.616 -05:00 [INF] Now listening on: http://127.0.0.1:18800
2026-11-12 10:21:19.617 -05:00 [INF] Application started. Hosting environment: Production; Content root path: C:\OtOpcUa800\OtOpcUa\
2026-11-12 10:21:19.772 -05:00 [INF] DriverHost 127.0.0.1:18801: applied 1 Equipment VirtualTag(s) to the VirtualTag host
2026-11-12 10:21:19.780 -05:00 [INF] DriverHost 127.0.0.1:18801: FetchAndCache boot — restored served state for deployment db338ee7635b496bb903c82095ad8454 (rev 2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93) from the LocalDb pointer.
2026-11-12 10:21:19.812 -05:00 [INF] OpcUaPublish: data-plane authority generation 1 installed (cluster=(single-cluster), revision=2c94f0ad0c04, keys=3, grants=2, resolvedScopes=0)
2026-11-12 10:21:19.817 -05:00 [WRN] OpcUaPublish: this node has no cluster identity, so NO permission trie was built for its 2 grant(s) — with Security:Acl:Enabled every scoped decision here will be denied
2026-11-12 10:21:19.829 -05:00 [INF] AddressSpaceApplier: applied plan (kind="PureAdd", added=3, removed=0, changed=0, surgicalRawTags=0, unsRefDeltas=0, renamedFolders=0, rebuild=false)
2026-11-12 10:21:19.826 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:21:19.834 -05:00 [INF] Message [ScriptLogEntry] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#102653184] to [akka://otopcua/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: ScriptLogEntry { ScriptId = unknown, Level = Information, Message = ScriptedAlarmEngine loaded 0 alarm(s), TimestampUtc = 11/12/2026 3:21:19 PM, VirtualTagId = , AlarmId = , EquipmentId = }
2026-11-12 10:21:19.984 -05:00 [INF] AddressSpaceApplier: hierarchy materialised (areas=1, lines=1, equipment=1, failed=0)
2026-11-12 10:21:19.990 -05:00 [INF] AddressSpaceApplier: raw subtree materialised (containers=1, tags=0, subset=true, failed=0)
2026-11-12 10:21:20.005 -05:00 [INF] AddressSpaceApplier: equipment virtualtags materialised (vtags=1, equipment=1, subset=true, failed=0)
2026-11-12 10:21:20.031 -05:00 [INF] OpcUaPublish: applied rebuild (correlation=3e58955410b848aca48fb2e5c07e3bdd, added=3, removed=0, changed=0, rebuild=false)
2026-11-12 10:21:20.203 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:21:20.352 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:21:20.360 -05:00 [INF] HTTP GET /health/ready responded 200 in 171.2858 ms
2026-11-12 10:21:20.365 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 636.5101ms
2026-11-12 10:21:20.462 -05:00 [INF] Singleton identified at [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:21:21.257 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:21:21.264 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:21:21.267 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:21:21.267 -05:00 [INF] HTTP GET /healthz responded 200 in 3.5150 ms
2026-11-12 10:21:21.268 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 14.9665ms
2026-11-12 10:21:21.404 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:21:21.406 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:21:21.414 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:21:21.415 -05:00 [INF] HTTP GET /health/active responded 200 in 9.7679 ms
2026-11-12 10:21:21.415 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 12.6099ms
2026-11-12 10:21:34.677 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:21:34.681 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:21:37.703 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:21:37.704 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:21:40.719 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:21:40.720 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:21:43.468 -05:00 [INF] ApiKeyAuth: denied — secret mismatch for key id a12521a75a2a5b84
2026-11-12 10:21:43.468 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:21:46.411 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id fc0854562f4e83de
2026-11-12 10:21:46.411 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:21:49.278 -05:00 [INF] ApiKeyAuth: denied — no enabled, unexpired key with id 13141a093253adf1
2026-11-12 10:21:49.278 -05:00 [INF] OpcUaApplicationHost: UserName auth denied for apikey: Invalid API key.
2026-11-12 10:22:08.116 -05:00 [INF] ApiKeyAuth: granted key gate800-enabled (a0d4ef215dba7e64) as principal gate800-enabled with roles []
2026-11-12 10:22:08.116 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-enabled ()
2026-11-12 10:22:11.443 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:22:11.444 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:22:19.795 -05:00 [INF] ApiKeyAuth: granted key gate800-short (a12521a75a2a5b84) as principal gate800-short with roles []
2026-11-12 10:22:19.795 -05:00 [INF] OpcUaApplicationHost: UserName auth granted for apikey as gate800-short ()
2026-11-12 10:22:20.259 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/ready - null null
2026-11-12 10:22:20.260 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:22:20.261 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:22:20.261 -05:00 [INF] HTTP GET /health/ready responded 200 in 1.8095 ms
2026-11-12 10:22:20.262 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/ready - 200 null application/json; charset=utf-8 3.8519ms
2026-11-12 10:22:20.317 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/healthz - null null
2026-11-12 10:22:20.318 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:22:20.318 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:22:20.319 -05:00 [INF] HTTP GET /healthz responded 200 in 0.6856 ms
2026-11-12 10:22:20.319 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/healthz - 200 null text/plain 1.5798ms
2026-11-12 10:22:20.451 -05:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:18800/health/active - null null
2026-11-12 10:22:20.452 -05:00 [INF] Executing endpoint 'Health checks'
2026-11-12 10:22:20.454 -05:00 [INF] Executed endpoint 'Health checks'
2026-11-12 10:22:20.455 -05:00 [INF] HTTP GET /health/active responded 200 in 3.2587 ms
2026-11-12 10:22:20.455 -05:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:18800/health/active - 200 null application/json; charset=utf-8 4.0652ms
2026-11-12 10:22:24.887 -05:00 [INF] Application is shutting down...
2026-11-12 10:22:24.918 -05:00 [INF] CoordinatedShutdown invoked due to [Reason:Akka.Actor.CoordinatedShutdown+ClrExitReason]. Exiting with [ExitCode:0].
2026-11-12 10:22:24.949 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Marked address [akka.tcp://otopcua@127.0.0.1:18801] as ["Leaving"]
2026-11-12 10:22:24.957 -05:00 [INF] Exited [akka.tcp://otopcua@127.0.0.1:18801]
2026-11-12 10:22:24.969 -05:00 [INF] "Oldest" observed OldestChanged: [akka.tcp://otopcua@127.0.0.1:18801 -> null]
2026-11-12 10:22:24.969 -05:00 [INF] ClusterSingletonManager state change ["Oldest" -> "WasOldest"] Akka.Cluster.Tools.Singleton.OldestData
2026-11-12 10:22:25.190 -05:00 [INF] Message [RedundancyStateChanged] wrapped in [$DeadLetterWithNoSubscribers] from [akka://otopcua/system/distributedPubSubMediator#102653184] to [akka://otopcua/deadLetters] was not delivered. [2] dead letters encountered. If this is not an expected behavior then [akka://otopcua/deadLetters] may have terminated unexpectedly. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. Message content: RedundancyStateChanged { Nodes = System.Collections.Generic.List`1[ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy.NodeRedundancyState], CorrelationId = cd01d89c4c7f4dfd828212c6146cc5b4 }
2026-11-12 10:22:25.748 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Leader is moving node [akka.tcp://otopcua@127.0.0.1:18801] to ["Exiting"]
2026-11-12 10:22:25.764 -05:00 [WRN] ClusterSingletonProxy failed to find an associated singleton named [redundancy-state] in role [driver] after 30 seconds.
2026-11-12 10:22:25.884 -05:00 [INF] Singleton manager stopping singleton actor [akka://otopcua/user/redundancy-state/redundancy-state]
2026-11-12 10:22:25.884 -05:00 [INF] ClusterSingletonManager state change ["WasOldest" -> "Stopping"] Akka.Cluster.Tools.Singleton.WasOldestData
2026-11-12 10:22:25.888 -05:00 [INF] Singleton actor [akka://otopcua/user/redundancy-state/redundancy-state] was terminated
2026-11-12 10:22:25.901 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Exiting completed.
2026-11-12 10:22:25.904 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Shutting down...
2026-11-12 10:22:25.905 -05:00 [INF] Cluster Node [akka.tcp://otopcua@127.0.0.1:18801] - Successfully shut down
2026-11-12 10:22:25.925 -05:00 [INF] Shutting down remote daemon.
2026-11-12 10:22:25.932 -05:00 [INF] Remote daemon shut down; proceeding with flushing remote transports.
2026-11-12 10:22:25.987 -05:00 [INF] Remoting shut down
2026-11-12 10:22:25.988 -05:00 [INF] Remoting shut down.
2026-11-12 10:22:25.998 -05:00 [INF] OtOpcUaNodeManager: advertising 0 history aggregate function(s) for historian NullHistorianDataSource:
2026-11-12 10:22:26.054 -05:00 [WRN] OpcUaApplicationHost: detaching ImpersonateUser threw
[800E0000] (BadServerHalted)
[800E0000] (BadServerHalted)
@@ -0,0 +1,210 @@
7af73841cafd0c8b05ad166c45ad0886bcf80926d4c4a65e0fa7578ea1e04d03 BitFaster.Caching.dll
af06268aba8215c17b300fe8ec81bbef8d9982b5958a3291563f504537ce844d CliFx.dll
d8ea1fbbaafdc9734420131c5d1f4624826e411bad3e51d3eb4fb95ab154f66f Microsoft.CSharp.dll
70e4b89978ce57ef87b28f4921f3140c383b04aa96e7f3bdb3c4ebb898fd8a72 Microsoft.DiaSymReader.Native.amd64.dll
ca708422782fb25819941a16a057ea96d6d18b037e7e5cbfdf340b7a04362b57 Microsoft.Extensions.DependencyInjection.Abstractions.dll
47f8175d34e9087d3858644803c558cb9cf52b29bffda796f65c1c527d1b6a22 Microsoft.Extensions.DependencyInjection.dll
ec244a2db19dffe90cd299fa4b0691456ced342a078b4a93cf3726a9b431e9ac Microsoft.Extensions.Logging.Abstractions.dll
74d8fd2d7997fc638474e2bd79916458a30481e6a6925b50e7e96b4b852031c3 Microsoft.Extensions.Logging.dll
644350f8c2404d4479b97a250edb29585e5fafec1b6ce8486ae600c5015fd7fb Microsoft.Extensions.Options.dll
a0794c3bab2d7e0c848f0dffb3b9aa4b43ce07dc0abd122ebb7bf6dc79452ec4 Microsoft.Extensions.Primitives.dll
578203d4915aa43283a3d6fa1083f4b80f333ef544e39ff0fcfdada1b7499a7d Microsoft.VisualBasic.Core.dll
95aa41f885965447a62b59f1b3ce1677300c51c009048c8c677b961e98e99a72 Microsoft.VisualBasic.dll
637adb956e9e80549239f1707db3885683504efbfc2ed8ea93a3d187ef53789c Microsoft.Win32.Primitives.dll
143a613fc7c87e09c02cac0cc1469f850120bed98c5a1602ad84fc42b6c1ae63 Microsoft.Win32.Registry.dll
a28c251dfe36d881e9e2462e171441b8b0ec156fe3f452602c9149b1b9efe05b Newtonsoft.Json.dll
fd000b186f4bc5dbd9947e876f96c178e8c4259ee3e8717d672a4ac2f4c3a058 Opc.Ua.Client.dll
30fb5142f13a3b3083c0484bcdedaec2efe2f50e57f10ec6a61257ca5359aa7e Opc.Ua.Configuration.dll
602e85316943ad7ebae33a23d60a69a6ea50d91250ad0556906b816435daa37c Opc.Ua.Core.dll
a2a05c64348f6f8aa60de0fe27d8e5e22d12e09b1ba6172ca34b3773620e394c Opc.Ua.Security.Certificates.dll
c5c5e36cf6381444b408fe1b51726b17deca74173764cd62ccee954b3c8c2718 Opc.Ua.Types.dll
cd84c110a96a28b969f9b75873801ded483ff8e2396507e2a53ab977584f39c6 Serilog.Sinks.Console.dll
e6b551a75ff7fff20dd0024670d5c42dfb74afa16d54aa0201106dea400a9505 Serilog.dll
b03e016fa01d7cc9723044c7020940779e4af59e29bdf47f72bc6ed9d9b1d257 System.AppContext.dll
9bd4590fa18b9a6509efb5147158a6abbe4799e82e0efa9fa240102b6084872a System.Buffers.dll
7f2ac0ec3bb9425017006cc750dc94a3c37ed175ba2f4eaa3f8f8e5cf35472e0 System.Collections.Concurrent.dll
ce2385891f525991c59d99a86cfaf8d5a81c56f24b01a433f42eb85071832121 System.Collections.Immutable.dll
82ab716ab740669598d8cda36a92690bcc4b01ebba8b21c0c4f0a7a8ee1d9248 System.Collections.NonGeneric.dll
d9ed158ef29df6146151d13260ddbb2310da7150eb98c2637ce91d057f7786cb System.Collections.Specialized.dll
78d429a901a73a09cda6037befaa56b79bfa557000b2a69ba1c1210253c0b21d System.Collections.dll
f2c3fda351505065effbb42e175e50b4c9bcb4c4f560ebacc868d50d29252eab System.ComponentModel.Annotations.dll
f7675a194e2f444670b94d3d3866dd3dd16b48b332cc5811268ff903e6c17a65 System.ComponentModel.DataAnnotations.dll
d060e7f58feb609db4f47e2a6da25c4a9b406b97589004d4022d31d673aacc52 System.ComponentModel.EventBasedAsync.dll
953db884b5edfc396ed4036413240e538cdbb858c06354d976d7b2e6ccce7167 System.ComponentModel.Primitives.dll
8faabcf0ea88a11425d247b19d9cc8a64a78a7c07ff977854cf4a9166e0415b7 System.ComponentModel.TypeConverter.dll
72b3608363e47f2cf3cf3fc9fe2fcefb760e5292ebb9d650fa4ced3896dab5f9 System.ComponentModel.dll
c53f9278c6889d8562d616106413bf50198f452316b4c5002100c568d541428c System.Configuration.dll
8be68e4cb2f0b64b5f37f7a7aa82db2ae1648115a9b7b9381a3cfac7cdb4aeb5 System.Console.dll
f1dcf1577c6a675f1c85ee9f13d103495ce123ed232001646f4132d76c1480cb System.Core.dll
e6be5f74d117b7300523041ec239d2c7b64fc495ef954f48f81ca71507e510c6 System.Data.Common.dll
65bd4ccac3f6f062a68d2ff797bb3908b7f21f908c95a1e85729b8c5bbcb3b87 System.Data.DataSetExtensions.dll
dc01c232769d86816af9d67e492902487bfc87f787f811ca098f42f4988ad789 System.Data.dll
baeabf6461eb78165280fe2a0fca951146de0d8f672ec20a159aa1f431bb409a System.Diagnostics.Contracts.dll
ba04477089ee6fc9ae8c2a8e711905fe1d7a113c785cb168d28eccaed435400b System.Diagnostics.Debug.dll
c84547ea80b944c4683901e03c2e0c00e462a7b12a3657f5f3e1474a5d52edaf System.Diagnostics.DiagnosticSource.dll
b86967674838e9e7465e171d334f6b970720ebcf005326e45c1c08e5720a0054 System.Diagnostics.FileVersionInfo.dll
1acaee1d612a45f2f287675b5b84defed1b34a90cc659641f97043f45076fbe7 System.Diagnostics.Process.dll
c464ff65bb7a1ef7e70b0c610aea951e8f71045cfde50602832969aa02253b6e System.Diagnostics.StackTrace.dll
a1656873dae8b3f2a56714f5a9bcf179e8064a992943cd0b275e83310fd4edff System.Diagnostics.TextWriterTraceListener.dll
dade40a11c2594fc03c84d119050f8b4281077bbc28298e3c2f6d96673cb0667 System.Diagnostics.Tools.dll
248c392f7df6bd5de9be9411dfbbd61fd6ae9ea6f896eb8a9dd6445cb54af2f2 System.Diagnostics.TraceSource.dll
b8274d672ee21b7ab2b579aec0c55795cb9fb3e1f15e9b3c2ee07d90260a3fa2 System.Diagnostics.Tracing.dll
5f04571de46d5defec5e946b618b7b1b10b9c613492a8089ba926d3dad0c6916 System.Drawing.Primitives.dll
86fe6479c86f0f99358adcb89ecba5d3fb91a30d333545a17c00ef67d86a29f1 System.Drawing.dll
3d645a280ed6d073664f229842847d8af2dc2a7126ccf27c5eeba2c55c08286d System.Dynamic.Runtime.dll
614c4e1729c2011b1e40424d7b00b3dd2b76ca7abb438c62d93048c97d9ad44a System.Formats.Asn1.dll
d8552ece59785ee1790ed8d2bdad03c0059c26a461f19c76d215c24aff8af190 System.Formats.Tar.dll
cb2a60039ed7a7a797d133ecee1755185305632b8c78d62dcaf0d2ccb4e15ed6 System.Globalization.Calendars.dll
7d27ac98541e7e6e72dab31aed4055fc9435b777bfce0f50722440601efd77bc System.Globalization.Extensions.dll
e374eb513cb207833143ac4967155589087e4fb71a8ae9108ee1d64596b67484 System.Globalization.dll
b3525059b5751482765b660d86d90de7e9728707c65d9cc5a63f1152ec43a952 System.IO.Compression.Brotli.dll
3fab44511b3e88c31430c987223f46c71dda6f890a2d6ecb7b29031ccc4b6b5e System.IO.Compression.FileSystem.dll
ce43bb776a6df4abe190d0e77096046475709f8e8b0c823e10cb7b39099c32a4 System.IO.Compression.Native.dll
02096ce99b1fef365d4ba9c03edf0e18f7981dac6943ab56676ad66d0bb2c9ff System.IO.Compression.ZipFile.dll
5f7c0695725d3485c86d0bf445c99be1fd320f17b11048a905041ff187dd4cbc System.IO.Compression.dll
b14b8ee22bd83e07c6a004179b70aa7b2958791aef5e834c5de72c49308419fd System.IO.FileSystem.AccessControl.dll
1dc8cf48e1bf26700064f54e510fab4ad0f5482ad113261a71807f9c194180dd System.IO.FileSystem.DriveInfo.dll
a72218414270188a3d11fd291ff63c407f65f0a4ff8ebaa8351990649fdaa9c5 System.IO.FileSystem.Primitives.dll
c60472fbd6ff9bb4a909605ab9fd08462eeb1cb058cec3deb49a21f84e4ab602 System.IO.FileSystem.Watcher.dll
1fdccf62b58857da2d75f26f0fa31ce342e035e08b61f08a439088834c25a650 System.IO.FileSystem.dll
be0350b4aa7e08c5a88a0d887aeee22e11144dc73f10805e36b2bb21440a6298 System.IO.IsolatedStorage.dll
1c60d7b873037f161663cc1f98ccadad1493195952b3f8dd318468ac451ac4ae System.IO.MemoryMappedFiles.dll
0306263c46f0fe7ebe87f4427d3365a23e92faed787b81c54337349688662629 System.IO.Pipelines.dll
e7af8e95bc18598a4cf42daae14d61518bc9944ed68c11a0742765419f04f2c8 System.IO.Pipes.AccessControl.dll
e631dad2c1c1657f40b512d15ed4a636d20341e8a0c6df34f2cd7d9b20848836 System.IO.Pipes.dll
ee80874913ba2b3dc55f05ed18043ef40a42cec0c2095a68a2825ec66e069c25 System.IO.UnmanagedMemoryStream.dll
7696915987cd96348e15e6b230394a9042e278baf26d07d2414b99e8a66ce969 System.IO.dll
2d74c61b46462f83d17c46fbda7087977d293bd0f6808742910d0f6a29d5f5e8 System.Linq.AsyncEnumerable.dll
eb9139d158b544c11b65cd32c6bfbbc2a11bfe5e9ec61ecc94999843afd5cd2c System.Linq.Expressions.dll
162297aa003a7a0951b3333418584f2de68d9a31146e0c4ebbf3a275ef250ee4 System.Linq.Parallel.dll
03fd086266f5ed63a077df4fdb5c69ce08799484aed94485965604148fc44461 System.Linq.Queryable.dll
1c6886fb239a6af59da0dc1561d9f010e2e983a1e826d6e8f8a61f7ea42a3af1 System.Linq.dll
5bbec55d9b01c664055180840b651b1b1f01c15f7f45ee84192b95a09f2c355b System.Memory.dll
651a91c2658632929ba7f50d415b2db6151fd96969be0b47e4f9672d648ec86f System.Net.Http.Json.dll
fc7ad004bdaca8763dcb23ab3a5fb01c9aed9735f678563f4f03254c9c956f8f System.Net.Http.dll
5e514d43d23325ceaeeabc00906f6f782424e8b2b01fc050ede60559a8202851 System.Net.HttpListener.dll
b65a90cdfdc51ee4a5c2cd4e0764ec42b46c8e098aaa6d4f57e8e8c3fb3560aa System.Net.Mail.dll
cc5b82c8101e3af2ab05dea804d333109f954f32ec49a9e4e71e3679ef4d7d58 System.Net.NameResolution.dll
3b97a77bab7f4a5215b12b7d0f16d47d6a617bcafa59d6e4b9efd3b695bbe0f7 System.Net.NetworkInformation.dll
2b91becc5ea71a9b91f544df76ad0c5a29a87798484b37b9c2f05a8a598f1ae3 System.Net.Ping.dll
01d8bef670ac4265708686d37076d8d21daf3152cd0e7b2aa264302c369f70be System.Net.Primitives.dll
ae641f56bcad5c06551f90b855d7a61c9bd401d0c0a9985ccd662da860c3d5bb System.Net.Quic.dll
5e462536c5b743dbef0522174a576ecb7be0dd52c5074e64b7ca73bc7dc570d0 System.Net.Requests.dll
c03a6cba2d1e841f78293188b8356e0890a03ad9860eb5f602e69ac8ddd253c4 System.Net.Security.dll
d39e3896fa6e4b42dcb6aabace1e9d2f8c15c6ecfe10868668dd9de119aa675b System.Net.ServerSentEvents.dll
dc7433871738ffb8ce7f7963cee7fadc2103ab4b61e461a70e60d848625ae297 System.Net.ServicePoint.dll
7e8787c401641f3d749847c552ad8c8c600896e1aaead24c93440039801dc98f System.Net.Sockets.dll
8cd16344c501ab69ee11eb1108efb37d4c789de9bf421bb3e8703800ca1a8b1d System.Net.WebClient.dll
f5973c353b9204e5c1cceec843707c7be368293428d52f62bc746400346103b3 System.Net.WebHeaderCollection.dll
9bb235262aa0f2530fe8cadf095432438746dc3bf5d1090caa7d0eb4ee2dca7f System.Net.WebProxy.dll
9ae53fe2d695d041d834fe741c52a60d77031667dde8078281cf56904aa65fb3 System.Net.WebSockets.Client.dll
dc3632ff6a2f4118904eb64edc433c0d79c497b3ad2c01e1287cc86da14de612 System.Net.WebSockets.dll
1bb00c4e169c0a20ad8763f4105204c221b97e037464b5bacb6ec4b9d40e0ad7 System.Net.dll
2025fbc96c75d61d82cee26ccacb100d773a4e393630e2697a5c7bc6c4ee5a8e System.Numerics.Vectors.dll
c39d8710b4aba77631159b90e04abd81b58ff3cc9fc8433621b76683cd6aec9a System.Numerics.dll
16f21d6da2db3ce7a1c0b904bc2f3658685156a2155e5aaba8a3d45f4bc06c74 System.ObjectModel.dll
69d56e12535d3a8f2f8f89ac8f97577e6dc788d26f2e7b69be8fb5f6ff17ff28 System.Private.CoreLib.dll
4e329edac8f17617d2d46d2d472e21c48614276a9879f3f7b4be2cb2841ed3f6 System.Private.DataContractSerialization.dll
eb07de9b8f80dbc1c2cad80598e184a8369f6cbd9d105d50bcc6cd3428e61ce8 System.Private.Uri.dll
3c2edaf8c5fafb005e25631b8ed48a64050bd126a8a5cba2f84b6869d6a6df47 System.Private.Xml.Linq.dll
3467185933c682c10a67eb6b4eb78df5a1debc63d4def7708d23db9fb79780fc System.Private.Xml.dll
93b0f758fac7aef8eb3256174fe621ac9de7db98e044e22d4b6cdbf7b462c5a7 System.Reflection.DispatchProxy.dll
3f8d14d45f250218d9c66f158b7a218ac73d1f2df75dbcf71a09f12f1711bf5f System.Reflection.Emit.ILGeneration.dll
f43856d942af20cd256a7358afad7fdb50df4e9e307e29beb34dff8dbd094b6c System.Reflection.Emit.Lightweight.dll
f0c3777ec9c76eeb3198de980054247fda2d184e8dd3d3693bc433613a6df364 System.Reflection.Emit.dll
8ccbd7bd124cbfaa1cfd9315d922dd693ad7ade5d0436d246b188e02b40919df System.Reflection.Extensions.dll
5af6e802d91f1e404a95c55e23310185e7de09adac62ffd6fd56b98a6b31b15d System.Reflection.Metadata.dll
9cc0088b3e2d6a0771063dafd2c924538dff5087c20610f7826a088a38c27ae0 System.Reflection.Primitives.dll
479a0a76d0360120f262ca9d501637916382a5d162f10c29d37b01888f5fd00d System.Reflection.TypeExtensions.dll
d3d7fa31b89606d7a5c10a26ced05a29d32ab2fb87a54f10c82cd74e8e19725d System.Reflection.dll
181cf4b3b528f7e2a3316fb792339320a1c40c96c7b45b726ff16257097276e3 System.Resources.Reader.dll
06fbffe507abc62101f0466d1570cecb074ec6a432a1ba058d4b9360ea13764f System.Resources.ResourceManager.dll
1dd70e4933c113a2a9963f79068a1e0fe52bcbb5dfaf54255dd41af5b4e05d35 System.Resources.Writer.dll
bb342e1fbacfe7589b71936fb000c36b54ddc96d578bc0888623e19549c1e6f3 System.Runtime.CompilerServices.Unsafe.dll
657abf22f77265e6e111fa0c6f55fa176373dd447fcc0f0c4145da91fcdda047 System.Runtime.CompilerServices.VisualC.dll
f7e44a3f016421af7130ccdd913c57419d3cd2a0f48e34bdd1295797f2535cf8 System.Runtime.Extensions.dll
b21415740db52c068dddeb4dc61e95a41ec23b1a4c1b1623ff6b65399c7c0fdd System.Runtime.Handles.dll
1c91d7b7dd6da38c6426a4be35b3458ef3d127ea84533941528694e9db1a145c System.Runtime.InteropServices.JavaScript.dll
f0b683af8a5db0f4cbaa2119f66ba93a01ee0db8ba1079acd01f01d247c111a6 System.Runtime.InteropServices.RuntimeInformation.dll
bde2bb33524a73e2964cd47ddf753150d685b31ebb1c4779e66ca426b2b419bf System.Runtime.InteropServices.dll
61cedf60e24e672bbde2869ceaee84342d22823315aae7fb7b768e9a6e6893a2 System.Runtime.Intrinsics.dll
b55e68bf26539914d8eb80718dc5b183f36d53c7fa20103f52c06796d33aa0c6 System.Runtime.Loader.dll
46b0e0c9b0198446a5d4ae8579433a038d7f1199e0378ee6213a0390bdd9a99c System.Runtime.Numerics.dll
18e20e41f0d87206ff1fbede425b7737be7c554c1704af3c684e83bbdec63157 System.Runtime.Serialization.Formatters.dll
87249d372d73fc7fcdc057be0efba1c36fe7318af832463dcfbf55fd067bfa97 System.Runtime.Serialization.Json.dll
5981ef301f6a849ae73bfa0eeb4956992fc15b00f705c35f208eaf6793a37ab3 System.Runtime.Serialization.Primitives.dll
ab0c54734d37e5aac3f726fe7806ff8de5c5bce757f7993135540154a72ade79 System.Runtime.Serialization.Xml.dll
39da6e91e025583c2d51a5180614cf278bdf7f6d850c4c011422869efca625ce System.Runtime.Serialization.dll
d6b4189c8e9afce3629b27c902c198a54ad3a355ec8409d3880b3b68fb1cf445 System.Runtime.dll
c83dce7b6b0737d14771c9ad38a8726787a91472be503d8f911bfe91668efadb System.Security.AccessControl.dll
77c7616c8f073677f8a057ef032b21d8f6dfeb19179b936bd54bab268e71cbf5 System.Security.Claims.dll
0e5de3978293221c0e36bf52786abea8f7b74ebf06de58c9717db4507e59ac10 System.Security.Cryptography.Algorithms.dll
9198b7e57489278215a2489d66d9d52c7a9d65ae7abe399cc9d27d1b23debbf6 System.Security.Cryptography.Cng.dll
2774b21002a29479de3523f8781d1411e4990575b50f1316d6a9cd490980c2db System.Security.Cryptography.Csp.dll
070abb893bb963b2a846ad8b8c1354563c7b362d1c492eec53538fc28a871001 System.Security.Cryptography.Encoding.dll
e2a8cba098ec00d19d043750e8a19374cc65d1a498b9eb15dbffe0eecc579b32 System.Security.Cryptography.OpenSsl.dll
89e9947ee1e7839eeac2c9c0b37a2b0c0433ff338dadec6380fac1eae375ffd3 System.Security.Cryptography.Primitives.dll
398e55927b3cfd070bc8d204740e50d012cb78f7a2dcb968a33869b4aa54e067 System.Security.Cryptography.X509Certificates.dll
b043b1ed136164fd69606a9e7f26f1fc05d0c7cb888c0c00e3b58544623cc7e5 System.Security.Cryptography.dll
25f1d31f27d8e9a97fa203160dbf9a8a7be8188328ac74516002d0ac071961d9 System.Security.Principal.Windows.dll
d1cdbae10415e4f384ecdf34cd6e427f7c1d67bb6549b7e15193006428734bb4 System.Security.Principal.dll
3347281129d6cfc4a5c912dbb9f803878c99cc60d125ca5f2adbc4718ccf348a System.Security.SecureString.dll
e81926edd150a900fa0d6832aa813b2c3dfb156e7116a7cca2d96640ff24e438 System.Security.dll
9537a9d13c43511fb95b6d30dda7817851b23e864503fa336626522499b51d24 System.ServiceModel.Web.dll
13fb65e12deec9ac60a8342dec6caeff8d35b56dc142cdabfab2745620d46fd0 System.ServiceProcess.dll
e3f7a38a01cd863716d83ae322a007a2d052044cd8bfc2b5b1c268ac05c9d931 System.Text.Encoding.CodePages.dll
fbbc0dde38272605b8b95271cca7202ca04d5fa115acbcee936e1bed611fd23c System.Text.Encoding.Extensions.dll
f1531dcab1fe59529829a1a241953a5e55ef8340c8cf1a21c053eeb7c48e2a84 System.Text.Encoding.dll
319eb068c30ae985653a31911086141f5ba26b99e0ce7ff083f455ad42d4c584 System.Text.Encodings.Web.dll
ff440fd7d4ae3d5a6d080c1ebaaae7d5f4145ea162ab12bf8931e92b4311f469 System.Text.Json.dll
244be34f8333ff60b1fa87f54feea7e8338e2ff96fdb148a4d4bf12b7c981c86 System.Text.RegularExpressions.dll
6f4b852763d9bdf83013893f294cd021a0efd84243374e52e148d8b665ebc8ec System.Threading.AccessControl.dll
26f3f523ae3a685b462c1b192ac752cfa8da5db5ba4e2714b2e64635e717a4d6 System.Threading.Channels.dll
9442e2b745620403121ff4868fd430a2178029c22ae6a8dcac77d957ada4be42 System.Threading.Overlapped.dll
bbf7de8812c20b8e61f9833d72814dd858c4781fa35500b2374c7e5f19d3a246 System.Threading.Tasks.Dataflow.dll
b35a1faeecc0fb706b06f470a13fb3b1d2addfef1cd5a81fb1bdbd75ad6c8fdd System.Threading.Tasks.Extensions.dll
2853f090ef0c1bd47f91800ef71b0b44084b1f703b3b699919466e065ba2fee2 System.Threading.Tasks.Parallel.dll
a908649b99249e9533d674ed8838f2cace1f6a4071d848bf9edf7b96dc4ebc5f System.Threading.Tasks.dll
5e1c4834abd41d88f79872557c69d20502e2d220bde333870e31d1a1eb4eacd2 System.Threading.Thread.dll
2135197f9cbc09004ca02055bf54b5e3d0e2d7a9d61c477e4ef129321eb0b4c2 System.Threading.ThreadPool.dll
a7763eba808803faab8e904fd5b467d9c7dd5c18ddd9a584d7c686f08d27e10e System.Threading.Timer.dll
6c2137fb877e647a6c0f8909db8ca7af1e6fe95f19c6e531f6a74539fabcc6ad System.Threading.dll
213df40904a1b088fce848eb34bbc91785cee298632e06670518d306536af23b System.Transactions.Local.dll
bfffd1196acf43fc9c88ebb561bb3a964ede3d8269bba09cf3258ead1ab4fcc4 System.Transactions.dll
03a5049c71a54d9e8c2f2b9180529804d3e956ad6432a0668946115b29d3a830 System.ValueTuple.dll
1097a135ce82145a8f7dbacc0b8a4d8951e067652814ff6d9fff0927b21706ce System.Web.HttpUtility.dll
5fc03752ad1c79c05bdf71cfc841f7c16cfcc4366365d8f7f31e22cff3cadd7f System.Web.dll
b2a12218c022eba72d8acbc36c012211f965bb49c2fe92c0aaf0964ee785c800 System.Windows.dll
f66daa73628bd932749377aa5094ebad056a63748223ed0dedb4b7dcd49e22b9 System.Xml.Linq.dll
496dc55783342234033fe7162f618938691f25dd818633cdd386dba6e4e1c271 System.Xml.ReaderWriter.dll
4a38c5a78410d11d32df42565312306eefc1bee5c73a6c5c8c661b0cf1ac0717 System.Xml.Serialization.dll
fd3c02115f7ad89770a70f18f83c8e4cdf8c78bb4f88046923f3285fa853c7f4 System.Xml.XDocument.dll
d68c378b07f099610b2eda021a232499cac2d6b96fce72b20a4f0b07efc85513 System.Xml.XPath.XDocument.dll
03c3c78e671c3abf1d10c830eb67b8761bec7b6dcc0ae74462736df3616434dd System.Xml.XPath.dll
fc671e921ca4cae98c3b1cd0ad0fdf1e75f115917c9fa0826f194efbd149c1ba System.Xml.XmlDocument.dll
8e9bd064b432d8617038f2100b8268b8f46e4c22a6c09395ad0519e657c8801b System.Xml.XmlSerializer.dll
8b35480d266706f1c8db8e70216a72ba26d3fb25725f8a1131731e4d380410ef System.Xml.dll
ea77299c8ae8751e2868343efc838167b2612c58863690b83692de4d66a34578 System.dll
a88115b54a4782631612f995f857624994143e783aca58dfe2fe0800417a49e6 WindowsBase.dll
47bfb8cdf3a7b786d45c3db5ba763d97b1c93ad60c486d4472af76d1922dccb3 ZB.MOM.WW.OtOpcUa.Client.CLI.deps.json
23951460d6790e23f3dfa7d06b4019c09c01492846941c55aeb66a03a9017e69 ZB.MOM.WW.OtOpcUa.Client.CLI.dll
257b5b13e980072e46f9405aeddbbddb440a17ad9d26e122ede3fddb15cb27cf ZB.MOM.WW.OtOpcUa.Client.CLI.exe
ef79b46acb7e02de3e00c370964d4509e1f7da0c23fbf7bb6b731241319f5f0f ZB.MOM.WW.OtOpcUa.Client.CLI.pdb
79478f035e69ab7220e5a5c0f904e8f74441d8390ecea88d00f58da33c6714a4 ZB.MOM.WW.OtOpcUa.Client.CLI.runtimeconfig.json
dcf9172fcfc61882d7bf795add6b3e97f87eac854c57c4f274e09c492624238e ZB.MOM.WW.OtOpcUa.Client.Shared.dll
95ce530dd3702c2a09aa1a8993f300ca795389f77eca4f0e464d3c9982117a01 ZB.MOM.WW.OtOpcUa.Client.Shared.pdb
4b848b0ed6ad94a455a85e93cd0c10faef62f349c7ce6f39415ae55af72655d0 clretwrc.dll
ebfb09f29cfdc3cd269a4a5bccc0bc6e4e7afce9a7d263e43cb52bdec98e9e43 clrgc.dll
936c6122bb95df8bb6c7552e93ac01e426bfa5a5081dd7fc774703e05edb2d04 clrgcexp.dll
e33038c23f32074683e170b0ea74dae6ee74a05bb5e8ef6c9fd4cc43771b34cf clrjit.dll
1bc65b8d45474b19adf3ca85ce881087aff599ffc72b2c1a323e878227757b65 coreclr.dll
da50d230f70332385b86c44f9dc3f571b60340f8b603bc0e2f201b5a19240acd createdump.exe
5b9358572daa76176f97f1bb80fe764b24ee1bc2cce0579230e7f9a28e3fbbed hostfxr.dll
84275dc570382246b4b36ebb3094c2b38190c2fd80998d1da20b95dfcae1c546 hostpolicy.dll
4a9b277d882a52f19b89047748e6ab1043c1582f834b20423c8c7f16a76b6ea3 mscordaccore.dll
4a9b277d882a52f19b89047748e6ab1043c1582f834b20423c8c7f16a76b6ea3 mscordaccore_amd64_amd64_10.0.1426.52326.dll
31081748cdac21d8734422cb3188070c4f49cb9fd85051a7605bbb7337a7331f mscordbi.dll
5ff7b9c14324371cab67e190165015103701045ebc36edcb8a829e5505c2c765 mscorlib.dll
9eb4ec98c78e698e0c25e9088a5670eaad1e12ab4df066eb3803c495dc0031ce mscorrc.dll
7b32a336b638570bff7b2f4782ebdc05b8c70fac76fdb412f3e8a3c181c32a61 msquic.dll
2844417955d5b11f8434fcc969f52bc09104f438ae2f4d5595c36c355d06e270 netstandard.dll
@@ -0,0 +1,241 @@
a58275640773dc3ff06ceafad752fd399e4ed7cef93039354b7eb06a126590ff BitFaster.Caching.dll
af06268aba8215c17b300fe8ec81bbef8d9982b5958a3291563f504537ce844d CliFx.dll
febbda76f97e6c1b13d03da160cb0b65bb441d67e2d486e1f2bc46eba50e9854 Microsoft.Bcl.TimeProvider.dll
d8ea1fbbaafdc9734420131c5d1f4624826e411bad3e51d3eb4fb95ab154f66f Microsoft.CSharp.dll
70e4b89978ce57ef87b28f4921f3140c383b04aa96e7f3bdb3c4ebb898fd8a72 Microsoft.DiaSymReader.Native.amd64.dll
a7e80a5ed7efaaa21da13993a01be345a3221ce92422c2cb33655399a357dc6f Microsoft.Extensions.AmbientMetadata.Application.dll
b99d010d6b9e5bb863399959d6140bc59ed29ef921957bea3f666ada7995aa50 Microsoft.Extensions.Compliance.Abstractions.dll
fb45286fa39f58b9e74b6346e31034e00031170169ee11fd0a15f99b6dca0b56 Microsoft.Extensions.Configuration.Abstractions.dll
cdb9894a560842062c820e6335c445351bba26fa92e27b3e703ad07e977c8227 Microsoft.Extensions.Configuration.Binder.dll
c11796ac536b45b6028527bb9543607f6a5fca98b1784339226d68cb98705333 Microsoft.Extensions.Configuration.dll
da04edc338d5aa0f38a1f5fa5ff3ee7e36affe9c961daf3ea724a428bd746bc6 Microsoft.Extensions.DependencyInjection.Abstractions.dll
a73a6c6404212d70a80f8cccde2bc527976f9fcb693360f6cf32e9b2d38c9a8b Microsoft.Extensions.DependencyInjection.AutoActivation.dll
2d0e268bf76b4ce36a55ebb2767354db956c6660de65d6cccfc35c957fb12cfc Microsoft.Extensions.DependencyInjection.dll
623879199a4d98248dbce917e8b2c11b1f5eff24a01cb3b50d772461566dbad4 Microsoft.Extensions.Diagnostics.Abstractions.dll
476e2c7298b102b6cfce2d6ae2acad52ce7248d4511f36d42ce35a77fde1df55 Microsoft.Extensions.Diagnostics.ExceptionSummarization.dll
c2b5e806a61d40ce428764647e8c2bcad20283a3c87f081ff483923ed113aaa5 Microsoft.Extensions.Diagnostics.dll
0ad9800893013d1e11c6b5afc6ef8a3fc0f14d38fa80bf5d63485fc70f848216 Microsoft.Extensions.FileProviders.Abstractions.dll
37c244f5685ca031be74a49bd23b2634588235f672f3a0b0b352ca8f6f6c3887 Microsoft.Extensions.Hosting.Abstractions.dll
347d266abd3c7376b56ab7b10b36510abe2fe3a36e0cda5e7ad0fd668f5f8102 Microsoft.Extensions.Http.Diagnostics.dll
eb573ea6c8f24d2178d733c1f7f6fdf2856056c6aa5322f667d685afdd20afbb Microsoft.Extensions.Http.Resilience.dll
5f1f986dda7614d800aac232d54ef229c7e557c54a70b060d71752897e26c9bd Microsoft.Extensions.Http.dll
7c242f8ca612fa1acc61f78efd5f8c89e01bd0bd47dc4ecc65e0e6e24f1a1668 Microsoft.Extensions.Logging.Abstractions.dll
10465e68c4431d3fd790911b56fcd3cfca89dfb4b0ba75d1affd970892824b2f Microsoft.Extensions.Logging.Configuration.dll
05b76234f2a5eb945b268ced706cb4d81446778ea6bd6910298b5e9111170b4a Microsoft.Extensions.Logging.dll
634cca4d69263df34f856a45d6f0eea0fbd82929ba410718254bdbdb03e12b70 Microsoft.Extensions.ObjectPool.dll
460a4ac4770f3e134454076aaf02a4774a25a40e03e3cefbd5bc4c5f5a70af9f Microsoft.Extensions.Options.ConfigurationExtensions.dll
b4ff561da6a7b11b68341f9fd32cab3f8b23cdd8b40332b9fd8bed73a9ee7de3 Microsoft.Extensions.Options.dll
67642533eb87e8dadeb9026de59ff4b66cc9bf35c0cfbedfef7b79bc6d8b30bc Microsoft.Extensions.Primitives.dll
ef993eca52f7d1dfa47d34678c4d4d69ad35e4052797f679a2f6fec2eea820ef Microsoft.Extensions.Resilience.dll
052ae9f51b926b0a61b06081eebca430c603ca41af463fa925aba4434d0b4628 Microsoft.Extensions.Telemetry.Abstractions.dll
7cea61a2885a8fef83e85dc3615a9e8add8748cec129e45e7cf4240cce61528b Microsoft.Extensions.Telemetry.dll
578203d4915aa43283a3d6fa1083f4b80f333ef544e39ff0fcfdada1b7499a7d Microsoft.VisualBasic.Core.dll
95aa41f885965447a62b59f1b3ce1677300c51c009048c8c677b961e98e99a72 Microsoft.VisualBasic.dll
637adb956e9e80549239f1707db3885683504efbfc2ed8ea93a3d187ef53789c Microsoft.Win32.Primitives.dll
143a613fc7c87e09c02cac0cc1469f850120bed98c5a1602ad84fc42b6c1ae63 Microsoft.Win32.Registry.dll
620da406fabdbc75d11f9827ea7e39d2d3c762471bd2264b0d11f1d6cd9247cd Opc.Ua.Client.dll
6ed6a594c93c3ff35d1a16539a9fe87c1e2640549cc2f48ed6bae333dc8bf0e7 Opc.Ua.Configuration.dll
51cfad48657d95d38074bb88be29aea6f5b361a07397247d58838d066b99772e Opc.Ua.Core.Schema.dll
a7dd141b8dabe8848ff28c2fb8e16a85a0508e6a49e6b1a1c1e267175b99af96 Opc.Ua.Core.Types.dll
9d0857aa6b7f3c49037d4ea557b4da8edf07e146069464481783e66c5c9cd35a Opc.Ua.Core.dll
7f4969aceb2f0db5328c6882cb4b117342f3b18905c38acdba600683860c4fd0 Opc.Ua.Security.Certificates.dll
c542f69882f4e8a4ebd5ccc28a3881d6967c7ffb6dcc3c56dc6c776f39c2ede1 Opc.Ua.Types.dll
37762ea6fcf05154685b0a616461705c837c2f07d98e4037dc3a0e4b4c186ea5 Polly.Core.dll
8adac7a20cd056b9a8623efb6e6f9b99a82e18d3c7b7f6c788f7fc4b20ce5f18 Polly.Extensions.dll
afe3042cd4062438857d42880623845f32575375f460fd1ac07f705ea0211804 Polly.RateLimiting.dll
cd84c110a96a28b969f9b75873801ded483ff8e2396507e2a53ab977584f39c6 Serilog.Sinks.Console.dll
e6b551a75ff7fff20dd0024670d5c42dfb74afa16d54aa0201106dea400a9505 Serilog.dll
b03e016fa01d7cc9723044c7020940779e4af59e29bdf47f72bc6ed9d9b1d257 System.AppContext.dll
9bd4590fa18b9a6509efb5147158a6abbe4799e82e0efa9fa240102b6084872a System.Buffers.dll
7f2ac0ec3bb9425017006cc750dc94a3c37ed175ba2f4eaa3f8f8e5cf35472e0 System.Collections.Concurrent.dll
ce2385891f525991c59d99a86cfaf8d5a81c56f24b01a433f42eb85071832121 System.Collections.Immutable.dll
82ab716ab740669598d8cda36a92690bcc4b01ebba8b21c0c4f0a7a8ee1d9248 System.Collections.NonGeneric.dll
d9ed158ef29df6146151d13260ddbb2310da7150eb98c2637ce91d057f7786cb System.Collections.Specialized.dll
78d429a901a73a09cda6037befaa56b79bfa557000b2a69ba1c1210253c0b21d System.Collections.dll
f2c3fda351505065effbb42e175e50b4c9bcb4c4f560ebacc868d50d29252eab System.ComponentModel.Annotations.dll
f7675a194e2f444670b94d3d3866dd3dd16b48b332cc5811268ff903e6c17a65 System.ComponentModel.DataAnnotations.dll
d060e7f58feb609db4f47e2a6da25c4a9b406b97589004d4022d31d673aacc52 System.ComponentModel.EventBasedAsync.dll
953db884b5edfc396ed4036413240e538cdbb858c06354d976d7b2e6ccce7167 System.ComponentModel.Primitives.dll
8faabcf0ea88a11425d247b19d9cc8a64a78a7c07ff977854cf4a9166e0415b7 System.ComponentModel.TypeConverter.dll
72b3608363e47f2cf3cf3fc9fe2fcefb760e5292ebb9d650fa4ced3896dab5f9 System.ComponentModel.dll
c53f9278c6889d8562d616106413bf50198f452316b4c5002100c568d541428c System.Configuration.dll
8be68e4cb2f0b64b5f37f7a7aa82db2ae1648115a9b7b9381a3cfac7cdb4aeb5 System.Console.dll
f1dcf1577c6a675f1c85ee9f13d103495ce123ed232001646f4132d76c1480cb System.Core.dll
e6be5f74d117b7300523041ec239d2c7b64fc495ef954f48f81ca71507e510c6 System.Data.Common.dll
65bd4ccac3f6f062a68d2ff797bb3908b7f21f908c95a1e85729b8c5bbcb3b87 System.Data.DataSetExtensions.dll
dc01c232769d86816af9d67e492902487bfc87f787f811ca098f42f4988ad789 System.Data.dll
baeabf6461eb78165280fe2a0fca951146de0d8f672ec20a159aa1f431bb409a System.Diagnostics.Contracts.dll
ba04477089ee6fc9ae8c2a8e711905fe1d7a113c785cb168d28eccaed435400b System.Diagnostics.Debug.dll
c84547ea80b944c4683901e03c2e0c00e462a7b12a3657f5f3e1474a5d52edaf System.Diagnostics.DiagnosticSource.dll
b86967674838e9e7465e171d334f6b970720ebcf005326e45c1c08e5720a0054 System.Diagnostics.FileVersionInfo.dll
1acaee1d612a45f2f287675b5b84defed1b34a90cc659641f97043f45076fbe7 System.Diagnostics.Process.dll
c464ff65bb7a1ef7e70b0c610aea951e8f71045cfde50602832969aa02253b6e System.Diagnostics.StackTrace.dll
a1656873dae8b3f2a56714f5a9bcf179e8064a992943cd0b275e83310fd4edff System.Diagnostics.TextWriterTraceListener.dll
dade40a11c2594fc03c84d119050f8b4281077bbc28298e3c2f6d96673cb0667 System.Diagnostics.Tools.dll
248c392f7df6bd5de9be9411dfbbd61fd6ae9ea6f896eb8a9dd6445cb54af2f2 System.Diagnostics.TraceSource.dll
b8274d672ee21b7ab2b579aec0c55795cb9fb3e1f15e9b3c2ee07d90260a3fa2 System.Diagnostics.Tracing.dll
5f04571de46d5defec5e946b618b7b1b10b9c613492a8089ba926d3dad0c6916 System.Drawing.Primitives.dll
86fe6479c86f0f99358adcb89ecba5d3fb91a30d333545a17c00ef67d86a29f1 System.Drawing.dll
3d645a280ed6d073664f229842847d8af2dc2a7126ccf27c5eeba2c55c08286d System.Dynamic.Runtime.dll
614c4e1729c2011b1e40424d7b00b3dd2b76ca7abb438c62d93048c97d9ad44a System.Formats.Asn1.dll
d8552ece59785ee1790ed8d2bdad03c0059c26a461f19c76d215c24aff8af190 System.Formats.Tar.dll
cb2a60039ed7a7a797d133ecee1755185305632b8c78d62dcaf0d2ccb4e15ed6 System.Globalization.Calendars.dll
7d27ac98541e7e6e72dab31aed4055fc9435b777bfce0f50722440601efd77bc System.Globalization.Extensions.dll
e374eb513cb207833143ac4967155589087e4fb71a8ae9108ee1d64596b67484 System.Globalization.dll
b3525059b5751482765b660d86d90de7e9728707c65d9cc5a63f1152ec43a952 System.IO.Compression.Brotli.dll
3fab44511b3e88c31430c987223f46c71dda6f890a2d6ecb7b29031ccc4b6b5e System.IO.Compression.FileSystem.dll
ce43bb776a6df4abe190d0e77096046475709f8e8b0c823e10cb7b39099c32a4 System.IO.Compression.Native.dll
02096ce99b1fef365d4ba9c03edf0e18f7981dac6943ab56676ad66d0bb2c9ff System.IO.Compression.ZipFile.dll
5f7c0695725d3485c86d0bf445c99be1fd320f17b11048a905041ff187dd4cbc System.IO.Compression.dll
b14b8ee22bd83e07c6a004179b70aa7b2958791aef5e834c5de72c49308419fd System.IO.FileSystem.AccessControl.dll
1dc8cf48e1bf26700064f54e510fab4ad0f5482ad113261a71807f9c194180dd System.IO.FileSystem.DriveInfo.dll
a72218414270188a3d11fd291ff63c407f65f0a4ff8ebaa8351990649fdaa9c5 System.IO.FileSystem.Primitives.dll
c60472fbd6ff9bb4a909605ab9fd08462eeb1cb058cec3deb49a21f84e4ab602 System.IO.FileSystem.Watcher.dll
1fdccf62b58857da2d75f26f0fa31ce342e035e08b61f08a439088834c25a650 System.IO.FileSystem.dll
be0350b4aa7e08c5a88a0d887aeee22e11144dc73f10805e36b2bb21440a6298 System.IO.IsolatedStorage.dll
1c60d7b873037f161663cc1f98ccadad1493195952b3f8dd318468ac451ac4ae System.IO.MemoryMappedFiles.dll
0306263c46f0fe7ebe87f4427d3365a23e92faed787b81c54337349688662629 System.IO.Pipelines.dll
e7af8e95bc18598a4cf42daae14d61518bc9944ed68c11a0742765419f04f2c8 System.IO.Pipes.AccessControl.dll
e631dad2c1c1657f40b512d15ed4a636d20341e8a0c6df34f2cd7d9b20848836 System.IO.Pipes.dll
ee80874913ba2b3dc55f05ed18043ef40a42cec0c2095a68a2825ec66e069c25 System.IO.UnmanagedMemoryStream.dll
7696915987cd96348e15e6b230394a9042e278baf26d07d2414b99e8a66ce969 System.IO.dll
2d74c61b46462f83d17c46fbda7087977d293bd0f6808742910d0f6a29d5f5e8 System.Linq.AsyncEnumerable.dll
eb9139d158b544c11b65cd32c6bfbbc2a11bfe5e9ec61ecc94999843afd5cd2c System.Linq.Expressions.dll
162297aa003a7a0951b3333418584f2de68d9a31146e0c4ebbf3a275ef250ee4 System.Linq.Parallel.dll
03fd086266f5ed63a077df4fdb5c69ce08799484aed94485965604148fc44461 System.Linq.Queryable.dll
1c6886fb239a6af59da0dc1561d9f010e2e983a1e826d6e8f8a61f7ea42a3af1 System.Linq.dll
5bbec55d9b01c664055180840b651b1b1f01c15f7f45ee84192b95a09f2c355b System.Memory.dll
651a91c2658632929ba7f50d415b2db6151fd96969be0b47e4f9672d648ec86f System.Net.Http.Json.dll
fc7ad004bdaca8763dcb23ab3a5fb01c9aed9735f678563f4f03254c9c956f8f System.Net.Http.dll
5e514d43d23325ceaeeabc00906f6f782424e8b2b01fc050ede60559a8202851 System.Net.HttpListener.dll
b65a90cdfdc51ee4a5c2cd4e0764ec42b46c8e098aaa6d4f57e8e8c3fb3560aa System.Net.Mail.dll
cc5b82c8101e3af2ab05dea804d333109f954f32ec49a9e4e71e3679ef4d7d58 System.Net.NameResolution.dll
3b97a77bab7f4a5215b12b7d0f16d47d6a617bcafa59d6e4b9efd3b695bbe0f7 System.Net.NetworkInformation.dll
2b91becc5ea71a9b91f544df76ad0c5a29a87798484b37b9c2f05a8a598f1ae3 System.Net.Ping.dll
01d8bef670ac4265708686d37076d8d21daf3152cd0e7b2aa264302c369f70be System.Net.Primitives.dll
ae641f56bcad5c06551f90b855d7a61c9bd401d0c0a9985ccd662da860c3d5bb System.Net.Quic.dll
5e462536c5b743dbef0522174a576ecb7be0dd52c5074e64b7ca73bc7dc570d0 System.Net.Requests.dll
c03a6cba2d1e841f78293188b8356e0890a03ad9860eb5f602e69ac8ddd253c4 System.Net.Security.dll
d39e3896fa6e4b42dcb6aabace1e9d2f8c15c6ecfe10868668dd9de119aa675b System.Net.ServerSentEvents.dll
dc7433871738ffb8ce7f7963cee7fadc2103ab4b61e461a70e60d848625ae297 System.Net.ServicePoint.dll
7e8787c401641f3d749847c552ad8c8c600896e1aaead24c93440039801dc98f System.Net.Sockets.dll
8cd16344c501ab69ee11eb1108efb37d4c789de9bf421bb3e8703800ca1a8b1d System.Net.WebClient.dll
f5973c353b9204e5c1cceec843707c7be368293428d52f62bc746400346103b3 System.Net.WebHeaderCollection.dll
9bb235262aa0f2530fe8cadf095432438746dc3bf5d1090caa7d0eb4ee2dca7f System.Net.WebProxy.dll
9ae53fe2d695d041d834fe741c52a60d77031667dde8078281cf56904aa65fb3 System.Net.WebSockets.Client.dll
dc3632ff6a2f4118904eb64edc433c0d79c497b3ad2c01e1287cc86da14de612 System.Net.WebSockets.dll
1bb00c4e169c0a20ad8763f4105204c221b97e037464b5bacb6ec4b9d40e0ad7 System.Net.dll
2025fbc96c75d61d82cee26ccacb100d773a4e393630e2697a5c7bc6c4ee5a8e System.Numerics.Vectors.dll
c39d8710b4aba77631159b90e04abd81b58ff3cc9fc8433621b76683cd6aec9a System.Numerics.dll
16f21d6da2db3ce7a1c0b904bc2f3658685156a2155e5aaba8a3d45f4bc06c74 System.ObjectModel.dll
69d56e12535d3a8f2f8f89ac8f97577e6dc788d26f2e7b69be8fb5f6ff17ff28 System.Private.CoreLib.dll
4e329edac8f17617d2d46d2d472e21c48614276a9879f3f7b4be2cb2841ed3f6 System.Private.DataContractSerialization.dll
eb07de9b8f80dbc1c2cad80598e184a8369f6cbd9d105d50bcc6cd3428e61ce8 System.Private.Uri.dll
3c2edaf8c5fafb005e25631b8ed48a64050bd126a8a5cba2f84b6869d6a6df47 System.Private.Xml.Linq.dll
3467185933c682c10a67eb6b4eb78df5a1debc63d4def7708d23db9fb79780fc System.Private.Xml.dll
93b0f758fac7aef8eb3256174fe621ac9de7db98e044e22d4b6cdbf7b462c5a7 System.Reflection.DispatchProxy.dll
3f8d14d45f250218d9c66f158b7a218ac73d1f2df75dbcf71a09f12f1711bf5f System.Reflection.Emit.ILGeneration.dll
f43856d942af20cd256a7358afad7fdb50df4e9e307e29beb34dff8dbd094b6c System.Reflection.Emit.Lightweight.dll
f0c3777ec9c76eeb3198de980054247fda2d184e8dd3d3693bc433613a6df364 System.Reflection.Emit.dll
8ccbd7bd124cbfaa1cfd9315d922dd693ad7ade5d0436d246b188e02b40919df System.Reflection.Extensions.dll
5af6e802d91f1e404a95c55e23310185e7de09adac62ffd6fd56b98a6b31b15d System.Reflection.Metadata.dll
9cc0088b3e2d6a0771063dafd2c924538dff5087c20610f7826a088a38c27ae0 System.Reflection.Primitives.dll
479a0a76d0360120f262ca9d501637916382a5d162f10c29d37b01888f5fd00d System.Reflection.TypeExtensions.dll
d3d7fa31b89606d7a5c10a26ced05a29d32ab2fb87a54f10c82cd74e8e19725d System.Reflection.dll
181cf4b3b528f7e2a3316fb792339320a1c40c96c7b45b726ff16257097276e3 System.Resources.Reader.dll
06fbffe507abc62101f0466d1570cecb074ec6a432a1ba058d4b9360ea13764f System.Resources.ResourceManager.dll
1dd70e4933c113a2a9963f79068a1e0fe52bcbb5dfaf54255dd41af5b4e05d35 System.Resources.Writer.dll
bb342e1fbacfe7589b71936fb000c36b54ddc96d578bc0888623e19549c1e6f3 System.Runtime.CompilerServices.Unsafe.dll
657abf22f77265e6e111fa0c6f55fa176373dd447fcc0f0c4145da91fcdda047 System.Runtime.CompilerServices.VisualC.dll
f7e44a3f016421af7130ccdd913c57419d3cd2a0f48e34bdd1295797f2535cf8 System.Runtime.Extensions.dll
b21415740db52c068dddeb4dc61e95a41ec23b1a4c1b1623ff6b65399c7c0fdd System.Runtime.Handles.dll
1c91d7b7dd6da38c6426a4be35b3458ef3d127ea84533941528694e9db1a145c System.Runtime.InteropServices.JavaScript.dll
f0b683af8a5db0f4cbaa2119f66ba93a01ee0db8ba1079acd01f01d247c111a6 System.Runtime.InteropServices.RuntimeInformation.dll
bde2bb33524a73e2964cd47ddf753150d685b31ebb1c4779e66ca426b2b419bf System.Runtime.InteropServices.dll
61cedf60e24e672bbde2869ceaee84342d22823315aae7fb7b768e9a6e6893a2 System.Runtime.Intrinsics.dll
b55e68bf26539914d8eb80718dc5b183f36d53c7fa20103f52c06796d33aa0c6 System.Runtime.Loader.dll
46b0e0c9b0198446a5d4ae8579433a038d7f1199e0378ee6213a0390bdd9a99c System.Runtime.Numerics.dll
18e20e41f0d87206ff1fbede425b7737be7c554c1704af3c684e83bbdec63157 System.Runtime.Serialization.Formatters.dll
87249d372d73fc7fcdc057be0efba1c36fe7318af832463dcfbf55fd067bfa97 System.Runtime.Serialization.Json.dll
5981ef301f6a849ae73bfa0eeb4956992fc15b00f705c35f208eaf6793a37ab3 System.Runtime.Serialization.Primitives.dll
ab0c54734d37e5aac3f726fe7806ff8de5c5bce757f7993135540154a72ade79 System.Runtime.Serialization.Xml.dll
39da6e91e025583c2d51a5180614cf278bdf7f6d850c4c011422869efca625ce System.Runtime.Serialization.dll
d6b4189c8e9afce3629b27c902c198a54ad3a355ec8409d3880b3b68fb1cf445 System.Runtime.dll
c83dce7b6b0737d14771c9ad38a8726787a91472be503d8f911bfe91668efadb System.Security.AccessControl.dll
77c7616c8f073677f8a057ef032b21d8f6dfeb19179b936bd54bab268e71cbf5 System.Security.Claims.dll
0e5de3978293221c0e36bf52786abea8f7b74ebf06de58c9717db4507e59ac10 System.Security.Cryptography.Algorithms.dll
9198b7e57489278215a2489d66d9d52c7a9d65ae7abe399cc9d27d1b23debbf6 System.Security.Cryptography.Cng.dll
2774b21002a29479de3523f8781d1411e4990575b50f1316d6a9cd490980c2db System.Security.Cryptography.Csp.dll
070abb893bb963b2a846ad8b8c1354563c7b362d1c492eec53538fc28a871001 System.Security.Cryptography.Encoding.dll
e2a8cba098ec00d19d043750e8a19374cc65d1a498b9eb15dbffe0eecc579b32 System.Security.Cryptography.OpenSsl.dll
89e9947ee1e7839eeac2c9c0b37a2b0c0433ff338dadec6380fac1eae375ffd3 System.Security.Cryptography.Primitives.dll
398e55927b3cfd070bc8d204740e50d012cb78f7a2dcb968a33869b4aa54e067 System.Security.Cryptography.X509Certificates.dll
b043b1ed136164fd69606a9e7f26f1fc05d0c7cb888c0c00e3b58544623cc7e5 System.Security.Cryptography.dll
25f1d31f27d8e9a97fa203160dbf9a8a7be8188328ac74516002d0ac071961d9 System.Security.Principal.Windows.dll
d1cdbae10415e4f384ecdf34cd6e427f7c1d67bb6549b7e15193006428734bb4 System.Security.Principal.dll
3347281129d6cfc4a5c912dbb9f803878c99cc60d125ca5f2adbc4718ccf348a System.Security.SecureString.dll
e81926edd150a900fa0d6832aa813b2c3dfb156e7116a7cca2d96640ff24e438 System.Security.dll
9537a9d13c43511fb95b6d30dda7817851b23e864503fa336626522499b51d24 System.ServiceModel.Web.dll
13fb65e12deec9ac60a8342dec6caeff8d35b56dc142cdabfab2745620d46fd0 System.ServiceProcess.dll
e3f7a38a01cd863716d83ae322a007a2d052044cd8bfc2b5b1c268ac05c9d931 System.Text.Encoding.CodePages.dll
fbbc0dde38272605b8b95271cca7202ca04d5fa115acbcee936e1bed611fd23c System.Text.Encoding.Extensions.dll
f1531dcab1fe59529829a1a241953a5e55ef8340c8cf1a21c053eeb7c48e2a84 System.Text.Encoding.dll
319eb068c30ae985653a31911086141f5ba26b99e0ce7ff083f455ad42d4c584 System.Text.Encodings.Web.dll
ff440fd7d4ae3d5a6d080c1ebaaae7d5f4145ea162ab12bf8931e92b4311f469 System.Text.Json.dll
244be34f8333ff60b1fa87f54feea7e8338e2ff96fdb148a4d4bf12b7c981c86 System.Text.RegularExpressions.dll
6f4b852763d9bdf83013893f294cd021a0efd84243374e52e148d8b665ebc8ec System.Threading.AccessControl.dll
26f3f523ae3a685b462c1b192ac752cfa8da5db5ba4e2714b2e64635e717a4d6 System.Threading.Channels.dll
9442e2b745620403121ff4868fd430a2178029c22ae6a8dcac77d957ada4be42 System.Threading.Overlapped.dll
4638d6b12ecce5eb1e0b0e5a9ebb23d1c2d708f6e8d3427adb9cf3e15f7ada71 System.Threading.RateLimiting.dll
bbf7de8812c20b8e61f9833d72814dd858c4781fa35500b2374c7e5f19d3a246 System.Threading.Tasks.Dataflow.dll
b35a1faeecc0fb706b06f470a13fb3b1d2addfef1cd5a81fb1bdbd75ad6c8fdd System.Threading.Tasks.Extensions.dll
2853f090ef0c1bd47f91800ef71b0b44084b1f703b3b699919466e065ba2fee2 System.Threading.Tasks.Parallel.dll
a908649b99249e9533d674ed8838f2cace1f6a4071d848bf9edf7b96dc4ebc5f System.Threading.Tasks.dll
5e1c4834abd41d88f79872557c69d20502e2d220bde333870e31d1a1eb4eacd2 System.Threading.Thread.dll
2135197f9cbc09004ca02055bf54b5e3d0e2d7a9d61c477e4ef129321eb0b4c2 System.Threading.ThreadPool.dll
a7763eba808803faab8e904fd5b467d9c7dd5c18ddd9a584d7c686f08d27e10e System.Threading.Timer.dll
6c2137fb877e647a6c0f8909db8ca7af1e6fe95f19c6e531f6a74539fabcc6ad System.Threading.dll
213df40904a1b088fce848eb34bbc91785cee298632e06670518d306536af23b System.Transactions.Local.dll
bfffd1196acf43fc9c88ebb561bb3a964ede3d8269bba09cf3258ead1ab4fcc4 System.Transactions.dll
03a5049c71a54d9e8c2f2b9180529804d3e956ad6432a0668946115b29d3a830 System.ValueTuple.dll
1097a135ce82145a8f7dbacc0b8a4d8951e067652814ff6d9fff0927b21706ce System.Web.HttpUtility.dll
5fc03752ad1c79c05bdf71cfc841f7c16cfcc4366365d8f7f31e22cff3cadd7f System.Web.dll
b2a12218c022eba72d8acbc36c012211f965bb49c2fe92c0aaf0964ee785c800 System.Windows.dll
f66daa73628bd932749377aa5094ebad056a63748223ed0dedb4b7dcd49e22b9 System.Xml.Linq.dll
496dc55783342234033fe7162f618938691f25dd818633cdd386dba6e4e1c271 System.Xml.ReaderWriter.dll
4a38c5a78410d11d32df42565312306eefc1bee5c73a6c5c8c661b0cf1ac0717 System.Xml.Serialization.dll
fd3c02115f7ad89770a70f18f83c8e4cdf8c78bb4f88046923f3285fa853c7f4 System.Xml.XDocument.dll
d68c378b07f099610b2eda021a232499cac2d6b96fce72b20a4f0b07efc85513 System.Xml.XPath.XDocument.dll
03c3c78e671c3abf1d10c830eb67b8761bec7b6dcc0ae74462736df3616434dd System.Xml.XPath.dll
fc671e921ca4cae98c3b1cd0ad0fdf1e75f115917c9fa0826f194efbd149c1ba System.Xml.XmlDocument.dll
8e9bd064b432d8617038f2100b8268b8f46e4c22a6c09395ad0519e657c8801b System.Xml.XmlSerializer.dll
8b35480d266706f1c8db8e70216a72ba26d3fb25725f8a1131731e4d380410ef System.Xml.dll
ea77299c8ae8751e2868343efc838167b2612c58863690b83692de4d66a34578 System.dll
a88115b54a4782631612f995f857624994143e783aca58dfe2fe0800417a49e6 WindowsBase.dll
aa729e2a47fb8c1ea22efd81ee7c276215aa304a5d42b602409c19b7c470b692 ZB.MOM.WW.OtOpcUa.Client.CLI.deps.json
8ba541d4f96ef1ad9290dcd629eaf36b46a5f30dd1f5f76800d4f7a16bc55357 ZB.MOM.WW.OtOpcUa.Client.CLI.dll
e2c88c071733e5807a260ee33d5064e1ec13178d2562aab8d7faff763b6974a0 ZB.MOM.WW.OtOpcUa.Client.CLI.exe
67b5fad0f9fac557489a78bb10cfcc477d3cc42f98c1df8e60196b674ce249c4 ZB.MOM.WW.OtOpcUa.Client.CLI.pdb
79478f035e69ab7220e5a5c0f904e8f74441d8390ecea88d00f58da33c6714a4 ZB.MOM.WW.OtOpcUa.Client.CLI.runtimeconfig.json
bf99d8b3c7a11603ef0caa727c08ff49eaef150ed366b946dab13e69abd52ce0 ZB.MOM.WW.OtOpcUa.Client.Shared.dll
9fd627631c4e612ade4933fb3019500e767a4beb5b3ad9aad8a7bc5de5381e81 ZB.MOM.WW.OtOpcUa.Client.Shared.pdb
c6d4f34cb488992813e24f8aa8a2dbf52f41c5699b02264fb26c27f28c28e430 ZB.MOM.WW.OtOpcUa.Core.Abstractions.dll
66afd08fa9130faab591ee26e083c7ae798b52092fa8fbfbc1fd6759f64dbca6 ZB.MOM.WW.OtOpcUa.Core.Abstractions.pdb
c97efbc79aa183dbbf7246d7f98bb34fb1a602bce08b0b2ea73f8fa65fe61265 ZB.MOM.WW.OtOpcUa.Core.Abstractions.xml
29228af6e0a2d5fe61dc5f99cd599284d9f8a74ed5129a6c316ef36149eb1af2 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts.dll
4d4d26f18598e3f9aabd236de8069fefd6390c1dd6e0e96b55a91f56719a7d9a ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts.pdb
4b848b0ed6ad94a455a85e93cd0c10faef62f349c7ce6f39415ae55af72655d0 clretwrc.dll
ebfb09f29cfdc3cd269a4a5bccc0bc6e4e7afce9a7d263e43cb52bdec98e9e43 clrgc.dll
936c6122bb95df8bb6c7552e93ac01e426bfa5a5081dd7fc774703e05edb2d04 clrgcexp.dll
e33038c23f32074683e170b0ea74dae6ee74a05bb5e8ef6c9fd4cc43771b34cf clrjit.dll
1bc65b8d45474b19adf3ca85ce881087aff599ffc72b2c1a323e878227757b65 coreclr.dll
da50d230f70332385b86c44f9dc3f571b60340f8b603bc0e2f201b5a19240acd createdump.exe
5b9358572daa76176f97f1bb80fe764b24ee1bc2cce0579230e7f9a28e3fbbed hostfxr.dll
84275dc570382246b4b36ebb3094c2b38190c2fd80998d1da20b95dfcae1c546 hostpolicy.dll
4a9b277d882a52f19b89047748e6ab1043c1582f834b20423c8c7f16a76b6ea3 mscordaccore.dll
4a9b277d882a52f19b89047748e6ab1043c1582f834b20423c8c7f16a76b6ea3 mscordaccore_amd64_amd64_10.0.1426.52326.dll
31081748cdac21d8734422cb3188070c4f49cb9fd85051a7605bbb7337a7331f mscordbi.dll
5ff7b9c14324371cab67e190165015103701045ebc36edcb8a829e5505c2c765 mscorlib.dll
9eb4ec98c78e698e0c25e9088a5670eaad1e12ab4df066eb3803c495dc0031ce mscorrc.dll
7b32a336b638570bff7b2f4782ebdc05b8c70fac76fdb412f3e8a3c181c32a61 msquic.dll
2844417955d5b11f8434fcc969f52bc09104f438ae2f4d5595c36c355d06e270 netstandard.dll
@@ -0,0 +1,413 @@
d9b44216b34fc9655c86c3e9d30422e47683969577e205a17096a9a706db768e Akka.Cluster.Hosting.dll
9f5b418e908a4d579858889af823f780a5e7ff6be2f27c24aa38309759d09423 Akka.Cluster.Sharding.dll
a819b0c3e73e08ea474936ad429763ec11681f43c090e2b92dbc1d37d7c94e35 Akka.Cluster.Tools.dll
e64aee4dbd305f533c9eea995c9676c0ce7bc8e55a77437afd14b0cf8fe3c0a9 Akka.Cluster.dll
2472a627de9cf9185b3a98860266b7751c173f859d3bd185b272d5f4078be26b Akka.Coordination.dll
ebea19a2f75f2e275531fbd62be5499a5132563958ebccfc25a450979cfa0039 Akka.DependencyInjection.dll
8c1733537b6cedfb4e7234b86ae63a45cd204ad3c6bc8843f52a85643c507a89 Akka.Discovery.dll
56100ac684f6acef390b2e546d198899366f035aaa51bb64bc494ebaf2d85007 Akka.DistributedData.LightningDB.dll
9ba2724f0cd49676338241b6249e3b9b95a5c50ddadea5e28adedf31b3ef9fc6 Akka.DistributedData.dll
937444c766e641d7c1f86e718e97a148587136a249f91c2986e1f77e2f8d9f92 Akka.Hosting.dll
49068dc58456684f3c2804bb541223c3aa2dade07f4b1e9877b2e7e058d2056a Akka.Logger.Serilog.dll
a9e840a8bc6d7c404e0c83ec5576fcaac3a848880c0ab2b0ed9f1bae33ec2076 Akka.Persistence.Hosting.dll
c11fc9b044bb927d764f85c0ca8a02c16e8084c05c5ecffd050869ed7810c390 Akka.Persistence.dll
f0d2ca67e9affd0c68ef32dc859974fe415c00ec5a4710a8e06467542799ad6b Akka.Remote.Hosting.dll
b1d27508442727938c4076561f6b4ee81cdd3caa0ef76a481cb45dbfc4c5a0fb Akka.Remote.dll
e3d9024ece608d6f8b2a15d15f211d50919ed983834fa85d9cc3c9be3c56eb73 Akka.Streams.dll
b2d2b8422ba6759d315cbd07622e705fb69daf64e9425cda45f5605132303e34 Akka.dll
224d09cb39eae4d8c30272a0c49beb19d873c87347eae9487f0ddd859d752b56 Azure.Core.dll
af18f20be25b2895c912f3ba0a9f2901a82dda823edcad76e6a19eac9886a40f Azure.Identity.dll
7af73841cafd0c8b05ad166c45ad0886bcf80926d4c4a65e0fa7578ea1e04d03 BitFaster.Caching.dll
65f066d108192cefc6e44f18e2d92cf338be30056f4fad02d6b8ea692f81bd37 DotNetty.Buffers.dll
809d9e582ce909356b34ef8d4f212adea5d5ca25e1492a31ccb81a6f9be23070 DotNetty.Codecs.dll
7a375647446f11a5d5f5eddf72f0327b4b69956a91917100d0f4d8f120fa7962 DotNetty.Common.dll
08ce96ee9108adda52adb87119c54fdb819806817867943987d77983c3f1a9c5 DotNetty.Handlers.dll
f393993cc027ec61f758b8832029b21f2efd8583807e0aa06af4df90d239eb09 DotNetty.Transport.dll
318092fdd4eccb8e30ab04493a5ce3e827714df2721770af62ef81aea8bd21d8 FASTER.core.dll
c2769d0bc587db846b99fefcd778a8ffbb7fbcb4a03d2fcd8ce9573c7ef7042a Google.Protobuf.dll
7340bd5dccbe5298825df443d4971a90afd87388e381c008a90556e42c2c04d1 Grpc.AspNetCore.Server.ClientFactory.dll
f200b4cae34c51f4f607c684dd72107ad2487808673ae20960edacdf437ec9dd Grpc.AspNetCore.Server.dll
3535e79c38523d239303a33d420c8a856babdcc4d08a167d532decdcc5453951 Grpc.Core.Api.dll
ad2dae77484dabaa9dade62035d761a0d1ec26394e8b600e80dff7b792c088e7 Grpc.Net.Client.dll
9bf1e593838013238a56d5b4e4e2dd2e8c93589063eaf2a3b2f71e3d3219fd3d Grpc.Net.ClientFactory.dll
d91c6969c65943f22f8a6f67f832e763def7fcb2af0ce16862b3748fa06e0521 Grpc.Net.Common.dll
b0ebedf36fd19f1dedd7547e49c5a7b6e4a6b53015dde70699e4e69ae8f50406 LightningDB.dll
1bb34492a9018fec3f627458364dc6e46fef076a647df181403246da65f5bce2 MQTTnet.dll
2a2f99ce877c62a8c600c390ce1f15bb0cc2a92a973a9da60ddcf4bd60bdcb64 Microsoft.AspNetCore.Authentication.JwtBearer.dll
a768ee07664430adbbdf9a761ed0b691dbf52d67d2f1af833de606b851516394 Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.dll
1ce2e273eab3c4ca003e65bfdf78318b3195f08385c814a02f10890bdd34d05f Microsoft.AspNetCore.Http.Connections.Client.dll
5833a8070a9c50faa38331fead1c106c4c4bf4e6eca773b00a1d44e16c6911f8 Microsoft.AspNetCore.SignalR.Client.Core.dll
f5201eaf736cab8651013a49b6bd8bbd2d80fb2f46ffdef0e40ce21bfcb161f3 Microsoft.AspNetCore.SignalR.Client.dll
136d5965cf4768e8420b547a8bddea882921f426c371833d558a858a2f0c235a Microsoft.Bcl.AsyncInterfaces.dll
009a27b8e3093fdd2960bba63e4acd48eab05c4f8f8a6d9fe8c24b4657f44c4f Microsoft.Bcl.Cryptography.dll
d0f4798de9cb78c13463a0f3df747814c177ec15e03e1c03aee17136798a2cfe Microsoft.CodeAnalysis.CSharp.Scripting.dll
cfb5f2785c30485eda803d58fb8330d737cb07d469cd3d7bc1113d58e8d8e4bb Microsoft.CodeAnalysis.CSharp.dll
7c3973a0997a1901c4f5978ef901e3ae96ddb780dead70a42f65f2e3f6f23e8f Microsoft.CodeAnalysis.Scripting.dll
0a7fb1d94e0e7f46798b138caa67e5d5fb8fb98fd31b5294c917def057ab3d80 Microsoft.CodeAnalysis.dll
5a34e2fa3479b1508dbc20fbeb2c9172f18c3868bdb147a185213a446645b400 Microsoft.Data.SqlClient.dll
9f1fe804321767b6cc8db751ecedd56ab308e5f15492a7f40d7093bb61ab7638 Microsoft.Data.Sqlite.dll
34aaa94035fdb18400c9c40df82a731d935153e71c99932a92830e5807cf41d6 Microsoft.EntityFrameworkCore.Abstractions.dll
ae537828754942c45e884795bf666205f5cff414c9238641bbe8687ea455cb79 Microsoft.EntityFrameworkCore.Relational.dll
9261df9184d4aa3914e9f20cbe9a8abc478702de3ebdddcb622143f798698464 Microsoft.EntityFrameworkCore.SqlServer.dll
1783882ff577f09cd2b220f322e0b3eea0f77bb86f80611089274482ae1dbf75 Microsoft.EntityFrameworkCore.dll
0d7fae30684654fa9173ad248ab41b713a48d81df0ef446ee4e40c8d380893e8 Microsoft.Extensions.DependencyModel.dll
39de9399e095736aeae2a29568207ea349d889bc3b72affa68f92d6581bf6f1a Microsoft.Extensions.Hosting.WindowsServices.dll
9c1f736b16cacd318afe07d3b9d707a4b4b56def5e403b0aff471c1af413aaf0 Microsoft.Identity.Client.Extensions.Msal.dll
10d59df4170053ea9597e3c20adc9607ad17318ad5d8747eda3d930a5a4b463a Microsoft.Identity.Client.dll
b438fd27bdd5ba7dc4a482c1f135d6305301b1685f624bb36ac0ed24f499fc2d Microsoft.IdentityModel.Abstractions.dll
cf889db7a04e956d03726954f9389a23a952666a66137021c712ee977630bd37 Microsoft.IdentityModel.JsonWebTokens.dll
da14a0467587838b7fedc6670315452ff9c7a9fe54fb7f0742fe7a34274753b7 Microsoft.IdentityModel.Logging.dll
3fdcb7b20fe91de47857aa3fee0d13affaecfd0544cae5a3ad3f7f105a3d8cd6 Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
1126552d469948ed6d7887e8c24cbd65fddad103193eeea869930e27da2bc010 Microsoft.IdentityModel.Protocols.dll
b3d4bcb1d9f9c469825e7aa041bc35c33d85651a88ee24b5ef9ea29d7502d214 Microsoft.IdentityModel.Tokens.dll
a9dca1b42bc875f966b78b2c0880e62b838f0ed6567166d7f1f07ae4b76ec4bf Microsoft.SqlServer.Server.dll
e7734ef5db26f5e5626f8ef354831c60adff9a8e88447cc5e865cfe1f9e466bc MySqlConnector.dll
a28c251dfe36d881e9e2462e171441b8b0ec156fe3f452602c9149b1b9efe05b Newtonsoft.Json.dll
85918b6f9e91acffac9bd081b70404b0456c7a6f0c9c5666ccda8951bd8120d4 Novell.Directory.Ldap.NETStandard.dll
e2bcafe1660fe4543fe9dfcabed972ec8d32259e5ea8009462ce1de23c7034c2 Npgsql.dll
fd000b186f4bc5dbd9947e876f96c178e8c4259ee3e8717d672a4ac2f4c3a058 Opc.Ua.Client.dll
30fb5142f13a3b3083c0484bcdedaec2efe2f50e57f10ec6a61257ca5359aa7e Opc.Ua.Configuration.dll
602e85316943ad7ebae33a23d60a69a6ea50d91250ad0556906b816435daa37c Opc.Ua.Core.dll
a2a05c64348f6f8aa60de0fe27d8e5e22d12e09b1ba6172ca34b3773620e394c Opc.Ua.Security.Certificates.dll
d8d9706dea577858325730cd89896826ed82f7bfcf9503ccd0260311663a69f4 Opc.Ua.Server.dll
c5c5e36cf6381444b408fe1b51726b17deca74173764cd62ccee954b3c8c2718 Opc.Ua.Types.dll
5c5727de149a0232825774a8ee75b60581ce19ce8b944d422bd545e2e3d7f915 OpenTelemetry.Api.ProviderBuilderExtensions.dll
ca5ddb7a51bcbb1ab8bcc6484603c70a4077142a8745d521c4bd2363f9e7c217 OpenTelemetry.Api.dll
20bf20b94e2e92a73d20d97b81d9cd3b26ef0967ff29f80d84b421c4317ac77e OpenTelemetry.Exporter.OpenTelemetryProtocol.dll
60dcd62f532a61821328e52e511bd47db620c301c7105c4aaf70619c0f217d65 OpenTelemetry.Exporter.Prometheus.AspNetCore.dll
a627ebf2a7d14e0f0b3c2568e6ee37773397de25c90ee89d4560422c42d8b945 OpenTelemetry.Extensions.Hosting.dll
247771e79186a704722510e03aefb2f09c10286ff3fc658dcd4bb81ba347f6c3 OpenTelemetry.Instrumentation.AspNetCore.dll
8edab07d2cc02b81cc53bd9ccc0f6160e483a4b42ced3cf339de530fecfe88ee OpenTelemetry.Instrumentation.GrpcNetClient.dll
154c41bc484085a74a0b1886478ffb4aeaf850686d173d0c93a11ad0283aea2e OpenTelemetry.Instrumentation.Http.dll
a789454f78efbf4d2f04605b98d3f143f6396bec208f4b5765e8e8d2d0f35143 OpenTelemetry.Instrumentation.Process.dll
08b62837d801db4afe0ac77d27fe66fff99493cbb6b9c49a5876627c2aabd7a8 OpenTelemetry.Instrumentation.Runtime.dll
edc9799efd614cb083193d90eafcd99abf70496738c3065933093cf99d162cae OpenTelemetry.dll
a76f5f278e9db505d76ce21bc57163c0079ec03ef1dda7d9a524d9bec3a3bbbf Oracle.ManagedDataAccess.dll
df10c208f9987484230282411a01979db0cf45ef5ccf798d9e7e0cf961287e0d OtOpcUa.Host
e4e98eada040063f8ea48168bf06f1e1ca2b768da625596c8299d90797ccb0b5 OtOpcUa.Host.dll
95653c8ea484279fb2653d0c13e40409cb52dd080a4f7990a3049905d8b846ea OtOpcUa.Host.pdb
eff38a9750f7cca2407b1d639a963d56ffea92088e6da971bbbfa74e3dcd7224 OtOpcUa.Host.runtimeconfig.json
802ffe5c74c26cf6bdd0f0ecacc36965807a267765f61b63eea8605da15fe0e3 Polly.Core.dll
dfb748806727fe261f48e15ed6c1e3ab952f7021208fec4df0184615ba5ec6f0 Reactive.Streams.dll
e293fe25f6e774069a5c38f0778e47f2c8a0d7327741a6df1c62fb0f98d497cf S7.Net.dll
bc69777001eb4db81c580f62835396f67e74aaa381eef446193a904499d5310b SQLitePCLRaw.batteries_v2.dll
50c999a1ab2afeacc93bce5ac2948d3bb630d99d23efc3cfcbd8bc11d3426eb7 SQLitePCLRaw.core.dll
02ad639f45a26de1919ffbb6696bdb399ad01afc149970a163c3867162f310b3 SQLitePCLRaw.provider.e_sqlite3.dll
c49ea3d1dcdf33d1cac92a96b7f6c8803e232e970b73b17a00410a32769f55ea Seeder
50ee8159f0459ee69e9517f6d6285d822a70eba03765b9073c91ba8babb0628a Seeder.deps.json
18690a15628f028df95bd4a578049a3997f31e41c22a5a06ee04e50739920de5 Seeder.dll
27e2a6e37b5580db1d4bf07d4b89dd98800a8218b011c2886f38ce52460c8833 Seeder.pdb
bdbb6b43e509fbbab6c78b7004c4debf1e9791a648a08f730ff5997f71ef7099 Seeder.runtimeconfig.json
a550c57df7a04edbed00da036fc14be12acd0d425b7401855975fb628e3dbada Serilog.AspNetCore.dll
3e6d0284179ee0e1c197568fd79b58f869d15298fff8ecb8447322fe87d44f47 Serilog.Extensions.Hosting.dll
80d3edbe3e3ac0b4c5bc764474220e7da11df8d285e0098f3dc1b65a734c8507 Serilog.Extensions.Logging.dll
319fbcefc2161dd50ccdd8d60b30edee48a09f794aedb28421a23f35ddd670d9 Serilog.Formatting.Compact.dll
ec8cfd1f8970a44e2aa3f7bcc71116ca2691b196564bff83e3e3ead0c1143b67 Serilog.Settings.Configuration.dll
dc88002ddd9f5fd0ffec9a6568ef89954671f60f2c9161593ee78932538c1e3e Serilog.Sinks.Console.dll
df543d3df8bd00d72e5eb2b9b2a15e67a6e4d10c13834de4cedbf500b8793e01 Serilog.Sinks.Debug.dll
4f4282671c2ac68284b4dc99f7a76eac9cbd4e659978cef642cff9e6c01b676d Serilog.Sinks.File.dll
e17a2dd847560cd22bdb6df8302f8fd202c3f073888cdd9ad8b1df9e80da4351 Serilog.Sinks.OpenTelemetry.dll
e6b551a75ff7fff20dd0024670d5c42dfb74afa16d54aa0201106dea400a9505 Serilog.dll
ce44a4fae4c4787c12475700e19a365fc2f388ae5d0f6182557ce5ea175be7f6 System.ClientModel.dll
434522d676f626589e21aedea883f6acfbe276f9c3a935dfb4d8af7a19feb75a System.ComponentModel.Composition.dll
08b618461d62fe65451bdac4dbc25f8ac8ab16a914a687f2dbe3923bf0e8b3e7 System.Configuration.ConfigurationManager.dll
703fa599513e6ef21193933f061f2b6cdd57f268d593344faa5980b823e8226c System.Data.Odbc.dll
c596c35317c7bd5ae3938854996d62c24c7f67f61d3710a379bf1f3ab1a9e3b4 System.Diagnostics.PerformanceCounter.dll
096102bad94746479987ffc4fc6c9faafb9e1ae6ed1c74c9a7dccae0e4f3ea9f System.DirectoryServices.Protocols.dll
56cf18b0b16ea80738e0768cdcbc9368f13bdbedaca86025756009e30f969fe6 System.IdentityModel.Tokens.Jwt.dll
75a516771f2e10fdb76c1ea603f8d11e702af7ec97b383f1036cee114ef3f491 System.Interactive.Async.dll
149757a4113ae6102c425f1469a7cc14deb28635e94cbc9e0404f5e4dc518001 System.Linq.Async.dll
bae79a4ff6e8fcfb65a3d88eb53d281898e699e5471ebd780843e5616753f0c3 System.Memory.Data.dll
c1cae1a8b97d5e0ed64f7a9947f6ae44498398b6e9ee71473c2bef24646e91f8 System.Reactive.dll
02321322ec85e0a68f28ad33e549213b1dbf3de0e66c3f7803f9ae32c0d00ffd System.Security.Cryptography.ProtectedData.dll
62ca0ff8bccaf622bd75f03b6a5ab46b8ad7b28c5eb6ba6a0a9e4ecc49cca640 System.ServiceProcess.ServiceController.dll
f9892e164816e0b1cc9aa47c2efe3f48814ea8fbe4f04a125460555eaac9d9ab TwinCAT.Ads.Abstractions.dll
016eb9f6687832b0a7a819609ffb3227204f75732919ef19fb3366c038a11c5e TwinCAT.Ads.ConfigurationProviders.dll
7da06f37c0572d5a8af8e0a5d6a81bea18c3ce1c08ee7501668570fc70a7d033 TwinCAT.Ads.Server.dll
2a9c2ca91889e24f088123ce313fc96060897b9e34232022b0566dfd2ea32a0d TwinCAT.Ads.dll
8dfda63f20ac0a34c43716f593bcad60755daf71ae4aefbf7ab1f34a0951de11 ZB.MOM.WW.Audit.dll
24099d4d38811a364569cba4924af2430fe1e8ad8d3e735bd840dbfaa548cef8 ZB.MOM.WW.Auth.Abstractions.dll
ac062c1f634055ad9b80bd13344481318d6f45ac45f40dbaeed861ee20a75984 ZB.MOM.WW.Auth.AspNetCore.dll
8625dea672beff26bd8f4f2aa54307cf652e50ad66a2c6625bb27d282199c32d ZB.MOM.WW.Auth.Ldap.dll
ad89f1d2abcad33be99b03bca37b26a9b92f90c354e98a99928d6176b12d58a7 ZB.MOM.WW.Configuration.dll
a1345d712159544954955b41e7d04bc35180e1b9b36fdddcaedff5821a09d9c1 ZB.MOM.WW.Health.Akka.dll
d4fa98ca71512d1927037db22477facf49472249854898fca55c49c726307693 ZB.MOM.WW.Health.EntityFrameworkCore.dll
3c95dff17440b9df9195092812949b6e16e0c02456953650a839963af66df633 ZB.MOM.WW.Health.dll
b89a02e0d228ec549c4dfb755694f7f67b573a6077f06ff2781165e884fc5e12 ZB.MOM.WW.HistorianGateway.Client.dll
e60d3d4650be5d251982f7847404daf1b666f61d56e2b0ccb844af8677e97743 ZB.MOM.WW.HistorianGateway.Contracts.dll
d4da2a5bdfd3ebcb56f7ec948cda12bf378dc34079cd20e864509902a93bed38 ZB.MOM.WW.LocalDb.Contracts.dll
234e31795fd0641f8f873f9ce9641d7d4b028be724463abdafb0f119dc18d800 ZB.MOM.WW.LocalDb.Replication.dll
ac243f94af069faa0b171556a6e24bd5140237f275f3548c37789993c221ee6c ZB.MOM.WW.LocalDb.dll
0c058c2827829d54a8556308e4ed552f1cb0011b863c26dafd40cef7bff5c42d ZB.MOM.WW.MxGateway.Client.dll
af97aa90aa944afd6e7613d5bbdbe85cd43c6f33f2bcdcf74b1ef5d854369775 ZB.MOM.WW.MxGateway.Contracts.dll
e70d68b0f6b8368ca0db9cc8301616c51f917df192d340599fbd92b64a176f27 ZB.MOM.WW.OtOpcUa.AdminUI.dll
e7fd05dfa6b14971616032bfeae46195d302659b64e81865d9f97c3069dc8521 ZB.MOM.WW.OtOpcUa.AdminUI.pdb
697210daff97f2f4ddc02966a6224442b495c929997c9babe9f50635c2a6bddb ZB.MOM.WW.OtOpcUa.Cluster.dll
94374787dcf4e00b1dfed6e9d751fbcdbbbe3b41d3f7cd92e94952dfcd1faba4 ZB.MOM.WW.OtOpcUa.Cluster.pdb
7d11cd2139c07f9a54e38f302122f4fd770373cd56301e99bc0fe04741a2412e ZB.MOM.WW.OtOpcUa.Commons.dll
60e9a16257a79324e44ff6e072ced9540366607d0ec12759aaede3370c2998c7 ZB.MOM.WW.OtOpcUa.Commons.pdb
3e7918cecfa902550297f34fea14615d4dd8f7414f2ae8eba9abc42d87881ffc ZB.MOM.WW.OtOpcUa.Configuration.dll
3beb2197c5113e1facdea22619fd8cfa6831065978877d87ceedf8449f98f5c1 ZB.MOM.WW.OtOpcUa.Configuration.pdb
151be457f42fd6e36319e63d55ad28c5e9f7f07ce98fc6428dcf7695db2cb0c7 ZB.MOM.WW.OtOpcUa.Configuration.xml
6da949d1f1f2197bc4488ae5ec64e03df9d807a6947148b6c9f5f452cdef2ebe ZB.MOM.WW.OtOpcUa.ControlPlane.dll
7e7822b508535ad2c52b9692b46a05c532822a71afc4c2c1bee9df03f8c2d957 ZB.MOM.WW.OtOpcUa.ControlPlane.pdb
2834bcde7b2df9cef036deeed0340c46e3831be18a9b4fa9eae0b237a3a667dc ZB.MOM.WW.OtOpcUa.Core.Abstractions.dll
f8a70551fd5fd1c782ba6c3221451dbae5c88728d40d43fadd06828dc2f11054 ZB.MOM.WW.OtOpcUa.Core.Abstractions.pdb
bac920d88ceefc73c12650d0899dfb66437154e6bd96f700355487482ffac0ec ZB.MOM.WW.OtOpcUa.Core.Abstractions.xml
0b1d5d783df8f3dc4214e2e30bf7bbca1e153523167dc85b249e8251286f5eab ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian.dll
cbd6dc0d266c542d08691cfccc15f33fffc65a94793fc48cf4bc722991c9d28c ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian.pdb
e55af77bab0ec8d427e4823bd79b881f026a9a7154393852dd282fedbd7878cb ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian.xml
5578e64d861b64226dc6e60933451f5589101313d83cf078c5202d81ff5b7043 ZB.MOM.WW.OtOpcUa.Core.ScriptedAlarms.dll
c275e138eb818e5f42c788a13f7bc58c9dc2ab67c345ed953c3b9fe07c7e315a ZB.MOM.WW.OtOpcUa.Core.ScriptedAlarms.pdb
98ac58b6f49df51b405e7cc49dd297d72c25a544b3151cecbf7f111ffd8fdb8c ZB.MOM.WW.OtOpcUa.Core.ScriptedAlarms.xml
0139d48192ed468c719c783ce2d71bf8796808d0bbc1c058b54f15f95087752c ZB.MOM.WW.OtOpcUa.Core.Scripting.Abstractions.dll
d15204d1afe9d17b9e3c0551eaefc7acae7dd978471a2cc4750ca0fb8bbafbed ZB.MOM.WW.OtOpcUa.Core.Scripting.Abstractions.pdb
1daf5bbd3dfdbc85b4b5d6102592549e460ce5054716c004f207e4856bc38e80 ZB.MOM.WW.OtOpcUa.Core.Scripting.Abstractions.xml
b608938c09c804894ecbf82240f12cb9973b5d341d49d2842ecb6af0231644c2 ZB.MOM.WW.OtOpcUa.Core.Scripting.OutOfProcess.dll
eefa38044b6d3b4fca7110c0878c596c426a8717053cf71216dee087eda2a304 ZB.MOM.WW.OtOpcUa.Core.Scripting.OutOfProcess.pdb
8348f87d6691b40e764fa8cf2defc7f2d4e1b585832d86985db92e15511020d0 ZB.MOM.WW.OtOpcUa.Core.Scripting.OutOfProcess.xml
7fdf3b7f2839893aca6a5e5794095f01df5b36429a6429021a224ecd56fa7368 ZB.MOM.WW.OtOpcUa.Core.Scripting.Protocol.dll
c9b023eba729b880dff359abcc7b304b8bdfa339cbd76b3a865df546d5101052 ZB.MOM.WW.OtOpcUa.Core.Scripting.Protocol.pdb
1144d8e281e7420c26d6d7fe3dceac00e18c8c6556458b9bf8bc15b4964f7a45 ZB.MOM.WW.OtOpcUa.Core.Scripting.Protocol.xml
6af8ad75cdf0f5dd999236ffaff8370e5e98ed575cbb5d2b443bfac70c9b53d1 ZB.MOM.WW.OtOpcUa.Core.Scripting.dll
28d6f7380c926ccd63b08794207819288d148714c685b6f087eb3f6d84116a18 ZB.MOM.WW.OtOpcUa.Core.Scripting.pdb
5d6a6f1e867319a4433ee74ee965dd1c6138885dad4f2ad94ff8a19d3d22c18b ZB.MOM.WW.OtOpcUa.Core.Scripting.xml
0c7cb61559e0eceb00d8f2b49d6549ac4f539007407649cef7c1a67706501796 ZB.MOM.WW.OtOpcUa.Core.VirtualTags.dll
3ebaa9c377eb714d552371e62f288f2114ca251cc4ed54b7f6412aecaa9cf601 ZB.MOM.WW.OtOpcUa.Core.VirtualTags.pdb
b600e9174c9f59c10c6cbef14dc4f313d79c84c69c94b23fc25a481d763f2c22 ZB.MOM.WW.OtOpcUa.Core.VirtualTags.xml
036abdf974e5a03915f86844a22d157c39c86457cb2f033c734c3f873a7c3a39 ZB.MOM.WW.OtOpcUa.Core.dll
fad78b03e870dfdd6647fd8083c46f98e8f79bc4c35d5c557bdf94765c70384f ZB.MOM.WW.OtOpcUa.Core.pdb
76f843527b6ec5520f8a22a912208bbf9b5bedd0c42a0123808d0ad6e2791ee0 ZB.MOM.WW.OtOpcUa.Core.xml
a8550b072c27ba0fae4c6930b64432fd8805cf55dae588f7a325779d9850f8a4 ZB.MOM.WW.OtOpcUa.Driver.Ab.Transport.dll
bdf6ccce6d8941e78d1c10de0fea31ad7a0b925ca20f7224bf769638db2b3e3c ZB.MOM.WW.OtOpcUa.Driver.Ab.Transport.pdb
88e44591e5ad0edf1c8323dce58d3f572cb569f170b5999e66f0cdadb3afd1c4 ZB.MOM.WW.OtOpcUa.Driver.Ab.Transport.xml
b8bc92ecd58d1ce0a5370c8bb127b7509c8887e7b9a3df05c95a38593e2aa71e ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.dll
991e5594c2b13960e59e1db665bc595efd3b7c16bcfbdcdac87f0e11ea7879a2 ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.pdb
224d5f7afe966f9c9fa1c290febd1b6b437285e11cec4ac00b56df9cfc55c749 ZB.MOM.WW.OtOpcUa.Driver.AbCip.dll
e8c01ef9d690220ca03330d6df9fa9a449eb58474f02d17bdde8fc64308565a8 ZB.MOM.WW.OtOpcUa.Driver.AbCip.pdb
e4fd4beecddd5f80c1238e17aa6ef752f134b7b6854e71f8cc9505b730a94c5a ZB.MOM.WW.OtOpcUa.Driver.AbCip.xml
4734eb7368655dff4c0d21ff2554b94786470c46964c7d132980a24c5e5dcd4f ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts.dll
fd9a7ef155b01af3b7e9b054848d2e18ec737ac24f510710c507fac6664436df ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts.pdb
8f0692ddf9b4448f4f26f7482cd350edc2e6eb1cb72d844d0ddcb64d0b7e4ef0 ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.dll
d0e6f8498c6df567a16eb3f00ea7f2063c9aba14e3de7d5f4d50f68a70fe1c35 ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.pdb
09228d8cd1ab88adffcac4ac504fade6bb3d1df938fc06eb7e008fcef08f5f60 ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.xml
9ff65141f1193c65258e984541621a5527b5d7ff41ac37d07880a8cf239ab3bb ZB.MOM.WW.OtOpcUa.Driver.Calculation.Contracts.dll
a3b893f5b40db87d913b49042ecaa1b6170b7671b8ed850036e5a0b4d6109460 ZB.MOM.WW.OtOpcUa.Driver.Calculation.Contracts.pdb
2452766cac3fa00a309ec057dddb1e214d22c22590f234271f44782e65260c37 ZB.MOM.WW.OtOpcUa.Driver.Calculation.Contracts.xml
83a8dde4b5a41ee803a5aca9a1bf816efeae9e3a411c2455ecede18c9d0ce45a ZB.MOM.WW.OtOpcUa.Driver.Calculation.dll
77e8bdb525827df4390d4a4b30245c0b2d83cd36cc48cec9d7f6bd927566b69b ZB.MOM.WW.OtOpcUa.Driver.Calculation.pdb
15af650cae7be32c5733488095379d8ce6b70cedd8ba9f138e47697e9a9e24b8 ZB.MOM.WW.OtOpcUa.Driver.Calculation.xml
e82e7c07b54f73230af213f8c7f7f29cdb5a9a21da5224dadb294efbc08b45f9 ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts.dll
debfe9bfe847f4129233ace9aab695c886a75319bd268b578e2efa6a0e656cc7 ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Contracts.pdb
f854176aa908233fa38ccb10eec7225cc9e92b625844515a6d63afb93a5c3de1 ZB.MOM.WW.OtOpcUa.Driver.FOCAS.dll
8252d7d2bc6a46d4650c0906325a44fc21cf283ea61896e3c0f4fbd3304fcd74 ZB.MOM.WW.OtOpcUa.Driver.FOCAS.pdb
903b317e9358ed9343539eb5e0d79b03e754d57933407aae751ddab701dfc90b ZB.MOM.WW.OtOpcUa.Driver.FOCAS.xml
65cc53e1115c148aa629aa8badcd8f85fda5760f4a6bfe90d74fdc1b12ae8c6a ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browser.dll
8b0002c3b5792ed6fcb0c79d31c19971aa7c74745a22088b93b1af6fd1509958 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browser.pdb
6b156f7db7a65bd4549dc41a4feaed5f412c24b30919789ee5713663b5e6f169 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts.dll
19ff8c8103771032665d3d900f8724d01f41e2e0e1b202c0f50256f224dd01d6 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Contracts.pdb
4285ef3aca2981e700246fc0aa90d0b76a2307d8df6bec1e445acc14de6367c1 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.dll
787374f7ae40f7f6947982987aa40b8768d4473f2e3592d382ba5d7be6b5fea2 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.pdb
aef31cd0df95839b045f21016fca05214bddad841eb0572f3a81f9fd0422a5f6 ZB.MOM.WW.OtOpcUa.Driver.Galaxy.xml
7b3e7da6a68574a73038481cb2790e600dd690bf9e09a40650f0c22cd30af328 ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway.dll
2f41aa467148c619e2d261782514e8ca52661d7bcabb44041908fc0f315f2e5f ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway.pdb
9d008d19967e9b4908bfd835588c7787c8a81d7fa236c378f255f110beae6f0f ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway.xml
4fa5557e369d1df7e37d9d4e27b7303f0691264378ddf1d01b532b16cf63ec20 ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.dll
e4e32adad5065c33eb59b3ae2046b6abfbd8199d7c2d55b94cacd3a30cc7a6c8 ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.pdb
d80730a23a7a35f996103b5b808526406926de9ea150bc0964b51612bd33bc89 ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.xml
09b12b7e875748b81b3160b136c34feeb36ce7d3bc2789b5da6d0581c422a47b ZB.MOM.WW.OtOpcUa.Driver.Historian.Sql.Common.dll
5c11fac90a2e3ab410a2aeaceb208c9338776064de3362cd3bb531c67419bda0 ZB.MOM.WW.OtOpcUa.Driver.Historian.Sql.Common.pdb
f2031e9bade0a56ed491a88476d278f8c65341655a97203003f1af753b1f9fe5 ZB.MOM.WW.OtOpcUa.Driver.Historian.Sql.Common.xml
0961e18dc9216ff1b270a233a1b295f3e7659c78d0bf93714da600c3f8832046 ZB.MOM.WW.OtOpcUa.Driver.Historian.SqlServer.dll
52d57b7b4e792196337ccda7049ddb9030b28668e9856f8be0c444f54b90bfa9 ZB.MOM.WW.OtOpcUa.Driver.Historian.SqlServer.pdb
bee8755c64b9243549d6711c5d0ad659ef4c7eb236dc8e0f79843945c090fdc7 ZB.MOM.WW.OtOpcUa.Driver.Historian.SqlServer.xml
d4d6881cc7d8da100db859d73df8582b5d79f08f901f7bc5f268cdca3b8b0faf ZB.MOM.WW.OtOpcUa.Driver.MTConnect.Contracts.dll
cb0ce18b2160ef565f3cd1f77534b4ddbdb97b3e034d2bce1e025ea0dc235e3d ZB.MOM.WW.OtOpcUa.Driver.MTConnect.Contracts.pdb
037a6939282ec48dd6e28616c5f0f67b2afcb03d4274712ea8c167ed5b25488e ZB.MOM.WW.OtOpcUa.Driver.MTConnect.dll
3ece06c4c08026ea58080df406c20aef9f874da89a78c8bc8ae05ded29e359d1 ZB.MOM.WW.OtOpcUa.Driver.MTConnect.pdb
1b64d38425c0c55607242efc2d62ea045d643e2b61317895e0f4524359323848 ZB.MOM.WW.OtOpcUa.Driver.MTConnect.xml
4e53845bbfdb7b6deafbc20021604843420e663e07db51050be6f4c1c8b3cac1 ZB.MOM.WW.OtOpcUa.Driver.Modbus.Addressing.dll
07999413e2099ffe6c3b98f9960f196f0ff82fc81262aa37ccd7d775ae6828cf ZB.MOM.WW.OtOpcUa.Driver.Modbus.Addressing.pdb
accd72b04152c7564f0b78cb21bc2502f6896b9fab47fd61a6856fe5c3db327e ZB.MOM.WW.OtOpcUa.Driver.Modbus.Addressing.xml
28e94d9f4c8cc13522e522562b76cf89e4053c4070a87241f9efccbcabd0d83a ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts.dll
68fe954a13daacdb7c77303a883f01d2ef24753c00526859c224e2b4d71c0be4 ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts.pdb
21e0d51b5e81ef07f683133427f14717128e3539a80c2455519090ad63528d3d ZB.MOM.WW.OtOpcUa.Driver.Modbus.dll
f68a2d0e14475d87aa92f2e85387a3472c1d93e5752b4cd30672a2b2fd7bded4 ZB.MOM.WW.OtOpcUa.Driver.Modbus.pdb
a79e16097cfc1b545a17c1e8e29e1de426d6659a4b99f4a321d42965335b4827 ZB.MOM.WW.OtOpcUa.Driver.Modbus.xml
89abf8dfa6995f0de2686a87202446278c823a5f5e43fc3e2c3d6c0098028865 ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Browser.dll
9618e247d2000587cff14d461e98ee5a1575528d31a549918901ff5f4bb25d1b ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Browser.pdb
3924c927d5c412cbd9b8764e9f18309e9ff5bbcd92b146bf85177d98f4526f2d ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Contracts.dll
6053ab6dca4063a702856e9fb04f7b62e32be788f11ea5e4b563cf894d70ae00 ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Contracts.pdb
87cd4dda1c62bcccbba14f42b70127fb591b161737fc203e4fa3246bb7d42f8d ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Transport.dll
6fd8fa643ae3de6703b7bc05c5d812bfb3dcd023c85a3d928c52b66171ede8ff ZB.MOM.WW.OtOpcUa.Driver.Mqtt.Transport.pdb
8ceaec5a103041419f4c56f20a64387bba7a79eac5cba2c9c4bf96cd1cbfd688 ZB.MOM.WW.OtOpcUa.Driver.Mqtt.dll
edb2f6b6f41754706257eec469523184001b9afc27396670ab424fb22147e201 ZB.MOM.WW.OtOpcUa.Driver.Mqtt.pdb
d13d7f41df9e48aa19c97826f3e541ee9fcb4eac88a5eb7a78ce608eb4993e48 ZB.MOM.WW.OtOpcUa.Driver.Mqtt.xml
87856db34f3fb0e76368646e698a6a501a5fa2674665bdd5b9078b36b6a72c72 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Browser.dll
651dda8035ef1aadbb241be2953885f22cb0eab02c9fc25073b72b8be9ecb3dd ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Browser.pdb
e73cdae1e1f0dc1e7c377a42fd745faf4e5d10ce56f6f17030a93a52aebf5f47 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts.dll
56480b91236103500a33f4881ecc7629f6d2d18f1ed190faa8fd6f2bef4c2507 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Contracts.pdb
bfe478e74498cf0f36c1f342b837a386c20ac4e0f2d9e4524e877e6be4e2e4b5 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Session.dll
b5d6ec70dcd3626685f375b925f0dbadf1e1455922b89bc97257024517ea3276 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Session.pdb
f643355f87a97a84ca4c2906936e65ffbf371bc99ec84b90aadc27d8fc9c42b5 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.dll
459c53b1eb95dfaf45905a6acf5ad2e823c60e62d2fcf995ce073610a8af0212 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.pdb
80cc9b5a72af3ed9a66502c6b0b295f238f0488a16370f8a7d02de421dcba296 ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.xml
fdd9dc086f1881134d2ece051fdd31831a322cae493a2675595e6be05e3364c9 ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts.dll
358a97e147ce601461dc0ee8e0d71dd74a1da600fd17d596120f8b3084e811ac ZB.MOM.WW.OtOpcUa.Driver.S7.Contracts.pdb
6ca2a698a0f278e6424119489072a51dd87008435902987f25721e511643ccb3 ZB.MOM.WW.OtOpcUa.Driver.S7.dll
5054292e644ba541fd6ccc677df0b6d12f3ccf4f374dd74f298f72a2bcf1a5ff ZB.MOM.WW.OtOpcUa.Driver.S7.pdb
d61d42a0c978ae00ac5073f640ef3184aea886c7917ca859ef233de4d4970bef ZB.MOM.WW.OtOpcUa.Driver.S7.xml
661c3743254d1faccfce7b3811a865e8b1221b8a9e5a640741b44670521c430c ZB.MOM.WW.OtOpcUa.Driver.Sql.Browser.dll
1af4f97f88ab43c49bec2305b85f25813e9ce9e7203f348e4f7fc26964ef1b7a ZB.MOM.WW.OtOpcUa.Driver.Sql.Browser.pdb
bbfe7f6d316b602d4b40c46ca050652377819a9f0165706d1fd553d79289139b ZB.MOM.WW.OtOpcUa.Driver.Sql.Browser.xml
0bd88a56b97f397ab9a446e2b9461dc1c53f93c08b8749842fc08abfb6548448 ZB.MOM.WW.OtOpcUa.Driver.Sql.Contracts.dll
22bfc68c7b66a93655750a49166a3ddbcab2ab08263eb57452031b50a1078182 ZB.MOM.WW.OtOpcUa.Driver.Sql.Contracts.pdb
f038c7f0cc8d13363ace7df1a807b3c4ad0fb89a5cd225e6fd6ab29bd9fb6531 ZB.MOM.WW.OtOpcUa.Driver.Sql.Contracts.xml
47d2bf282c522d7b6bfa017738f1f3a38a9faafd69a6fda330af2a60184107e2 ZB.MOM.WW.OtOpcUa.Driver.Sql.Dialect.dll
c774a85a6dba482c0c3a947b4372d8e775ce9fb53c7190256d22901712a90c3f ZB.MOM.WW.OtOpcUa.Driver.Sql.Dialect.pdb
a5c66fa18282501de55be8a0787b5f7797a0d3f3630934fe05297393f3dd298f ZB.MOM.WW.OtOpcUa.Driver.Sql.Dialect.xml
720363c10bdc046959f302e6ce77728f3bb80f35cd58a685fca02943afe9470a ZB.MOM.WW.OtOpcUa.Driver.Sql.dll
ef234c648bde032f4f4e3e5af1d5088e0c195efd865523035e1fba1717416a16 ZB.MOM.WW.OtOpcUa.Driver.Sql.pdb
70efab3049ef06f407d52cce405347c4fc901f8097db677ac123e6bd09290dd6 ZB.MOM.WW.OtOpcUa.Driver.Sql.xml
52d68b2120db704b464bbada2b295089914ceccce4d38a508213e5f24bf22671 ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts.dll
8afe9d016e17d71fbc482f947b4b379e87674a2181939523481bd302da8ad2f6 ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Contracts.pdb
2b68dc523c80c3b6d6ebb5b924d176766e70d9f4855411a001ff948490f81e64 ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.dll
0cf150063c288045f1dbaec7792a539425d512d98e4be8eb66d5cea0cd9d68d2 ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.pdb
7bb97e07a5486091ead3746ec09055b07a3042d71117da9cd0883e5ec2c2054e ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.xml
c9065f65dc2a34965024506115167c0111772a3c416f09123b59fb7624df5f43 ZB.MOM.WW.OtOpcUa.OpcUaServer.dll
f06009fb42ea0d1286f49e1eb0737d6cbc916bf8d1d0ea09a3c1a8a004f1bc12 ZB.MOM.WW.OtOpcUa.OpcUaServer.pdb
2ea66309f1be39a452b5eecddfc6f7f76f2e5f639a3ae774c907890d7750ce72 ZB.MOM.WW.OtOpcUa.Runtime.dll
e6e6b10ebc8c3ad5bb7bbf10930af4d07dbe7ab1bc24d8bb4b7bbef7ad6abc99 ZB.MOM.WW.OtOpcUa.Runtime.pdb
01f8383613c6c28512a13d17a822c5d217fdd2bc8ae4aa0e60eae58fdb83c6d8 ZB.MOM.WW.OtOpcUa.Security.dll
1b28d8cdf38dfed06fa387e0c5fd8c01cd4a29cebdc7917989f4a35f26e94213 ZB.MOM.WW.OtOpcUa.Security.pdb
3a39c92e9a96a305bd229e99d2f59f2c273f8d08c03e431d47e24bd8b8b0ef49 ZB.MOM.WW.Secrets.Abstractions.dll
d6a3780f3487f5c8432fe12c057defb709d1dc7678c59307acd19b4cb0d6bdb7 ZB.MOM.WW.Secrets.Replicator.AkkaDotNet.dll
782f903b42bce46fb3de827e24d1edcbe41187976b6918c740383de158e35064 ZB.MOM.WW.Secrets.Ui.dll
0565fd86abead89be7b4520dddf92cabd5d0994f3620069aa496b8dfa41c9f39 ZB.MOM.WW.Secrets.dll
bd33ce7657de5d2966a7768a014f8282ca434a208b05defa2d27bf24c6f124c5 ZB.MOM.WW.Telemetry.Serilog.dll
834772ecc662ea7c49a5b512a26f2447db55a072ef1fad16ca768fbee0cfe853 ZB.MOM.WW.Telemetry.dll
12bf7d7ec7a618acdf9f5bff9a7c67091ce715698d3befb9aa610cc5c8b1b221 ZB.MOM.WW.Theme.dll
169a54d22027e13823af0d41c1314a6d3e44852041c8b35aa80478a88399fe1b appsettings.Development.json
eca047204cf6a9b4d89628d7ee2048bc68d46db55dcb4ae9bcf24dbe9e44cd46 appsettings.admin-driver.json
bb08f16d701697fcd70695b75d81a4b09bce57daaa95d6fd81ff469258ad3530 appsettings.admin.json
a7dc1ab1db2e93f1a6e78b7b1b425720c3c610cb406e6266f0dbe2ebe01badaf appsettings.driver.json
89f72acaded7f2d3ca434f2d922fe4daccdc03aa342f3973d35a160be9221b2a appsettings.json
936352b9810cfdf43d9b5bc5c099af32e399543bbb1b23a08b08fedd291ebf01 cs/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
8a4981588d9918e67b6524219c3d4e94c7a98c943b877add612a195c30c45f6a cs/Microsoft.CodeAnalysis.CSharp.resources.dll
c31516f7d942af11d52d2f01e13ca4ce20c8c9c09e2d8b433920757aec262a5d cs/Microsoft.CodeAnalysis.Scripting.resources.dll
aa029203bbbd501902fe7bd72b4073891676de5fc599ee3e6ee97c5eba4237fd cs/Microsoft.CodeAnalysis.resources.dll
6e9b997f45393346cf2f96da99f7fa868f2286964a49ce66a59988defdaf84b6 cs/Microsoft.Data.SqlClient.resources.dll
ab5a8419880fe8d756dee1816974cb1358dceed093a4719fa145ed5650c73b66 de/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
0da5bd754a34b50703312fa988d12429f78c8702919b1867757173993f333dbc de/Microsoft.CodeAnalysis.CSharp.resources.dll
7e5fdadb82ebc0bbb05d4b469b1f0ca78c1ced9fd66e5d5163bb9deee1abbadb de/Microsoft.CodeAnalysis.Scripting.resources.dll
970bf03bc4195a48aa378023fddb825789587103f27c26a72e7a600509649aa5 de/Microsoft.CodeAnalysis.resources.dll
30e111759eb091735455f8a7e3cb2a5aff16287149cf3d4e7a67624f00320fc3 de/Microsoft.Data.SqlClient.resources.dll
724478523cff7e0d3093c6cbf4cc360b1dc235d91f2c281fdd50f207b5afc518 es/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
090e0fabb14bfeab386f71129906b4f687a1d76485776dc09b37ceefe510ca16 es/Microsoft.CodeAnalysis.CSharp.resources.dll
4fd738f23da9f53c2ac1d7daa716eabe72f2711f5e57e0b556a46ee996d5fb2c es/Microsoft.CodeAnalysis.Scripting.resources.dll
1384821617fc8318da873213614a80b54f306bb3c644896475e1ea6e2c5ea223 es/Microsoft.CodeAnalysis.resources.dll
6bb867e62e3aef301cecc99311603339301a086bdcfc8683c2c21f9f99850b34 es/Microsoft.Data.SqlClient.resources.dll
4bff2d170b55186bd650598f51c82fc1a98a5bacf4b69cd5e5b6b0ff3b77f5b6 fr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
a3bbe3f44ded49812b428ef7c9aeff1e65b4230b4496df69b4add657d38428c2 fr/Microsoft.CodeAnalysis.CSharp.resources.dll
07286c85ee919ed0081499c2c7fc4c83eb747ecdee259ff643bb07eca9c55de5 fr/Microsoft.CodeAnalysis.Scripting.resources.dll
6b8bd650dc05af2fdc06b7ff0a2ea05f4913d9c80a7f5d3db905af92c202f245 fr/Microsoft.CodeAnalysis.resources.dll
2eac255e2a16495d0bb89aeafa5aa668f74e12358e76eb1756de271b8b91e1de fr/Microsoft.Data.SqlClient.resources.dll
e076dd86fb0bbe3c4785797473a51d3f33ffb85bddade11c3295eb58203b5036 it/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
0798746130f8d7ba0ba31fbcb33b4af67c2dd050290793a5ab9f1dbf059407db it/Microsoft.CodeAnalysis.CSharp.resources.dll
b5ecc81cf071afc0b816ffa73510c0cb022b67f00d397341dc243894936026a9 it/Microsoft.CodeAnalysis.Scripting.resources.dll
b7849b3d34014cac6bedf60beb7c9165f344e408b8cd33a651c6375fe5856ddb it/Microsoft.CodeAnalysis.resources.dll
5a50867ea6c62b3be1fe4429360fe8018f3002b95c4c7b2d306daf19b4a50053 it/Microsoft.Data.SqlClient.resources.dll
223cc533aabaa9641bb3e90e24918502475a639f703951bec6565de5709968cb ja/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
8ebdefc1fe425ce9673afc523cf892258924df967809d2260d18e2389c3047ba ja/Microsoft.CodeAnalysis.CSharp.resources.dll
c5b03bbfc3a237e68c81abeaf0177203b22160d0823de87f833243b5d772457b ja/Microsoft.CodeAnalysis.Scripting.resources.dll
f34557d91dd176c2046dda80c7d666cedd34d946ebabc7a41ed6e1f2dad76995 ja/Microsoft.CodeAnalysis.resources.dll
75539952a99301eba174bcaeeaded6da4d758c6f12565bed4208dc50b0344abe ja/Microsoft.Data.SqlClient.resources.dll
c13c8e207f48ac04b5ab76192d61f049490d7d3e50b2550111a14556199b2c6a ko/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
584b85fb5614045da48a0192ae0e3809ac01b58c65170162e4410ab9c46cb8d7 ko/Microsoft.CodeAnalysis.CSharp.resources.dll
76c3fabf0b2c5a6eefa283361e836150b0989aaa0534b4ac9a36e5a5e6e899ad ko/Microsoft.CodeAnalysis.Scripting.resources.dll
792504707fb71f02aff2d12e4ad21fe34b599eb8b56fd2d9e5a14b3d4b0311d7 ko/Microsoft.CodeAnalysis.resources.dll
a5eac865982205ce0d1b94ae4cae4ec003b514829542140c91e67cf86312d5fc ko/Microsoft.Data.SqlClient.resources.dll
dec38f56006ae9e2119e9f61f9ff0e1aa9c08503ba4f42943c2d7632f60cbad5 libplctag.NativeImport.dll
1545b5813148d7ade7662282683e15d2761e0e34cb853bafa3b11a4d47795aa4 libplctag.dll
03f45c69c264bdda12e7a9fcabe6a17e5b6a00e90f760268dcde43b7442c0a7b pl/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
b6ba17056f46a371e8b208eb6f0c11fe1eeb247b9a74f0d61e6d65527d9e3a38 pl/Microsoft.CodeAnalysis.CSharp.resources.dll
259283901aeb5803ff90881e968ca32d4070c78e570a0ed3aca36f49413b2ed1 pl/Microsoft.CodeAnalysis.Scripting.resources.dll
9a3b8471dad02c0a4afdc281b36e1c5743bcf38c8707fb4a5a328b9332e515a2 pl/Microsoft.CodeAnalysis.resources.dll
ca9d25b7405908146f988c7fad48ded63e7f02df0e43bd1406803010428338be pl/Microsoft.Data.SqlClient.resources.dll
a7762a712cadcc489a17bdc431e6fce109c37dcd2f8e66742c85915333beacbb pt-BR/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
248faced9a2e759f1e43f9bd2758dd3afe728279194633b417d02d865054069b pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll
8850967fa3c77846c4ba03456f441c97b63b8370a9a3dedc2998c42e351e0f57 pt-BR/Microsoft.CodeAnalysis.Scripting.resources.dll
64d51e84643cb6b1dffa8640cebd718493a58545cef295082aa4bcdd43c4dead pt-BR/Microsoft.CodeAnalysis.resources.dll
2a295a383e9076b24f47c1759e1c43176dfd876bc6444a661dee21170cde6b52 pt-BR/Microsoft.Data.SqlClient.resources.dll
a9f6c8a31dc5b4415ab72bdcf85b5966cb417fbadfd2016eced02244a5b6786a ru/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
ee16ffb5ef0a2d63ed86ccc8edfd31a3df5798e7f8673298ed71a9fd7a07339d ru/Microsoft.CodeAnalysis.CSharp.resources.dll
bb70b4978fbbd45824c70a522c868df3f9417f3bd46f3aa69939ee30fb808845 ru/Microsoft.CodeAnalysis.Scripting.resources.dll
970245f28ee8d653babe0db8f4e13df45dd6e36a754219cf863cb67ee95b9a5d ru/Microsoft.CodeAnalysis.resources.dll
f7d51f47b1eba12021161ee39a7d08d24df1dcd52c131d1d94ee2c7e432f4cb4 ru/Microsoft.Data.SqlClient.resources.dll
f1ab158671d51b10071d6eb76bebb835ec4669350cf5ccbb9610743e6786411c runtimes/android-arm/native/liblmdb.so
65f0c5bbcfe1c3245618b7e824285130f7a18bb17ae7cadf4e8ee39df74850af runtimes/android-arm64/native/liblmdb.so
f51ed67f10da2d72f39740c568eef8fce424d08d27782886ea3344a3e6d735c8 runtimes/android-x64/native/liblmdb.so
d5e91d6c330f5012665fe3e52aee42f0d9912dbfa0ec3468813e1dd5ef02e46a runtimes/android-x86/native/liblmdb.so
c64ae8d44dc3e1aa03aca4e79ccc501cbc3a3c490e8e2ea9e369367f68cf0f21 runtimes/browser-wasm/nativeassets/net9.0/e_sqlite3.a
b0807a8ab048853b72a0b2fb2d1c89073b461dca68b79ca92bb8c8ada2ac246f runtimes/ios-arm/native/liblmdb.dylib
b02ff794049491e10bd596a39971f1421096eeb26acb8506729590813bdc4811 runtimes/ios-arm64/native/liblmdb.dylib
f1f619b49c8ac4a4ffa344faab51d2e1a2018840d5a0b3ef90b6a90d54ad7791 runtimes/iossimulator-arm64/native/liblmdb.dylib
7aacaa620a97cd7277f8030a278c0a2f6a64ec941a14c854a3016515c103dd5b runtimes/iossimulator-x64/native/liblmdb.dylib
43556c2f5075857bf57be1136d556733bdc27195884fbdde127cd976d1c25ad5 runtimes/linux-arm/native/libe_sqlite3.so
cf6257fba1cda7982ecd35c45c1ce337cd63bd88c1c07b53220d096610863497 runtimes/linux-arm/native/liblmdb.so
707fff6b18c1f083158e7a543c8d2545d5485f547ffd96db29679a95f52878d5 runtimes/linux-arm64/native/libe_sqlite3.so
b4002a16380d150bec20c4890f090ddddf1d4deb9c04f4ba33d64004252ad509 runtimes/linux-arm64/native/liblmdb.so
3f4d9b9ca49bb3f100882e78ba85807398cee19b481bfd4c301a8f5f58d48540 runtimes/linux-armel/native/libe_sqlite3.so
985884523e512414f3e50aa359f08dad3ce635e99405e7823de9b26a7db38d09 runtimes/linux-mips64/native/libe_sqlite3.so
7fec7057d16e8b5ae54fed0c42a0e6b85e40df0d57092ef20cd647a4e1c1e0ed runtimes/linux-musl-arm/native/libe_sqlite3.so
530e2f74f259fe04faa4b595336e671fab5eedbb6f4e94dad59494efb7b00c2a runtimes/linux-musl-arm64/native/libe_sqlite3.so
d8e54eb7dc52ea0a7df9b78ac6feb85af429e7264613099df478825dea5805d4 runtimes/linux-musl-riscv64/native/libe_sqlite3.so
64260c0460ad6efa7dce9263bff7a4b64ad66172ccc580cb09181c845e1a3407 runtimes/linux-musl-s390x/native/libe_sqlite3.so
647b7b5886526691aed58e0fcbb56dc1e6dea8b1f9f5390782f0c95269250db1 runtimes/linux-musl-x64/native/libe_sqlite3.so
1ef00b5e3ac63e491f59ecf587680fc52ad844cea62e0a879a1315ef6bd10fc6 runtimes/linux-ppc64le/native/libe_sqlite3.so
6b390eecbc6f55c44d9ab8a774f1fe4283dfb33a72e6f29f4e0b173065e7e105 runtimes/linux-riscv64/native/libe_sqlite3.so
dfd5ab35f6d61155a3c629d0bceff4d6e0f0f190983f3fb8f681fb34ec08c67e runtimes/linux-s390x/native/libe_sqlite3.so
b0f5c48026fedcf9f05cf31c6fadf9e1e001ca59cd85aa68b8b6814e52c18a07 runtimes/linux-x64/native/libe_sqlite3.so
72d407134010936a8e13dd54ae7b11a338716159c4b9b32e3bd39aa629efbafe runtimes/linux-x64/native/liblmdb.so
fe8229e5baeaf21e721cf65626a6b07ec22d9b17d07bd624e7a77927174277f1 runtimes/linux-x86/native/libe_sqlite3.so
d9258e7a728e8fcd1a10ea4ee896b75b01d73f8c9a7fa9df88e3671246e00772 runtimes/linux/lib/net8.0/System.DirectoryServices.Protocols.dll
8d63d80bc6caa754679d6fc89fd741a32c156f136c34759cc8fff8cd51468a93 runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib
43d27adbc5ba40850bac42a12aea08314a22a43d3ce77cdc7a6cc47ecffb5746 runtimes/maccatalyst-x64/native/libe_sqlite3.dylib
09fe20a6c050912a7944b2f2f2981debe31679f7919f523c87251ae8cf0f2daa runtimes/osx-arm64/native/libe_sqlite3.dylib
faaf9f29d1615bb50f3ee7e1d9307e133ae2971b7fc3561b8a0967da93838d66 runtimes/osx-arm64/native/lmdb.dylib
02344e1d0bcb5ed447ad9b79ed19e37a590fb1ece3eba1e63efbc35e36e47bdf runtimes/osx-x64/native/libe_sqlite3.dylib
0282f75e160e9d948437059694123183c6beccf7ccb35690a8ebac87f2d524bc runtimes/osx/lib/net8.0/System.DirectoryServices.Protocols.dll
8d362b0b90a1f0e947cf1d863ae80f452a00bcef04793a658d4944b6846c4e00 runtimes/osx/native/lmdb.dylib
43a9b962918c2521267ef3b9515d7d6faa148a3f141cb53bed379b8058017ecf runtimes/unix/lib/net10.0/System.Data.Odbc.dll
4a95c42d14d8a83ca1007793648b6dae59cee957ea12470578f10c918f91d225 runtimes/unix/lib/net9.0/Microsoft.Data.SqlClient.dll
73b61c3381e32613f59bbe3af7f58871c8cd486e04a9c0e71409f6a1972d6f84 runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll
4177542756bd94f75b55fb74367e0cf34e66a88ffaf95755489af14c6ca2f792 runtimes/win-arm64/native/e_sqlite3.dll
7e37c5bba3da06a955c122e3515b2980e2f1b8732ec0297f0a7e77e79b4de331 runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll
b7385d722c83fb52142a00477a726723745916d22a555711ee89834c1111fb2e runtimes/win-x64/native/e_sqlite3.dll
a5d4e3bcbddbbd549d3bb4e2b882970d2df9a8b9763d45cb9905e6fe169ff9b3 runtimes/win-x64/native/lmdb.dll
c941b834214ab2797f9c5a2f08f6a79d090efd7e06beb3a65658c258649fc306 runtimes/win-x64/native/lmdbautoresize.dll
16efa76f220e23166a95873baaed43899191470c13848c944a679ff2bf5ac941 runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll
d13eb819d1353d98c684c88672868bbfcc6a52eb5987bdf2557ec02fabce4ea7 runtimes/win-x86/native/e_sqlite3.dll
798d6b41df67ad5825b4ea8a40e052b87fd665bf602beabd82c3abd92e9a1ed3 runtimes/win-x86/native/lmdb.dll
0e80c518868ab54e032b0f2811f2c9d8ea3a3b26218c463c64f05821cc386d91 runtimes/win-x86/native/lmdbautoresize.dll
e5b58b051fa474dd59adf6fb405d980caa974dd7519ef279824fae43df412192 runtimes/win/lib/net10.0/System.Data.Odbc.dll
e0acaa275f33f652057c418f3f434f24b65321ecadcc220ffce58f65e2bf47f8 runtimes/win/lib/net10.0/System.Diagnostics.EventLog.Messages.dll
3961824bc760e2e5433c8bec08f85bb4c391ef545a1bed524bcc8cd4217852bc runtimes/win/lib/net10.0/System.ServiceProcess.ServiceController.dll
fb93811a325ab59af45cdaeb57d47a8b1dacfdb19b87cefd1366cb0680250f1a runtimes/win/lib/net8.0/System.Diagnostics.PerformanceCounter.dll
c3af191077a7a45d67e89b7ba2667388dd1b6ea79c6dd97fc8c7773c4f2b89b7 runtimes/win/lib/net8.0/System.DirectoryServices.Protocols.dll
13011951ee100b419e0b494baecdbe1402be5cb487d72056014a83253afc1d6e runtimes/win/lib/net9.0/Microsoft.Data.SqlClient.dll
49472c8fbecc7b2ec57206d4999178e36dc6139211a67477b5e7e79514b64d8d tr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
5159173800f97d767f95eff070fa1a44b20389f81680825333d792da5e1d62fa tr/Microsoft.CodeAnalysis.CSharp.resources.dll
6bed49878f14edb6c7cff9b35ebf18dd4556500f8329115a31fc86fed6b89209 tr/Microsoft.CodeAnalysis.Scripting.resources.dll
c71e350d84791c15caa4897493d63296fcf1c061f1180dcf2d2cfa62e8e8f152 tr/Microsoft.CodeAnalysis.resources.dll
fc8df599a964558fc9587aeaa6c956e1d375944283907193660fa3e96ee38980 tr/Microsoft.Data.SqlClient.resources.dll
b5896db7bdcef22f5675babe0348529d138725d9f228afc08dcd252aa9924411 zh-Hans/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
5bb17f29f827ec0e01526e60aeada465229db2c6957ba2799a171142bd970b33 zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll
d049b4dcfe1c22aa9dea4b538e31ce9fc3277e23b0fce7fe79a3fec8aad581bd zh-Hans/Microsoft.CodeAnalysis.Scripting.resources.dll
37d9e69257a1d58e8b1b0f3db40c45cd1e48d109b9bfcd6c496c8189d1dee38e zh-Hans/Microsoft.CodeAnalysis.resources.dll
d12450a0c88feaafbf3db907ba9e66e0735ecf43f9089a1b6b583675e561a571 zh-Hans/Microsoft.Data.SqlClient.resources.dll
178f07468dc0e3acdce6b62a46ae7bedd2f77bfdf8a2e335666281425214f5fd zh-Hant/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll
1c628beac6bd5de647783ae50df6679c8dd16c8baa977f08b0351351e31f9a14 zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll
4a39ef7b9992d01551bb961652f0bc663335bdac513d4c038f56f59995acfa93 zh-Hant/Microsoft.CodeAnalysis.Scripting.resources.dll
339868d7df872f7acf9364775d7face59b361ace535480481745e7357c97481b zh-Hant/Microsoft.CodeAnalysis.resources.dll
6a045428a176c4a42518ef6918b93ba0ee4a126dd15b523cc123bb14cad55e21 zh-Hant/Microsoft.Data.SqlClient.resources.dll
@@ -0,0 +1,87 @@
{
"utc": "2026-11-12T14:47:01.5002420Z",
"probes": [
{
"name": "prepare-trusted-client",
"args": [
"prepare",
"C:\\OtOpcUa800\\state\\client-pki"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "prepare",
"result": "prepared",
"clientName": "Gate800Client",
"autoAccept": false
},
"output": null
},
{
"name": "prepare-untrusted-client",
"args": [
"prepare",
"C:\\OtOpcUa800\\state\\untrusted-client-pki"
],
"exit": 0,
"secretOccurrencesInOutput": 0,
"result": {
"mode": "prepare",
"result": "prepared",
"clientName": "Gate800Client",
"autoAccept": false
},
"output": null
}
],
"cliClosedPortExit": 1,
"cliClosedPortOutput": "ERROR\r\nOpc.Ua.ServiceResultException: Could not connect to the remote endpoint.\r\n System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.\r\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) \r\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) \r\n at Opc.Ua.Bindings.TcpByteTransport.ConnectAsync(Uri url, CancellationToken ct) \r\n at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.ConnectAsync(Uri url, Int32 timeout, CancellationToken ct) \r\n at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.ConnectAsync(Uri url, Int32 timeout, CancellationToken ct) \r\n at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.OpenInternalAsync(Uri endpointUrl, ITransportWaitingConnection connection, TransportChannelSettings settings, CancellationToken ct) \r\n at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.OpenInternalAsync(Uri endpointUrl, ITransportWaitingConnection connection, TransportChannelSettings settings, CancellationToken ct) \r\n at Opc.Ua.ClientChannelManager.CreateUaBinaryChannelAsync(ApplicationConfiguration configuration, EndpointDescription description, EndpointConfiguration endpointConfiguration, Certificate clientCertificate, CertificateCollection clientCertificateChain, IServiceMessageContext messageContext, ITransportChannelBindings transportChannelBindings, ISecurityPolicyRegistry securityPolicies, CancellationToken ct) \r\n at Opc.Ua.DiscoveryClient.CreateAsync(ApplicationConfiguration application, Uri discoveryUrl, DiagnosticsMasks returnDiagnostics, CancellationToken ct) \r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters.DefaultEndpointDiscovery.SelectEndpointAsync(ApplicationConfiguration config, String endpointUrl, MessageSecurityMode requestedMode, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\Adapters\\DefaultEndpointDiscovery.cs:21\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectToEndpointAsync(ConnectionSettings settings, String endpointUrl, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:790\r\n at ZB.MOM.WW.OtOpcUa.Client.Shared.OpcUaClientService.ConnectAsync(ConnectionSettings settings, CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.Shared\\OpcUaClientService.cs:129\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.CommandBase.CreateServiceAndConnectAsync(CancellationToken ct) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\CommandBase.cs:116\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:47\r\n at ZB.MOM.WW.OtOpcUa.Client.CLI.Commands.ReadCommand.ExecuteAsync(IConsole console) in \\private\\tmp\\claude-501\\-Users-dohertj2-Desktop-scadaproj\\a6d396bd-5e2c-4e21-a60d-576a5e97f6b7\\scratchpad\\wt800\\src\\Client\\ZB.MOM.WW.OtOpcUa.Client.CLI\\Commands\\ReadCommand.cs:78\r\n at CliFx.CliApplication.RunAsync(ApplicationSchema applicationSchema, CommandInput commandInput) in \\_\\CliFx\\CliApplication.cs:144\r\n at CliFx.CliApplication.RunAsync(IReadOnlyList`1 commandLineArguments, IReadOnlyDictionary`2 environmentVariables) in \\_\\CliFx\\CliApplication.cs:185\r\n",
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 1077,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"rootSddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)",
"privateSddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)",
"secretsDirSddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)"
}
@@ -0,0 +1,311 @@
{
"utc": "2026-11-12T15:21:07.1490542Z",
"candidateSnapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
},
"restored": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"restoredSnapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
},
"quarantine": "C:\\OtOpcUa800\\quarantine-candidate"
}
@@ -0,0 +1,12 @@
{
"exit": 0,
"output": "{\"result\":\"seeded-through-public-cache\",\"localDb\":\"C:\\\\OtOpcUa800\\\\OtOpcUa\\\\data\\\\otopcua-localdb.db\",\"revision\":\"2c94f0ad0c045e97c77ba9dbf75fda248a64a56bc61d744b026625c20cf65c93\",\"bytes\":1752}\r\n",
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
@@ -0,0 +1,69 @@
{
"label": "b0",
"utc": "2026-11-12T14:47:50.5298334Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 7799,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "b1",
"utc": "2026-11-12T14:51:32.7250851Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 19780,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 76,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 6,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "b2reboot",
"utc": "2026-11-12T15:06:49.4418053Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 29577,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 152,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "b3",
"utc": "2026-11-12T15:09:38.9851067Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 42107,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 228,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "b4",
"utc": "2026-11-12T15:11:22.7970273Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 56209,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 304,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "c1",
"utc": "2026-11-12T15:13:13.3209355Z",
"stopSeconds": 1.8,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 73643,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 380,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "c2",
"utc": "2026-11-12T15:14:43.5490461Z",
"stopSeconds": 1.8,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 91074,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 456,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,77 @@
{
"label": "c3",
"utc": "2026-11-12T15:20:29.4358945Z",
"stopSeconds": 1.8,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Scripting__Runner",
"Scripting__Worker__Identity",
"Scripting__Worker__PeCacheDir",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "24622724efc7a949f1abc1a99eb9312b6808d8c962c0f70bf92b9f7e253e3be4",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 109084,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 532,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,74 @@
{
"label": "r1",
"utc": "2026-11-12T15:22:28.1637506Z",
"stopSeconds": 1.6,
"hostProcessGone": true,
"leftoverWorkers": 0,
"service": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"redaction": [
{
"source": "logs\\otopcua-20261112.log",
"chars": 69603,
"secretOccurrences": 0
},
{
"source": "logs\\scripts-20261112.log",
"chars": 380,
"secretOccurrences": 0
},
{
"source": "logs\\serilog-selflog.txt",
"chars": 0,
"secretOccurrences": 0
},
{
"source": "EventLog:Application",
"events": 0,
"secretOccurrences": 0
}
]
}
@@ -0,0 +1,7 @@
{
"serverTrusted": [
"Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der"
],
"untrustedClientNotCopied": "Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der"
}
@@ -0,0 +1,256 @@
{
"utc": "2026-11-12T15:11:39.0806566Z",
"before": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "F9A193C6C7D224006094E26CE4CD1616961BCB9048FF38A468786618A26E3A91",
"productVersion": "1.0.0+efb9197a0f48802450474413c58b9d0c461b836d"
},
"opcUaCore": "1.5.378.182"
},
"after": {
"name": "OtOpcUaHost",
"state": "Stopped",
"startMode": "Auto",
"pathName": "\"C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe\"",
"startName": "NT SERVICE\\OtOpcUaHost",
"processId": 0,
"exitCode": 0,
"serviceSpecificExitCode": 0,
"envNames": [
"ASPNETCORE_URLS",
"Cluster__Hostname",
"Cluster__Port",
"Cluster__PublicHostname",
"Cluster__Roles__0",
"Cluster__SeedNodes__0",
"Cluster__SystemName",
"ConfigSource__ApiKey",
"ConfigSource__CentralFetchEndpoints__0",
"ConfigSource__FetchTimeoutSeconds",
"ConfigSource__Mode",
"DOTNET_ENVIRONMENT",
"OpcUa__AllowAnonymous",
"OpcUa__ApplicationName",
"OpcUa__ApplicationUri",
"OpcUa__AutoAcceptUntrustedClientCertificates",
"OpcUa__EnabledSecurityProfiles__0",
"OpcUa__EnabledSecurityProfiles__1",
"OpcUa__OpcUaPort",
"OpcUa__PublicHostname",
"OTOPCUA_ROLES",
"Secrets__SqlitePath",
"Security__Acl__Enabled",
"Security__ApiKeys__Pepper",
"Security__Ldap__Enabled",
"ZB_SECRETS_MASTER_KEY"
],
"envDigest": "fd534f8ddd55fa0502a7242efdf95a59dbcadb793620afe563117b1d5b9fe32c",
"exe": {
"path": "C:\\OtOpcUa800\\OtOpcUa\\OtOpcUa.Host.exe",
"sha256": "6E9EFDDE592EB342719E9C0D47783E306BC9DD697AE80FC32D45DD1538A52000",
"productVersion": "1.0.0+438484fdca4df12be6fbcae71cfbbeabb9386004"
},
"opcUaCore": "2.0.1.2"
},
"appsettingsNodeVsPublisher": [
{
"file": "appsettings.admin-driver.json",
"node": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"publisher": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46"
},
{
"file": "appsettings.admin.json",
"node": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"publisher": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530"
},
{
"file": "appsettings.Development.json",
"node": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"publisher": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B"
},
{
"file": "appsettings.driver.json",
"node": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"publisher": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF"
},
{
"file": "appsettings.json",
"node": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"publisher": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A"
}
],
"stagedSnapshot": {
"certs": [
{
"file": "OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"thumbprint": "CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA",
"subject": "CN=OtOpcUaGate800, O=OPC Foundation",
"notBefore": "2026-11-11T00:00:00.0000000Z",
"notAfter": "2027-11-11T00:00:00.0000000Z",
"keySize": 2048
}
],
"pki": [
{
"path": "pki\\own",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\own\\private",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\own\\private\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].pfx",
"dir": false,
"sha256": "D0130A14E33ACF4F7EF0859790ACA7CBF4EBDE1ECB90163B6C528E89FF53B07D",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\rejected",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\rejected\\certs\\Gate800Client [C91ACD459294599052131D438FE9C4F4128637F5].der",
"dir": false,
"sha256": "7964A941068908D23C1875F2F4E2CBA91510915B5BCDF563614E5B6E314F54B9",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs",
"dir": true,
"sha256": null,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;OICIID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\Gate800Client [7F8DAF694729411881528567DA4CAB8EB2C7BFFC].der",
"dir": false,
"sha256": "CB8C21F6006FBAE742A0AC7F110BA28B05C1C22897C0EE3E920B711EC6CE4BCE",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaClient [F93FDAF3671D24914535075DC23E90C76B60BAE6].der",
"dir": false,
"sha256": "901F62E2649C3BF57B4998E230DECD5F85ED38F1003B54E9CDDE823256C90671",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"path": "pki\\trusted\\certs\\OtOpcUaGate800 [CEF9D91F8CBC0EE78B317D3AA51EB40CD9C41ACA].der",
"dir": false,
"sha256": "F38E6B2EC17CB6F5A67F9F1BC56BF3AF522650D7F5A6E0F2C8D0B10BE1E3F845",
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"data": [
{
"path": "data\\otopcua-localdb.db",
"dir": false,
"length": 102400,
"sddl": "O:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059G:S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059D:AI(A;ID;0x1301bf;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
],
"roots": {
"install": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;OICI;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)",
"appsettings": [
{
"file": "appsettings.admin-driver.json",
"sha256": "ECA047204CF6A9B4D89628D7EE2048BC68D46DB55DCB4AE9BCF24DBE9E44CD46",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.admin.json",
"sha256": "BB08F16D701697FCD70695B75D81A4B09BCE57DAAA95D6FD81FF469258AD3530",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.Development.json",
"sha256": "169A54D22027E13823AF0D41C1314A6D3E44852041C8B35AA80478A88399FE1B",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.driver.json",
"sha256": "A7DC1AB1DB2E93F1A6E78B7B1B425720C3C610CB406E6266F0DBE2EBE01BADAF",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
},
{
"file": "appsettings.json",
"sha256": "89F72ACADED7F2D3CA434F2D922FE4DACCDC03AA342F3973D35A160BE9221B2A",
"sddl": "O:BAG:S-1-5-21-3358580898-976645380-93926719-513D:AI(A;ID;0x1200a9;;;S-1-5-80-3928861625-3486739760-3962757976-1980707066-3667558059)(A;ID;FA;;;SY)(A;ID;FA;;;BA)"
}
]
}
},
"backup": {
"path": "C:\\OtOpcUa800\\backup-baseline",
"files": 1386
},
"previous": "C:\\OtOpcUa800\\OtOpcUa.prev-baseline"
}