41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# Bonjour/mDNS Discovery Checklist
|
|
|
|
Date: 2026-02-16
|
|
Status: completed
|
|
|
|
## Scope
|
|
|
|
- Add optional LAN service advertisement/discovery for the Flynn gateway.
|
|
- Keep discovery disabled by default and safe for production deployments.
|
|
|
|
## Completed
|
|
|
|
- Added `server.discovery` config schema in `src/config/schema.ts`:
|
|
- `enabled` (default `false`)
|
|
- `service_name` (default `flynn-gateway`)
|
|
- `service_type` (default `_flynn._tcp`)
|
|
- `txt` (default `{}`)
|
|
- Added gateway discovery runtime in `src/gateway/discovery.ts`:
|
|
- starts mDNS advertisement via `avahi-publish-service` (Linux) with fallback to `dns-sd` (macOS)
|
|
- supports graceful shutdown (`SIGTERM` with fallback `SIGKILL`)
|
|
- Wired discovery into gateway lifecycle in `src/gateway/server.ts`:
|
|
- starts advertisement after gateway listen
|
|
- stops advertisement during shutdown
|
|
- injects non-secret TXT metadata (`instance`, `version`) plus optional config `txt`
|
|
- skips advertisement when bound to loopback (`server.localhost: true`)
|
|
- Wired config into gateway construction in `src/daemon/services.ts`.
|
|
- Updated docs:
|
|
- `README.md` with Bonjour/mDNS configuration and behavior notes
|
|
- `config/default.yaml` with discovery defaults and LAN safety comment
|
|
- Added tests:
|
|
- `src/config/schema.test.ts` (discovery defaults + custom config)
|
|
- `src/gateway/discovery.test.ts` (spawn path, fallback path, hard failure path)
|
|
- `src/gateway/server.discovery.test.ts` (gateway lifecycle start/stop + loopback skip)
|
|
|
|
## Tests
|
|
|
|
## Verification
|
|
|
|
- `pnpm test:run src/config/schema.test.ts src/gateway/discovery.test.ts src/gateway/server.discovery.test.ts`
|
|
- `pnpm typecheck`
|