using System.Collections.Generic; namespace StellaOps.Excititor.WebService.Options; internal sealed class AirgapOptions { public const string SectionName = "Excititor:Airgap"; /// /// Enables sealed-mode enforcement for air-gapped imports. /// When true, external payload URLs are rejected and publisher allowlist is applied. /// public bool SealedMode { get; set; } = false; /// /// When true, imports must originate from mirror/offline sources (no HTTP/HTTPS URLs). /// public bool MirrorOnly { get; set; } = true; /// /// Optional allowlist of publishers that may submit bundles while sealed mode is enabled. /// Empty list means allow all. /// public List TrustedPublishers { get; } = new(); /// /// Optional root path for locally stored locker artefacts (portable manifest, evidence NDJSON). /// When set, /evidence/vex/locker/* endpoints will attempt to read files from this root to /// compute deterministic hashes and sizes; otherwise only stored hashes are returned. /// public string? LockerRootPath { get; set; } = null; }