Commit graph

39 commits

Author SHA1 Message Date
GitHub Actions
f94e85944b flake: update lockfile 2026-06-16 20:54:08 +00:00
GitHub Actions
dff99a613f flake: update lockfile 2026-06-15 20:57:28 +00:00
GitHub Actions
b6f7dd19ed flake: update lockfile 2026-06-14 19:39:13 +00:00
GitHub Actions
990eb94417 flake: update lockfile 2026-06-13 19:39:23 +00:00
GitHub Actions
32e340892d flake: update lockfile 2026-06-12 20:13:43 +00:00
GitHub Actions
591d7ed6e1 flake: update lockfile 2026-06-11 20:24:51 +00:00
GitHub Actions
f0746b29b1 flake: update lockfile 2026-06-09 20:09:25 +00:00
GitHub Actions
0f029bb061 flake: update lockfile 2026-06-07 19:25:19 +00:00
GitHub Actions
a4e2f88331 flake: update lockfile 2026-06-06 19:26:27 +00:00
GitHub Actions
4b24e9c612 flake: update lockfile 2026-06-04 20:08:04 +00:00
GitHub Actions
4f481e93ff flake: update lockfile 2026-06-02 20:52:27 +00:00
GitHub Actions
d932a271a5 flake: update lockfile 2026-06-01 21:35:37 +00:00
Kreato
02f9817e57
feat(modules): expose min-chunk, max-chunk, delay-us, extraArgs as Nix options
Allows tuning fragmentation parameters for performance.
Defaults match CLI defaults (min 3, max 8, delay 500us).
2026-06-01 22:27:50 +03:00
Kreato
50521e8dbd
feat: add DPI bypass for DTLS records in CONNECT tunnels
Previously, HandleClientHello rejected non-TLS (non-0x16) and DTLS records,
causing Discord voice chat CONNECT tunnels to be silently dropped.

- Non-TLS data: written through unchanged (passthrough)
- DTLS records (version 0xFE): parsed with full 13-byte header, fragmented
  with the same split/write logic used for TLS ClientHello

Fixes Discord voice 'DTLS connecting' stuck state behind ihtc proxy.
2026-06-01 22:15:58 +03:00
Kreato
9b2568baa1
modules: make --verbose conditional on services.ihtc.verbose 2026-06-01 21:59:55 +03:00
Kreato
4d68eef67e
fix: make TestBadGateway correct on all platforms
The test expected client.Get() to return a transport-level error for
unreachable targets, but the proxy converts dial errors into HTTP 502
responses. On x86_64-linux the kernel returns EHOSTUNREACH immediately,
the proxy returns 502, and err == nil. On macOS the 5s client timeout
fires first, giving a context error (passing by accident).

Also add Nix CI workflow building on all 4 supported platforms.
2026-06-01 21:50:17 +03:00
Kreato
d091b19766
ci: commit flake updates directly, no PR 2026-06-01 02:11:38 +03:00
Kreato
bccd8b55d7
ci: add daily flake update workflow 2026-06-01 02:09:36 +03:00
Kreato
94c0ae955a
refactor: change --refrag from dummy records to min-chunk-count approach
Replace the dummy TLS record injection mechanism with a minimum chunk count
approach. Instead of prepending fake TLS records before the ClientHello, the
new approach ensures the ClientHello itself is split into at least --refrag
chunks, which is more effective and idiomatic.

- Default --refrag changed from 1 to 0 (disabled)
- Removed buildDummyRecords() and the associated dummy record injection
- Added splitRange() helper function
- Split() now enforces a minimum chunk count via re-splitting when needed
2026-06-01 02:00:45 +03:00
Kreato
6aac7af9e8
feat: add darwin/nixos module options 2026-06-01 01:59:00 +03:00
Kreato
40052c65fa
feat: add --refrag for dummy TLS record injection 2026-06-01 01:36:22 +03:00
Kreato
85f80ef4af
fix: --regex non-matching hosts passthrough instead of reject 2026-06-01 01:30:35 +03:00
Kreato
9db7c21fee
feat: add nix flake package 2026-06-01 01:24:52 +03:00
Kreato
5a0550c259
docs: add README and MIT license 2026-06-01 01:22:27 +03:00
Kreato
cd136bb063
feat: auto proxy configuration support (--auto-proxy flag) 2026-06-01 01:16:51 +03:00
Kreato
07e2c4ee36
fix: normalize host:port for CONNECT to handle IPv6 addresses 2026-06-01 01:05:04 +03:00
Kreato
9a0ab6b5dd
chore: add .gitignore, final verification 2026-06-01 00:47:36 +03:00
Kreato
5d50120849
feat: add CLI entry point with signal handling 2026-06-01 00:42:29 +03:00
Kreato
a32c1e9c0b
fix: hop-by-hop header filtering, upstream timeout, hijack logging 2026-06-01 00:39:35 +03:00
Kreato
336ec57507
fix: race condition, tunnel relay, error handling 2026-06-01 00:36:44 +03:00
Kreato
5929d69c3c
feat: add HTTP forward proxy with CONNECT tunneling 2026-06-01 00:31:02 +03:00
Kreato
48b1054bc5
fix: off-by-one, TLS validation, test writeFragmented 2026-06-01 00:26:00 +03:00
Kreato
f5e0edbed0
feat: add TLS ClientHello fragmentation engine 2026-06-01 00:22:23 +03:00
Kreato
f91ef164cf
fix: wire Level type into logger API 2026-06-01 00:20:00 +03:00
Kreato
ee5df8dfdc
feat: add structured logger 2026-06-01 00:15:08 +03:00
Kreato
807bf3d9cb
fix: use valid go version format (1.24) 2026-06-01 00:14:00 +03:00
Kreato
b5846a9fd0
feat: init go module 2026-06-01 00:12:08 +03:00
Kreato
f480c77602
fix: correct module path to github.com/kreatoo/ihtc 2026-06-01 00:10:46 +03:00
Kreato
a41b35ee74
Add ihtc design spec 2026-05-31 23:53:37 +03:00