Fix DnsSecurityExecutor and HttpHeadersExecutor not creating noun connections

Resolved 💬 3 comments Opened Jan 4, 2026 by TarkinLarson Closed Feb 12, 2026

Problem

DNS Security and HTTP Headers scans were defaulting to "verb only" mode - they weren't creating noun connections when persisting scan results. This meant:

  • Frontend showed "(verb-only scan)" instead of the noun ID
  • Scan results weren't being persisted to nouns
  • The scanned domains/endpoints list wasn't updating

Root Cause

Unlike SslScannerExecutor which has EnsureEndpointNounAsync() to find/create nouns and connections, DnsSecurityExecutor and HttpHeadersExecutor only updated existing connections but never created them.

Fix

Added noun creation logic to both executors:

DnsSecurityExecutor

  • Added INounService dependency
  • Added EnsureDomainNounAsync() method that:
  • Finds or creates a domain noun by domain:fqdn
  • Creates a VerbConnection with connection:role = patient
  • Attaches noun entity for VerbWorker to persist

HttpHeadersExecutor

  • Added INounService dependency
  • Added EnsureEndpointNounAsync() method that:
  • Parses URL to extract host/port
  • Finds or creates an endpoint noun by endpoint:url
  • Creates a VerbConnection with connection:role = patient
  • Attaches noun entity for VerbWorker to persist

Files Changed

  • src/Modules/OmniCore.Modules.DnsSecurity/Services/DnsSecurityExecutor.cs
  • src/Modules/OmniCore.Modules.HttpHeaders/Services/HttpHeadersExecutor.cs

Testing

  • [ ] DNS scan with "Save to Database" shows domain noun ID (not "verb-only scan")
  • [ ] HTTP Headers scan with "Save to Database" shows endpoint noun ID
  • [ ] Scanned domains list updates after DNS scan
  • [ ] Scanned endpoints list updates after HTTP Headers scan

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗