Commit graph

45 commits

Author SHA1 Message Date
ppom
26cf3a96e7
First draft of an nftables plugin
Not compiling yet but I'm getting there.
Must be careful on the unsafe, C-wrapping code!
2026-02-20 12:00:00 +01:00
ppom
a37a5e5752
release v2.3.0
- cross-rs project doesn't compile anymore: switching to debian12-amd64 only binary release
- package virtual plugin in reaction .deb
- package ipset plugin in separate .deb with its required libipset-dev dependency
2026-02-11 12:00:00 +01:00
ppom
a8651bf2e0
Removal of nft46 and ip46tables 2026-02-11 12:00:00 +01:00
ppom
3a6260fa26
reaction-plugin-ipset: first work session 2026-02-09 12:00:00 +01:00
ppom
f414245168
Separate treedb into its own crate 2025-12-14 12:00:00 +01:00
ppom
79d85c1df1
Reduce usage of chrono
TODO: handle migrations
2025-12-07 12:00:00 +01:00
ppom
a5d31f6c1a
cluster: First round of fixes and tests after first run
Still not working!
2025-12-07 12:00:00 +01:00
ppom
0635bae544
cluster: created ConnectionManager
Reorganized code.
Moved some functionnality from EndpointManager to ConnectionManager.
Still a lot to do there, but few in the rest of the code.
2025-12-07 12:00:00 +01:00
ppom
552b311ac4
Move shutdown module to reaction-plugin and use in cluster 2025-12-07 12:00:00 +01:00
ppom
a70b45ba2d
Move parse_duration to reaction-plugin and fix dependency tree 2025-12-07 12:00:00 +01:00
ppom
310d3dbe99
Fix plugin build, one secret key per cluster, more work on cluster init 2025-12-07 12:00:00 +01:00
ppom
20921be07d
Fix daemon startup: all subsystems will cleanly exit
Regardless of which startup error makes reaction exit.

Also made plugin stderr task exit when the ShutdownToken asks for it.
Also updated Rust edition to 2024.
2025-12-07 12:00:00 +01:00
ppom
124a2827d9
Cluster plugin init
- Remove PersistData utility
- Provide plugins a state directory instead, by starting them inside.
- Store the secret key as a file inside this directory.
- Use iroh's crate for base64 encoding, thus removing one dependency.
- Implement plugin's stream_impl and action_impl functions,
  creating all necessary data structures.
2025-12-07 12:00:00 +01:00
ppom
61fe405b85
Add cluster plugin skeleton 2025-12-07 12:00:00 +01:00
ppom
76bc551043
Specify reaction as default bin 2025-12-07 12:00:00 +01:00
ppom
b44800ed30
cargo build builds plugin
And benchmark for virtual plugin
2025-12-07 12:00:00 +01:00
ppom
f08762c3f3
First shot of "virtual stream" plugin 2025-12-07 12:00:00 +01:00
ppom
d887acf27e
Adapt Config and plugin loading
daemon::Stream integration TBD
2025-12-07 12:00:00 +01:00
ppom
a99dea4421
Adapt reaction-plugin to remoc 2025-12-07 12:00:00 +01:00
ppom
ae46932219
Fix workspace dependency 2025-12-07 12:00:00 +01:00
ppom
8229f01182
Dependency cleanup 2025-12-07 12:00:00 +01:00
ppom
7f0cf32666
v2.2.1 2025-09-20 12:00:00 +02:00
ppom
e45963dd4c
Debian: Add extended-description
Fix #134
2025-08-11 12:00:00 +02:00
ppom
0e75514db3
Debian: Add section information
Fix #134
2025-08-11 12:00:00 +02:00
ppom
dcc2e1ec4c
v2.2.0 2025-08-08 12:00:00 +02:00
Baptiste Careil
0337fcab1f
Automate some tests 2025-08-06 12:00:00 +02:00
ppom
4ddaf6c195
v2.1.2 2025-07-14 12:00:00 +02:00
ppom
5d9f2ceb6a
v2.1.1 2025-07-07 12:00:00 +02:00
ppom
3f3236cafb
v2.1.0 2025-06-24 12:00:00 +02:00
ppom
8f5511b415
v2.0.1 2025-06-05 12:00:00 +02:00
ppom
d4fb820cb7
version 2.0.0 2025-06-05 12:00:00 +02:00
ppom
c5dbb4e29c
Remove bincode & fjall crates 2025-05-28 12:00:00 +02:00
ppom
9c8be2f2de
Working db rewrite using fjall 2025-05-28 12:00:00 +02:00
ppom
2facac9fbd
WIP fjall 2025-05-28 12:00:00 +02:00
ppom
660a7d5a58
WIP 2025-05-28 12:00:00 +02:00
ppom
deaf418afd Add ip46tables and nft46 executables to the .deb 2025-03-04 12:00:00 +01:00
ppom
1ec558e559 v2.0.0-rc2 release
- Cross compilation to amd64 and arm64
- Fully static binaries
- Debian packages
- Man pages
- Shell completions
- Systemd service
2025-02-21 12:00:00 +01:00
ppom
8cc32d122e WIP: use sled instead of custom db implementation
Goal is to directly use sled as a drop-in replacement for BTreeMaps,
which already maintain the state of reaction.
Those maps are now persisted by sled.

A lot of code is no longer needed, and is deleted in this commit.

This commit focuses on adapting FilterManager to sled.

TODO
- adapt ActionManager as well
- at startup, clean old matches
- at startup, clean old actions
- at startup, run still relevant actions
- at startup, remove sled trees that no longer correspond to something
  in the configuration
- refactor socket.rs to remove complex state sharing, as sled can now be
  directly used.
2025-02-05 12:00:00 +01:00
Baptiste Careil
b143a49942 Ask nicely the stream process to exit on shutdown
Introduces the nix dependency for the signal constants and the kill(1)
function.

The child process is now delegated to a dedicated function handle_child
that will ensure it terminated and reclaimed. On shutdown, this function
first ask nicely using SIGTERM the stream process to exit (maybe we'll
want to make that signal configurable as SIGINT is a good candidate as
well).

After 15s, if the child process still did not exit, it is killed with
SIGKILL. Which is usually enough. But to make sure not to block
reaction's shutdown (which could interfere unintentionally with, for
example, the management of the database), there is another 5s timeout
after which we give up on waiting for the child process since at this
point it's most likely deadlocked in some way at the kernel level.

handle_child now handles the error message about the stream command
early exit. So there is no need for a communication channel between this
function and handle_io which just processes the process' output.
2024-11-22 16:52:25 +01:00
Baptiste Careil
78f03eb643 Restore default features of futures for the select macro 2024-11-19 14:54:53 +00:00
ppom
8579e30890 test infrastructure, new conf's state_directory, less deps
reaction's configuration now has a state_directory optional member,
which is where it will save its databases. defaults to cwd.

added a lot of code necessary to properly test databases.
The new tests are currently failing, which is good : they'll permit
to hunt down this database consistency bug.

also removed some indirect dependencies via features removal,
and moved test dependencies to dedicated [dev-dependencies]

also small fix on an nft46.c function type and empty conf file
for ccls LSP server.
2024-11-13 12:00:00 +01:00
ppom
a05e05750c Packaging for Rust 2024-10-24 12:00:00 +02:00
ppom
a80e3764f1 version 2.0.0-rc1 2024-10-24 12:00:00 +02:00
ppom
7deb2b4625 Remove tokio-console 2024-10-24 12:00:00 +02:00
ppom
3dd97523fd Move new rust codebase to root dir 2024-10-24 12:00:00 +02:00
Renamed from rust/Cargo.toml (Browse further)