mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 18:18:55 +00:00
Currently, each connection always uses all relays. That is pretty wasteful in terms of bandwidth usage and processing power because we only ever need a a single relay for a connection. When we re-deploy relays, we actively invalidate them, meaning the connection gets cut instantly without waiting for an ICE timeout and the next packet will establish a new one. This is now also asserted with a dedicated transition in `tunnel_test`. To correctly simulate this in `tunnel_test`, we always cut the connection to all relays. This frees us from modelling `connlib`'s internal strategy for picking a relay which keeps the reference state simple. Resolves: #6014.
Rust development guide
Firezone uses Rust for all data plane components. This directory contains the Linux and Windows clients, and low-level networking implementations related to STUN/TURN.
We target the last stable release of Rust using rust-toolchain.toml.
If you are using rustup, that is automatically handled for you.
Otherwise, ensure you have the latest stable version of Rust installed.
Reading Client logs
The Client logs are written as JSONL for machine-readability.
To make them more human-friendly, pipe them through jq like this:
cd path/to/logs # e.g. `$HOME/.cache/dev.firezone.client/data/logs` on Linux
cat *.log | jq -r '"\(.time) \(.severity) \(.message)"'
Resulting in, e.g.
2024-04-01T18:25:47.237661392Z INFO started log
2024-04-01T18:25:47.238193266Z INFO GIT_VERSION = 1.0.0-pre.11-35-gcc0d43531
2024-04-01T18:25:48.295243016Z INFO No token / actor_name on disk, starting in signed-out state
2024-04-01T18:25:48.295360641Z INFO null