net-tools/bin
Natalie 53a79d3494 net-tools: fix wg-render apply (set -e abort + dash syncconf), nyc3 endpoint
Two bugs found bringing the nyc3 segment live (citron hub + lime spoke):
- Hub render ended in `[ -n "$miss" ] && echo`, which returns 1 when no spokes
  are unkeyed; under `set -e` that silently aborted `render_conf > tmp` on the
  apply path (spokes were fine — they end in printf). Use an if-block.
- `wg syncconf <(wg-quick strip)` used bash process substitution but the script
  runs under /bin/sh (dash) — replaced with a POSIX temp file.

Also: nyc3 endpoint -> citron's bound public IP (104.248.9.88), not the reserved
IP (143.244.223.5) — DO routes the reserved IP in but WG replies from the
primary, so the reserved IP can't be a WG endpoint without anchor source-routing.

Verified live: lime<->citron handshake, ping 10.9.0.7 0% loss, citron dnsmasq
resolving *.wg on 10.9.0.7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:50:52 -04:00
..
fleet-status feat(@tools/net-tools): add tray icon system 2026-06-10 02:20:23 -07:00
forge-dns-render feat(dx): add forge-dns-render to net-tools infra installers 2026-06-28 10:45:47 -04:00
host-apply feat(dx): add dx.hide_homelan to hide homelan config while DO-only 2026-06-28 10:50:51 -04:00
infra-net feat(infra-net): read .infra*.yaml + tag rows by environment 2026-06-29 10:20:13 -04:00
mesh-hosts-render feat(dx): add dx.hide_homelan to hide homelan config while DO-only 2026-06-28 10:50:51 -04:00
net feat(dx): add forge-dns-render to net-tools infra installers 2026-06-28 10:45:47 -04:00
test net-tools: multi-segment WireGuard hub model + bin/wg-render 2026-06-29 21:38:25 -04:00
wg-dns-sync net-tools: multi-segment WireGuard hub model + bin/wg-render 2026-06-29 21:38:25 -04:00
wg-render net-tools: fix wg-render apply (set -e abort + dash syncconf), nyc3 endpoint 2026-06-29 21:50:52 -04:00