feat: add mdns hostname metadata variant and fix vhost routing

- Add HostnameMetadata::Mdns variant to distinguish mDNS from private domains
- Mark mDNS addresses as private (public: false) since mDNS is local-only
- Fall back to null SNI entry when hostname not found in vhost mapping
- Simplify public detection in ProxyTarget filter
- Pass hostname to update_addresses for mDNS domain name generation
This commit is contained in:
Aiden McClelland
2026-02-14 15:34:48 -07:00
parent 098d9275f4
commit 3a63f3b840
16 changed files with 105 additions and 45 deletions

View File

@@ -49,7 +49,7 @@ type VisibilityFilter<V extends 'public' | 'private'> = V extends 'public'
: never
type KindFilter<K extends FilterKinds> = K extends 'mdns'
?
| (HostnameInfo & { metadata: { kind: 'private-domain' } })
| (HostnameInfo & { metadata: { kind: 'mdns' } })
| KindFilter<Exclude<K, 'mdns'>>
: K extends 'domain'
?
@@ -199,9 +199,7 @@ function filterRec(
hostnames = hostnames.filter(
(h) =>
invert !==
((kind.has('mdns') &&
h.metadata.kind === 'private-domain' &&
h.host.endsWith('.local')) ||
((kind.has('mdns') && h.metadata.kind === 'mdns') ||
(kind.has('domain') &&
(h.metadata.kind === 'private-domain' ||
h.metadata.kind === 'public-domain')) ||