barryp and Claude Fable 5.1
6385be0890
Handle SIGTERM/SIGINT for a graceful shutdown
...
Running as PID 1 in a container, the daemon silently dropped SIGTERM,
so `docker stop` always hit the 10s timeout and SIGKILL, and host
reboots waited on it.
The accept loop now polls a non-blocking listener and a shutdown flag
registered via signal-hook. On SIGTERM or SIGINT it stops accepting,
gives in-flight requests up to 3s to finish, removes the socket file,
and exits with status 0. Log lines mark signal receipt and completion.
Adds integration tests that spawn the binary, perform an auth
round-trip, signal it, and assert a clean exit and socket removal.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01Kmrgkpp9YBJ6AMaWYPPZuD
2026-09-12 13:05:20 -07:00
Barry Pederson
1de0fa16db
Add some logging so that with the env variable RUST_LOG=debug or similar, there is timestamped output to stderr
2026-02-03 15:57:11 -08:00
Barry Pederson
83d437c9ce
Update rust and alpine versions in Dockerfile
2026-02-03 13:15:06 -08:00
Barry Pederson
8e2f622811
Updated rust libraries
2026-02-03 12:59:43 -08:00
Barry Pederson
a03b738c7a
Add argon2 password hashing
2026-02-03 12:59:01 -08:00
Barry Pederson
120db0bd90
Updated rust libraries
2026-01-02 12:07:01 -08:00
Barry Pederson
c0333deb9c
Update Docker rust build image from 1.85.0 to 1.88.0, and runtime alpine from 3.21.3 to 3.22.0
2025-07-01 20:43:09 -07:00
Barry Pederson
d9da12a6de
Improvements from clippy
2025-07-01 20:37:00 -07:00
Barry Pederson
3fac9def78
I think I've got the workspace thing figured out..how the Cargo.toml files should reference each other
2025-02-21 15:11:31 -08:00
Barry Pederson
e5f2bbf64e
clap and common need to be dependencies under the server directory, despite what rustrover says
2025-02-21 14:32:35 -08:00
Barry Pederson
87c81944a5
Updated Dockerfile to build with rust 1.85.0 (to get 2024 edition), and run with alpine 3.21.3 (newest version)
2025-02-21 14:27:28 -08:00
Barry Pederson
93ad2cc8a7
Updated to Rust 2024 edition
2025-02-21 14:24:57 -08:00
Barry Pederson
9228a861af
Ran 'cargo update'
2025-02-21 14:20:21 -08:00
Barry Pederson
da84d2d6b9
rename 'handler' to 'repository' for clarity
2024-11-30 12:44:34 -08:00
Barry Pederson
a792d26678
Add Dockerfile
2024-11-03 20:09:41 -08:00
Barry Pederson
60bc980e8d
Simplify test code a bit, use Request::new() to simplfy constructing requests
2024-11-03 12:49:23 -08:00
Barry Pederson
4d70463e46
Make handler.rs generic for anything that implements Read+Write, add unittest taking advantage of that.
...
Also, it'll work now for things other than UnixStreams, such as TcpStreams
2024-11-03 12:19:02 -08:00
Barry Pederson
5f4a0e0e88
Reorganize and refactor, adding integration test for common library stuff
2024-11-03 11:44:03 -08:00
Barry Pederson
00743fbe9c
Reame listener.rs to server.rs for clarity
2024-11-03 10:38:40 -08:00
Barry Pederson
7cd2ba3364
Rename server.rs to handler.rs for clarity, since this is responsible for handling one interaction with a client
2024-11-03 10:31:31 -08:00
Barry Pederson
1a66c8ede5
Rename handler.rs to repository.rs for clarity, pass the directory name as a new() parameter rather than have the repository aware of the OPTIONS static
2024-11-03 10:28:14 -08:00
Barry Pederson
52f502f7a6
Simplify Cargo.toml dependencies
...
Still need two copies of the dependencies, but at least they're in one place now.
2024-11-02 16:07:05 -07:00
Barry Pederson
076e48f457
Add a separate client binary, with some common code to the server.
...
The cargo workspace thing was a PITA to figure out, but it seems to be working. Could maybe be simplified?
2024-11-02 15:58:35 -07:00
Barry Pederson
46ad77f19e
Restructure and add unit tests...maybe it works now?
2024-11-02 13:49:07 -07:00
Barry Pederson
ac9743dc8a
WIP: trying to refactor to separate password-checking from network-communication
2024-11-02 11:05:16 -07:00
Barry Pederson
15daa7d7a1
Make option names closer to option variable names
2022-03-01 10:24:48 -08:00
Barry Pederson
8134df29b7
Change option names for clarity
2022-03-01 10:23:17 -08:00
Barry Pederson
b9c091f71f
Use once_cell to allow for global static immutable options
...
So they don't have to be passed around all over the place
2022-03-01 10:03:38 -08:00
Barry Pederson
a244e714ea
Refactor Listener and Server into separate files.
2022-03-01 09:07:29 -08:00
Barry Pederson
bb65edd766
Add structopt option parsing, use a plain textfile for each user rather than YAML
2022-02-28 19:14:54 -08:00
Barry Pederson
3b01c2a893
Got it actually checking against a yaml file
2022-02-28 14:22:16 -08:00
Barry Pederson
36f26d4a85
First pass, creates socket, should listen and respond
2022-02-28 11:58:57 -08:00