Rewrite the service in Go and ship it as a static container

The PHP app, Apache, and .htaccess are replaced by a single Go binary
(standard library only). Routing, the JSON response, the landing page,
the shared email design, and all four parsers are ported with the same
output; JSON object keys are kept in sender order via an ordered decoder.

- mail.go: SMTP delivery with quoted-printable body and RFC 2047 subject
- main.go: routing, client IP from the proxy, /healthz, -check flag
- render.go: email shell, escaping, table helpers, generic renderer
- parser_*.go: github, grafana, json, wxinteract
- main_test.go: handler, response shape, IP forwarding, every parser
- Dockerfile: multi-stage build to distroless static, non-root, HEALTHCHECK
- deploy/webhooks.dixon.cx.service: systemd unit for the container
- README and PARSER_PROMPT updated for Go; IMPLEMENTATION_SUMMARY removed
This commit is contained in:
Andy Dixon
2026-09-12 19:59:54 +01:00
parent a61da1f6e3
commit 2d0f98e041
26 changed files with 1739 additions and 2301 deletions
+1 -1
View File
@@ -336,7 +336,7 @@ If you're receiving raw webhook data instead of formatted emails:
1. **Check URL:** Ensure `/wxinteract` is at the end of the URL
2. **Check payload structure:** Parser expects `{"data": {"status": "...", ...}}`
3. **Check PHP logs:** Look for any parser errors in your server logs
3. **Check the container logs:** `docker logs webhooks.dixon.cx` shows mail failures and parser errors
### Missing Fields