d30ceb004d
chore(cmd/tcpfwd): minor cleanup, add license, lint
2026-02-27 23:35:00 -07:00
3e4ce3ac91
ref(cmd/tcpfwd): extract waitWithTimeout to simplify shutdown block
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 22:52:07 -07:00
0d356c0b26
feat(cmd/tcpfwd): add description to version/help output
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 22:16:49 -07:00
f9e06f131b
ref(cmd/tcpfwd): simplify parseForward with strings.Cut
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 22:13:10 -07:00
3f16e89f5c
ref(cmd/tcpfwd): remove implicit time.Now() for testability
...
- connEntry.isIdle(now, threshold): caller supplies now instead of time.Since
- connRegistry.closeIdle(now, threshold): passes now through to isIdle
- trackingConn gains a clock func() time.Time field used in Read/Write
- handleConn takes clock func() time.Time; uses it to init lastRead/lastWrite
and passes it to trackingConn
- Call sites in main pass time.Now or time.Now() explicitly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 22:08:56 -07:00
89f6e04516
feat(cmd/tcpfwd): add graceful shutdown with idle connection tracking
...
On SIGINT/SIGTERM:
- Stop accepting new connections
- Close connections idle longer than --idle-timeout (default 5s),
determined by LastRead/LastWrite timestamps tracked per connection pair
- Wait for active connections to drain up to --shutdown-timeout (default 30s)
- Force-close any remaining connections if the timeout is exceeded
Also switches isClosedConn to use errors.Is(err, net.ErrClosed) and
exits the accept loop cleanly when a listener is closed during shutdown.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 22:05:04 -07:00
b08525b024
feat(cmd/tcpfwd): add multi-forward positional args and version/help
...
Accept any number of local-port:remote-host:remote-port forwards as
positional arguments. Backward-compatible with existing --port/--target
flags. Adds --version/-V/version and --help/help handling matching the
auth-proxy pattern, including printVersion printed to stderr at startup.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 21:54:51 -07:00
ec64afe390
feat: add tcpfwd to pipe connections
2026-02-27 21:25:33 -07:00
af6b0eb5a2
feat: add cmd/smsgwhookstocsv for smsapid (android sms gateway) jsonl to tsv
2026-02-27 02:48:13 -07:00
71eceb809f
feat: add cmd/smsapid for use with android-sms-gateway
2026-02-27 02:48:13 -07:00
4176923dd8
ref(cmd/sendsms): separate http/androidsmsgateway into own package
2026-02-27 02:42:50 -07:00
c08f7e342a
feat(cmd/sendsms): add back curl script for testing
2026-02-27 01:52:19 -07:00
de8630c136
fix(cmd/sendsms): send messages again (but not on dry-run), check ENVs
2026-02-27 01:52:19 -07:00
4e5277d133
fix(cmd/sendsms): randomize-csv now keeps header and adds back extension
2026-02-27 01:52:19 -07:00
7b40097396
fix(cmd/auth-proxy): show all working credentials, not just the first one
2026-02-27 00:26:43 -07:00
7a93b333ba
doc(cmd/auth-proxy): add README.md with examples and install instructions
2026-02-27 00:06:58 -07:00
13eeb6793b
feat: add cmd/auth-proxy to add Basic, Bearer, X-API-Key, or access_token auth to routes
2026-02-27 00:06:58 -07:00
21ea2d0613
chore(cmd/sql-migrate): bump v2.0.3
2026-01-31 21:22:42 -07:00
b6ffacd0a6
fix(cmd/sql-migrate): spell 'postgres' correctly
2026-01-31 21:21:53 -07:00
e7282c58f3
chore(cmd/sql-migrate): add explicit default for sqlCommand switch
2026-01-31 21:21:53 -07:00
dd4148b88e
chore(cmd/sql-migrate): make file path ormatting consistent for all 'found ./path/to/x' outtput
2026-01-31 21:21:53 -07:00
1ec145b3eb
ref(cmd/sql-migrate/v2): make INSERTs sortable, output cleanup
2026-01-31 01:18:58 -07:00
10236de205
feat(cmd/sql-migrate/v2): bump go.mod to v2
2026-01-31 00:20:07 -07:00
65f866970e
feat(cmd/sql-migrate/v2): store migrations in db, nix batches
2026-01-31 00:10:06 -07:00
8136b7f4b9
doc(sendsms): make README more inviting
2026-01-25 00:30:36 -07:00
fa9930c159
feat(sendsms): add script to randomize CSV data
2026-01-25 00:10:17 -07:00
674960b497
doc(sendsms): add README.md
2026-01-25 00:10:17 -07:00
8654c1c1f5
ref(sendsms): add --print-curl to improve --dry-run and general output
2026-01-25 00:10:17 -07:00
a050e5d0c7
ref(sendsms): hard error on leftover template strings, other output improvements
2026-01-25 00:10:17 -07:00
0c3c436c60
ref(sendsms): sane template defaults, separate sender interface
2026-01-25 00:10:17 -07:00
147a317cc0
ref(sendsms): lots of output improvements
2026-01-25 00:10:17 -07:00
5fdb4746cc
feat(sendsms): add --start-time, --stop-time, --max-duration, --min-delay
2026-01-25 00:10:17 -07:00
c56688a512
feat: add cmd/sendsms for texting lists from CSV
2026-01-25 00:10:17 -07:00
fe6300dacc
chore(cmd/sql-migrate): bump to version 1.0.2
2026-01-13 00:30:48 -07:00
eee1a95f52
ref(cmd/sql-migrate): add package, docs, minor flag parse change
2026-01-13 00:30:08 -07:00
f034cf0529
feat(cmd/sql-migrate): can write up and down migrations
2026-01-13 00:29:55 -07:00
9598545a9f
chore: add appopriate LICENSE files to each module
2025-10-06 00:42:41 -06:00
7ece4eb9e6
feat(jsonl): add example using encoding/json
2025-10-03 22:18:58 -06:00
193c8f65cf
feat(httplog): add http logger for debugging
2025-10-03 00:30:25 -06:00