| Commit message (Expand) | Author | Age | Files | Lines |
| * | Remove stale socket node before listen•••net.Listen on a unix domain path errors with EADDRINUSE if the file
already exists, so a previous wscat run that didn't get a clean
shutdown leaves a stub socket that blocks the next start. Best-
effort os.Remove first; matches what proxyprot does in the same
position.
HEADmain | EuAndreh | 24 hours | 1 | -0/+3 |
| * | Add WSCAT_ALLOWED_ORIGINS env-driven CheckOrigin•••gorilla/websocket's safe-default CheckOrigin rejects upgrades whose
Origin host doesn't match the request Host — sound for prod (untls
puts wscat and the page on the same hostname), but a hard 403 for
any dev setup where the page is served from one localhost port and
wscat runs on another.
Wire an opt-in allowlist: WSCAT_ALLOWED_ORIGINS holds comma-separated
scheme://host[:port] entries; matches are case-insensitive on both
sides; rejected upgrades log the offending Origin so the operator
sees what to add. Empty/unset preserves gorilla's safe default.
The allowlist is opt-in by design — production should keep the
default and dev sets exactly the origins it serves the page from.
| EuAndreh | 24 hours | 1 | -1/+39 |
| * | Forward PROXY v2 AUTHORITY end-to-end•••wscat now sits transparently in the untls → wscat → papod path:
on Accept, it parses any PROXY v2 header from upstream and stashes
the AUTHORITY TLV on the wrapped conn; on the downstream dial to
papod, it re-emits a PROXY v2 header with the same authority
before forwarding any WebSocket payload bytes.
A 5-second read deadline caps the parse window (so a slowloris
peer can't pin the accept goroutine), and Accept loops past
per-connection wrap errors — without that, an "nc -z" liveness
probe (open + close, zero bytes) bubbles up as EOF to
http.Server.Serve and panics the whole process.
When no PROXY header is present (e.g. the integration test stack
where binder speaks raw bytes) wscat skips the re-emit and lets
papod fall back to PAPOD_NETWORK_NAME.
Tests cover header build/parse roundtrip, the no-signature-pass-
through case, and header byte layout.
| EuAndreh | 9 days | 2 | -2/+232 |
| * | src/wscat.go: Make Start a duplex multi-message relay•••The previous Start ran a single NextReader/NextWriter pair and
spawned the copy goroutines after the handler had already returned,
so the deferred connection close fired immediately and at most one
WebSocket message was forwarded in either direction.
Replace it with two relays — one looping NextReader → io.Copy to
the unix socket, the other reading from the unix socket and
emitting each chunk as a discrete TextMessage frame — and have the
handler block on a 2-slot done channel until at least one side
ends. When that happens, the handler explicitly sends a Close
frame, half-closes the unix side, and waits up to 250ms for the
peer to acknowledge before defers tear down both connections, so
the WS state machine on each end reaches CLOSED instead of
deadlocking in CLOSING.
| EuAndreh | 10 days | 1 | -29/+66 |
| * | Update to latest project skeleton: i18n and fine-grained fuzzing | EuAndreh | 2025-05-29 | 21 | -33/+310 |
| * | meta.capim: Add with :dependencies key | EuAndreh | 2025-05-23 | 1 | -0/+1 |
| * | Make: Use $< over $? | EuAndreh | 2025-05-04 | 1 | -1/+1 |
| * | .gitignore: Include pattern for cgo | EuAndreh | 2024-10-29 | 1 | -0/+1 |
| * | .gitignore: Add pattens for next test artifacts | EuAndreh | 2024-10-29 | 1 | -1/+9 |
| * | mkdeps.sh: Fix typo on varlist name | EuAndreh | 2024-10-29 | 2 | -2/+2 |
| * | Makefile: Simplify time file generation on bench taget dependencies | EuAndreh | 2024-10-29 | 1 | -2/+1 |
| * | Makefile: Prioritize local version when building and linking | EuAndreh | 2024-10-29 | 1 | -2/+2 |
| * | Adapt to latest golang Makefile skeleton | EuAndreh | 2024-10-20 | 5 | -36/+103 |
| * | Makefile: "var version" -> "const Version" | EuAndreh | 2024-09-27 | 1 | -1/+1 |
| * | Makefile: Define $(GOCFLAGS) and $(GOLDFLAGS) based on $(PREFIX) | EuAndreh | 2024-08-15 | 1 | -0/+2 |
| * | Add src/version.go | EuAndreh | 2024-08-15 | 3 | -6/+15 |
| * | Makefile: Simplify a bit compile rule | EuAndreh | 2024-08-11 | 1 | -6/+4 |
| * | Makefile: Add "bench" target | EuAndreh | 2024-08-10 | 2 | -1/+5 |
| * | src/wscat.go: Remove deprecated code | EuAndreh | 2024-08-10 | 2 | -414/+238 |
| * | src/wscat.go: Remove client support | EuAndreh | 2024-08-10 | 2 | -1256/+13 |
| * | Remove unnecessary SOCKS5 support | EuAndreh | 2024-08-10 | 5 | -1090/+5 |
| * | Build with "go tool" AND import code from deps | EuAndreh | 2024-08-10 | 11 | -177/+6933 |
| * | go.mod: Use "replace" for all | EuAndreh | 2024-08-02 | 2 | -9/+10 |
| * | go mod tidy | EuAndreh | 2024-07-26 | 1 | -0/+3 |
| * | Makefile: Use $(NAME) | EuAndreh | 2024-07-26 | 1 | -2/+2 |
| * | Initial implementation | EuAndreh | 2024-07-25 | 12 | -0/+456 |
| * | Initial empty commit | EuAndreh | 2024-03-25 | 0 | -0/+0 |