From b7dc897eea92dfe7b640048ed20e67649f9d98a2 Mon Sep 17 00:00:00 2001 From: Thomas Eizinger Date: Tue, 25 Nov 2025 21:59:11 +1100 Subject: [PATCH] refactor(rust): introduce `libs/` directory (#10964) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current Rust workspace isn't as consistent as it could be. To make navigation a bit easier, we move a few crates around. Generally, we follow the idea that entry-points should be at the top-level. `rust/` now looks like this (directories only): ``` . ├── cli # Firezone CLI ├── client-ffi # Entry point for Apple & Android ├── gateway # Gateway ├── gui-client # GUI client ├── headless-client # Headless client ├── libs # Library crates ├── relay # Relay ├── target # Compile artifacts ├── tests # Crates for testing └── tools # Local tools ``` To further enforce this structure, we also drop the `firezone-` prefix from all crates that are not top-level binary crates. --- .github/actions/setup-rust/action.yml | 4 +- .github/workflows/_rust.yml | 2 +- docs/AGENT.md | 6 +- rust/Cargo.lock | 366 +++++++++--------- rust/Cargo.toml | 88 ++--- rust/client-ffi/Cargo.toml | 4 +- rust/client-ffi/src/lib.rs | 24 +- rust/client-ffi/src/platform/android.rs | 4 +- rust/client-ffi/src/platform/android/tun.rs | 6 +- rust/client-ffi/src/platform/apple.rs | 4 +- rust/client-ffi/src/platform/apple/tun.rs | 6 +- rust/client-ffi/src/platform/fallback.rs | 4 +- rust/connlib/.gitignore | 173 --------- rust/connlib/tunnel/benches/divan.rs | 5 - rust/gateway/Cargo.toml | 8 +- rust/gateway/src/eventloop.rs | 44 +-- rust/gateway/src/main.rs | 18 +- rust/gui-client/src-tauri/Cargo.toml | 6 +- rust/gui-client/src-tauri/src/auth.rs | 4 +- .../src/bin/firezone-client-tunnel.rs | 2 +- .../src-tauri/src/bin/firezone-gui-client.rs | 8 +- rust/gui-client/src-tauri/src/controller.rs | 4 +- .../src-tauri/src/controller/ran_before.rs | 3 +- .../src-tauri/src/deep_link/windows.rs | 2 +- rust/gui-client/src-tauri/src/gui.rs | 6 +- .../src-tauri/src/gui/os_windows.rs | 4 +- .../src-tauri/src/gui/system_tray.rs | 6 +- rust/gui-client/src-tauri/src/ipc.rs | 6 +- rust/gui-client/src-tauri/src/ipc/linux.rs | 6 +- rust/gui-client/src-tauri/src/ipc/windows.rs | 4 +- rust/gui-client/src-tauri/src/logging.rs | 59 ++- rust/gui-client/src-tauri/src/service.rs | 18 +- .../gui-client/src-tauri/src/service/linux.rs | 2 +- .../gui-client/src-tauri/src/service/macos.rs | 2 +- .../src-tauri/src/service/windows.rs | 4 +- rust/gui-client/src-tauri/src/settings.rs | 2 +- rust/gui-client/src-tauri/src/updates.rs | 2 +- rust/gui-client/src-tauri/src/view.rs | 2 +- rust/headless-client/Cargo.toml | 6 +- rust/headless-client/src/linux.rs | 2 +- rust/headless-client/src/main.rs | 16 +- rust/headless-client/src/windows.rs | 2 +- rust/{ => libs}/anyhow-ext/Cargo.toml | 0 rust/{ => libs}/anyhow-ext/lib.rs | 0 rust/{ => libs}/bin-shared/Cargo.toml | 6 +- rust/{ => libs}/bin-shared/src/device_id.rs | 2 +- rust/{ => libs}/bin-shared/src/device_info.rs | 0 rust/{ => libs}/bin-shared/src/dns_control.rs | 0 .../bin-shared/src/dns_control/linux.rs | 0 .../src/dns_control/linux/etc_resolv_conf.rs | 0 .../bin-shared/src/dns_control/macos.rs | 0 .../bin-shared/src/dns_control/windows.rs | 0 .../bin-shared/src/http_health_check.rs | 0 rust/{ => libs}/bin-shared/src/known_dirs.rs | 0 .../bin-shared/src/known_dirs/linux.rs | 0 .../bin-shared/src/known_dirs/macos.rs | 0 .../bin-shared/src/known_dirs/windows.rs | 0 rust/{ => libs}/bin-shared/src/lib.rs | 0 rust/{ => libs}/bin-shared/src/linux.rs | 0 rust/{ => libs}/bin-shared/src/macos.rs | 0 .../bin-shared/src/network_changes.rs | 0 .../bin-shared/src/network_changes/linux.rs | 0 .../bin-shared/src/network_changes/macos.rs | 0 .../bin-shared/src/network_changes/windows.rs | 0 rust/{ => libs}/bin-shared/src/signals.rs | 0 .../bin-shared/src/signals/linux.rs | 0 .../bin-shared/src/signals/macos.rs | 0 .../bin-shared/src/signals/windows.rs | 0 .../bin-shared/src/tun_device_manager.rs | 2 +- .../src/tun_device_manager/linux.rs | 8 +- .../src/tun_device_manager/macos.rs | 0 .../src/tun_device_manager/windows.rs | 4 +- .../bin-shared/src/uptime/README.md | 0 rust/{ => libs}/bin-shared/src/uptime/mod.rs | 0 rust/{ => libs}/bin-shared/src/windows.rs | 10 +- .../bin-shared/src/wintun/README.md | 0 .../src/wintun/bin/amd64/wintun.dll | Bin .../src/wintun/bin/arm64/wintun.dll | Bin .../bin-shared/tests/dns_control_windows.rs | 6 +- .../bin-shared/tests/network_notifiers.rs | 4 +- .../bin-shared/tests/no_packet_loops_tcp.rs | 4 +- .../bin-shared/tests/no_packet_loops_udp.rs | 4 +- .../bin-shared/tests/tunnel_drop.rs | 4 +- rust/{ => libs}/client-shared/Cargo.toml | 4 +- .../{ => libs}/client-shared/src/eventloop.rs | 24 +- rust/{ => libs}/client-shared/src/lib.rs | 4 +- rust/{ => libs}/connlib/README.md | 0 rust/{ => libs}/connlib/bufferpool/Cargo.toml | 0 rust/{ => libs}/connlib/bufferpool/lib.rs | 0 .../connlib/dns-over-tcp/Cargo.toml | 4 +- .../connlib/dns-over-tcp/src/client.rs | 0 .../connlib/dns-over-tcp/src/codec.rs | 0 .../connlib/dns-over-tcp/src/lib.rs | 0 .../connlib/dns-over-tcp/src/server.rs | 0 .../dns-over-tcp/tests/client_and_server.rs | 4 +- .../dns-over-tcp/tests/smoke_server.rs | 4 +- rust/{ => libs}/connlib/dns-types/Cargo.toml | 0 rust/{ => libs}/connlib/dns-types/lib.rs | 0 .../connlib/etherparse-ext/Cargo.toml | 0 .../src/icmpv4_header_slice_mut.rs | 0 .../src/icmpv6_header_slice_mut.rs | 0 .../src/ipv4_header_slice_mut.rs | 0 .../src/ipv6_header_slice_mut.rs | 0 .../connlib/etherparse-ext/src/lib.rs | 0 .../connlib/etherparse-ext/src/slice_utils.rs | 0 .../src/tcp_header_slice_mut.rs | 0 .../src/udp_header_slice_mut.rs | 0 rust/{ => libs}/connlib/ip-packet/Cargo.toml | 0 .../proptest-regressions/proptests.txt | 0 .../connlib/ip-packet/src/fz_p2p_control.rs | 0 .../ip-packet/src/fz_p2p_control_slice.rs | 0 .../connlib/ip-packet/src/icmp_error.rs | 0 rust/{ => libs}/connlib/ip-packet/src/lib.rs | 0 rust/{ => libs}/connlib/ip-packet/src/make.rs | 0 .../connlib/ip-packet/src/proptest.rs | 0 rust/{ => libs}/connlib/l3-tcp/Cargo.toml | 0 .../connlib/l3-tcp/src/interface.rs | 0 rust/{ => libs}/connlib/l3-tcp/src/lib.rs | 0 .../connlib/l3-tcp/src/stub_device.rs | 0 .../connlib/l3-udp-dns-client/Cargo.toml | 0 .../connlib/l3-udp-dns-client/lib.rs | 0 .../connlib/l4-tcp-dns-server/Cargo.toml | 0 .../connlib/l4-tcp-dns-server/lib.rs | 0 .../connlib/l4-udp-dns-client/Cargo.toml | 0 .../connlib/l4-udp-dns-client/lib.rs | 0 .../connlib/l4-udp-dns-server/Cargo.toml | 0 .../connlib/l4-udp-dns-server/lib.rs | 0 rust/{ => libs}/connlib/model/Cargo.toml | 0 rust/{ => libs}/connlib/model/src/lib.rs | 0 rust/{ => libs}/connlib/model/src/view.rs | 0 .../connlib/phoenix-channel/Cargo.toml | 2 +- .../phoenix-channel/src/get_user_agent.rs | 0 .../connlib/phoenix-channel/src/lib.rs | 2 +- .../connlib/phoenix-channel/src/login_url.rs | 0 .../connlib/phoenix-channel/tests/lib.rs | 2 +- rust/{ => libs}/connlib/snownet/Cargo.toml | 4 +- rust/{ => libs}/connlib/snownet/README.md | 0 .../connlib/snownet/src/allocation.rs | 8 +- .../{ => libs}/connlib/snownet/src/backoff.rs | 0 .../connlib/snownet/src/channel_data.rs | 0 rust/{ => libs}/connlib/snownet/src/index.rs | 0 rust/{ => libs}/connlib/snownet/src/lib.rs | 0 rust/{ => libs}/connlib/snownet/src/node.rs | 0 .../connlib/snownet/src/node/allocations.rs | 0 .../connlib/snownet/src/node/connections.rs | 0 rust/{ => libs}/connlib/snownet/src/stats.rs | 0 rust/{ => libs}/connlib/snownet/src/utils.rs | 0 .../connlib/socket-factory/Cargo.toml | 2 +- .../connlib/socket-factory/src/lib.rs | 4 +- rust/{ => libs}/connlib/tun/Cargo.toml | 0 rust/{ => libs}/connlib/tun/src/ioctl.rs | 0 rust/{ => libs}/connlib/tun/src/lib.rs | 0 rust/{ => libs}/connlib/tun/src/unix.rs | 0 rust/{ => libs}/connlib/tunnel/.gitignore | 0 rust/{ => libs}/connlib/tunnel/Cargo.toml | 6 +- rust/libs/connlib/tunnel/benches/divan.rs | 5 + .../tunnel/proptest-regressions/client.txt | 0 .../gateway/nat_table.txt | 0 .../tunnel/proptest-regressions/peer.txt | 0 .../tunnel/proptest-regressions/tests.txt | 0 rust/{ => libs}/connlib/tunnel/src/client.rs | 6 +- .../connlib/tunnel/src/client/dns_cache.rs | 0 .../connlib/tunnel/src/client/dns_config.rs | 0 .../tunnel/src/client/dns_resource_nat.rs | 0 .../tunnel/src/client/gateway_on_client.rs | 0 .../tunnel/src/client/pending_tun_update.rs | 0 .../connlib/tunnel/src/client/resource.rs | 0 .../connlib/tunnel/src/device_channel.rs | 0 rust/{ => libs}/connlib/tunnel/src/dns.rs | 2 +- .../connlib/tunnel/src/expiring_map.rs | 0 rust/{ => libs}/connlib/tunnel/src/gateway.rs | 0 .../tunnel/src/gateway/client_on_gateway.rs | 6 +- .../tunnel/src/gateway/filter_engine.rs | 0 .../tunnel/src/gateway/flow_tracker.rs | 0 .../connlib/tunnel/src/gateway/nat_table.rs | 2 +- .../tunnel/src/gateway/unroutable_packet.rs | 0 rust/{ => libs}/connlib/tunnel/src/io.rs | 2 +- rust/{ => libs}/connlib/tunnel/src/io/doh.rs | 0 .../connlib/tunnel/src/io/gso_queue.rs | 0 .../connlib/tunnel/src/io/nameserver_set.rs | 4 +- .../connlib/tunnel/src/io/tcp_dns.rs | 0 .../connlib/tunnel/src/io/udp_dns.rs | 0 rust/{ => libs}/connlib/tunnel/src/lib.rs | 2 +- .../{ => libs}/connlib/tunnel/src/messages.rs | 0 .../connlib/tunnel/src/messages/client.rs | 0 .../connlib/tunnel/src/messages/gateway.rs | 0 .../connlib/tunnel/src/messages/key.rs | 0 rust/{ => libs}/connlib/tunnel/src/otel.rs | 4 +- .../connlib/tunnel/src/p2p_control.rs | 0 .../connlib/tunnel/src/packet_kind.rs | 0 .../connlib/tunnel/src/peer_store.rs | 0 .../{ => libs}/connlib/tunnel/src/proptest.rs | 0 rust/{ => libs}/connlib/tunnel/src/sockets.rs | 0 rust/{ => libs}/connlib/tunnel/src/tests.rs | 3 +- .../connlib/tunnel/src/tests/assertions.rs | 0 .../tunnel/src/tests/buffered_transmits.rs | 0 .../tunnel/src/tests/composite_strategy.rs | 0 .../connlib/tunnel/src/tests/dns_records.rs | 0 .../tunnel/src/tests/dns_server_resource.rs | 0 .../tunnel/src/tests/flux_capacitor.rs | 0 .../tunnel/src/tests/icmp_error_hosts.rs | 0 .../connlib/tunnel/src/tests/reference.rs | 0 .../connlib/tunnel/src/tests/sim_client.rs | 0 .../connlib/tunnel/src/tests/sim_gateway.rs | 0 .../connlib/tunnel/src/tests/sim_net.rs | 0 .../connlib/tunnel/src/tests/sim_relay.rs | 0 .../connlib/tunnel/src/tests/strategies.rs | 0 .../connlib/tunnel/src/tests/stub_portal.rs | 0 .../connlib/tunnel/src/tests/sut.rs | 0 .../connlib/tunnel/src/tests/tcp.rs | 0 .../connlib/tunnel/src/tests/transition.rs | 0 .../tunnel/src/unique_packet_buffer.rs | 0 rust/{ => libs}/connlib/tunnel/src/utils.rs | 0 rust/{connlib => libs}/http-client/Cargo.toml | 0 rust/{connlib => libs}/http-client/lib.rs | 0 rust/{ => libs}/logging/Cargo.toml | 4 +- rust/{ => libs}/logging/src/ansi.rs | 0 .../logging/src/capturing_writer.rs | 0 .../logging/src/display_btree_set.rs | 0 .../logging/src/err_with_sources.rs | 0 .../src/event_message_contains_filter.rs | 0 rust/{ => libs}/logging/src/file.rs | 0 rust/{ => libs}/logging/src/format.rs | 0 rust/{ => libs}/logging/src/lib.rs | 2 +- rust/{ => libs}/logging/src/unwrap_or.rs | 0 rust/{ => libs}/telemetry/Cargo.toml | 2 +- rust/{ => libs}/telemetry/src/analytics.rs | 0 rust/{ => libs}/telemetry/src/api_url.rs | 0 .../{ => libs}/telemetry/src/feature_flags.rs | 0 rust/{ => libs}/telemetry/src/lib.rs | 0 .../src/maybe_push_metrics_exporter.rs | 0 .../src/noop_push_metrics_exporter.rs | 0 rust/{ => libs}/telemetry/src/otel.rs | 0 rust/{ => libs}/telemetry/src/posthog.rs | 0 rust/relay/server/Cargo.toml | 6 +- rust/relay/server/src/control_endpoint.rs | 2 +- rust/relay/server/src/main.rs | 16 +- rust/relay/server/src/server.rs | 2 +- rust/relay/server/tests/regression.rs | 10 +- 239 files changed, 482 insertions(+), 670 deletions(-) delete mode 100644 rust/connlib/.gitignore delete mode 100644 rust/connlib/tunnel/benches/divan.rs rename rust/{ => libs}/anyhow-ext/Cargo.toml (100%) rename rust/{ => libs}/anyhow-ext/lib.rs (100%) rename rust/{ => libs}/bin-shared/Cargo.toml (96%) rename rust/{ => libs}/bin-shared/src/device_id.rs (99%) rename rust/{ => libs}/bin-shared/src/device_info.rs (100%) rename rust/{ => libs}/bin-shared/src/dns_control.rs (100%) rename rust/{ => libs}/bin-shared/src/dns_control/linux.rs (100%) rename rust/{ => libs}/bin-shared/src/dns_control/linux/etc_resolv_conf.rs (100%) rename rust/{ => libs}/bin-shared/src/dns_control/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/dns_control/windows.rs (100%) rename rust/{ => libs}/bin-shared/src/http_health_check.rs (100%) rename rust/{ => libs}/bin-shared/src/known_dirs.rs (100%) rename rust/{ => libs}/bin-shared/src/known_dirs/linux.rs (100%) rename rust/{ => libs}/bin-shared/src/known_dirs/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/known_dirs/windows.rs (100%) rename rust/{ => libs}/bin-shared/src/lib.rs (100%) rename rust/{ => libs}/bin-shared/src/linux.rs (100%) rename rust/{ => libs}/bin-shared/src/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/network_changes.rs (100%) rename rust/{ => libs}/bin-shared/src/network_changes/linux.rs (100%) rename rust/{ => libs}/bin-shared/src/network_changes/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/network_changes/windows.rs (100%) rename rust/{ => libs}/bin-shared/src/signals.rs (100%) rename rust/{ => libs}/bin-shared/src/signals/linux.rs (100%) rename rust/{ => libs}/bin-shared/src/signals/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/signals/windows.rs (100%) rename rust/{ => libs}/bin-shared/src/tun_device_manager.rs (95%) rename rust/{ => libs}/bin-shared/src/tun_device_manager/linux.rs (99%) rename rust/{ => libs}/bin-shared/src/tun_device_manager/macos.rs (100%) rename rust/{ => libs}/bin-shared/src/tun_device_manager/windows.rs (99%) rename rust/{ => libs}/bin-shared/src/uptime/README.md (100%) rename rust/{ => libs}/bin-shared/src/uptime/mod.rs (100%) rename rust/{ => libs}/bin-shared/src/windows.rs (97%) rename rust/{ => libs}/bin-shared/src/wintun/README.md (100%) rename rust/{ => libs}/bin-shared/src/wintun/bin/amd64/wintun.dll (100%) rename rust/{ => libs}/bin-shared/src/wintun/bin/arm64/wintun.dll (100%) rename rust/{ => libs}/bin-shared/tests/dns_control_windows.rs (88%) rename rust/{ => libs}/bin-shared/tests/network_notifiers.rs (92%) rename rust/{ => libs}/bin-shared/tests/no_packet_loops_tcp.rs (88%) rename rust/{ => libs}/bin-shared/tests/no_packet_loops_udp.rs (91%) rename rust/{ => libs}/bin-shared/tests/tunnel_drop.rs (78%) rename rust/{ => libs}/client-shared/Cargo.toml (93%) rename rust/{ => libs}/client-shared/src/eventloop.rs (97%) rename rust/{ => libs}/client-shared/src/lib.rs (97%) rename rust/{ => libs}/connlib/README.md (100%) rename rust/{ => libs}/connlib/bufferpool/Cargo.toml (100%) rename rust/{ => libs}/connlib/bufferpool/lib.rs (100%) rename rust/{ => libs}/connlib/dns-over-tcp/Cargo.toml (88%) rename rust/{ => libs}/connlib/dns-over-tcp/src/client.rs (100%) rename rust/{ => libs}/connlib/dns-over-tcp/src/codec.rs (100%) rename rust/{ => libs}/connlib/dns-over-tcp/src/lib.rs (100%) rename rust/{ => libs}/connlib/dns-over-tcp/src/server.rs (100%) rename rust/{ => libs}/connlib/dns-over-tcp/tests/client_and_server.rs (98%) rename rust/{ => libs}/connlib/dns-over-tcp/tests/smoke_server.rs (96%) rename rust/{ => libs}/connlib/dns-types/Cargo.toml (100%) rename rust/{ => libs}/connlib/dns-types/lib.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/Cargo.toml (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/icmpv4_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/icmpv6_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/ipv4_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/ipv6_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/lib.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/slice_utils.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/tcp_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/etherparse-ext/src/udp_header_slice_mut.rs (100%) rename rust/{ => libs}/connlib/ip-packet/Cargo.toml (100%) rename rust/{ => libs}/connlib/ip-packet/proptest-regressions/proptests.txt (100%) rename rust/{ => libs}/connlib/ip-packet/src/fz_p2p_control.rs (100%) rename rust/{ => libs}/connlib/ip-packet/src/fz_p2p_control_slice.rs (100%) rename rust/{ => libs}/connlib/ip-packet/src/icmp_error.rs (100%) rename rust/{ => libs}/connlib/ip-packet/src/lib.rs (100%) rename rust/{ => libs}/connlib/ip-packet/src/make.rs (100%) rename rust/{ => libs}/connlib/ip-packet/src/proptest.rs (100%) rename rust/{ => libs}/connlib/l3-tcp/Cargo.toml (100%) rename rust/{ => libs}/connlib/l3-tcp/src/interface.rs (100%) rename rust/{ => libs}/connlib/l3-tcp/src/lib.rs (100%) rename rust/{ => libs}/connlib/l3-tcp/src/stub_device.rs (100%) rename rust/{ => libs}/connlib/l3-udp-dns-client/Cargo.toml (100%) rename rust/{ => libs}/connlib/l3-udp-dns-client/lib.rs (100%) rename rust/{ => libs}/connlib/l4-tcp-dns-server/Cargo.toml (100%) rename rust/{ => libs}/connlib/l4-tcp-dns-server/lib.rs (100%) rename rust/{ => libs}/connlib/l4-udp-dns-client/Cargo.toml (100%) rename rust/{ => libs}/connlib/l4-udp-dns-client/lib.rs (100%) rename rust/{ => libs}/connlib/l4-udp-dns-server/Cargo.toml (100%) rename rust/{ => libs}/connlib/l4-udp-dns-server/lib.rs (100%) rename rust/{ => libs}/connlib/model/Cargo.toml (100%) rename rust/{ => libs}/connlib/model/src/lib.rs (100%) rename rust/{ => libs}/connlib/model/src/view.rs (100%) rename rust/{ => libs}/connlib/phoenix-channel/Cargo.toml (97%) rename rust/{ => libs}/connlib/phoenix-channel/src/get_user_agent.rs (100%) rename rust/{ => libs}/connlib/phoenix-channel/src/lib.rs (99%) rename rust/{ => libs}/connlib/phoenix-channel/src/login_url.rs (100%) rename rust/{ => libs}/connlib/phoenix-channel/tests/lib.rs (98%) rename rust/{ => libs}/connlib/snownet/Cargo.toml (90%) rename rust/{ => libs}/connlib/snownet/README.md (100%) rename rust/{ => libs}/connlib/snownet/src/allocation.rs (99%) rename rust/{ => libs}/connlib/snownet/src/backoff.rs (100%) rename rust/{ => libs}/connlib/snownet/src/channel_data.rs (100%) rename rust/{ => libs}/connlib/snownet/src/index.rs (100%) rename rust/{ => libs}/connlib/snownet/src/lib.rs (100%) rename rust/{ => libs}/connlib/snownet/src/node.rs (100%) rename rust/{ => libs}/connlib/snownet/src/node/allocations.rs (100%) rename rust/{ => libs}/connlib/snownet/src/node/connections.rs (100%) rename rust/{ => libs}/connlib/snownet/src/stats.rs (100%) rename rust/{ => libs}/connlib/snownet/src/utils.rs (100%) rename rust/{ => libs}/connlib/socket-factory/Cargo.toml (95%) rename rust/{ => libs}/connlib/socket-factory/src/lib.rs (99%) rename rust/{ => libs}/connlib/tun/Cargo.toml (100%) rename rust/{ => libs}/connlib/tun/src/ioctl.rs (100%) rename rust/{ => libs}/connlib/tun/src/lib.rs (100%) rename rust/{ => libs}/connlib/tun/src/unix.rs (100%) rename rust/{ => libs}/connlib/tunnel/.gitignore (100%) rename rust/{ => libs}/connlib/tunnel/Cargo.toml (96%) create mode 100644 rust/libs/connlib/tunnel/benches/divan.rs rename rust/{ => libs}/connlib/tunnel/proptest-regressions/client.txt (100%) rename rust/{ => libs}/connlib/tunnel/proptest-regressions/gateway/nat_table.txt (100%) rename rust/{ => libs}/connlib/tunnel/proptest-regressions/peer.txt (100%) rename rust/{ => libs}/connlib/tunnel/proptest-regressions/tests.txt (100%) rename rust/{ => libs}/connlib/tunnel/src/client.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/client/dns_cache.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/client/dns_config.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/client/dns_resource_nat.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/client/gateway_on_client.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/client/pending_tun_update.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/client/resource.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/device_channel.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/dns.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/expiring_map.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/gateway.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/gateway/client_on_gateway.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/gateway/filter_engine.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/gateway/flow_tracker.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/gateway/nat_table.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/gateway/unroutable_packet.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/io.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/io/doh.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/io/gso_queue.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/io/nameserver_set.rs (98%) rename rust/{ => libs}/connlib/tunnel/src/io/tcp_dns.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/io/udp_dns.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/lib.rs (99%) rename rust/{ => libs}/connlib/tunnel/src/messages.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/messages/client.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/messages/gateway.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/messages/key.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/otel.rs (72%) rename rust/{ => libs}/connlib/tunnel/src/p2p_control.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/packet_kind.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/peer_store.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/proptest.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/sockets.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests.rs (98%) rename rust/{ => libs}/connlib/tunnel/src/tests/assertions.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/buffered_transmits.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/composite_strategy.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/dns_records.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/dns_server_resource.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/flux_capacitor.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/icmp_error_hosts.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/reference.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/sim_client.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/sim_gateway.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/sim_net.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/sim_relay.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/strategies.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/stub_portal.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/sut.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/tcp.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/tests/transition.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/unique_packet_buffer.rs (100%) rename rust/{ => libs}/connlib/tunnel/src/utils.rs (100%) rename rust/{connlib => libs}/http-client/Cargo.toml (100%) rename rust/{connlib => libs}/http-client/lib.rs (100%) rename rust/{ => libs}/logging/Cargo.toml (92%) rename rust/{ => libs}/logging/src/ansi.rs (100%) rename rust/{ => libs}/logging/src/capturing_writer.rs (100%) rename rust/{ => libs}/logging/src/display_btree_set.rs (100%) rename rust/{ => libs}/logging/src/err_with_sources.rs (100%) rename rust/{ => libs}/logging/src/event_message_contains_filter.rs (100%) rename rust/{ => libs}/logging/src/file.rs (100%) rename rust/{ => libs}/logging/src/format.rs (100%) rename rust/{ => libs}/logging/src/lib.rs (99%) rename rust/{ => libs}/logging/src/unwrap_or.rs (100%) rename rust/{ => libs}/telemetry/Cargo.toml (97%) rename rust/{ => libs}/telemetry/src/analytics.rs (100%) rename rust/{ => libs}/telemetry/src/api_url.rs (100%) rename rust/{ => libs}/telemetry/src/feature_flags.rs (100%) rename rust/{ => libs}/telemetry/src/lib.rs (100%) rename rust/{ => libs}/telemetry/src/maybe_push_metrics_exporter.rs (100%) rename rust/{ => libs}/telemetry/src/noop_push_metrics_exporter.rs (100%) rename rust/{ => libs}/telemetry/src/otel.rs (100%) rename rust/{ => libs}/telemetry/src/posthog.rs (100%) diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml index 5cf0fff7f..01b8e8289 100644 --- a/.github/actions/setup-rust/action.yml +++ b/.github/actions/setup-rust/action.yml @@ -15,7 +15,7 @@ outputs: value: ${{ (runner.os == 'Linux' && '--help') || (runner.os == 'macOS' && '--help') || - (runner.os == 'Windows' && '-p firezone-bin-shared') }} + (runner.os == 'Windows' && '-p bin-shared') }} compile-packages: description: Compilable packages for the current OS value: ${{ @@ -26,7 +26,7 @@ outputs: description: Testable packages for the current OS value: ${{ (runner.os == 'Linux' && '--workspace') || - (runner.os == 'macOS' && '--workspace --exclude firezone-bin-shared --exclude firezone-gui-client') || + (runner.os == 'macOS' && '--workspace --exclude bin-shared --exclude firezone-gui-client') || (runner.os == 'Windows' && '--workspace --exclude client-ffi') }} nightly_version: description: The nightly version of Rust diff --git a/.github/workflows/_rust.yml b/.github/workflows/_rust.yml index ea7beec19..ce86d1377 100644 --- a/.github/workflows/_rust.yml +++ b/.github/workflows/_rust.yml @@ -142,7 +142,7 @@ jobs: PROPTEST_VERBOSE: 0 # Otherwise the output is very long. PROPTEST_CASES: ${{ runner.os == 'Windows' && '0' || '256' }} # Default is only 256. Windows is very slow in GitHub Actions, so only run the regression cases there. CARGO_PROFILE_TEST_OPT_LEVEL: 1 # Otherwise the tests take forever. - TESTCASES_DIR: "connlib/tunnel/testcases" + TESTCASES_DIR: "libs/connlib/tunnel/testcases" fuzz: name: fuzz diff --git a/docs/AGENT.md b/docs/AGENT.md index ce6faa758..4bc0d4095 100644 --- a/docs/AGENT.md +++ b/docs/AGENT.md @@ -8,16 +8,16 @@ The control plane components are built in Elixir and reside in `elixir/`. ## Data plane architecture -At the core of the data plane resides a shared library called [`connlib`](../rust/connlib). +At the core of the data plane resides a shared library called [`connlib`](../rust/libs/connlib). It combines ICE (using the `str0m` library) and WireGuard (using the `boringtun` library) to establish on-the-fly tunnels between Clients and Gateways. -The entry-point for the data plane is [`Tunnel`](../rust/connlib/tunnel) which acts as a big event-loop combining three components: +The entry-point for the data plane is [`Tunnel`](../rust/libs/connlib/tunnel) which acts as a big event-loop combining three components: - A platform-specific TUN device - A sans-IO state component representing either the Client or the Gateway - A platform-specific UDP socket Packets from IO sources (TUN device and UDP socket) are passed to the state component, resulting in a UDP or IP packet. -The state component also manages ICE through the [`snownet`](../rust/connlib/snownet) library, so some UDP traffic is handled internally and does not yield an IP packet. +The state component also manages ICE through the [`snownet`](../rust/libs/connlib/snownet) library, so some UDP traffic is handled internally and does not yield an IP packet. These three components are split into multiple threads and connected via bounded channels: diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 1aea44f6a..92056494a 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -829,6 +829,59 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" +[[package]] +name = "bin-shared" +version = "0.1.0" +dependencies = [ + "anyhow-ext", + "atomicwrites", + "axum", + "bufferpool", + "bytes", + "clap", + "dashmap", + "dirs", + "dns-types", + "futures", + "gat-lending-iterator", + "hex", + "hex-literal", + "hmac", + "ip-packet", + "ip_network", + "ipconfig", + "itertools 0.14.0", + "known-folders", + "libc", + "logging", + "mutants", + "netlink-packet-core", + "netlink-packet-route", + "nix 0.30.1", + "resolv-conf", + "ring", + "rtnetlink", + "serde", + "serde_json", + "sha2", + "smbios-lib", + "socket-factory", + "telemetry", + "tempfile", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tracing", + "tun", + "uuid", + "windows", + "windows-core", + "windows-implement", + "winreg 0.55.0", + "wintun", + "zbus 5.12.0", +] + [[package]] name = "bit-set" version = "0.8.0" @@ -1306,20 +1359,20 @@ dependencies = [ "client-shared", "connlib-model", "dns-types", - "firezone-logging", - "firezone-telemetry", "flume", "futures", "ip-packet", "ip_network", "libc", "log", + "logging", "oslog", "phoenix-channel", "rustls", "secrecy", "serde_json", "socket-factory", + "telemetry", "thiserror 2.0.17", "tokio", "tokio-util", @@ -1341,12 +1394,11 @@ dependencies = [ "chrono", "connlib-model", "dns-types", - "firezone-logging", - "firezone-tunnel", "futures", "ip_network", "l4-udp-dns-client", "libc", + "logging", "parking_lot", "phoenix-channel", "secrecy", @@ -1360,6 +1412,7 @@ dependencies = [ "tokio-stream", "tracing", "tun", + "tunnel", "url", ] @@ -2052,13 +2105,13 @@ name = "dns-over-tcp" version = "0.1.0" dependencies = [ "anyhow-ext", + "bin-shared", "dns-types", - "firezone-bin-shared", - "firezone-logging", "futures", "ip-packet", "ip_network", "l3-tcp", + "logging", "rand 0.8.5", "tokio", "tracing", @@ -2356,59 +2409,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "firezone-bin-shared" -version = "0.1.0" -dependencies = [ - "anyhow-ext", - "atomicwrites", - "axum", - "bufferpool", - "bytes", - "clap", - "dashmap", - "dirs", - "dns-types", - "firezone-logging", - "firezone-telemetry", - "futures", - "gat-lending-iterator", - "hex", - "hex-literal", - "hmac", - "ip-packet", - "ip_network", - "ipconfig", - "itertools 0.14.0", - "known-folders", - "libc", - "mutants", - "netlink-packet-core", - "netlink-packet-route", - "nix 0.30.1", - "resolv-conf", - "ring", - "rtnetlink", - "serde", - "serde_json", - "sha2", - "smbios-lib", - "socket-factory", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tokio-util", - "tracing", - "tun", - "uuid", - "windows", - "windows-core", - "windows-implement", - "winreg 0.55.0", - "wintun", - "zbus 5.12.0", -] - [[package]] name = "firezone-cli" version = "1.0.0" @@ -2428,6 +2428,7 @@ version = "1.4.19" dependencies = [ "anyhow-ext", "backoff", + "bin-shared", "boringtun", "caps", "chrono", @@ -2436,16 +2437,13 @@ dependencies = [ "dns-lookup", "dns-types", "either", - "firezone-bin-shared", - "firezone-logging", - "firezone-telemetry", - "firezone-tunnel", "futures", "futures-bounded", "hickory-resolver", "ip-packet", "ip_network", "libc", + "logging", "moka", "nix 0.30.1", "opentelemetry", @@ -2461,12 +2459,14 @@ dependencies = [ "snownet", "socket-factory", "static_assertions", + "telemetry", "tempfile", "thiserror 2.0.17", "tokio", "tracing", "tracing-subscriber", "tun", + "tunnel", "url", "uuid", ] @@ -2480,20 +2480,19 @@ dependencies = [ "arboard", "atomicwrites", "backoff", + "bin-shared", "chrono", "clap", "client-shared", "connlib-model", "derive_more 2.0.1", "dirs", - "firezone-bin-shared", - "firezone-logging", - "firezone-telemetry", "futures", "hex", "humantime", "ip-packet", "keyring", + "logging", "native-dialog", "nix 0.30.1", "output_vt100", @@ -2523,6 +2522,7 @@ dependencies = [ "tauri-specta", "tauri-utils", "tauri-winrt-notification", + "telemetry", "tempfile", "thiserror 2.0.17", "tokio", @@ -2546,18 +2546,17 @@ version = "1.5.5" dependencies = [ "anyhow-ext", "backoff", + "bin-shared", "clap", "client-shared", "connlib-model", "dns-types", - "firezone-bin-shared", - "firezone-logging", - "firezone-telemetry", "futures", "humantime", "ip-packet", "known-folders", "libc", + "logging", "nix 0.30.1", "opentelemetry", "opentelemetry-otlp", @@ -2568,6 +2567,7 @@ dependencies = [ "sd-notify", "secrecy", "socket-factory", + "telemetry", "tokio", "tokio-stream", "tracing", @@ -2575,26 +2575,6 @@ dependencies = [ "url", ] -[[package]] -name = "firezone-logging" -version = "0.1.0" -dependencies = [ - "anyhow-ext", - "firezone-telemetry", - "nu-ansi-term", - "output_vt100", - "parking_lot", - "sentry-tracing", - "supports-color", - "tempfile", - "thiserror 2.0.17", - "time", - "tracing", - "tracing-appender", - "tracing-log", - "tracing-subscriber", -] - [[package]] name = "firezone-relay" version = "0.1.0" @@ -2606,18 +2586,17 @@ dependencies = [ "aya-log", "backoff", "base64 0.22.1", + "bin-shared", "bytecodec", "bytes", "clap", "derive_more 2.0.1", "difference", "ebpf-shared", - "firezone-bin-shared", - "firezone-logging", - "firezone-telemetry", "futures", "hex", "hex-display", + "logging", "mio", "once_cell", "opentelemetry", @@ -2634,6 +2613,7 @@ dependencies = [ "socket-factory", "socket2 0.6.1", "stun_codec", + "telemetry", "test-strategy", "thiserror 2.0.17", "tokio", @@ -2647,93 +2627,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "firezone-telemetry" -version = "0.1.0" -dependencies = [ - "anyhow-ext", - "flume", - "futures", - "hex", - "ip-packet", - "moka", - "opentelemetry", - "opentelemetry_sdk", - "parking_lot", - "reqwest", - "sentry", - "serde", - "serde_json", - "sha2", - "thiserror 2.0.17", - "tokio", - "tracing", - "tracing-subscriber", - "uuid", -] - -[[package]] -name = "firezone-tunnel" -version = "0.1.0" -dependencies = [ - "anyhow-ext", - "base64 0.22.1", - "bimap", - "boringtun", - "bufferpool", - "bytes", - "chrono", - "connlib-model", - "derive_more 2.0.1", - "divan", - "dns-over-tcp", - "dns-types", - "firezone-logging", - "firezone-relay", - "firezone-telemetry", - "flume", - "futures", - "futures-bounded", - "gat-lending-iterator", - "glob", - "hex", - "http-client", - "ip-packet", - "ip_network", - "ip_network_table", - "itertools 0.14.0", - "l3-tcp", - "l3-udp-dns-client", - "l4-tcp-dns-server", - "l4-udp-dns-client", - "l4-udp-dns-server", - "lru", - "opentelemetry", - "proptest", - "proptest-state-machine", - "rand 0.8.5", - "rangemap", - "ringbuffer", - "secrecy", - "serde", - "serde_json", - "serde_with", - "sha2", - "snownet", - "socket-factory", - "socket2 0.6.1", - "test-case", - "test-strategy", - "thiserror 2.0.17", - "tokio", - "tokio-util", - "tracing", - "tracing-subscriber", - "tun", - "url", - "uuid", -] - [[package]] name = "flate2" version = "1.1.1" @@ -4373,6 +4266,26 @@ version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +[[package]] +name = "logging" +version = "0.1.0" +dependencies = [ + "anyhow-ext", + "nu-ansi-term", + "output_vt100", + "parking_lot", + "sentry-tracing", + "supports-color", + "telemetry", + "tempfile", + "thiserror 2.0.17", + "time", + "tracing", + "tracing-appender", + "tracing-log", + "tracing-subscriber", +] + [[package]] name = "lru" version = "0.16.2" @@ -5503,12 +5416,12 @@ dependencies = [ "anyhow-ext", "backoff", "base64 0.22.1", - "firezone-logging", "futures", "hex", "hostname", "itertools 0.14.0", "libc", + "logging", "os_info", "rand_core 0.6.4", "secrecy", @@ -7087,18 +7000,18 @@ dependencies = [ "bytecodec", "bytes", "derive_more 2.0.1", - "firezone-logging", - "firezone-telemetry", "hex", "hex-display", "ip-packet", "itertools 0.14.0", + "logging", "once_cell", "rand 0.8.5", "ringbuffer", "sha2", "str0m", "stun_codec", + "telemetry", "thiserror 2.0.17", "tracing", ] @@ -7111,13 +7024,13 @@ dependencies = [ "bufferpool", "bytes", "derive_more 2.0.1", - "firezone-telemetry", "gat-lending-iterator", "ip-packet", "libc", "opentelemetry", "quinn-udp", "socket2 0.6.1", + "telemetry", "tokio", "tracing", ] @@ -7895,6 +7808,31 @@ dependencies = [ "windows-version", ] +[[package]] +name = "telemetry" +version = "0.1.0" +dependencies = [ + "anyhow-ext", + "flume", + "futures", + "hex", + "ip-packet", + "moka", + "opentelemetry", + "opentelemetry_sdk", + "parking_lot", + "reqwest", + "sentry", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.17", + "tokio", + "tracing", + "tracing-subscriber", + "uuid", +] + [[package]] name = "tempfile" version = "3.23.0" @@ -8567,6 +8505,68 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tunnel" +version = "0.1.0" +dependencies = [ + "anyhow-ext", + "base64 0.22.1", + "bimap", + "boringtun", + "bufferpool", + "bytes", + "chrono", + "connlib-model", + "derive_more 2.0.1", + "divan", + "dns-over-tcp", + "dns-types", + "firezone-relay", + "flume", + "futures", + "futures-bounded", + "gat-lending-iterator", + "glob", + "hex", + "http-client", + "ip-packet", + "ip_network", + "ip_network_table", + "itertools 0.14.0", + "l3-tcp", + "l3-udp-dns-client", + "l4-tcp-dns-server", + "l4-udp-dns-client", + "l4-udp-dns-server", + "logging", + "lru", + "opentelemetry", + "proptest", + "proptest-state-machine", + "rand 0.8.5", + "rangemap", + "ringbuffer", + "secrecy", + "serde", + "serde_json", + "serde_with", + "sha2", + "snownet", + "socket-factory", + "socket2 0.6.1", + "telemetry", + "test-case", + "test-strategy", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tracing", + "tracing-subscriber", + "tun", + "url", + "uuid", +] + [[package]] name = "typeid" version = "1.0.3" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index e4e900c50..797210d72 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,36 +1,36 @@ [workspace] members = [ - "anyhow-ext", - "bin-shared", "cli", "client-ffi", - "client-shared", - "connlib/bufferpool", - "connlib/dns-over-tcp", - "connlib/dns-types", - "connlib/etherparse-ext", - "connlib/http-client", - "connlib/ip-packet", - "connlib/l3-tcp", - "connlib/l3-udp-dns-client", - "connlib/l4-tcp-dns-server", - "connlib/l4-udp-dns-client", - "connlib/l4-udp-dns-server", - "connlib/model", - "connlib/phoenix-channel", - "connlib/snownet", - "connlib/socket-factory", - "connlib/tun", - "connlib/tunnel", "gateway", "gui-client/src-admx-macro", "gui-client/src-tauri", "headless-client", - "logging", + "libs/anyhow-ext", + "libs/bin-shared", + "libs/client-shared", + "libs/connlib/bufferpool", + "libs/connlib/dns-over-tcp", + "libs/connlib/dns-types", + "libs/connlib/etherparse-ext", + "libs/connlib/ip-packet", + "libs/connlib/l3-tcp", + "libs/connlib/l3-udp-dns-client", + "libs/connlib/l4-tcp-dns-server", + "libs/connlib/l4-udp-dns-client", + "libs/connlib/l4-udp-dns-server", + "libs/connlib/model", + "libs/connlib/phoenix-channel", + "libs/connlib/snownet", + "libs/connlib/socket-factory", + "libs/connlib/tun", + "libs/connlib/tunnel", + "libs/http-client", + "libs/logging", + "libs/telemetry", "relay/ebpf-shared", "relay/ebpf-turn-router", "relay/server", - "telemetry", "tests/fuzz", "tests/gui-smoke-test", "tests/http-test-server", @@ -45,7 +45,7 @@ edition = "2024" [workspace.dependencies] admx-macro = { path = "gui-client/src-admx-macro" } -anyhow = { package = "anyhow-ext", path = "anyhow-ext" } +anyhow = { package = "anyhow-ext", path = "libs/anyhow-ext" } arbitrary = "1.4.2" arboard = { version = "3.6.1", default-features = false } async-trait = { version = "0.1", default-features = false } @@ -59,16 +59,17 @@ aya-log-ebpf = { git = "https://github.com/aya-rs/aya" } backoff = { version = "0.4", features = ["tokio"] } base64 = { version = "0.22.1", default-features = false } bimap = "0.6" +bin-shared = { path = "libs/bin-shared" } bnum = "0.13.0" boringtun = { version = "0.6", default-features = false } -bufferpool = { path = "connlib/bufferpool" } +bufferpool = { path = "libs/connlib/bufferpool" } bytecodec = "0.5.0" bytes = { version = "1.9.0", default-features = false } caps = "0.5.6" chrono = { version = "0.4", default-features = false, features = ["std", "clock", "oldtime", "serde"] } clap = "4.5.50" -client-shared = { path = "client-shared" } -connlib-model = { path = "connlib/model" } +client-shared = { path = "libs/client-shared" } +connlib-model = { path = "libs/connlib/model" } crossbeam-queue = "0.3.12" dashmap = "6.1.0" derive_more = { version = "2.0.1", default-features = false } @@ -76,18 +77,14 @@ difference = "2.0.0" dirs = "6.0.0" divan = "0.1.21" dns-lookup = "3.0" -dns-over-tcp = { path = "connlib/dns-over-tcp" } -dns-types = { path = "connlib/dns-types" } +dns-over-tcp = { path = "libs/connlib/dns-over-tcp" } +dns-types = { path = "libs/connlib/dns-types" } ebpf-shared = { path = "relay/ebpf-shared" } either = "1" etherparse = { version = "0.19", default-features = false } -etherparse-ext = { path = "connlib/etherparse-ext" } -firezone-bin-shared = { path = "bin-shared" } +etherparse-ext = { path = "libs/connlib/etherparse-ext" } firezone-headless-client = { path = "headless-client" } -firezone-logging = { path = "logging" } firezone-relay = { path = "relay/server" } -firezone-telemetry = { path = "telemetry" } -firezone-tunnel = { path = "connlib/tunnel" } flume = { version = "0.11.1", features = ["async"] } futures = { version = "0.3.31" } futures-bounded = "0.3.0" @@ -100,25 +97,26 @@ hickory-resolver = "0.25.2" hmac = "0.12.1" http = "1.3.1" http-body-util = "0.1.3" -http-client = { path = "connlib/http-client" } +http-client = { path = "libs/http-client" } humantime = "2.3" hyper = "1.7.0" hyper-util = "0.1.17" -ip-packet = { path = "connlib/ip-packet" } +ip-packet = { path = "libs/connlib/ip-packet" } ip_network = { version = "0.4", default-features = false } ip_network_table = { version = "0.2", default-features = false } itertools = "0.14" jni = "0.21.1" keyring = "3.6.3" known-folders = "1.4.0" -l3-tcp = { path = "connlib/l3-tcp" } -l3-udp-dns-client = { path = "connlib/l3-udp-dns-client" } -l4-tcp-dns-server = { path = "connlib/l4-tcp-dns-server" } -l4-udp-dns-client = { path = "connlib/l4-udp-dns-client" } -l4-udp-dns-server = { path = "connlib/l4-udp-dns-server" } +l3-tcp = { path = "libs/connlib/l3-tcp" } +l3-udp-dns-client = { path = "libs/connlib/l3-udp-dns-client" } +l4-tcp-dns-server = { path = "libs/connlib/l4-tcp-dns-server" } +l4-udp-dns-client = { path = "libs/connlib/l4-udp-dns-client" } +l4-udp-dns-server = { path = "libs/connlib/l4-udp-dns-server" } libc = "0.2.176" libfuzzer-sys = "0.4" log = "0.4" +logging = { path = "libs/logging" } lru = "0.16.1" mio = "1.1.0" moka = "0.12.11" @@ -137,7 +135,7 @@ opentelemetry_sdk = "0.30.0" os_info = { version = "3", default-features = false } output_vt100 = "0.1" parking_lot = "0.12.5" -phoenix-channel = { path = "connlib/phoenix-channel" } +phoenix-channel = { path = "libs/connlib/phoenix-channel" } png = "0.17.16" proc-macro2 = "1.0" proptest = "1.9.0" @@ -169,8 +167,8 @@ sha2 = "0.10.9" smallvec = "1.15.1" smbios-lib = "0.9.2" smoltcp = { version = "0.12", default-features = false } -snownet = { path = "connlib/snownet" } -socket-factory = { path = "connlib/socket-factory" } +snownet = { path = "libs/connlib/snownet" } +socket-factory = { path = "libs/connlib/socket-factory" } socket2 = { version = "0.6" } specta = "=2.0.0-rc.22" specta-typescript = "0.0.9" @@ -193,6 +191,7 @@ tauri-plugin-shell = "2.3.1" tauri-runtime = "2.7.1" tauri-specta = { version = "=2.0.0-rc.21", features = ["derive", "typescript"] } tauri-utils = "2.2.0" +telemetry = { path = "libs/telemetry" } tempfile = "3.23.0" test-case = "3.3.1" test-strategy = "0.4.3" @@ -213,7 +212,8 @@ tracing-opentelemetry = "0.31.0" tracing-stackdriver = "0.12.0" tracing-subscriber = { version = "0.3.20", features = ["parking_lot"] } trackable = "1.3.0" -tun = { path = "connlib/tun" } +tun = { path = "libs/connlib/tun" } +tunnel = { path = "libs/connlib/tunnel" } uniffi = "0.29.4" url = "2.5.2" uuid = "1.18.1" diff --git a/rust/client-ffi/Cargo.toml b/rust/client-ffi/Cargo.toml index ae79d819d..4a681abb7 100644 --- a/rust/client-ffi/Cargo.toml +++ b/rust/client-ffi/Cargo.toml @@ -15,19 +15,19 @@ backoff = { workspace = true } client-shared = { workspace = true } connlib-model = { workspace = true } dns-types = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } flume = { workspace = true } futures = { workspace = true } ip-packet = { workspace = true } ip_network = { workspace = true } libc = { workspace = true } log = { workspace = true } +logging = { workspace = true } phoenix-channel = { workspace = true } rustls = { workspace = true } secrecy = { workspace = true } serde_json = { workspace = true } socket-factory = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["rt-multi-thread", "sync"] } tokio-util = { workspace = true } diff --git a/rust/client-ffi/src/lib.rs b/rust/client-ffi/src/lib.rs index 01c65f680..49fb8504b 100644 --- a/rust/client-ffi/src/lib.rs +++ b/rust/client-ffi/src/lib.rs @@ -10,12 +10,12 @@ use std::{ use anyhow::{Context as _, Result, anyhow}; use backoff::ExponentialBackoffBuilder; -use firezone_logging::sentry_layer; -use firezone_telemetry::{Telemetry, analytics}; +use logging::sentry_layer; use phoenix_channel::{LoginUrl, PhoenixChannel, get_user_agent}; use platform::RELEASE; use secrecy::{SecretBox, SecretString}; use socket_factory::{SocketFactory, TcpSocket, UdpSocket}; +use telemetry::{Telemetry, analytics}; use tokio::sync::Mutex; use tracing_subscriber::{Layer, layer::SubscriberExt as _}; @@ -526,10 +526,8 @@ fn connect( }) } -static LOGGER_STATE: OnceLock<( - firezone_logging::file::Handle, - firezone_logging::FilterReloadHandle, -)> = OnceLock::new(); +static LOGGER_STATE: OnceLock<(logging::file::Handle, logging::FilterReloadHandle)> = + OnceLock::new(); fn init_logging(log_dir: &Path, log_filter: String) -> Result<()> { if let Some((_, reload_handle)) = LOGGER_STATE.get() { @@ -539,20 +537,16 @@ fn init_logging(log_dir: &Path, log_filter: String) -> Result<()> { return Ok(()); } - let (file_log_filter, file_reload_handle) = firezone_logging::try_filter(&log_filter)?; - let (platform_log_filter, platform_reload_handle) = firezone_logging::try_filter(&log_filter)?; - let (file_layer, handle) = firezone_logging::file::layer(log_dir, "connlib"); + let (file_log_filter, file_reload_handle) = logging::try_filter(&log_filter)?; + let (platform_log_filter, platform_reload_handle) = logging::try_filter(&log_filter)?; + let (file_layer, handle) = logging::file::layer(log_dir, "connlib"); let subscriber = tracing_subscriber::registry() .with(file_layer.with_filter(file_log_filter)) .with( tracing_subscriber::fmt::layer() .with_ansi(false) - .event_format( - firezone_logging::Format::new() - .without_timestamp() - .without_level(), - ) + .event_format(logging::Format::new().without_timestamp().without_level()) .with_writer(platform::MakeWriter::default()) .with_filter(platform_log_filter), ) @@ -560,7 +554,7 @@ fn init_logging(log_dir: &Path, log_filter: String) -> Result<()> { let reload_handle = file_reload_handle.merge(platform_reload_handle); - firezone_logging::init(subscriber)?; + logging::init(subscriber)?; LOGGER_STATE .set((handle, reload_handle)) diff --git a/rust/client-ffi/src/platform/android.rs b/rust/client-ffi/src/platform/android.rs index b0fefdeec..23d7a5c99 100644 --- a/rust/client-ffi/src/platform/android.rs +++ b/rust/client-ffi/src/platform/android.rs @@ -1,5 +1,5 @@ -use firezone_telemetry::Dsn; use std::time::Duration; +use telemetry::Dsn; mod make_writer; mod tun; @@ -14,7 +14,7 @@ pub const COMPONENT: &str = "android-client"; /// (IoT devices, point-of-sale devices, etc), so try to reconnect for 30 days. pub const MAX_PARTITION_TIME: Duration = Duration::from_secs(60 * 60 * 24 * 30); -pub const DSN: Dsn = firezone_telemetry::ANDROID_DSN; +pub const DSN: Dsn = telemetry::ANDROID_DSN; pub(crate) use make_writer::MakeWriter; pub(crate) use tun::Tun; diff --git a/rust/client-ffi/src/platform/android/tun.rs b/rust/client-ffi/src/platform/android/tun.rs index d6cf03ad7..031658530 100644 --- a/rust/client-ffi/src/platform/android/tun.rs +++ b/rust/client-ffi/src/platform/android/tun.rs @@ -1,9 +1,9 @@ -use firezone_telemetry::otel; use futures::SinkExt as _; use ip_packet::{IpPacket, IpPacketBuf}; use std::os::fd::{FromRawFd, OwnedFd}; use std::task::{Context, Poll}; use std::{io, os::fd::RawFd}; +use telemetry::otel; use tokio::sync::mpsc; use tokio_util::sync::PollSender; use tun::ioctl; @@ -78,7 +78,7 @@ impl Tun { std::thread::Builder::new() .name("TUN send".to_owned()) .spawn(move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_send(fd, outbound_rx, write), "Failed to send to TUN device: {}" ) @@ -87,7 +87,7 @@ impl Tun { std::thread::Builder::new() .name("TUN recv".to_owned()) .spawn(move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_recv(fd, inbound_tx, read), "Failed to recv from TUN device: {}" ) diff --git a/rust/client-ffi/src/platform/apple.rs b/rust/client-ffi/src/platform/apple.rs index faf5f65ba..ddeb769e6 100644 --- a/rust/client-ffi/src/platform/apple.rs +++ b/rust/client-ffi/src/platform/apple.rs @@ -1,5 +1,5 @@ -use firezone_telemetry::Dsn; use std::time::Duration; +use telemetry::Dsn; mod make_writer; mod tun; @@ -22,7 +22,7 @@ pub const COMPONENT: &str = "apple-client"; /// Hopefully we aren't down for more than 24 hours. pub const MAX_PARTITION_TIME: Duration = Duration::from_secs(60 * 60 * 24); -pub const DSN: Dsn = firezone_telemetry::APPLE_DSN; +pub const DSN: Dsn = telemetry::APPLE_DSN; pub(crate) use make_writer::MakeWriter; pub(crate) use tun::Tun; diff --git a/rust/client-ffi/src/platform/apple/tun.rs b/rust/client-ffi/src/platform/apple/tun.rs index 68d6ad460..edb889a22 100644 --- a/rust/client-ffi/src/platform/apple/tun.rs +++ b/rust/client-ffi/src/platform/apple/tun.rs @@ -1,4 +1,3 @@ -use firezone_telemetry::otel; use futures::SinkExt as _; use ip_packet::{IpPacket, IpPacketBuf, IpVersion}; use libc::{AF_INET, AF_INET6, F_GETFL, F_SETFL, O_NONBLOCK, fcntl, iovec, msghdr, recvmsg}; @@ -7,6 +6,7 @@ use std::{ io, os::fd::{AsRawFd as _, RawFd}, }; +use telemetry::otel; use tokio::sync::mpsc; use tokio_util::sync::PollSender; @@ -62,7 +62,7 @@ impl Tun { std::thread::Builder::new() .name("TUN send".to_owned()) .spawn(move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_send(fd, outbound_rx, write), "Failed to send to TUN device: {}" ) @@ -71,7 +71,7 @@ impl Tun { std::thread::Builder::new() .name("TUN recv".to_owned()) .spawn(move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_recv(fd, inbound_tx, read), "Failed to recv from TUN device: {}" ) diff --git a/rust/client-ffi/src/platform/fallback.rs b/rust/client-ffi/src/platform/fallback.rs index 575671df7..cd579861b 100644 --- a/rust/client-ffi/src/platform/fallback.rs +++ b/rust/client-ffi/src/platform/fallback.rs @@ -1,12 +1,12 @@ use std::{io, os::fd::RawFd, time::Duration}; -use firezone_telemetry::Dsn; +use telemetry::Dsn; pub const RELEASE: &str = ""; pub const VERSION: &str = ""; pub const COMPONENT: &str = ""; -pub const DSN: Dsn = firezone_telemetry::TESTING; +pub const DSN: Dsn = telemetry::TESTING; pub const MAX_PARTITION_TIME: Duration = Duration::ZERO; diff --git a/rust/connlib/.gitignore b/rust/connlib/.gitignore deleted file mode 100644 index 27c971113..000000000 --- a/rust/connlib/.gitignore +++ /dev/null @@ -1,173 +0,0 @@ -### Android ### -# Gradle files -.gradle/ -build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Log/OS Files -*.log - -# Android Studio generated files and folders -captures/ -.externalNativeBuild/ -.cxx/ -*.apk -output.json - -# IntelliJ -*.iml -.idea/ -misc.xml -deploymentTargetDropDown.xml -render.experimental.xml - -# Keystore files -*.jks -*.keystore - -# Google Services (e.g. APIs or Firebase) -google-services.json - -# Android Profiling -*.hprof - -### Android Patch ### -gen-external-apklibs - -# Replacement of .externalNativeBuild directories introduced -# with Android Studio 3.5. - -### Kotlin ### -# Compiled class file -*.class - -# Log file - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* - -### AndroidStudio ### -# Covers files to be ignored for android development using Android Studio. - -# Built application files -*.ap_ -*.aab - -# Files for the ART/Dalvik VM -*.dex - -# Java class files - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle - -# Signing files -.signing/ - -# Local configuration file (sdk path, etc) - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files - -# Android Studio -build/ -/*/local.properties -out/ -production/ -.navigation/ -*.ipr -*~ -*.swp - -# Keystore files - -# Google Services (e.g. APIs or Firebase) -# google-services.json - -# Android Patch - -# External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild - -# NDK -obj/ - -# IntelliJ IDEA -*.iws - -# User-specific configurations -.idea/caches/ -.idea/libraries/ -.idea/shelf/ -.idea/workspace.xml -.idea/tasks.xml -.idea/.name -.idea/compiler.xml -.idea/copyright/profiles_settings.xml -.idea/encodings.xml -.idea/misc.xml -.idea/modules.xml -.idea/scopes/scope_settings.xml -.idea/dictionaries -.idea/vcs.xml -.idea/jsLibraryMappings.xml -.idea/datasources.xml -.idea/dataSources.ids -.idea/sqlDataSources.xml -.idea/dynamic.xml -.idea/uiDesigner.xml -.idea/assetWizardSettings.xml -.idea/gradle.xml -.idea/jarRepositories.xml -.idea/navEditor.xml - -## Plugin-specific files: - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### AndroidStudio Patch ### - -!clients/android/gradle/wrapper/gradle-wrapper.jar - -### JNI -jniLibs/ - -### Apple ### -.build/ -DerivedData/ -xcuserdata/ -*.xcuserstate - -Firezone/Developer.xcconfig diff --git a/rust/connlib/tunnel/benches/divan.rs b/rust/connlib/tunnel/benches/divan.rs deleted file mode 100644 index 5a32eb889..000000000 --- a/rust/connlib/tunnel/benches/divan.rs +++ /dev/null @@ -1,5 +0,0 @@ -extern crate firezone_tunnel; // Ensure benchmarks aren't optimised out. - -fn main() { - divan::main() -} diff --git a/rust/gateway/Cargo.toml b/rust/gateway/Cargo.toml index 82a10f1dd..abd7cadfd 100644 --- a/rust/gateway/Cargo.toml +++ b/rust/gateway/Cargo.toml @@ -26,22 +26,20 @@ depends = 'iptables,systemd' [dependencies] anyhow = { workspace = true } backoff = { workspace = true } +bin-shared = { workspace = true } boringtun = { workspace = true } chrono = { workspace = true } clap = { workspace = true } connlib-model = { workspace = true } dns-types = { workspace = true } either = { workspace = true } -firezone-bin-shared = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } -firezone-tunnel = { workspace = true } futures = { workspace = true } futures-bounded = { workspace = true } hickory-resolver = { workspace = true } ip-packet = { workspace = true } ip_network = { workspace = true } libc = { workspace = true, features = ["std", "const-extern-fn", "extra_traits"] } +logging = { workspace = true } moka = { workspace = true, features = ["future"] } opentelemetry = { workspace = true, features = ["metrics"] } opentelemetry-otlp = { workspace = true, features = ["metrics", "grpc-tonic"] } @@ -55,11 +53,13 @@ serde = { workspace = true, features = ["std", "derive"] } snownet = { workspace = true } socket-factory = { workspace = true } static_assertions = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["sync", "macros", "fs", "signal", "rt"] } tracing = { workspace = true } tracing-subscriber = { workspace = true } tun = { workspace = true } +tunnel = { workspace = true } url = { workspace = true } uuid = { workspace = true, features = ["v4"] } diff --git a/rust/gateway/src/eventloop.rs b/rust/gateway/src/eventloop.rs index 1354aa5c1..4200df3e6 100644 --- a/rust/gateway/src/eventloop.rs +++ b/rust/gateway/src/eventloop.rs @@ -1,21 +1,11 @@ -use anyhow::{Context as _, ErrorExt, Result}; +use anyhow::{Context as _, ErrorExt as _, Result}; +use bin_shared::{TunDeviceManager, signals}; use boringtun::x25519::PublicKey; #[cfg(not(target_os = "windows"))] use dns_lookup::{AddrInfoHints, AddrInfoIter, LookupError}; use dns_types::DomainName; -use firezone_bin_shared::{TunDeviceManager, signals}; -use firezone_telemetry::{Telemetry, analytics}; +use telemetry::{Telemetry, analytics}; -use firezone_tunnel::messages::gateway::{ - AccessAuthorizationExpiryUpdated, AllowAccess, Authorization, ClientIceCandidates, - ClientsIceCandidates, ConnectionReady, EgressMessages, IngressMessages, InitGateway, - RejectAccess, RequestConnection, -}; -use firezone_tunnel::messages::{ConnectionAccepted, GatewayResponse, RelaysPresence}; -use firezone_tunnel::{ - DnsResourceNatEntry, GatewayEvent, GatewayTunnel, IPV4_TUNNEL, IPV6_TUNNEL, IpConfig, - ResolveDnsRequest, TunnelError, -}; use futures::{FutureExt as _, TryFutureExt}; use hickory_resolver::TokioResolver; use phoenix_channel::{PhoenixChannel, PublicKeyParam}; @@ -29,6 +19,16 @@ use std::task::{Context, Poll}; use std::time::{Duration, Instant}; use std::{io, iter, mem}; use tokio::sync::mpsc; +use tunnel::messages::gateway::{ + AccessAuthorizationExpiryUpdated, AllowAccess, Authorization, ClientIceCandidates, + ClientsIceCandidates, ConnectionReady, EgressMessages, IngressMessages, InitGateway, + RejectAccess, RequestConnection, +}; +use tunnel::messages::{ConnectionAccepted, GatewayResponse, RelaysPresence}; +use tunnel::{ + DnsResourceNatEntry, GatewayEvent, GatewayTunnel, IPV4_TUNNEL, IPV6_TUNNEL, IpConfig, + ResolveDnsRequest, TunnelError, +}; use crate::RELEASE; @@ -240,9 +240,9 @@ impl Eventloop { Ok(()) } - async fn handle_tunnel_event(&mut self, event: firezone_tunnel::GatewayEvent) -> Result<()> { + async fn handle_tunnel_event(&mut self, event: tunnel::GatewayEvent) -> Result<()> { match event { - firezone_tunnel::GatewayEvent::AddedIceCandidates { + tunnel::GatewayEvent::AddedIceCandidates { conn_id: client, candidates, } => { @@ -255,7 +255,7 @@ impl Eventloop { ))) .await?; } - firezone_tunnel::GatewayEvent::RemovedIceCandidates { + tunnel::GatewayEvent::RemovedIceCandidates { conn_id: client, candidates, } => { @@ -268,7 +268,7 @@ impl Eventloop { )) .await?; } - firezone_tunnel::GatewayEvent::ResolveDns(setup_nat) => { + tunnel::GatewayEvent::ResolveDns(setup_nat) => { if self .resolve_tasks .try_push( @@ -321,12 +321,12 @@ impl Eventloop { continue; } - if let Some(e) = e.any_downcast_ref::() { + if let Some(e) = e.any_downcast_ref::() { tracing::debug!(src = %e.source(), dst = %e.destination(), proto = %e.proto(), "{e:#}"); continue; } - if e.any_is::() { + if e.any_is::() { return Err(e); } @@ -434,7 +434,7 @@ impl Eventloop { connected, }) => tunnel.state_mut().update_relays( BTreeSet::from_iter(disconnected_ids), - firezone_tunnel::turn(&connected), + tunnel::turn(&connected), Instant::now(), ), IngressMessages::Init(InitGateway { @@ -452,7 +452,7 @@ impl Eventloop { tunnel.state_mut().update_relays( BTreeSet::default(), - firezone_tunnel::turn(&relays), + tunnel::turn(&relays), Instant::now(), ); tunnel.state_mut().update_tun_device(IpConfig { @@ -644,7 +644,7 @@ impl Eventloop { &self, domain: DomainName, ) -> impl Future, Arc>> + use<> { - if firezone_telemetry::feature_flags::gateway_userspace_dns_a_aaaa_records() { + if telemetry::feature_flags::gateway_userspace_dns_a_aaaa_records() { let resolver = self.resolver.clone(); async move { diff --git a/rust/gateway/src/main.rs b/rust/gateway/src/main.rs index d08d7b0c0..86d9027b5 100644 --- a/rust/gateway/src/main.rs +++ b/rust/gateway/src/main.rs @@ -3,22 +3,22 @@ use crate::eventloop::{Eventloop, PHOENIX_TOPIC}; use anyhow::{Context, Result, bail}; use backoff::ExponentialBackoffBuilder; -use clap::Parser; -use firezone_bin_shared::{ +use bin_shared::{ TunDeviceManager, device_id, http_health_check, platform::{UdpSocketFactory, tcp_socket_factory}, }; +use clap::Parser; -use firezone_telemetry::{ - MaybePushMetricsExporter, NoopPushMetricsExporter, Telemetry, feature_flags, otel, -}; -use firezone_tunnel::GatewayTunnel; use hickory_resolver::config::ResolveHosts; use ip_packet::IpPacket; use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::metrics::SdkMeterProvider; use phoenix_channel::LoginUrl; use phoenix_channel::get_user_agent; +use telemetry::{ + MaybePushMetricsExporter, NoopPushMetricsExporter, Telemetry, feature_flags, otel, +}; +use tunnel::GatewayTunnel; use phoenix_channel::PhoenixChannel; use secrecy::{ExposeSecret, SecretBox, SecretString}; @@ -90,7 +90,7 @@ fn has_necessary_permissions() -> bool { } async fn try_main(cli: Cli, telemetry: &mut Telemetry) -> Result<()> { - firezone_logging::setup_global_subscriber( + logging::setup_global_subscriber( layer::Identity::default(), match cli.log_format { LogFormat::Json => true, @@ -103,7 +103,7 @@ async fn try_main(cli: Cli, telemetry: &mut Telemetry) -> Result<()> { arch = std::env::consts::ARCH, os = std::env::consts::OS, version = env!("CARGO_PKG_VERSION"), - system_uptime = firezone_bin_shared::uptime::get().map(tracing::field::debug), + system_uptime = bin_shared::uptime::get().map(tracing::field::debug), "`gateway` started logging" ); @@ -138,7 +138,7 @@ async fn try_main(cli: Cli, telemetry: &mut Telemetry) -> Result<()> { .start( cli.api_url.as_str(), RELEASE, - firezone_telemetry::GATEWAY_DSN, + telemetry::GATEWAY_DSN, firezone_id.clone(), ) .await; diff --git a/rust/gui-client/src-tauri/Cargo.toml b/rust/gui-client/src-tauri/Cargo.toml index 7ad67b1a9..41b03187e 100644 --- a/rust/gui-client/src-tauri/Cargo.toml +++ b/rust/gui-client/src-tauri/Cargo.toml @@ -23,19 +23,18 @@ anyhow = { workspace = true } arboard = { workspace = true } atomicwrites = { workspace = true } backoff = { workspace = true } +bin-shared = { workspace = true } chrono = { workspace = true } clap = { workspace = true, features = ["derive", "env"] } client-shared = { workspace = true } connlib-model = { workspace = true } derive_more = { workspace = true, features = ["debug"] } -firezone-bin-shared = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } futures = { workspace = true } hex = { workspace = true } humantime = { workspace = true } ip-packet = { workspace = true } keyring = { workspace = true, features = ["crypto-rust", "sync-secret-service", "windows-native"] } +logging = { workspace = true } native-dialog = { workspace = true } output_vt100 = { workspace = true } phoenix-channel = { workspace = true } @@ -61,6 +60,7 @@ tauri-plugin-shell = { workspace = true } tauri-runtime = { workspace = true } tauri-specta = { workspace = true } tauri-utils = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["signal", "time", "macros", "rt", "rt-multi-thread"] } tokio-stream = { workspace = true } diff --git a/rust/gui-client/src-tauri/src/auth.rs b/rust/gui-client/src-tauri/src/auth.rs index 306432419..fdf6e5e71 100644 --- a/rust/gui-client/src-tauri/src/auth.rs +++ b/rust/gui-client/src-tauri/src/auth.rs @@ -1,8 +1,8 @@ //! Fulfills use anyhow::{Context, Result}; -use firezone_bin_shared::known_dirs; -use firezone_logging::err_with_src; +use bin_shared::known_dirs; +use logging::err_with_src; use rand::{RngCore, thread_rng}; use secrecy::{ExposeSecret, SecretString}; use serde::{Deserialize, Serialize}; diff --git a/rust/gui-client/src-tauri/src/bin/firezone-client-tunnel.rs b/rust/gui-client/src-tauri/src/bin/firezone-client-tunnel.rs index 113ee3d60..b869568c3 100644 --- a/rust/gui-client/src-tauri/src/bin/firezone-client-tunnel.rs +++ b/rust/gui-client/src-tauri/src/bin/firezone-client-tunnel.rs @@ -1,8 +1,8 @@ #![cfg_attr(test, allow(clippy::unwrap_used))] use anyhow::anyhow; +use bin_shared::{DnsControlMethod, TOKEN_ENV_KEY}; use clap::Parser as _; -use firezone_bin_shared::{DnsControlMethod, TOKEN_ENV_KEY}; use firezone_gui_client::service; use std::path::PathBuf; diff --git a/rust/gui-client/src-tauri/src/bin/firezone-gui-client.rs b/rust/gui-client/src-tauri/src/bin/firezone-gui-client.rs index 05a0b0caf..d2ba96060 100644 --- a/rust/gui-client/src-tauri/src/bin/firezone-gui-client.rs +++ b/rust/gui-client/src-tauri/src/bin/firezone-gui-client.rs @@ -10,15 +10,15 @@ use anyhow::{Context as _, ErrorExt, Result, bail}; use clap::{Args, Parser}; use controller::Failure; use firezone_gui_client::{controller, deep_link, elevation, gui, logging, settings}; -use firezone_telemetry::Telemetry; use settings::AdvancedSettingsLegacy; +use telemetry::Telemetry; use tokio::runtime::Runtime; use tracing::subscriber::DefaultGuard; use tracing_subscriber::EnvFilter; fn main() -> ExitCode { let mut bootstrap_log_guard = - Some(firezone_logging::setup_bootstrap().expect("Failed to setup bootstrap logger")); + Some(logging::setup_bootstrap().expect("Failed to setup bootstrap logger")); let cli = Cli::parse(); @@ -79,13 +79,13 @@ fn try_main( // Get the device ID before starting Tokio, so that all the worker threads will inherit the correct scope. // Technically this means we can fail to get the device ID on a newly-installed system, since the Tunnel service may not have fully started up when the GUI process reaches this point, but in practice it's unlikely. - let id = firezone_bin_shared::device_id::get_client().context("Failed to get device ID")?; + let id = bin_shared::device_id::get_client().context("Failed to get device ID")?; if cli.is_telemetry_allowed() { rt.block_on(telemetry.start( &api_url, firezone_gui_client::RELEASE, - firezone_telemetry::GUI_DSN, + telemetry::GUI_DSN, id.id, )); } diff --git a/rust/gui-client/src-tauri/src/controller.rs b/rust/gui-client/src-tauri/src/controller.rs index e3e97df5d..c4e2d5204 100644 --- a/rust/gui-client/src-tauri/src/controller.rs +++ b/rust/gui-client/src-tauri/src/controller.rs @@ -10,14 +10,14 @@ use crate::{ }; use anyhow::{Context, ErrorExt as _, Result, anyhow, bail}; use connlib_model::ResourceView; -use firezone_logging::FilterReloadHandle; -use firezone_telemetry::Telemetry; use futures::{ SinkExt, StreamExt, stream::{self, BoxStream}, }; +use logging::FilterReloadHandle; use secrecy::{ExposeSecret as _, SecretString}; use std::{ops::ControlFlow, path::PathBuf, task::Poll, time::Duration}; +use telemetry::Telemetry; use tokio::sync::{mpsc, oneshot}; use tokio_stream::wrappers::ReceiverStream; use url::Url; diff --git a/rust/gui-client/src-tauri/src/controller/ran_before.rs b/rust/gui-client/src-tauri/src/controller/ran_before.rs index 6d7d094d9..71a3ab813 100644 --- a/rust/gui-client/src-tauri/src/controller/ran_before.rs +++ b/rust/gui-client/src-tauri/src/controller/ran_before.rs @@ -25,7 +25,6 @@ pub(crate) async fn set() -> Result<()> { } fn path() -> Result { - let session_dir = - firezone_bin_shared::known_dirs::session().context("Couldn't find session dir")?; + let session_dir = bin_shared::known_dirs::session().context("Couldn't find session dir")?; Ok(session_dir.join("ran_before.txt")) } diff --git a/rust/gui-client/src-tauri/src/deep_link/windows.rs b/rust/gui-client/src-tauri/src/deep_link/windows.rs index 70a320f0e..84a31d9e7 100644 --- a/rust/gui-client/src-tauri/src/deep_link/windows.rs +++ b/rust/gui-client/src-tauri/src/deep_link/windows.rs @@ -3,7 +3,7 @@ use super::FZ_SCHEME; use anyhow::{Context, Result}; -use firezone_bin_shared::BUNDLE_ID; +use bin_shared::BUNDLE_ID; use std::{ io, path::{Path, PathBuf}, diff --git a/rust/gui-client/src-tauri/src/gui.rs b/rust/gui-client/src-tauri/src/gui.rs index 757f6198f..859bd1e92 100644 --- a/rust/gui-client/src-tauri/src/gui.rs +++ b/rust/gui-client/src-tauri/src/gui.rs @@ -19,8 +19,8 @@ use crate::{ }, }; use anyhow::{Context, Result, bail}; -use firezone_logging::err_with_src; use futures::SinkExt as _; +use logging::err_with_src; use std::time::Duration; use tauri::Manager; use tauri_specta::Event; @@ -240,7 +240,7 @@ pub fn run( config: RunConfig, mdm_settings: MdmSettings, advanced_settings: AdvancedSettingsLegacy, - reloader: firezone_logging::FilterReloadHandle, + reloader: logging::FilterReloadHandle, ) -> Result<()> { tauri::async_runtime::set(rt.handle().clone()); @@ -333,7 +333,7 @@ pub fn run( } assert_eq!( - firezone_bin_shared::BUNDLE_ID, + bin_shared::BUNDLE_ID, app_handle.config().identifier, "BUNDLE_ID should match bundle ID in tauri.conf.json" ); diff --git a/rust/gui-client/src-tauri/src/gui/os_windows.rs b/rust/gui-client/src-tauri/src/gui/os_windows.rs index 4367cc287..d7a609ebc 100644 --- a/rust/gui-client/src-tauri/src/gui/os_windows.rs +++ b/rust/gui-client/src-tauri/src/gui/os_windows.rs @@ -1,7 +1,7 @@ use super::{ControllerRequest, CtlrTx}; use anyhow::{Context, Result}; -use firezone_bin_shared::BUNDLE_ID; -use firezone_logging::err_with_src; +use bin_shared::BUNDLE_ID; +use logging::err_with_src; use std::env; use tauri::AppHandle; use winreg::RegKey; diff --git a/rust/gui-client/src-tauri/src/gui/system_tray.rs b/rust/gui-client/src-tauri/src/gui/system_tray.rs index aebca39ce..38c0e8fbc 100644 --- a/rust/gui-client/src-tauri/src/gui/system_tray.rs +++ b/rust/gui-client/src-tauri/src/gui/system_tray.rs @@ -134,7 +134,7 @@ impl Tray { tracing::debug!("Skipping redundant menu update"); } else { self.run_on_main_thread(move || { - firezone_logging::unwrap_or_debug!( + logging::unwrap_or_debug!( update(handle, &app, &menu), "Error while updating tray menu: {}" ); @@ -162,7 +162,7 @@ impl Tray { .set_icon(Some(icon_to_tauri_icon(&icon))) .context("Failed to set tray icon"); - firezone_logging::unwrap_or_debug!(result, "{}"); + logging::unwrap_or_debug!(result, "{}"); }); } @@ -172,7 +172,7 @@ impl Tray { .run_on_main_thread(f) .context("Failed to run closure on main thread"); - firezone_logging::unwrap_or_debug!(result, "{}"); + logging::unwrap_or_debug!(result, "{}"); } } diff --git a/rust/gui-client/src-tauri/src/ipc.rs b/rust/gui-client/src-tauri/src/ipc.rs index 2b903994f..d18f7b20a 100644 --- a/rust/gui-client/src-tauri/src/ipc.rs +++ b/rust/gui-client/src-tauri/src/ipc.rs @@ -203,7 +203,7 @@ mod tests { #[tokio::test] async fn no_such_service() -> Result<()> { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); const ID: SocketId = SocketId::Test("H56FRXVH"); if super::connect::<(), ()>(ID, super::ConnectOptions::default()) @@ -228,7 +228,7 @@ mod tests { /// Make sure the IPC client and server can exchange messages #[tokio::test] async fn smoke() -> Result<()> { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let loops = 10; const ID: SocketId = SocketId::Test("OB5SZCGN"); @@ -309,7 +309,7 @@ mod tests { /// this test will fail. #[tokio::test] async fn loop_to_next_client() -> Result<()> { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let mut server = Server::new(SocketId::Test("H6L73DG5"))?; for i in 0..5 { diff --git a/rust/gui-client/src-tauri/src/ipc/linux.rs b/rust/gui-client/src-tauri/src/ipc/linux.rs index 5d46dd3ae..89102b7ac 100644 --- a/rust/gui-client/src-tauri/src/ipc/linux.rs +++ b/rust/gui-client/src-tauri/src/ipc/linux.rs @@ -1,6 +1,6 @@ use super::{NotFound, SocketId}; use anyhow::{Context as _, Result}; -use firezone_bin_shared::BUNDLE_ID; +use bin_shared::BUNDLE_ID; use std::{io::ErrorKind, os::unix::fs::PermissionsExt, path::PathBuf}; use tokio::net::{UnixListener, UnixStream}; @@ -100,11 +100,11 @@ impl Server { fn ipc_path(id: SocketId) -> PathBuf { match id { SocketId::Tunnel => PathBuf::from("/run").join(BUNDLE_ID).join("tunnel.sock"), - SocketId::Gui => firezone_bin_shared::known_dirs::runtime() + SocketId::Gui => bin_shared::known_dirs::runtime() .expect("`known_dirs::runtime()` should always work") .join("gui.sock"), #[cfg(test)] - SocketId::Test(id) => firezone_bin_shared::known_dirs::runtime() + SocketId::Test(id) => bin_shared::known_dirs::runtime() .expect("`known_dirs::runtime()` should always work") .join(format!("ipc_test_{id}.sock")), } diff --git a/rust/gui-client/src-tauri/src/ipc/windows.rs b/rust/gui-client/src-tauri/src/ipc/windows.rs index b62523aeb..48730acc6 100644 --- a/rust/gui-client/src-tauri/src/ipc/windows.rs +++ b/rust/gui-client/src-tauri/src/ipc/windows.rs @@ -1,6 +1,6 @@ use super::{NotFound, SocketId}; use anyhow::{Context as _, Result, bail}; -use firezone_bin_shared::BUNDLE_ID; +use bin_shared::BUNDLE_ID; use std::{ffi::c_void, io::ErrorKind, os::windows::io::AsRawHandle, time::Duration}; use tokio::net::windows::named_pipe; use windows::Win32::{ @@ -192,7 +192,7 @@ mod tests { #[tokio::test] async fn single_instance() -> anyhow::Result<()> { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); const ID: SocketId = SocketId::Test("2GOCMPBG"); let mut server_1 = Server::new(ID)?; let pipe_path = server_1.pipe_path.clone(); diff --git a/rust/gui-client/src-tauri/src/logging.rs b/rust/gui-client/src-tauri/src/logging.rs index 40ea9f864..20c281958 100644 --- a/rust/gui-client/src-tauri/src/logging.rs +++ b/rust/gui-client/src-tauri/src/logging.rs @@ -1,8 +1,9 @@ //! Everything for logging to files, zipping up the files for export, and counting the files +pub use ::logging::*; + use anyhow::{Context as _, Result, bail}; -use firezone_bin_shared::known_dirs; -use firezone_logging::FilterReloadHandle; +use bin_shared::known_dirs; use serde::Serialize; use std::{ fs, @@ -16,8 +17,8 @@ use tracing_subscriber::{EnvFilter, Layer, Registry, layer::SubscriberExt}; /// resulting in empty log files. #[must_use] pub struct Handles { - pub logger: firezone_logging::file::Handle, - pub reloader: firezone_logging::FilterReloadHandle, + pub logger: logging::file::Handle, + pub reloader: FilterReloadHandle, } struct LogPath { @@ -58,34 +59,34 @@ pub fn setup_gui(directives: &str) -> Result { // Logfilter for stdout cannot be reloaded. This is okay because we are using it only for local dev and debugging anyway. // Having multiple reload handles makes their type-signature quite complex so we don't bother with that. - let (stdout_filter, stdout_reloader) = firezone_logging::try_filter(directives)?; + let (stdout_filter, stdout_reloader) = logging::try_filter(directives)?; let stdout_layer = tracing_subscriber::fmt::layer() - .with_ansi(firezone_logging::stdout_supports_ansi()) - .event_format(firezone_logging::Format::new()); + .with_ansi(logging::stdout_supports_ansi()) + .event_format(logging::Format::new()); - let (system_filter, system_reloader) = firezone_logging::try_filter(directives)?; + let (system_filter, system_reloader) = logging::try_filter(directives)?; let system_layer = system_layer().context("Failed to init system logger")?; #[cfg(target_os = "linux")] let syslog_identifier = Some(system_layer.syslog_identifier().to_owned()); #[cfg(not(target_os = "linux"))] let syslog_identifier = Option::::None; - let (file_layer, logger) = firezone_logging::file::layer(&log_path, "gui-client"); - let (file_filter, file_reloader) = firezone_logging::try_filter(directives)?; + let (file_layer, logger) = logging::file::layer(&log_path, "gui-client"); + let (file_filter, file_reloader) = logging::try_filter(directives)?; let subscriber = Registry::default() .with(file_layer.with_filter(file_filter)) .with(stdout_layer.with_filter(stdout_filter)) .with(system_layer.with_filter(system_filter)) - .with(firezone_logging::sentry_layer()); - firezone_logging::init(subscriber)?; + .with(logging::sentry_layer()); + logging::init(subscriber)?; tracing::info!( arch = std::env::consts::ARCH, os = std::env::consts::OS, version = env!("CARGO_PKG_VERSION"), %directives, - system_uptime = firezone_bin_shared::uptime::get().map(tracing::field::debug), + system_uptime = bin_shared::uptime::get().map(tracing::field::debug), log_path = %log_path.display(), syslog_identifier = syslog_identifier.map(tracing::field::display), "`gui-client` started logging" @@ -103,10 +104,7 @@ pub fn setup_gui(directives: &str) -> Result { /// and flushes the log file. pub fn setup_tunnel( log_path: Option, -) -> Result<( - firezone_logging::file::Handle, - firezone_logging::FilterReloadHandle, -)> { +) -> Result<(logging::file::Handle, logging::FilterReloadHandle)> { // If `log_dir` is Some, use that. Else call `tunnel_service_logs` let log_path = log_path.map_or_else( || { @@ -120,27 +118,27 @@ pub fn setup_tunnel( let directives = get_log_filter().context("Couldn't read log filter")?; - let (file_filter, file_reloader) = firezone_logging::try_filter(&directives)?; - let (stdout_filter, stdout_reloader) = firezone_logging::try_filter(&directives)?; + let (file_filter, file_reloader) = logging::try_filter(&directives)?; + let (stdout_filter, stdout_reloader) = logging::try_filter(&directives)?; - let (file_layer, file_handle) = firezone_logging::file::layer(&log_path, "tunnel-service"); + let (file_layer, file_handle) = logging::file::layer(&log_path, "tunnel-service"); let stdout_layer = tracing_subscriber::fmt::layer() - .with_ansi(firezone_logging::stdout_supports_ansi()) - .event_format(firezone_logging::Format::new().without_timestamp()); + .with_ansi(logging::stdout_supports_ansi()) + .event_format(logging::Format::new().without_timestamp()); let subscriber = Registry::default() .with(file_layer.with_filter(file_filter)) .with(stdout_layer.with_filter(stdout_filter)) - .with(firezone_logging::sentry_layer()); - firezone_logging::init(subscriber)?; + .with(logging::sentry_layer()); + logging::init(subscriber)?; tracing::info!( arch = std::env::consts::ARCH, os = std::env::consts::OS, version = env!("CARGO_PKG_VERSION"), ?directives, - system_uptime = firezone_bin_shared::uptime::get().map(tracing::field::debug), + system_uptime = bin_shared::uptime::get().map(tracing::field::debug), log_path = %log_path.display(), "`tunnel service` started logging" ); @@ -151,12 +149,12 @@ pub fn setup_tunnel( /// Sets up logging for stdout only, with INFO level by default pub fn setup_stdout() -> Result { let directives = get_log_filter().context("Can't read log filter")?; - let (filter, reloader) = firezone_logging::try_filter(&directives)?; + let (filter, reloader) = logging::try_filter(&directives)?; let layer = tracing_subscriber::fmt::layer() - .event_format(firezone_logging::Format::new()) + .event_format(logging::Format::new()) .with_filter(filter); let subscriber = Registry::default().with(layer); - firezone_logging::init(subscriber)?; + logging::init(subscriber)?; Ok(reloader) } @@ -181,9 +179,8 @@ pub(crate) fn get_log_filter() -> Result { return Ok(filter); } - if let Ok(filter) = - std::fs::read_to_string(firezone_bin_shared::known_dirs::tunnel_log_filter()?) - .map(|s| s.trim().to_string()) + if let Ok(filter) = std::fs::read_to_string(bin_shared::known_dirs::tunnel_log_filter()?) + .map(|s| s.trim().to_string()) { return Ok(filter); } diff --git a/rust/gui-client/src-tauri/src/service.rs b/rust/gui-client/src-tauri/src/service.rs index c3f00bffc..f9da3242a 100644 --- a/rust/gui-client/src-tauri/src/service.rs +++ b/rust/gui-client/src-tauri/src/service.rs @@ -5,22 +5,21 @@ use crate::{ use anyhow::{Context as _, ErrorExt as _, Result, bail}; use atomicwrites::{AtomicFile, OverwriteBehavior}; use backoff::ExponentialBackoffBuilder; -use connlib_model::ResourceView; -use firezone_bin_shared::{ +use bin_shared::{ DnsControlMethod, DnsController, TunDeviceManager, device_id::{self, DeviceId}, device_info, known_dirs, platform::{UdpSocketFactory, tcp_socket_factory}, signals, }; -use firezone_logging::{FilterReloadHandle, err_with_src}; -use firezone_telemetry::{Telemetry, analytics}; +use connlib_model::ResourceView; use futures::{ Future as _, SinkExt as _, Stream, StreamExt, future::poll_fn, stream::{self, BoxStream}, task::{Context, Poll}, }; +use logging::{FilterReloadHandle, err_with_src}; use phoenix_channel::{DeviceInfo, LoginUrl, PhoenixChannel, get_user_agent}; use secrecy::{ExposeSecret, SecretBox, SecretString}; use std::{ @@ -30,6 +29,7 @@ use std::{ sync::Arc, time::Duration, }; +use telemetry::{Telemetry, analytics}; use tokio::time::Instant; use url::Url; @@ -607,7 +607,7 @@ impl<'a> Handler<'a> { .start( &environment, &release, - firezone_telemetry::GUI_DSN, + telemetry::GUI_DSN, self.device_id.id.clone(), ) .await; @@ -705,7 +705,7 @@ pub fn run_debug(dns_control: DnsControlMethod) -> Result<()> { tracing::info!( arch = std::env::consts::ARCH, version = env!("CARGO_PKG_VERSION"), - system_uptime_seconds = firezone_bin_shared::uptime::get().map(|dur| dur.as_secs()), + system_uptime_seconds = bin_shared::uptime::get().map(|dur| dur.as_secs()), ); if !elevation_check()? { bail!("Tunnel service failed its elevation check, try running as admin / root"); @@ -726,7 +726,7 @@ pub fn run_debug(dns_control: DnsControlMethod) -> Result<()> { pub fn run_smoke_test() -> Result<()> { use crate::ipc::{self, SocketId}; use anyhow::{Context as _, bail}; - use firezone_bin_shared::{DnsController, device_id}; + use bin_shared::{DnsController, device_id}; let log_filter_reloader = logging::setup_stdout()?; if !elevation_check()? { @@ -768,7 +768,7 @@ pub fn run_smoke_test() -> Result<()> { } async fn new_dns_notifier() -> Result>> { - let worker = firezone_bin_shared::new_dns_notifier( + let worker = bin_shared::new_dns_notifier( tokio::runtime::Handle::current(), DnsControlMethod::default(), ) @@ -782,7 +782,7 @@ async fn new_dns_notifier() -> Result>> { } async fn new_network_notifier() -> Result>> { - let worker = firezone_bin_shared::new_network_notifier( + let worker = bin_shared::new_network_notifier( tokio::runtime::Handle::current(), DnsControlMethod::default(), ) diff --git a/rust/gui-client/src-tauri/src/service/linux.rs b/rust/gui-client/src-tauri/src/service/linux.rs index db72eff10..e2879ebe0 100644 --- a/rust/gui-client/src-tauri/src/service/linux.rs +++ b/rust/gui-client/src-tauri/src/service/linux.rs @@ -1,7 +1,7 @@ use std::{path::PathBuf, time::Duration}; use anyhow::{Result, bail}; -use firezone_bin_shared::{DnsControlMethod, signals}; +use bin_shared::{DnsControlMethod, signals}; /// Cross-platform entry point for systemd / Windows services /// diff --git a/rust/gui-client/src-tauri/src/service/macos.rs b/rust/gui-client/src-tauri/src/service/macos.rs index 2ed47d9be..7bb83533b 100644 --- a/rust/gui-client/src-tauri/src/service/macos.rs +++ b/rust/gui-client/src-tauri/src/service/macos.rs @@ -1,5 +1,5 @@ use anyhow::{Result, bail}; -use firezone_bin_shared::DnsControlMethod; +use bin_shared::DnsControlMethod; use std::path::PathBuf; pub fn run(log_dir: Option, _dns_control: DnsControlMethod) -> Result<()> { diff --git a/rust/gui-client/src-tauri/src/service/windows.rs b/rust/gui-client/src-tauri/src/service/windows.rs index b37410865..b294aff65 100644 --- a/rust/gui-client/src-tauri/src/service/windows.rs +++ b/rust/gui-client/src-tauri/src/service/windows.rs @@ -1,5 +1,5 @@ use anyhow::{Context as _, Result}; -use firezone_bin_shared::DnsControlMethod; +use bin_shared::DnsControlMethod; use futures::channel::mpsc; use std::path::PathBuf; use std::{ @@ -277,7 +277,7 @@ fn run_service(arguments: Vec) { process_id: None, }); - let mut signals = firezone_bin_shared::signals::Terminate::from_channel(shutdown_rx); + let mut signals = bin_shared::signals::Terminate::from_channel(shutdown_rx); let result = rt .block_on(super::ipc_listen( diff --git a/rust/gui-client/src-tauri/src/settings.rs b/rust/gui-client/src-tauri/src/settings.rs index d34144f82..1794469bb 100644 --- a/rust/gui-client/src-tauri/src/settings.rs +++ b/rust/gui-client/src-tauri/src/settings.rs @@ -2,8 +2,8 @@ //! advanced settings and code for manipulating diagnostic logs. use anyhow::{Context as _, Result}; +use bin_shared::known_dirs; use connlib_model::ResourceId; -use firezone_bin_shared::known_dirs; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; use std::{collections::HashSet, path::PathBuf}; diff --git a/rust/gui-client/src-tauri/src/updates.rs b/rust/gui-client/src-tauri/src/updates.rs index 2e154d57f..a56470f79 100644 --- a/rust/gui-client/src-tauri/src/updates.rs +++ b/rust/gui-client/src-tauri/src/updates.rs @@ -205,7 +205,7 @@ impl Checker { } fn version_file_path() -> Result { - Ok(firezone_bin_shared::known_dirs::session() + Ok(bin_shared::known_dirs::session() .context("Couldn't find session dir")? .join("latest_version_seen.txt")) } diff --git a/rust/gui-client/src-tauri/src/view.rs b/rust/gui-client/src-tauri/src/view.rs index 8ebdaff0a..c0fd95c03 100644 --- a/rust/gui-client/src-tauri/src/view.rs +++ b/rust/gui-client/src-tauri/src/view.rs @@ -1,7 +1,7 @@ use std::{path::PathBuf, time::Duration}; use anyhow::Context as _; -use firezone_logging::err_with_src; +use logging::err_with_src; use serde::Serialize; use tauri_plugin_dialog::DialogExt as _; diff --git a/rust/headless-client/Cargo.toml b/rust/headless-client/Cargo.toml index 4c6611e9b..1ce1ebe5a 100644 --- a/rust/headless-client/Cargo.toml +++ b/rust/headless-client/Cargo.toml @@ -10,16 +10,15 @@ license = { workspace = true } [dependencies] anyhow = { workspace = true } backoff = { workspace = true } +bin-shared = { workspace = true } clap = { workspace = true, features = ["derive", "env", "string"] } client-shared = { workspace = true } connlib-model = { workspace = true } dns-types = { workspace = true } -firezone-bin-shared = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } futures = { workspace = true } humantime = { workspace = true } ip-packet = { workspace = true } +logging = { workspace = true } opentelemetry = { workspace = true, features = ["metrics"] } opentelemetry-otlp = { workspace = true, features = ["metrics", "grpc-tonic"] } opentelemetry-stdout = { workspace = true, features = ["metrics"] } @@ -28,6 +27,7 @@ phoenix-channel = { workspace = true } rustls = { workspace = true } secrecy = { workspace = true } socket-factory = { workspace = true } +telemetry = { workspace = true } # This actually relies on many other features in Tokio, so this will probably # fail to build outside the workspace. tokio = { workspace = true, features = ["macros", "signal", "process", "time", "fs", "rt"] } diff --git a/rust/headless-client/src/linux.rs b/rust/headless-client/src/linux.rs index 3dd139062..14553eadf 100644 --- a/rust/headless-client/src/linux.rs +++ b/rust/headless-client/src/linux.rs @@ -2,7 +2,7 @@ use super::TOKEN_ENV_KEY; use anyhow::{Result, bail}; -use firezone_bin_shared::BUNDLE_ID; +use bin_shared::BUNDLE_ID; use nix::fcntl::AT_FDCWD; use std::path::{Path, PathBuf}; diff --git a/rust/headless-client/src/main.rs b/rust/headless-client/src/main.rs index d0017f05d..0c280f1cb 100644 --- a/rust/headless-client/src/main.rs +++ b/rust/headless-client/src/main.rs @@ -4,16 +4,13 @@ use anyhow::{Context as _, Result, anyhow}; use backoff::ExponentialBackoffBuilder; -use clap::Parser; -use firezone_bin_shared::{ +use bin_shared::{ DnsControlMethod, DnsController, TOKEN_ENV_KEY, TunDeviceManager, device_id, device_info, new_dns_notifier, new_network_notifier, platform::{UdpSocketFactory, tcp_socket_factory}, signals, }; -use firezone_telemetry::{ - MaybePushMetricsExporter, NoopPushMetricsExporter, Telemetry, analytics, feature_flags, otel, -}; +use clap::Parser; use opentelemetry_otlp::WithExportConfig as _; use opentelemetry_sdk::metrics::SdkMeterProvider; use phoenix_channel::PhoenixChannel; @@ -25,6 +22,9 @@ use std::{ sync::Arc, time::Duration, }; +use telemetry::{ + MaybePushMetricsExporter, NoopPushMetricsExporter, Telemetry, analytics, feature_flags, otel, +}; use tokio::time::Instant; #[cfg(target_os = "linux")] @@ -213,9 +213,9 @@ fn try_main() -> Result<()> { let (layer, _handle) = cli .log_dir .as_deref() - .map(|dir| firezone_logging::file::layer(dir, "firezone-headless-client")) + .map(|dir| logging::file::layer(dir, "firezone-headless-client")) .unzip(); - firezone_logging::setup_global_subscriber(layer, false).context("Failed to set up logging")?; + logging::setup_global_subscriber(layer, false).context("Failed to set up logging")?; // Deactivate DNS control before starting telemetry or connecting to the portal, // in case a previous run of Firezone left DNS control on and messed anything up. @@ -255,7 +255,7 @@ fn try_main() -> Result<()> { rt.block_on(telemetry.start( cli.api_url.as_ref(), RELEASE, - firezone_telemetry::HEADLESS_DSN, + telemetry::HEADLESS_DSN, firezone_id.clone(), )); diff --git a/rust/headless-client/src/windows.rs b/rust/headless-client/src/windows.rs index 3ee2314b6..d9a639076 100644 --- a/rust/headless-client/src/windows.rs +++ b/rust/headless-client/src/windows.rs @@ -5,7 +5,7 @@ //! We must tell Windows explicitly when our service is stopping. use anyhow::Result; -use firezone_bin_shared::BUNDLE_ID; +use bin_shared::BUNDLE_ID; use known_folders::{KnownFolder, get_known_folder_path}; use std::path::{Path, PathBuf}; diff --git a/rust/anyhow-ext/Cargo.toml b/rust/libs/anyhow-ext/Cargo.toml similarity index 100% rename from rust/anyhow-ext/Cargo.toml rename to rust/libs/anyhow-ext/Cargo.toml diff --git a/rust/anyhow-ext/lib.rs b/rust/libs/anyhow-ext/lib.rs similarity index 100% rename from rust/anyhow-ext/lib.rs rename to rust/libs/anyhow-ext/lib.rs diff --git a/rust/bin-shared/Cargo.toml b/rust/libs/bin-shared/Cargo.toml similarity index 96% rename from rust/bin-shared/Cargo.toml rename to rust/libs/bin-shared/Cargo.toml index 9ca99f9b9..64354a8a4 100644 --- a/rust/bin-shared/Cargo.toml +++ b/rust/libs/bin-shared/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "firezone-bin-shared" +name = "bin-shared" version = "0.1.0" edition = { workspace = true } description = "Firezone-specific modules shared between binaries." @@ -12,19 +12,19 @@ atomicwrites = { workspace = true } axum = { workspace = true, features = ["http1", "tokio"] } clap = { workspace = true, features = ["derive", "env"] } dns-types = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } futures = { workspace = true, features = ["std", "async-await"] } gat-lending-iterator = { workspace = true } hex = { workspace = true } hex-literal = { workspace = true } ip-packet = { workspace = true } ip_network = { workspace = true, features = ["serde"] } +logging = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } sha2 = { workspace = true } smbios-lib = { workspace = true } socket-factory = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["io-util", "net", "rt", "sync", "process", "signal"] } tracing = { workspace = true } diff --git a/rust/bin-shared/src/device_id.rs b/rust/libs/bin-shared/src/device_id.rs similarity index 99% rename from rust/bin-shared/src/device_id.rs rename to rust/libs/bin-shared/src/device_id.rs index 33db9bf0e..caf5c74b3 100644 --- a/rust/bin-shared/src/device_id.rs +++ b/rust/libs/bin-shared/src/device_id.rs @@ -245,7 +245,7 @@ mod tests { #[test] #[cfg(target_os = "linux")] fn compute_device_id_hardware_id() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let id = compute_from_hardware_id(CLIENT_APP_ID).unwrap(); diff --git a/rust/bin-shared/src/device_info.rs b/rust/libs/bin-shared/src/device_info.rs similarity index 100% rename from rust/bin-shared/src/device_info.rs rename to rust/libs/bin-shared/src/device_info.rs diff --git a/rust/bin-shared/src/dns_control.rs b/rust/libs/bin-shared/src/dns_control.rs similarity index 100% rename from rust/bin-shared/src/dns_control.rs rename to rust/libs/bin-shared/src/dns_control.rs diff --git a/rust/bin-shared/src/dns_control/linux.rs b/rust/libs/bin-shared/src/dns_control/linux.rs similarity index 100% rename from rust/bin-shared/src/dns_control/linux.rs rename to rust/libs/bin-shared/src/dns_control/linux.rs diff --git a/rust/bin-shared/src/dns_control/linux/etc_resolv_conf.rs b/rust/libs/bin-shared/src/dns_control/linux/etc_resolv_conf.rs similarity index 100% rename from rust/bin-shared/src/dns_control/linux/etc_resolv_conf.rs rename to rust/libs/bin-shared/src/dns_control/linux/etc_resolv_conf.rs diff --git a/rust/bin-shared/src/dns_control/macos.rs b/rust/libs/bin-shared/src/dns_control/macos.rs similarity index 100% rename from rust/bin-shared/src/dns_control/macos.rs rename to rust/libs/bin-shared/src/dns_control/macos.rs diff --git a/rust/bin-shared/src/dns_control/windows.rs b/rust/libs/bin-shared/src/dns_control/windows.rs similarity index 100% rename from rust/bin-shared/src/dns_control/windows.rs rename to rust/libs/bin-shared/src/dns_control/windows.rs diff --git a/rust/bin-shared/src/http_health_check.rs b/rust/libs/bin-shared/src/http_health_check.rs similarity index 100% rename from rust/bin-shared/src/http_health_check.rs rename to rust/libs/bin-shared/src/http_health_check.rs diff --git a/rust/bin-shared/src/known_dirs.rs b/rust/libs/bin-shared/src/known_dirs.rs similarity index 100% rename from rust/bin-shared/src/known_dirs.rs rename to rust/libs/bin-shared/src/known_dirs.rs diff --git a/rust/bin-shared/src/known_dirs/linux.rs b/rust/libs/bin-shared/src/known_dirs/linux.rs similarity index 100% rename from rust/bin-shared/src/known_dirs/linux.rs rename to rust/libs/bin-shared/src/known_dirs/linux.rs diff --git a/rust/bin-shared/src/known_dirs/macos.rs b/rust/libs/bin-shared/src/known_dirs/macos.rs similarity index 100% rename from rust/bin-shared/src/known_dirs/macos.rs rename to rust/libs/bin-shared/src/known_dirs/macos.rs diff --git a/rust/bin-shared/src/known_dirs/windows.rs b/rust/libs/bin-shared/src/known_dirs/windows.rs similarity index 100% rename from rust/bin-shared/src/known_dirs/windows.rs rename to rust/libs/bin-shared/src/known_dirs/windows.rs diff --git a/rust/bin-shared/src/lib.rs b/rust/libs/bin-shared/src/lib.rs similarity index 100% rename from rust/bin-shared/src/lib.rs rename to rust/libs/bin-shared/src/lib.rs diff --git a/rust/bin-shared/src/linux.rs b/rust/libs/bin-shared/src/linux.rs similarity index 100% rename from rust/bin-shared/src/linux.rs rename to rust/libs/bin-shared/src/linux.rs diff --git a/rust/bin-shared/src/macos.rs b/rust/libs/bin-shared/src/macos.rs similarity index 100% rename from rust/bin-shared/src/macos.rs rename to rust/libs/bin-shared/src/macos.rs diff --git a/rust/bin-shared/src/network_changes.rs b/rust/libs/bin-shared/src/network_changes.rs similarity index 100% rename from rust/bin-shared/src/network_changes.rs rename to rust/libs/bin-shared/src/network_changes.rs diff --git a/rust/bin-shared/src/network_changes/linux.rs b/rust/libs/bin-shared/src/network_changes/linux.rs similarity index 100% rename from rust/bin-shared/src/network_changes/linux.rs rename to rust/libs/bin-shared/src/network_changes/linux.rs diff --git a/rust/bin-shared/src/network_changes/macos.rs b/rust/libs/bin-shared/src/network_changes/macos.rs similarity index 100% rename from rust/bin-shared/src/network_changes/macos.rs rename to rust/libs/bin-shared/src/network_changes/macos.rs diff --git a/rust/bin-shared/src/network_changes/windows.rs b/rust/libs/bin-shared/src/network_changes/windows.rs similarity index 100% rename from rust/bin-shared/src/network_changes/windows.rs rename to rust/libs/bin-shared/src/network_changes/windows.rs diff --git a/rust/bin-shared/src/signals.rs b/rust/libs/bin-shared/src/signals.rs similarity index 100% rename from rust/bin-shared/src/signals.rs rename to rust/libs/bin-shared/src/signals.rs diff --git a/rust/bin-shared/src/signals/linux.rs b/rust/libs/bin-shared/src/signals/linux.rs similarity index 100% rename from rust/bin-shared/src/signals/linux.rs rename to rust/libs/bin-shared/src/signals/linux.rs diff --git a/rust/bin-shared/src/signals/macos.rs b/rust/libs/bin-shared/src/signals/macos.rs similarity index 100% rename from rust/bin-shared/src/signals/macos.rs rename to rust/libs/bin-shared/src/signals/macos.rs diff --git a/rust/bin-shared/src/signals/windows.rs b/rust/libs/bin-shared/src/signals/windows.rs similarity index 100% rename from rust/bin-shared/src/signals/windows.rs rename to rust/libs/bin-shared/src/signals/windows.rs diff --git a/rust/bin-shared/src/tun_device_manager.rs b/rust/libs/bin-shared/src/tun_device_manager.rs similarity index 95% rename from rust/bin-shared/src/tun_device_manager.rs rename to rust/libs/bin-shared/src/tun_device_manager.rs index 34139643a..91ddf0d9f 100644 --- a/rust/bin-shared/src/tun_device_manager.rs +++ b/rust/libs/bin-shared/src/tun_device_manager.rs @@ -1,4 +1,4 @@ -//! DNS and route control for the virtual network interface in `firezone-tunnel` +//! DNS and route control for the virtual network interface in `tunnel` #[cfg(target_os = "linux")] pub mod linux; diff --git a/rust/bin-shared/src/tun_device_manager/linux.rs b/rust/libs/bin-shared/src/tun_device_manager/linux.rs similarity index 99% rename from rust/bin-shared/src/tun_device_manager/linux.rs rename to rust/libs/bin-shared/src/tun_device_manager/linux.rs index 12beeb9cc..f00cbb410 100644 --- a/rust/bin-shared/src/tun_device_manager/linux.rs +++ b/rust/libs/bin-shared/src/tun_device_manager/linux.rs @@ -2,8 +2,6 @@ use crate::FIREZONE_MARK; use anyhow::{Context as _, Result}; -use firezone_logging::{DisplayBTreeSet, err_with_src}; -use firezone_telemetry::otel; use futures::{ SinkExt, StreamExt, TryStreamExt, future::{self, Either}, @@ -14,6 +12,7 @@ use libc::{ EEXIST, ENOENT, ESRCH, F_GETFL, F_SETFL, O_NONBLOCK, O_RDWR, S_IFCHR, fcntl, makedev, mknod, open, }; +use logging::{DisplayBTreeSet, err_with_src}; use netlink_packet_route::link::{LinkAttribute, State}; use netlink_packet_route::route::{ RouteAddress, RouteAttribute, RouteMessage, RouteProtocol, RouteScope, @@ -39,6 +38,7 @@ use std::{ os::{fd::RawFd, unix::fs::PermissionsExt}, }; use std::{net::IpAddr, time::Duration}; +use telemetry::otel; use tokio::{sync::mpsc, time::Instant}; use tokio_util::sync::PollSender; use tun::ioctl; @@ -697,7 +697,7 @@ impl Tun { let fd = fd.clone(); move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_send(fd, outbound_rx, write), "Failed to send to TUN device: {}" ) @@ -707,7 +707,7 @@ impl Tun { std::thread::Builder::new() .name("TUN recv".to_owned()) .spawn(move || { - firezone_logging::unwrap_or_warn!( + logging::unwrap_or_warn!( tun::unix::tun_recv(fd, inbound_tx, read), "Failed to recv from TUN device: {}" ) diff --git a/rust/bin-shared/src/tun_device_manager/macos.rs b/rust/libs/bin-shared/src/tun_device_manager/macos.rs similarity index 100% rename from rust/bin-shared/src/tun_device_manager/macos.rs rename to rust/libs/bin-shared/src/tun_device_manager/macos.rs diff --git a/rust/bin-shared/src/tun_device_manager/windows.rs b/rust/libs/bin-shared/src/tun_device_manager/windows.rs similarity index 99% rename from rust/bin-shared/src/tun_device_manager/windows.rs rename to rust/libs/bin-shared/src/tun_device_manager/windows.rs index ec04640b2..0077265f9 100644 --- a/rust/bin-shared/src/tun_device_manager/windows.rs +++ b/rust/libs/bin-shared/src/tun_device_manager/windows.rs @@ -2,10 +2,9 @@ use crate::TUNNEL_NAME; use crate::windows::TUNNEL_UUID; use crate::windows::error::{NOT_FOUND, NOT_SUPPORTED, OBJECT_EXISTS}; use anyhow::{Context as _, Result}; -use firezone_logging::err_with_src; -use firezone_telemetry::otel; use ip_network::{IpNetwork, Ipv4Network, Ipv6Network}; use ip_packet::{IpPacket, IpPacketBuf}; +use logging::err_with_src; use ring::digest; use std::net::IpAddr; use std::sync::Weak; @@ -19,6 +18,7 @@ use std::{ sync::Arc, task::{Context, Poll}, }; +use telemetry::otel; use tokio::sync::mpsc; use tokio_util::sync::PollSender; use windows::Win32::NetworkManagement::IpHelper::{ diff --git a/rust/bin-shared/src/uptime/README.md b/rust/libs/bin-shared/src/uptime/README.md similarity index 100% rename from rust/bin-shared/src/uptime/README.md rename to rust/libs/bin-shared/src/uptime/README.md diff --git a/rust/bin-shared/src/uptime/mod.rs b/rust/libs/bin-shared/src/uptime/mod.rs similarity index 100% rename from rust/bin-shared/src/uptime/mod.rs rename to rust/libs/bin-shared/src/uptime/mod.rs diff --git a/rust/bin-shared/src/windows.rs b/rust/libs/bin-shared/src/windows.rs similarity index 97% rename from rust/bin-shared/src/windows.rs rename to rust/libs/bin-shared/src/windows.rs index 7dd26f9ea..7b02296e8 100644 --- a/rust/bin-shared/src/windows.rs +++ b/rust/libs/bin-shared/src/windows.rs @@ -1,7 +1,7 @@ use crate::TUNNEL_NAME; use anyhow::Result; use dashmap::DashMap; -use firezone_logging::err_with_src; +use logging::err_with_src; use socket_factory::SocketFactory; use socket_factory::{TcpSocket, UdpSocket}; use std::{ @@ -60,21 +60,21 @@ pub mod error { /// Win32 error code objects that don't exist (like network adapters). /// /// ``` - /// assert_eq!(firezone_bin_shared::windows::error::NOT_FOUND.0 as u32, 0x80070490) + /// assert_eq!(bin_shared::windows::error::NOT_FOUND.0 as u32, 0x80070490) /// ``` pub const NOT_FOUND: HRESULT = HRESULT::from_win32(0x0490); /// Win32 error code for objects that already exist (like routing table entries). /// /// ``` - /// assert_eq!(firezone_bin_shared::windows::error::OBJECT_EXISTS.0 as u32, 0x80071392) + /// assert_eq!(bin_shared::windows::error::OBJECT_EXISTS.0 as u32, 0x80071392) /// ``` pub const OBJECT_EXISTS: HRESULT = HRESULT::from_win32(0x1392); /// Win32 error code for unsupported operations (like setting an IPv6 address without an IPv6 stack). /// /// ``` - /// assert_eq!(firezone_bin_shared::windows::error::NOT_SUPPORTED.0 as u32, 0x80070032) + /// assert_eq!(bin_shared::windows::error::NOT_SUPPORTED.0 as u32, 0x80070032) /// ``` pub const NOT_SUPPORTED: HRESULT = HRESULT::from_win32(0x0032); @@ -85,7 +85,7 @@ pub mod error { /// > There are no more endpoints available from the endpoint mapper. /// /// ``` - /// assert_eq!(firezone_bin_shared::windows::error::EPT_S_NOT_REGISTERED.0 as u32, 0x800706D9) + /// assert_eq!(bin_shared::windows::error::EPT_S_NOT_REGISTERED.0 as u32, 0x800706D9) /// ``` pub const EPT_S_NOT_REGISTERED: HRESULT = HRESULT::from_win32(0x06D9); } diff --git a/rust/bin-shared/src/wintun/README.md b/rust/libs/bin-shared/src/wintun/README.md similarity index 100% rename from rust/bin-shared/src/wintun/README.md rename to rust/libs/bin-shared/src/wintun/README.md diff --git a/rust/bin-shared/src/wintun/bin/amd64/wintun.dll b/rust/libs/bin-shared/src/wintun/bin/amd64/wintun.dll similarity index 100% rename from rust/bin-shared/src/wintun/bin/amd64/wintun.dll rename to rust/libs/bin-shared/src/wintun/bin/amd64/wintun.dll diff --git a/rust/bin-shared/src/wintun/bin/arm64/wintun.dll b/rust/libs/bin-shared/src/wintun/bin/arm64/wintun.dll similarity index 100% rename from rust/bin-shared/src/wintun/bin/arm64/wintun.dll rename to rust/libs/bin-shared/src/wintun/bin/arm64/wintun.dll diff --git a/rust/bin-shared/tests/dns_control_windows.rs b/rust/libs/bin-shared/tests/dns_control_windows.rs similarity index 88% rename from rust/bin-shared/tests/dns_control_windows.rs rename to rust/libs/bin-shared/tests/dns_control_windows.rs index f38d3c4b0..4dc257b74 100644 --- a/rust/bin-shared/tests/dns_control_windows.rs +++ b/rust/libs/bin-shared/tests/dns_control_windows.rs @@ -1,16 +1,16 @@ #![cfg(target_os = "windows")] #![allow(clippy::unwrap_used)] -use firezone_bin_shared::{DnsControlMethod, DnsController}; +use bin_shared::{DnsControlMethod, DnsController}; use std::{collections::BTreeSet, net::IpAddr}; // Passes in CI but not locally. Maybe ReactorScram's dev system has IPv6 misconfigured. There it fails to pick up the IPv6 DNS servers. #[ignore = "Needs admin, changes system state"] #[tokio::test] async fn dns_control() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); - let mut tun_dev_manager = firezone_bin_shared::TunDeviceManager::new(1280).unwrap(); + let mut tun_dev_manager = bin_shared::TunDeviceManager::new(1280).unwrap(); let _tun = tun_dev_manager.make_tun().unwrap(); tun_dev_manager diff --git a/rust/bin-shared/tests/network_notifiers.rs b/rust/libs/bin-shared/tests/network_notifiers.rs similarity index 92% rename from rust/bin-shared/tests/network_notifiers.rs rename to rust/libs/bin-shared/tests/network_notifiers.rs index 832c6dcbe..a64102188 100644 --- a/rust/bin-shared/tests/network_notifiers.rs +++ b/rust/libs/bin-shared/tests/network_notifiers.rs @@ -1,6 +1,6 @@ #![allow(clippy::unwrap_used)] -use firezone_bin_shared::{DnsControlMethod, new_dns_notifier, new_network_notifier}; +use bin_shared::{DnsControlMethod, new_dns_notifier, new_network_notifier}; use futures::future::FutureExt as _; use std::time::Duration; use tokio::time::timeout; @@ -11,7 +11,7 @@ use tokio::time::timeout; /// This tests that the threads quit gracefully when we call `close`, and they don't crash on startup. #[tokio::test] async fn notifiers() { - firezone_logging::test_global("debug"); + logging::test_global("debug"); let tokio_handle = tokio::runtime::Handle::current(); let mut dns = new_dns_notifier(tokio_handle.clone(), DnsControlMethod::default()) diff --git a/rust/bin-shared/tests/no_packet_loops_tcp.rs b/rust/libs/bin-shared/tests/no_packet_loops_tcp.rs similarity index 88% rename from rust/bin-shared/tests/no_packet_loops_tcp.rs rename to rust/libs/bin-shared/tests/no_packet_loops_tcp.rs index d48331ff4..6d1672ac0 100644 --- a/rust/bin-shared/tests/no_packet_loops_tcp.rs +++ b/rust/libs/bin-shared/tests/no_packet_loops_tcp.rs @@ -1,6 +1,6 @@ #![allow(clippy::unwrap_used)] -use firezone_bin_shared::{TunDeviceManager, platform::tcp_socket_factory}; +use bin_shared::{TunDeviceManager, platform::tcp_socket_factory}; use ip_network::Ipv4Network; use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4}; use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; @@ -10,7 +10,7 @@ use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; #[tokio::test] #[ignore = "Needs admin / sudo and Internet"] async fn no_packet_loops_tcp() { - firezone_logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. + logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. let ipv4 = Ipv4Addr::from([100, 90, 215, 97]); let ipv6 = Ipv6Addr::from([0xfd00, 0x2021, 0x1111, 0x0, 0x0, 0x0, 0x0016, 0x588f]); diff --git a/rust/bin-shared/tests/no_packet_loops_udp.rs b/rust/libs/bin-shared/tests/no_packet_loops_udp.rs similarity index 91% rename from rust/bin-shared/tests/no_packet_loops_udp.rs rename to rust/libs/bin-shared/tests/no_packet_loops_udp.rs index 99a6fa53c..827ec8107 100644 --- a/rust/bin-shared/tests/no_packet_loops_udp.rs +++ b/rust/libs/bin-shared/tests/no_packet_loops_udp.rs @@ -1,8 +1,8 @@ #![allow(clippy::unwrap_used)] +use bin_shared::{TunDeviceManager, platform::UdpSocketFactory}; use bufferpool::BufferPool; use bytes::BytesMut; -use firezone_bin_shared::{TunDeviceManager, platform::UdpSocketFactory}; use gat_lending_iterator::LendingIterator as _; use ip_network::Ipv4Network; use ip_packet::Ecn; @@ -17,7 +17,7 @@ use std::{ #[tokio::test] #[ignore = "Needs admin / sudo and Internet"] async fn no_packet_loops_udp() { - firezone_logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. + logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. let ipv4 = Ipv4Addr::from([100, 90, 215, 97]); let ipv6 = Ipv6Addr::from([0xfd00, 0x2021, 0x1111, 0x0, 0x0, 0x0, 0x0016, 0x588f]); diff --git a/rust/bin-shared/tests/tunnel_drop.rs b/rust/libs/bin-shared/tests/tunnel_drop.rs similarity index 78% rename from rust/bin-shared/tests/tunnel_drop.rs rename to rust/libs/bin-shared/tests/tunnel_drop.rs index 4e1c8b397..3e73166c2 100644 --- a/rust/bin-shared/tests/tunnel_drop.rs +++ b/rust/libs/bin-shared/tests/tunnel_drop.rs @@ -1,13 +1,13 @@ #![allow(clippy::unwrap_used)] -use firezone_bin_shared::TunDeviceManager; +use bin_shared::TunDeviceManager; /// Checks for regressions in issue #4765, un-initializing Wintun /// Redundant but harmless on Linux. #[tokio::test] // Needs a runtime. #[ignore = "Needs admin / sudo and Internet"] async fn tunnel_drop() { - firezone_logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. + logging::test_global("debug"); // `Tun` uses threads and we want to see the logs of all threads. let mut tun_device_manager = TunDeviceManager::new(1280).unwrap(); diff --git a/rust/client-shared/Cargo.toml b/rust/libs/client-shared/Cargo.toml similarity index 93% rename from rust/client-shared/Cargo.toml rename to rust/libs/client-shared/Cargo.toml index e2a9bda54..ac35204cc 100644 --- a/rust/client-shared/Cargo.toml +++ b/rust/libs/client-shared/Cargo.toml @@ -10,12 +10,11 @@ backoff = { workspace = true } bimap = { workspace = true } connlib-model = { workspace = true } dns-types = { workspace = true } -firezone-logging = { workspace = true } -firezone-tunnel = { workspace = true } futures = { workspace = true } ip_network = { workspace = true } l4-udp-dns-client = { workspace = true } libc = { workspace = true } +logging = { workspace = true } parking_lot = { workspace = true } phoenix-channel = { workspace = true } secrecy = { workspace = true } @@ -28,6 +27,7 @@ tokio = { workspace = true, features = ["rt", "sync"] } tokio-stream = { workspace = true, features = ["sync"] } tracing = { workspace = true, features = ["std", "attributes"] } tun = { workspace = true } +tunnel = { workspace = true } url = { workspace = true, features = ["serde"] } [dev-dependencies] diff --git a/rust/client-shared/src/eventloop.rs b/rust/libs/client-shared/src/eventloop.rs similarity index 97% rename from rust/client-shared/src/eventloop.rs rename to rust/libs/client-shared/src/eventloop.rs index 8b0b3d1c5..e34f41ddb 100644 --- a/rust/client-shared/src/eventloop.rs +++ b/rust/libs/client-shared/src/eventloop.rs @@ -1,14 +1,6 @@ use crate::PHOENIX_TOPIC; use anyhow::{Context as _, ErrorExt as _, Result}; use connlib_model::{PublicKey, ResourceView}; -use firezone_tunnel::messages::RelaysPresence; -use firezone_tunnel::messages::client::{ - EgressMessages, FailReason, FlowCreated, FlowCreationFailed, GatewayIceCandidates, - GatewaysIceCandidates, IngressMessages, InitClient, -}; -use firezone_tunnel::{ - ClientEvent, ClientTunnel, DnsResourceRecord, IpConfig, TunConfig, TunnelError, -}; use l4_udp_dns_client::UdpDnsClient; use parking_lot::Mutex; use phoenix_channel::{ErrorReply, PhoenixChannel, PublicKeyParam}; @@ -26,6 +18,12 @@ use std::{ use std::{future, mem}; use tokio::sync::{mpsc, watch}; use tun::Tun; +use tunnel::messages::RelaysPresence; +use tunnel::messages::client::{ + EgressMessages, FailReason, FlowCreated, FlowCreationFailed, GatewayIceCandidates, + GatewaysIceCandidates, IngressMessages, InitClient, +}; +use tunnel::{ClientEvent, ClientTunnel, DnsResourceRecord, IpConfig, TunConfig, TunnelError}; /// In-memory cache for DNS resource records. /// @@ -335,7 +333,7 @@ impl Eventloop { continue; } - if e.any_is::() { + if e.any_is::() { return Err(e); } @@ -373,11 +371,7 @@ impl Eventloop { state.update_interface_config(interface); state.set_resources(resources, Instant::now()); - state.update_relays( - BTreeSet::default(), - firezone_tunnel::turn(&relays), - Instant::now(), - ); + state.update_relays(BTreeSet::default(), tunnel::turn(&relays), Instant::now()); } IngressMessages::ResourceCreatedOrUpdated(resource) => { tunnel.state_mut().add_resource(resource, Instant::now()); @@ -390,7 +384,7 @@ impl Eventloop { connected, }) => tunnel.state_mut().update_relays( BTreeSet::from_iter(disconnected_ids), - firezone_tunnel::turn(&connected), + tunnel::turn(&connected), Instant::now(), ), IngressMessages::InvalidateIceCandidates(GatewayIceCandidates { diff --git a/rust/client-shared/src/lib.rs b/rust/libs/client-shared/src/lib.rs similarity index 97% rename from rust/client-shared/src/lib.rs rename to rust/libs/client-shared/src/lib.rs index e711a18be..94716233c 100644 --- a/rust/client-shared/src/lib.rs +++ b/rust/libs/client-shared/src/lib.rs @@ -3,8 +3,8 @@ //! Main connlib library for clients. pub use connlib_model::StaticSecret; pub use eventloop::DisconnectError; -pub use firezone_tunnel::TunConfig; -pub use firezone_tunnel::messages::client::{IngressMessages, ResourceDescription}; +pub use tunnel::TunConfig; +pub use tunnel::messages::client::{IngressMessages, ResourceDescription}; use anyhow::Result; use connlib_model::ResourceView; diff --git a/rust/connlib/README.md b/rust/libs/connlib/README.md similarity index 100% rename from rust/connlib/README.md rename to rust/libs/connlib/README.md diff --git a/rust/connlib/bufferpool/Cargo.toml b/rust/libs/connlib/bufferpool/Cargo.toml similarity index 100% rename from rust/connlib/bufferpool/Cargo.toml rename to rust/libs/connlib/bufferpool/Cargo.toml diff --git a/rust/connlib/bufferpool/lib.rs b/rust/libs/connlib/bufferpool/lib.rs similarity index 100% rename from rust/connlib/bufferpool/lib.rs rename to rust/libs/connlib/bufferpool/lib.rs diff --git a/rust/connlib/dns-over-tcp/Cargo.toml b/rust/libs/connlib/dns-over-tcp/Cargo.toml similarity index 88% rename from rust/connlib/dns-over-tcp/Cargo.toml rename to rust/libs/connlib/dns-over-tcp/Cargo.toml index 2f0a4b2b7..0e13ffb90 100644 --- a/rust/connlib/dns-over-tcp/Cargo.toml +++ b/rust/libs/connlib/dns-over-tcp/Cargo.toml @@ -8,9 +8,9 @@ license = { workspace = true } [dependencies] anyhow = { workspace = true } dns-types = { workspace = true } -firezone-logging = { workspace = true } ip-packet = { workspace = true } l3-tcp = { workspace = true } +logging = { workspace = true } rand = { workspace = true } tracing = { workspace = true } @@ -19,7 +19,7 @@ futures = { workspace = true } tokio = { workspace = true, features = ["process", "rt", "macros"] } [target.'cfg(target_os = "linux")'.dev-dependencies] -firezone-bin-shared = { workspace = true } +bin-shared = { workspace = true } ip_network = { workspace = true } tun = { workspace = true } diff --git a/rust/connlib/dns-over-tcp/src/client.rs b/rust/libs/connlib/dns-over-tcp/src/client.rs similarity index 100% rename from rust/connlib/dns-over-tcp/src/client.rs rename to rust/libs/connlib/dns-over-tcp/src/client.rs diff --git a/rust/connlib/dns-over-tcp/src/codec.rs b/rust/libs/connlib/dns-over-tcp/src/codec.rs similarity index 100% rename from rust/connlib/dns-over-tcp/src/codec.rs rename to rust/libs/connlib/dns-over-tcp/src/codec.rs diff --git a/rust/connlib/dns-over-tcp/src/lib.rs b/rust/libs/connlib/dns-over-tcp/src/lib.rs similarity index 100% rename from rust/connlib/dns-over-tcp/src/lib.rs rename to rust/libs/connlib/dns-over-tcp/src/lib.rs diff --git a/rust/connlib/dns-over-tcp/src/server.rs b/rust/libs/connlib/dns-over-tcp/src/server.rs similarity index 100% rename from rust/connlib/dns-over-tcp/src/server.rs rename to rust/libs/connlib/dns-over-tcp/src/server.rs diff --git a/rust/connlib/dns-over-tcp/tests/client_and_server.rs b/rust/libs/connlib/dns-over-tcp/tests/client_and_server.rs similarity index 98% rename from rust/connlib/dns-over-tcp/tests/client_and_server.rs rename to rust/libs/connlib/dns-over-tcp/tests/client_and_server.rs index e0a6c0fe6..73b5e9e65 100644 --- a/rust/connlib/dns-over-tcp/tests/client_and_server.rs +++ b/rust/libs/connlib/dns-over-tcp/tests/client_and_server.rs @@ -12,7 +12,7 @@ use dns_types::{Query, RecordType, ResponseBuilder, ResponseCode}; #[test] fn smoke() { - let _guard = firezone_logging::test( + let _guard = logging::test( "netlink_proto=off,wire::dns::res=trace,dns_over_tcp=trace,smoltcp=trace,debug", ); @@ -49,7 +49,7 @@ fn smoke() { #[test] fn no_panic_after_set_listen_address() { - let _guard = firezone_logging::test( + let _guard = logging::test( "netlink_proto=off,wire::dns::res=trace,dns_over_tcp=trace,smoltcp=trace,debug", ); diff --git a/rust/connlib/dns-over-tcp/tests/smoke_server.rs b/rust/libs/connlib/dns-over-tcp/tests/smoke_server.rs similarity index 96% rename from rust/connlib/dns-over-tcp/tests/smoke_server.rs rename to rust/libs/connlib/dns-over-tcp/tests/smoke_server.rs index c0d42236e..2cb2345b3 100644 --- a/rust/connlib/dns-over-tcp/tests/smoke_server.rs +++ b/rust/libs/connlib/dns-over-tcp/tests/smoke_server.rs @@ -10,8 +10,8 @@ use std::{ }; use anyhow::{Context as _, Result}; +use bin_shared::TunDeviceManager; use dns_types::{ResponseBuilder, ResponseCode}; -use firezone_bin_shared::TunDeviceManager; use ip_network::Ipv4Network; use tokio::task::JoinSet; use tun::Tun; @@ -21,7 +21,7 @@ const CLIENT_CONCURRENCY: usize = 3; #[tokio::test] #[ignore = "Requires root & IP forwarding"] async fn smoke() { - let _guard = firezone_logging::test("netlink_proto=off,wire::dns=trace,debug"); + let _guard = logging::test("netlink_proto=off,wire::dns=trace,debug"); let ipv4 = Ipv4Addr::from([100, 90, 215, 97]); let ipv6 = Ipv6Addr::from([0xfd00, 0x2021, 0x1111, 0x0, 0x0, 0x0, 0x0016, 0x588f]); diff --git a/rust/connlib/dns-types/Cargo.toml b/rust/libs/connlib/dns-types/Cargo.toml similarity index 100% rename from rust/connlib/dns-types/Cargo.toml rename to rust/libs/connlib/dns-types/Cargo.toml diff --git a/rust/connlib/dns-types/lib.rs b/rust/libs/connlib/dns-types/lib.rs similarity index 100% rename from rust/connlib/dns-types/lib.rs rename to rust/libs/connlib/dns-types/lib.rs diff --git a/rust/connlib/etherparse-ext/Cargo.toml b/rust/libs/connlib/etherparse-ext/Cargo.toml similarity index 100% rename from rust/connlib/etherparse-ext/Cargo.toml rename to rust/libs/connlib/etherparse-ext/Cargo.toml diff --git a/rust/connlib/etherparse-ext/src/icmpv4_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/icmpv4_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/icmpv4_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/icmpv4_header_slice_mut.rs diff --git a/rust/connlib/etherparse-ext/src/icmpv6_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/icmpv6_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/icmpv6_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/icmpv6_header_slice_mut.rs diff --git a/rust/connlib/etherparse-ext/src/ipv4_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/ipv4_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/ipv4_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/ipv4_header_slice_mut.rs diff --git a/rust/connlib/etherparse-ext/src/ipv6_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/ipv6_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/ipv6_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/ipv6_header_slice_mut.rs diff --git a/rust/connlib/etherparse-ext/src/lib.rs b/rust/libs/connlib/etherparse-ext/src/lib.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/lib.rs rename to rust/libs/connlib/etherparse-ext/src/lib.rs diff --git a/rust/connlib/etherparse-ext/src/slice_utils.rs b/rust/libs/connlib/etherparse-ext/src/slice_utils.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/slice_utils.rs rename to rust/libs/connlib/etherparse-ext/src/slice_utils.rs diff --git a/rust/connlib/etherparse-ext/src/tcp_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/tcp_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/tcp_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/tcp_header_slice_mut.rs diff --git a/rust/connlib/etherparse-ext/src/udp_header_slice_mut.rs b/rust/libs/connlib/etherparse-ext/src/udp_header_slice_mut.rs similarity index 100% rename from rust/connlib/etherparse-ext/src/udp_header_slice_mut.rs rename to rust/libs/connlib/etherparse-ext/src/udp_header_slice_mut.rs diff --git a/rust/connlib/ip-packet/Cargo.toml b/rust/libs/connlib/ip-packet/Cargo.toml similarity index 100% rename from rust/connlib/ip-packet/Cargo.toml rename to rust/libs/connlib/ip-packet/Cargo.toml diff --git a/rust/connlib/ip-packet/proptest-regressions/proptests.txt b/rust/libs/connlib/ip-packet/proptest-regressions/proptests.txt similarity index 100% rename from rust/connlib/ip-packet/proptest-regressions/proptests.txt rename to rust/libs/connlib/ip-packet/proptest-regressions/proptests.txt diff --git a/rust/connlib/ip-packet/src/fz_p2p_control.rs b/rust/libs/connlib/ip-packet/src/fz_p2p_control.rs similarity index 100% rename from rust/connlib/ip-packet/src/fz_p2p_control.rs rename to rust/libs/connlib/ip-packet/src/fz_p2p_control.rs diff --git a/rust/connlib/ip-packet/src/fz_p2p_control_slice.rs b/rust/libs/connlib/ip-packet/src/fz_p2p_control_slice.rs similarity index 100% rename from rust/connlib/ip-packet/src/fz_p2p_control_slice.rs rename to rust/libs/connlib/ip-packet/src/fz_p2p_control_slice.rs diff --git a/rust/connlib/ip-packet/src/icmp_error.rs b/rust/libs/connlib/ip-packet/src/icmp_error.rs similarity index 100% rename from rust/connlib/ip-packet/src/icmp_error.rs rename to rust/libs/connlib/ip-packet/src/icmp_error.rs diff --git a/rust/connlib/ip-packet/src/lib.rs b/rust/libs/connlib/ip-packet/src/lib.rs similarity index 100% rename from rust/connlib/ip-packet/src/lib.rs rename to rust/libs/connlib/ip-packet/src/lib.rs diff --git a/rust/connlib/ip-packet/src/make.rs b/rust/libs/connlib/ip-packet/src/make.rs similarity index 100% rename from rust/connlib/ip-packet/src/make.rs rename to rust/libs/connlib/ip-packet/src/make.rs diff --git a/rust/connlib/ip-packet/src/proptest.rs b/rust/libs/connlib/ip-packet/src/proptest.rs similarity index 100% rename from rust/connlib/ip-packet/src/proptest.rs rename to rust/libs/connlib/ip-packet/src/proptest.rs diff --git a/rust/connlib/l3-tcp/Cargo.toml b/rust/libs/connlib/l3-tcp/Cargo.toml similarity index 100% rename from rust/connlib/l3-tcp/Cargo.toml rename to rust/libs/connlib/l3-tcp/Cargo.toml diff --git a/rust/connlib/l3-tcp/src/interface.rs b/rust/libs/connlib/l3-tcp/src/interface.rs similarity index 100% rename from rust/connlib/l3-tcp/src/interface.rs rename to rust/libs/connlib/l3-tcp/src/interface.rs diff --git a/rust/connlib/l3-tcp/src/lib.rs b/rust/libs/connlib/l3-tcp/src/lib.rs similarity index 100% rename from rust/connlib/l3-tcp/src/lib.rs rename to rust/libs/connlib/l3-tcp/src/lib.rs diff --git a/rust/connlib/l3-tcp/src/stub_device.rs b/rust/libs/connlib/l3-tcp/src/stub_device.rs similarity index 100% rename from rust/connlib/l3-tcp/src/stub_device.rs rename to rust/libs/connlib/l3-tcp/src/stub_device.rs diff --git a/rust/connlib/l3-udp-dns-client/Cargo.toml b/rust/libs/connlib/l3-udp-dns-client/Cargo.toml similarity index 100% rename from rust/connlib/l3-udp-dns-client/Cargo.toml rename to rust/libs/connlib/l3-udp-dns-client/Cargo.toml diff --git a/rust/connlib/l3-udp-dns-client/lib.rs b/rust/libs/connlib/l3-udp-dns-client/lib.rs similarity index 100% rename from rust/connlib/l3-udp-dns-client/lib.rs rename to rust/libs/connlib/l3-udp-dns-client/lib.rs diff --git a/rust/connlib/l4-tcp-dns-server/Cargo.toml b/rust/libs/connlib/l4-tcp-dns-server/Cargo.toml similarity index 100% rename from rust/connlib/l4-tcp-dns-server/Cargo.toml rename to rust/libs/connlib/l4-tcp-dns-server/Cargo.toml diff --git a/rust/connlib/l4-tcp-dns-server/lib.rs b/rust/libs/connlib/l4-tcp-dns-server/lib.rs similarity index 100% rename from rust/connlib/l4-tcp-dns-server/lib.rs rename to rust/libs/connlib/l4-tcp-dns-server/lib.rs diff --git a/rust/connlib/l4-udp-dns-client/Cargo.toml b/rust/libs/connlib/l4-udp-dns-client/Cargo.toml similarity index 100% rename from rust/connlib/l4-udp-dns-client/Cargo.toml rename to rust/libs/connlib/l4-udp-dns-client/Cargo.toml diff --git a/rust/connlib/l4-udp-dns-client/lib.rs b/rust/libs/connlib/l4-udp-dns-client/lib.rs similarity index 100% rename from rust/connlib/l4-udp-dns-client/lib.rs rename to rust/libs/connlib/l4-udp-dns-client/lib.rs diff --git a/rust/connlib/l4-udp-dns-server/Cargo.toml b/rust/libs/connlib/l4-udp-dns-server/Cargo.toml similarity index 100% rename from rust/connlib/l4-udp-dns-server/Cargo.toml rename to rust/libs/connlib/l4-udp-dns-server/Cargo.toml diff --git a/rust/connlib/l4-udp-dns-server/lib.rs b/rust/libs/connlib/l4-udp-dns-server/lib.rs similarity index 100% rename from rust/connlib/l4-udp-dns-server/lib.rs rename to rust/libs/connlib/l4-udp-dns-server/lib.rs diff --git a/rust/connlib/model/Cargo.toml b/rust/libs/connlib/model/Cargo.toml similarity index 100% rename from rust/connlib/model/Cargo.toml rename to rust/libs/connlib/model/Cargo.toml diff --git a/rust/connlib/model/src/lib.rs b/rust/libs/connlib/model/src/lib.rs similarity index 100% rename from rust/connlib/model/src/lib.rs rename to rust/libs/connlib/model/src/lib.rs diff --git a/rust/connlib/model/src/view.rs b/rust/libs/connlib/model/src/view.rs similarity index 100% rename from rust/connlib/model/src/view.rs rename to rust/libs/connlib/model/src/view.rs diff --git a/rust/connlib/phoenix-channel/Cargo.toml b/rust/libs/connlib/phoenix-channel/Cargo.toml similarity index 97% rename from rust/connlib/phoenix-channel/Cargo.toml rename to rust/libs/connlib/phoenix-channel/Cargo.toml index 9ca8ad8f0..c2dd14fd6 100644 --- a/rust/connlib/phoenix-channel/Cargo.toml +++ b/rust/libs/connlib/phoenix-channel/Cargo.toml @@ -9,11 +9,11 @@ license = { workspace = true } anyhow = { workspace = true } backoff = { workspace = true } base64 = { workspace = true } -firezone-logging = { workspace = true } futures = { workspace = true } hex = { workspace = true } itertools = { workspace = true } libc = { workspace = true } +logging = { workspace = true } os_info = { workspace = true } rand_core = { workspace = true } secrecy = { workspace = true } diff --git a/rust/connlib/phoenix-channel/src/get_user_agent.rs b/rust/libs/connlib/phoenix-channel/src/get_user_agent.rs similarity index 100% rename from rust/connlib/phoenix-channel/src/get_user_agent.rs rename to rust/libs/connlib/phoenix-channel/src/get_user_agent.rs diff --git a/rust/connlib/phoenix-channel/src/lib.rs b/rust/libs/connlib/phoenix-channel/src/lib.rs similarity index 99% rename from rust/connlib/phoenix-channel/src/lib.rs rename to rust/libs/connlib/phoenix-channel/src/lib.rs index 9fdfdab1b..74292eeef 100644 --- a/rust/connlib/phoenix-channel/src/lib.rs +++ b/rust/libs/connlib/phoenix-channel/src/lib.rs @@ -14,10 +14,10 @@ use std::{io, mem}; use backoff::ExponentialBackoff; use backoff::backoff::Backoff; use base64::Engine; -use firezone_logging::err_with_src; use futures::future::BoxFuture; use futures::{FutureExt, SinkExt, StreamExt}; use itertools::Itertools as _; +use logging::err_with_src; use rand_core::{OsRng, RngCore}; use secrecy::{ExposeSecret, SecretBox}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; diff --git a/rust/connlib/phoenix-channel/src/login_url.rs b/rust/libs/connlib/phoenix-channel/src/login_url.rs similarity index 100% rename from rust/connlib/phoenix-channel/src/login_url.rs rename to rust/libs/connlib/phoenix-channel/src/login_url.rs diff --git a/rust/connlib/phoenix-channel/tests/lib.rs b/rust/libs/connlib/phoenix-channel/tests/lib.rs similarity index 98% rename from rust/connlib/phoenix-channel/tests/lib.rs rename to rust/libs/connlib/phoenix-channel/tests/lib.rs index 5a0790019..27e77089f 100644 --- a/rust/connlib/phoenix-channel/tests/lib.rs +++ b/rust/libs/connlib/phoenix-channel/tests/lib.rs @@ -15,7 +15,7 @@ async fn client_does_not_pipeline_messages() { use tokio_tungstenite::tungstenite::Message; use url::Url; - let _guard = firezone_logging::test("debug,wire::api=trace"); + let _guard = logging::test("debug,wire::api=trace"); let listener = TcpListener::bind("0.0.0.0:0").await.unwrap(); let server_addr = listener.local_addr().unwrap(); diff --git a/rust/connlib/snownet/Cargo.toml b/rust/libs/connlib/snownet/Cargo.toml similarity index 90% rename from rust/connlib/snownet/Cargo.toml rename to rust/libs/connlib/snownet/Cargo.toml index 27bd9b1d0..7957949b6 100644 --- a/rust/connlib/snownet/Cargo.toml +++ b/rust/libs/connlib/snownet/Cargo.toml @@ -12,18 +12,18 @@ bufferpool = { workspace = true } bytecodec = { workspace = true } bytes = { workspace = true } derive_more = { workspace = true, features = ["debug"] } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } hex = { workspace = true } hex-display = { workspace = true } ip-packet = { workspace = true } itertools = { workspace = true } +logging = { workspace = true } once_cell = { workspace = true } rand = { workspace = true } ringbuffer = { workspace = true } sha2 = { workspace = true } str0m = { workspace = true } stun_codec = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } diff --git a/rust/connlib/snownet/README.md b/rust/libs/connlib/snownet/README.md similarity index 100% rename from rust/connlib/snownet/README.md rename to rust/libs/connlib/snownet/README.md diff --git a/rust/connlib/snownet/src/allocation.rs b/rust/libs/connlib/snownet/src/allocation.rs similarity index 99% rename from rust/connlib/snownet/src/allocation.rs rename to rust/libs/connlib/snownet/src/allocation.rs index 4cdcfb16d..c057ed7df 100644 --- a/rust/connlib/snownet/src/allocation.rs +++ b/rust/libs/connlib/snownet/src/allocation.rs @@ -5,9 +5,9 @@ use crate::{ }; use bufferpool::BufferPool; use bytecodec::{DecodeExt as _, EncodeExt as _}; -use firezone_logging::err_with_src; use hex_display::HexDisplayExt as _; use ip_packet::Ecn; +use logging::err_with_src; use rand::random; use ringbuffer::{AllocRingBuffer, RingBuffer as _}; use std::{ @@ -2403,7 +2403,7 @@ mod tests { #[test] fn allocation_mismatch_in_channel_binding_clears_and_reallocates() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut allocation = Allocation::for_test_ip4(Instant::now()) .with_binding_response(PEER1, Instant::now()) @@ -2524,7 +2524,7 @@ mod tests { #[test] fn timed_out_binding_requests_invalid_candidates() { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let mut now = Instant::now(); let mut allocation = Allocation::for_test_ip4(now).with_binding_response(PEER1, now); @@ -2711,7 +2711,7 @@ mod tests { #[test] fn second_stun_request_gives_up_eventually() { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let start = Instant::now(); let mut allocation = Allocation::for_test_dual(start); diff --git a/rust/connlib/snownet/src/backoff.rs b/rust/libs/connlib/snownet/src/backoff.rs similarity index 100% rename from rust/connlib/snownet/src/backoff.rs rename to rust/libs/connlib/snownet/src/backoff.rs diff --git a/rust/connlib/snownet/src/channel_data.rs b/rust/libs/connlib/snownet/src/channel_data.rs similarity index 100% rename from rust/connlib/snownet/src/channel_data.rs rename to rust/libs/connlib/snownet/src/channel_data.rs diff --git a/rust/connlib/snownet/src/index.rs b/rust/libs/connlib/snownet/src/index.rs similarity index 100% rename from rust/connlib/snownet/src/index.rs rename to rust/libs/connlib/snownet/src/index.rs diff --git a/rust/connlib/snownet/src/lib.rs b/rust/libs/connlib/snownet/src/lib.rs similarity index 100% rename from rust/connlib/snownet/src/lib.rs rename to rust/libs/connlib/snownet/src/lib.rs diff --git a/rust/connlib/snownet/src/node.rs b/rust/libs/connlib/snownet/src/node.rs similarity index 100% rename from rust/connlib/snownet/src/node.rs rename to rust/libs/connlib/snownet/src/node.rs diff --git a/rust/connlib/snownet/src/node/allocations.rs b/rust/libs/connlib/snownet/src/node/allocations.rs similarity index 100% rename from rust/connlib/snownet/src/node/allocations.rs rename to rust/libs/connlib/snownet/src/node/allocations.rs diff --git a/rust/connlib/snownet/src/node/connections.rs b/rust/libs/connlib/snownet/src/node/connections.rs similarity index 100% rename from rust/connlib/snownet/src/node/connections.rs rename to rust/libs/connlib/snownet/src/node/connections.rs diff --git a/rust/connlib/snownet/src/stats.rs b/rust/libs/connlib/snownet/src/stats.rs similarity index 100% rename from rust/connlib/snownet/src/stats.rs rename to rust/libs/connlib/snownet/src/stats.rs diff --git a/rust/connlib/snownet/src/utils.rs b/rust/libs/connlib/snownet/src/utils.rs similarity index 100% rename from rust/connlib/snownet/src/utils.rs rename to rust/libs/connlib/snownet/src/utils.rs diff --git a/rust/connlib/socket-factory/Cargo.toml b/rust/libs/connlib/socket-factory/Cargo.toml similarity index 95% rename from rust/connlib/socket-factory/Cargo.toml rename to rust/libs/connlib/socket-factory/Cargo.toml index 6c5c21c9c..3828e619b 100644 --- a/rust/connlib/socket-factory/Cargo.toml +++ b/rust/libs/connlib/socket-factory/Cargo.toml @@ -24,8 +24,8 @@ libc = { workspace = true } libc = { workspace = true } [target.'cfg(target_os = "macos")'.dependencies] -firezone-telemetry = { workspace = true } libc = { workspace = true } +telemetry = { workspace = true } [dev-dependencies] derive_more = { workspace = true, features = ["deref"] } diff --git a/rust/connlib/socket-factory/src/lib.rs b/rust/libs/connlib/socket-factory/src/lib.rs similarity index 99% rename from rust/connlib/socket-factory/src/lib.rs rename to rust/libs/connlib/socket-factory/src/lib.rs index 944f7691c..81ed192bf 100644 --- a/rust/connlib/socket-factory/src/lib.rs +++ b/rust/libs/connlib/socket-factory/src/lib.rs @@ -370,9 +370,9 @@ impl UdpSocket { #[cfg(target_os = "macos")] Err(e) if e.raw_os_error().is_some_and(|e| e == libc::ENOBUFS) - && firezone_telemetry::feature_flags::map_enobufs_to_would_block() => + && telemetry::feature_flags::map_enobufs_to_would_block() => { - firezone_telemetry::analytics::feature_flag_called( + telemetry::analytics::feature_flag_called( "map-enobufs-to-wouldblock", ); tracing::debug!("Encountered ENOBUFS, treating as WouldBlock"); diff --git a/rust/connlib/tun/Cargo.toml b/rust/libs/connlib/tun/Cargo.toml similarity index 100% rename from rust/connlib/tun/Cargo.toml rename to rust/libs/connlib/tun/Cargo.toml diff --git a/rust/connlib/tun/src/ioctl.rs b/rust/libs/connlib/tun/src/ioctl.rs similarity index 100% rename from rust/connlib/tun/src/ioctl.rs rename to rust/libs/connlib/tun/src/ioctl.rs diff --git a/rust/connlib/tun/src/lib.rs b/rust/libs/connlib/tun/src/lib.rs similarity index 100% rename from rust/connlib/tun/src/lib.rs rename to rust/libs/connlib/tun/src/lib.rs diff --git a/rust/connlib/tun/src/unix.rs b/rust/libs/connlib/tun/src/unix.rs similarity index 100% rename from rust/connlib/tun/src/unix.rs rename to rust/libs/connlib/tun/src/unix.rs diff --git a/rust/connlib/tunnel/.gitignore b/rust/libs/connlib/tunnel/.gitignore similarity index 100% rename from rust/connlib/tunnel/.gitignore rename to rust/libs/connlib/tunnel/.gitignore diff --git a/rust/connlib/tunnel/Cargo.toml b/rust/libs/connlib/tunnel/Cargo.toml similarity index 96% rename from rust/connlib/tunnel/Cargo.toml rename to rust/libs/connlib/tunnel/Cargo.toml index ce4c055d5..aa9b3ad3e 100644 --- a/rust/connlib/tunnel/Cargo.toml +++ b/rust/libs/connlib/tunnel/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "firezone-tunnel" +name = "tunnel" version = "0.1.0" edition = { workspace = true } license = { workspace = true } @@ -21,8 +21,6 @@ derive_more = { workspace = true, features = ["debug", "from", "display"] } divan = { workspace = true, optional = true } dns-over-tcp = { workspace = true } dns-types = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } flume = { workspace = true, features = ["async"] } futures = { workspace = true } futures-bounded = { workspace = true, features = ["tokio"] } @@ -38,6 +36,7 @@ l3-udp-dns-client = { workspace = true } l4-tcp-dns-server = { workspace = true } l4-udp-dns-client = { workspace = true } l4-udp-dns-server = { workspace = true } +logging = { workspace = true } lru = { workspace = true } opentelemetry = { workspace = true, features = ["metrics"] } proptest = { workspace = true, optional = true } @@ -51,6 +50,7 @@ serde_with = { workspace = true } snownet = { workspace = true } socket-factory = { workspace = true } socket2 = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } tokio-util = { workspace = true } diff --git a/rust/libs/connlib/tunnel/benches/divan.rs b/rust/libs/connlib/tunnel/benches/divan.rs new file mode 100644 index 000000000..d6a7700ba --- /dev/null +++ b/rust/libs/connlib/tunnel/benches/divan.rs @@ -0,0 +1,5 @@ +extern crate tunnel; // Ensure benchmarks aren't optimised out. + +fn main() { + divan::main() +} diff --git a/rust/connlib/tunnel/proptest-regressions/client.txt b/rust/libs/connlib/tunnel/proptest-regressions/client.txt similarity index 100% rename from rust/connlib/tunnel/proptest-regressions/client.txt rename to rust/libs/connlib/tunnel/proptest-regressions/client.txt diff --git a/rust/connlib/tunnel/proptest-regressions/gateway/nat_table.txt b/rust/libs/connlib/tunnel/proptest-regressions/gateway/nat_table.txt similarity index 100% rename from rust/connlib/tunnel/proptest-regressions/gateway/nat_table.txt rename to rust/libs/connlib/tunnel/proptest-regressions/gateway/nat_table.txt diff --git a/rust/connlib/tunnel/proptest-regressions/peer.txt b/rust/libs/connlib/tunnel/proptest-regressions/peer.txt similarity index 100% rename from rust/connlib/tunnel/proptest-regressions/peer.txt rename to rust/libs/connlib/tunnel/proptest-regressions/peer.txt diff --git a/rust/connlib/tunnel/proptest-regressions/tests.txt b/rust/libs/connlib/tunnel/proptest-regressions/tests.txt similarity index 100% rename from rust/connlib/tunnel/proptest-regressions/tests.txt rename to rust/libs/connlib/tunnel/proptest-regressions/tests.txt diff --git a/rust/connlib/tunnel/src/client.rs b/rust/libs/connlib/tunnel/src/client.rs similarity index 99% rename from rust/connlib/tunnel/src/client.rs rename to rust/libs/connlib/tunnel/src/client.rs index f8cb4cd7c..a35246c58 100644 --- a/rust/connlib/tunnel/src/client.rs +++ b/rust/libs/connlib/tunnel/src/client.rs @@ -15,9 +15,9 @@ pub(crate) use resource::{CidrResource, InternetResource, Resource}; use dns_resource_nat::DnsResourceNat; use dns_types::ResponseCode; -use firezone_telemetry::{analytics, feature_flags}; use ringbuffer::{AllocRingBuffer, RingBuffer}; use secrecy::ExposeSecret as _; +use telemetry::{analytics, feature_flags}; use crate::client::dns_cache::DnsCache; use crate::dns::{DnsResourceRecord, StubResolver}; @@ -31,11 +31,11 @@ use connlib_model::{ GatewayId, IceCandidate, PublicKey, RelayId, ResourceId, ResourceStatus, ResourceView, }; use connlib_model::{Site, SiteId}; -use firezone_logging::{unwrap_or_debug, unwrap_or_warn}; use ip_network::{IpNetwork, Ipv4Network, Ipv6Network}; use ip_network_table::IpNetworkTable; use ip_packet::{IpPacket, MAX_UDP_PAYLOAD}; use itertools::Itertools; +use logging::{unwrap_or_debug, unwrap_or_warn}; use crate::ClientEvent; use lru::LruCache; @@ -1305,7 +1305,7 @@ impl ClientState { match self.stub_resolver.handle(&message) { dns::ResolveStrategy::LocalResponse(response) => { if response.response_code() == ResponseCode::NXDOMAIN - && firezone_telemetry::feature_flags::drop_llmnr_nxdomain_responses() + && telemetry::feature_flags::drop_llmnr_nxdomain_responses() { return; } diff --git a/rust/connlib/tunnel/src/client/dns_cache.rs b/rust/libs/connlib/tunnel/src/client/dns_cache.rs similarity index 100% rename from rust/connlib/tunnel/src/client/dns_cache.rs rename to rust/libs/connlib/tunnel/src/client/dns_cache.rs diff --git a/rust/connlib/tunnel/src/client/dns_config.rs b/rust/libs/connlib/tunnel/src/client/dns_config.rs similarity index 100% rename from rust/connlib/tunnel/src/client/dns_config.rs rename to rust/libs/connlib/tunnel/src/client/dns_config.rs diff --git a/rust/connlib/tunnel/src/client/dns_resource_nat.rs b/rust/libs/connlib/tunnel/src/client/dns_resource_nat.rs similarity index 100% rename from rust/connlib/tunnel/src/client/dns_resource_nat.rs rename to rust/libs/connlib/tunnel/src/client/dns_resource_nat.rs diff --git a/rust/connlib/tunnel/src/client/gateway_on_client.rs b/rust/libs/connlib/tunnel/src/client/gateway_on_client.rs similarity index 100% rename from rust/connlib/tunnel/src/client/gateway_on_client.rs rename to rust/libs/connlib/tunnel/src/client/gateway_on_client.rs diff --git a/rust/connlib/tunnel/src/client/pending_tun_update.rs b/rust/libs/connlib/tunnel/src/client/pending_tun_update.rs similarity index 100% rename from rust/connlib/tunnel/src/client/pending_tun_update.rs rename to rust/libs/connlib/tunnel/src/client/pending_tun_update.rs diff --git a/rust/connlib/tunnel/src/client/resource.rs b/rust/libs/connlib/tunnel/src/client/resource.rs similarity index 100% rename from rust/connlib/tunnel/src/client/resource.rs rename to rust/libs/connlib/tunnel/src/client/resource.rs diff --git a/rust/connlib/tunnel/src/device_channel.rs b/rust/libs/connlib/tunnel/src/device_channel.rs similarity index 100% rename from rust/connlib/tunnel/src/device_channel.rs rename to rust/libs/connlib/tunnel/src/device_channel.rs diff --git a/rust/connlib/tunnel/src/dns.rs b/rust/libs/connlib/tunnel/src/dns.rs similarity index 99% rename from rust/connlib/tunnel/src/dns.rs rename to rust/libs/connlib/tunnel/src/dns.rs index 89c2feff8..70d26a21e 100644 --- a/rust/connlib/tunnel/src/dns.rs +++ b/rust/libs/connlib/tunnel/src/dns.rs @@ -5,8 +5,8 @@ use dns_types::{ DoHUrl, DomainName, DomainNameRef, OwnedRecordData, Query, RecordType, Response, ResponseBuilder, ResponseCode, }; -use firezone_logging::err_with_src; use itertools::Itertools; +use logging::err_with_src; use pattern::{Candidate, Pattern}; use std::collections::{BTreeSet, VecDeque}; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; diff --git a/rust/connlib/tunnel/src/expiring_map.rs b/rust/libs/connlib/tunnel/src/expiring_map.rs similarity index 100% rename from rust/connlib/tunnel/src/expiring_map.rs rename to rust/libs/connlib/tunnel/src/expiring_map.rs diff --git a/rust/connlib/tunnel/src/gateway.rs b/rust/libs/connlib/tunnel/src/gateway.rs similarity index 100% rename from rust/connlib/tunnel/src/gateway.rs rename to rust/libs/connlib/tunnel/src/gateway.rs diff --git a/rust/connlib/tunnel/src/gateway/client_on_gateway.rs b/rust/libs/connlib/tunnel/src/gateway/client_on_gateway.rs similarity index 99% rename from rust/connlib/tunnel/src/gateway/client_on_gateway.rs rename to rust/libs/connlib/tunnel/src/gateway/client_on_gateway.rs index c25f7d947..0bc99217f 100644 --- a/rust/connlib/tunnel/src/gateway/client_on_gateway.rs +++ b/rust/libs/connlib/tunnel/src/gateway/client_on_gateway.rs @@ -965,7 +965,7 @@ mod tests { #[test] fn dns_resource_packet_is_dropped_after_nat_session_expires() { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let mut peer = ClientOnGateway::new( client_id(), @@ -1036,7 +1036,7 @@ mod tests { #[test] fn setting_up_dns_resource_nat_does_not_clear_existing_nat_session() { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let now = Instant::now(); @@ -1130,7 +1130,7 @@ mod tests { #[test] fn setting_up_dns_resource_nat_with_new_proxy_ips_resets_state() { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); let now = Instant::now(); diff --git a/rust/connlib/tunnel/src/gateway/filter_engine.rs b/rust/libs/connlib/tunnel/src/gateway/filter_engine.rs similarity index 100% rename from rust/connlib/tunnel/src/gateway/filter_engine.rs rename to rust/libs/connlib/tunnel/src/gateway/filter_engine.rs diff --git a/rust/connlib/tunnel/src/gateway/flow_tracker.rs b/rust/libs/connlib/tunnel/src/gateway/flow_tracker.rs similarity index 100% rename from rust/connlib/tunnel/src/gateway/flow_tracker.rs rename to rust/libs/connlib/tunnel/src/gateway/flow_tracker.rs diff --git a/rust/connlib/tunnel/src/gateway/nat_table.rs b/rust/libs/connlib/tunnel/src/gateway/nat_table.rs similarity index 99% rename from rust/connlib/tunnel/src/gateway/nat_table.rs rename to rust/libs/connlib/tunnel/src/gateway/nat_table.rs index 46b98b522..f06a10b91 100644 --- a/rust/connlib/tunnel/src/gateway/nat_table.rs +++ b/rust/libs/connlib/tunnel/src/gateway/nat_table.rs @@ -455,7 +455,7 @@ mod tests { #[strategy(tcp_packet(Just(TcpFlags { rst: true })))] mut rst: IpPacket, #[strategy(any::())] outside_dst: IpAddr, ) { - let _guard = firezone_logging::test("trace"); + let _guard = logging::test("trace"); proptest::prop_assume!(req.destination().is_ipv4() == outside_dst.is_ipv4()); // Required for our test to simulate a response. proptest::prop_assume!(rst.destination().is_ipv4() == outside_dst.is_ipv4()); // Required for our test to simulate a response. diff --git a/rust/connlib/tunnel/src/gateway/unroutable_packet.rs b/rust/libs/connlib/tunnel/src/gateway/unroutable_packet.rs similarity index 100% rename from rust/connlib/tunnel/src/gateway/unroutable_packet.rs rename to rust/libs/connlib/tunnel/src/gateway/unroutable_packet.rs diff --git a/rust/connlib/tunnel/src/io.rs b/rust/libs/connlib/tunnel/src/io.rs similarity index 99% rename from rust/connlib/tunnel/src/io.rs rename to rust/libs/connlib/tunnel/src/io.rs index 9d1d33d07..b0d78d124 100644 --- a/rust/connlib/tunnel/src/io.rs +++ b/rust/libs/connlib/tunnel/src/io.rs @@ -671,7 +671,7 @@ mod tests { #[tokio::test] async fn bootstrap_doh() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut io = Io::for_test(); io.update_system_resolvers(vec![IpAddr::from([1, 1, 1, 1])]); diff --git a/rust/connlib/tunnel/src/io/doh.rs b/rust/libs/connlib/tunnel/src/io/doh.rs similarity index 100% rename from rust/connlib/tunnel/src/io/doh.rs rename to rust/libs/connlib/tunnel/src/io/doh.rs diff --git a/rust/connlib/tunnel/src/io/gso_queue.rs b/rust/libs/connlib/tunnel/src/io/gso_queue.rs similarity index 100% rename from rust/connlib/tunnel/src/io/gso_queue.rs rename to rust/libs/connlib/tunnel/src/io/gso_queue.rs diff --git a/rust/connlib/tunnel/src/io/nameserver_set.rs b/rust/libs/connlib/tunnel/src/io/nameserver_set.rs similarity index 98% rename from rust/connlib/tunnel/src/io/nameserver_set.rs rename to rust/libs/connlib/tunnel/src/io/nameserver_set.rs index b3670cecf..c3d67a356 100644 --- a/rust/connlib/tunnel/src/io/nameserver_set.rs +++ b/rust/libs/connlib/tunnel/src/io/nameserver_set.rs @@ -158,7 +158,7 @@ mod tests { #[tokio::test] #[ignore = "Needs Internet"] async fn can_evaluate_fastest_nameserver() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut set = NameserverSet::new( BTreeSet::from([ @@ -180,7 +180,7 @@ mod tests { #[tokio::test] async fn can_handle_no_servers() { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut set = NameserverSet::new( BTreeSet::default(), diff --git a/rust/connlib/tunnel/src/io/tcp_dns.rs b/rust/libs/connlib/tunnel/src/io/tcp_dns.rs similarity index 100% rename from rust/connlib/tunnel/src/io/tcp_dns.rs rename to rust/libs/connlib/tunnel/src/io/tcp_dns.rs diff --git a/rust/connlib/tunnel/src/io/udp_dns.rs b/rust/libs/connlib/tunnel/src/io/udp_dns.rs similarity index 100% rename from rust/connlib/tunnel/src/io/udp_dns.rs rename to rust/libs/connlib/tunnel/src/io/udp_dns.rs diff --git a/rust/connlib/tunnel/src/lib.rs b/rust/libs/connlib/tunnel/src/lib.rs similarity index 99% rename from rust/connlib/tunnel/src/lib.rs rename to rust/libs/connlib/tunnel/src/lib.rs index 63aad9c22..3c78c9b71 100644 --- a/rust/connlib/tunnel/src/lib.rs +++ b/rust/libs/connlib/tunnel/src/lib.rs @@ -9,11 +9,11 @@ use anyhow::{Context as _, ErrorExt as _, Result}; use chrono::Utc; use connlib_model::{ClientId, GatewayId, IceCandidate, PublicKey, ResourceId, ResourceView}; use dns_types::DomainName; -use firezone_logging::DisplayBTreeSet; use futures::{FutureExt, future::BoxFuture}; use gat_lending_iterator::LendingIterator; use io::{Buffers, Io}; use ip_network::{Ipv4Network, Ipv6Network}; +use logging::DisplayBTreeSet; use socket_factory::{SocketFactory, TcpSocket, UdpSocket}; use std::{ collections::BTreeSet, diff --git a/rust/connlib/tunnel/src/messages.rs b/rust/libs/connlib/tunnel/src/messages.rs similarity index 100% rename from rust/connlib/tunnel/src/messages.rs rename to rust/libs/connlib/tunnel/src/messages.rs diff --git a/rust/connlib/tunnel/src/messages/client.rs b/rust/libs/connlib/tunnel/src/messages/client.rs similarity index 100% rename from rust/connlib/tunnel/src/messages/client.rs rename to rust/libs/connlib/tunnel/src/messages/client.rs diff --git a/rust/connlib/tunnel/src/messages/gateway.rs b/rust/libs/connlib/tunnel/src/messages/gateway.rs similarity index 100% rename from rust/connlib/tunnel/src/messages/gateway.rs rename to rust/libs/connlib/tunnel/src/messages/gateway.rs diff --git a/rust/connlib/tunnel/src/messages/key.rs b/rust/libs/connlib/tunnel/src/messages/key.rs similarity index 100% rename from rust/connlib/tunnel/src/messages/key.rs rename to rust/libs/connlib/tunnel/src/messages/key.rs diff --git a/rust/connlib/tunnel/src/otel.rs b/rust/libs/connlib/tunnel/src/otel.rs similarity index 72% rename from rust/connlib/tunnel/src/otel.rs rename to rust/libs/connlib/tunnel/src/otel.rs index 28cdd19df..11da41874 100644 --- a/rust/connlib/tunnel/src/otel.rs +++ b/rust/libs/connlib/tunnel/src/otel.rs @@ -1,5 +1,5 @@ pub mod attr { - pub use firezone_telemetry::otel::attr::*; + pub use telemetry::otel::attr::*; use opentelemetry::KeyValue; @@ -10,4 +10,4 @@ pub mod attr { } } -pub use firezone_telemetry::otel::metrics; +pub use telemetry::otel::metrics; diff --git a/rust/connlib/tunnel/src/p2p_control.rs b/rust/libs/connlib/tunnel/src/p2p_control.rs similarity index 100% rename from rust/connlib/tunnel/src/p2p_control.rs rename to rust/libs/connlib/tunnel/src/p2p_control.rs diff --git a/rust/connlib/tunnel/src/packet_kind.rs b/rust/libs/connlib/tunnel/src/packet_kind.rs similarity index 100% rename from rust/connlib/tunnel/src/packet_kind.rs rename to rust/libs/connlib/tunnel/src/packet_kind.rs diff --git a/rust/connlib/tunnel/src/peer_store.rs b/rust/libs/connlib/tunnel/src/peer_store.rs similarity index 100% rename from rust/connlib/tunnel/src/peer_store.rs rename to rust/libs/connlib/tunnel/src/peer_store.rs diff --git a/rust/connlib/tunnel/src/proptest.rs b/rust/libs/connlib/tunnel/src/proptest.rs similarity index 100% rename from rust/connlib/tunnel/src/proptest.rs rename to rust/libs/connlib/tunnel/src/proptest.rs diff --git a/rust/connlib/tunnel/src/sockets.rs b/rust/libs/connlib/tunnel/src/sockets.rs similarity index 100% rename from rust/connlib/tunnel/src/sockets.rs rename to rust/libs/connlib/tunnel/src/sockets.rs diff --git a/rust/connlib/tunnel/src/tests.rs b/rust/libs/connlib/tunnel/src/tests.rs similarity index 98% rename from rust/connlib/tunnel/src/tests.rs rename to rust/libs/connlib/tunnel/src/tests.rs index 7145106e9..bec892316 100644 --- a/rust/connlib/tunnel/src/tests.rs +++ b/rust/libs/connlib/tunnel/src/tests.rs @@ -213,7 +213,8 @@ fn init_logging( fn log_file_filter() -> EnvFilter { let default_filter = - "debug,firezone_tunnel=trace,firezone_tunnel::tests=debug,tunnel_test_coverage=trace,ip_packet=trace".to_owned(); + "debug,tunnel=trace,tunnel::tests=debug,tunnel_test_coverage=trace,ip_packet=trace" + .to_owned(); let env_filter = std::env::var("RUST_LOG").unwrap_or_default(); EnvFilter::new([default_filter, env_filter].join(",")) diff --git a/rust/connlib/tunnel/src/tests/assertions.rs b/rust/libs/connlib/tunnel/src/tests/assertions.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/assertions.rs rename to rust/libs/connlib/tunnel/src/tests/assertions.rs diff --git a/rust/connlib/tunnel/src/tests/buffered_transmits.rs b/rust/libs/connlib/tunnel/src/tests/buffered_transmits.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/buffered_transmits.rs rename to rust/libs/connlib/tunnel/src/tests/buffered_transmits.rs diff --git a/rust/connlib/tunnel/src/tests/composite_strategy.rs b/rust/libs/connlib/tunnel/src/tests/composite_strategy.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/composite_strategy.rs rename to rust/libs/connlib/tunnel/src/tests/composite_strategy.rs diff --git a/rust/connlib/tunnel/src/tests/dns_records.rs b/rust/libs/connlib/tunnel/src/tests/dns_records.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/dns_records.rs rename to rust/libs/connlib/tunnel/src/tests/dns_records.rs diff --git a/rust/connlib/tunnel/src/tests/dns_server_resource.rs b/rust/libs/connlib/tunnel/src/tests/dns_server_resource.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/dns_server_resource.rs rename to rust/libs/connlib/tunnel/src/tests/dns_server_resource.rs diff --git a/rust/connlib/tunnel/src/tests/flux_capacitor.rs b/rust/libs/connlib/tunnel/src/tests/flux_capacitor.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/flux_capacitor.rs rename to rust/libs/connlib/tunnel/src/tests/flux_capacitor.rs diff --git a/rust/connlib/tunnel/src/tests/icmp_error_hosts.rs b/rust/libs/connlib/tunnel/src/tests/icmp_error_hosts.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/icmp_error_hosts.rs rename to rust/libs/connlib/tunnel/src/tests/icmp_error_hosts.rs diff --git a/rust/connlib/tunnel/src/tests/reference.rs b/rust/libs/connlib/tunnel/src/tests/reference.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/reference.rs rename to rust/libs/connlib/tunnel/src/tests/reference.rs diff --git a/rust/connlib/tunnel/src/tests/sim_client.rs b/rust/libs/connlib/tunnel/src/tests/sim_client.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/sim_client.rs rename to rust/libs/connlib/tunnel/src/tests/sim_client.rs diff --git a/rust/connlib/tunnel/src/tests/sim_gateway.rs b/rust/libs/connlib/tunnel/src/tests/sim_gateway.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/sim_gateway.rs rename to rust/libs/connlib/tunnel/src/tests/sim_gateway.rs diff --git a/rust/connlib/tunnel/src/tests/sim_net.rs b/rust/libs/connlib/tunnel/src/tests/sim_net.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/sim_net.rs rename to rust/libs/connlib/tunnel/src/tests/sim_net.rs diff --git a/rust/connlib/tunnel/src/tests/sim_relay.rs b/rust/libs/connlib/tunnel/src/tests/sim_relay.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/sim_relay.rs rename to rust/libs/connlib/tunnel/src/tests/sim_relay.rs diff --git a/rust/connlib/tunnel/src/tests/strategies.rs b/rust/libs/connlib/tunnel/src/tests/strategies.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/strategies.rs rename to rust/libs/connlib/tunnel/src/tests/strategies.rs diff --git a/rust/connlib/tunnel/src/tests/stub_portal.rs b/rust/libs/connlib/tunnel/src/tests/stub_portal.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/stub_portal.rs rename to rust/libs/connlib/tunnel/src/tests/stub_portal.rs diff --git a/rust/connlib/tunnel/src/tests/sut.rs b/rust/libs/connlib/tunnel/src/tests/sut.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/sut.rs rename to rust/libs/connlib/tunnel/src/tests/sut.rs diff --git a/rust/connlib/tunnel/src/tests/tcp.rs b/rust/libs/connlib/tunnel/src/tests/tcp.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/tcp.rs rename to rust/libs/connlib/tunnel/src/tests/tcp.rs diff --git a/rust/connlib/tunnel/src/tests/transition.rs b/rust/libs/connlib/tunnel/src/tests/transition.rs similarity index 100% rename from rust/connlib/tunnel/src/tests/transition.rs rename to rust/libs/connlib/tunnel/src/tests/transition.rs diff --git a/rust/connlib/tunnel/src/unique_packet_buffer.rs b/rust/libs/connlib/tunnel/src/unique_packet_buffer.rs similarity index 100% rename from rust/connlib/tunnel/src/unique_packet_buffer.rs rename to rust/libs/connlib/tunnel/src/unique_packet_buffer.rs diff --git a/rust/connlib/tunnel/src/utils.rs b/rust/libs/connlib/tunnel/src/utils.rs similarity index 100% rename from rust/connlib/tunnel/src/utils.rs rename to rust/libs/connlib/tunnel/src/utils.rs diff --git a/rust/connlib/http-client/Cargo.toml b/rust/libs/http-client/Cargo.toml similarity index 100% rename from rust/connlib/http-client/Cargo.toml rename to rust/libs/http-client/Cargo.toml diff --git a/rust/connlib/http-client/lib.rs b/rust/libs/http-client/lib.rs similarity index 100% rename from rust/connlib/http-client/lib.rs rename to rust/libs/http-client/lib.rs diff --git a/rust/logging/Cargo.toml b/rust/libs/logging/Cargo.toml similarity index 92% rename from rust/logging/Cargo.toml rename to rust/libs/logging/Cargo.toml index fc39b20d3..ae10d2dcb 100644 --- a/rust/logging/Cargo.toml +++ b/rust/libs/logging/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "firezone-logging" +name = "logging" version = "0.1.0" edition = { workspace = true } authors = ["Firezone, Inc."] @@ -9,12 +9,12 @@ license = { workspace = true } [dependencies] anyhow = { workspace = true } -firezone-telemetry = { workspace = true } nu-ansi-term = { workspace = true } output_vt100 = { workspace = true } parking_lot = { workspace = true } sentry-tracing = { workspace = true } supports-color = { workspace = true } +telemetry = { workspace = true } time = { workspace = true, features = ["formatting"] } tracing = { workspace = true } tracing-appender = { workspace = true } diff --git a/rust/logging/src/ansi.rs b/rust/libs/logging/src/ansi.rs similarity index 100% rename from rust/logging/src/ansi.rs rename to rust/libs/logging/src/ansi.rs diff --git a/rust/logging/src/capturing_writer.rs b/rust/libs/logging/src/capturing_writer.rs similarity index 100% rename from rust/logging/src/capturing_writer.rs rename to rust/libs/logging/src/capturing_writer.rs diff --git a/rust/logging/src/display_btree_set.rs b/rust/libs/logging/src/display_btree_set.rs similarity index 100% rename from rust/logging/src/display_btree_set.rs rename to rust/libs/logging/src/display_btree_set.rs diff --git a/rust/logging/src/err_with_sources.rs b/rust/libs/logging/src/err_with_sources.rs similarity index 100% rename from rust/logging/src/err_with_sources.rs rename to rust/libs/logging/src/err_with_sources.rs diff --git a/rust/logging/src/event_message_contains_filter.rs b/rust/libs/logging/src/event_message_contains_filter.rs similarity index 100% rename from rust/logging/src/event_message_contains_filter.rs rename to rust/libs/logging/src/event_message_contains_filter.rs diff --git a/rust/logging/src/file.rs b/rust/libs/logging/src/file.rs similarity index 100% rename from rust/logging/src/file.rs rename to rust/libs/logging/src/file.rs diff --git a/rust/logging/src/format.rs b/rust/libs/logging/src/format.rs similarity index 100% rename from rust/logging/src/format.rs rename to rust/libs/logging/src/format.rs diff --git a/rust/logging/src/lib.rs b/rust/libs/logging/src/lib.rs similarity index 99% rename from rust/logging/src/lib.rs rename to rust/libs/logging/src/lib.rs index 61982fca6..b36019433 100644 --- a/rust/logging/src/lib.rs +++ b/rust/libs/logging/src/lib.rs @@ -14,8 +14,8 @@ use std::sync::Arc; use anyhow::{Context, Result}; use event_message_contains_filter::EventMessageContains; -use firezone_telemetry::feature_flags; use sentry_tracing::EventFilter; +use telemetry::feature_flags; use tracing::{Subscriber, subscriber::DefaultGuard}; use tracing_log::LogTracer; use tracing_subscriber::{ diff --git a/rust/logging/src/unwrap_or.rs b/rust/libs/logging/src/unwrap_or.rs similarity index 100% rename from rust/logging/src/unwrap_or.rs rename to rust/libs/logging/src/unwrap_or.rs diff --git a/rust/telemetry/Cargo.toml b/rust/libs/telemetry/Cargo.toml similarity index 97% rename from rust/telemetry/Cargo.toml rename to rust/libs/telemetry/Cargo.toml index 56db18f01..a314f112c 100644 --- a/rust/telemetry/Cargo.toml +++ b/rust/libs/telemetry/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "firezone-telemetry" +name = "telemetry" version = "0.1.0" edition = { workspace = true } license = { workspace = true } diff --git a/rust/telemetry/src/analytics.rs b/rust/libs/telemetry/src/analytics.rs similarity index 100% rename from rust/telemetry/src/analytics.rs rename to rust/libs/telemetry/src/analytics.rs diff --git a/rust/telemetry/src/api_url.rs b/rust/libs/telemetry/src/api_url.rs similarity index 100% rename from rust/telemetry/src/api_url.rs rename to rust/libs/telemetry/src/api_url.rs diff --git a/rust/telemetry/src/feature_flags.rs b/rust/libs/telemetry/src/feature_flags.rs similarity index 100% rename from rust/telemetry/src/feature_flags.rs rename to rust/libs/telemetry/src/feature_flags.rs diff --git a/rust/telemetry/src/lib.rs b/rust/libs/telemetry/src/lib.rs similarity index 100% rename from rust/telemetry/src/lib.rs rename to rust/libs/telemetry/src/lib.rs diff --git a/rust/telemetry/src/maybe_push_metrics_exporter.rs b/rust/libs/telemetry/src/maybe_push_metrics_exporter.rs similarity index 100% rename from rust/telemetry/src/maybe_push_metrics_exporter.rs rename to rust/libs/telemetry/src/maybe_push_metrics_exporter.rs diff --git a/rust/telemetry/src/noop_push_metrics_exporter.rs b/rust/libs/telemetry/src/noop_push_metrics_exporter.rs similarity index 100% rename from rust/telemetry/src/noop_push_metrics_exporter.rs rename to rust/libs/telemetry/src/noop_push_metrics_exporter.rs diff --git a/rust/telemetry/src/otel.rs b/rust/libs/telemetry/src/otel.rs similarity index 100% rename from rust/telemetry/src/otel.rs rename to rust/libs/telemetry/src/otel.rs diff --git a/rust/telemetry/src/posthog.rs b/rust/libs/telemetry/src/posthog.rs similarity index 100% rename from rust/telemetry/src/posthog.rs rename to rust/libs/telemetry/src/posthog.rs diff --git a/rust/relay/server/Cargo.toml b/rust/relay/server/Cargo.toml index 3f24b6d05..e9e3dd87b 100644 --- a/rust/relay/server/Cargo.toml +++ b/rust/relay/server/Cargo.toml @@ -12,16 +12,15 @@ anyhow = { workspace = true } axum = { workspace = true, features = ["http1", "tokio", "query"] } backoff = { workspace = true } base64 = { workspace = true } +bin-shared = { workspace = true } bytecodec = { workspace = true } bytes = { workspace = true } clap = { workspace = true, features = ["derive", "env"] } derive_more = { workspace = true, features = ["from"] } -firezone-bin-shared = { workspace = true } -firezone-logging = { workspace = true } -firezone-telemetry = { workspace = true } futures = { workspace = true } hex = { workspace = true } hex-display = { workspace = true } +logging = { workspace = true } mio = { workspace = true, features = ["net"] } once_cell = { workspace = true } opentelemetry = { workspace = true, features = ["metrics"] } @@ -38,6 +37,7 @@ smallvec = { workspace = true } socket-factory = { workspace = true } socket2 = { workspace = true } stun_codec = { workspace = true } +telemetry = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["macros", "rt-multi-thread", "net", "time", "signal"] } tracing = { workspace = true, features = ["log"] } diff --git a/rust/relay/server/src/control_endpoint.rs b/rust/relay/server/src/control_endpoint.rs index 1a9f2451b..376544924 100644 --- a/rust/relay/server/src/control_endpoint.rs +++ b/rust/relay/server/src/control_endpoint.rs @@ -2,7 +2,7 @@ use axum::Router; use axum::extract::{Query, State}; use axum::http::StatusCode; use axum::routing::post; -use firezone_logging::FilterReloadHandle; +use logging::FilterReloadHandle; use std::net::SocketAddr; use std::sync::Arc; diff --git a/rust/relay/server/src/main.rs b/rust/relay/server/src/main.rs index 32cf1a2c4..720c13fcd 100644 --- a/rust/relay/server/src/main.rs +++ b/rust/relay/server/src/main.rs @@ -2,16 +2,15 @@ use anyhow::{Context, Result, bail}; use backoff::ExponentialBackoffBuilder; +use bin_shared::{http_health_check, signals}; use clap::Parser; -use firezone_bin_shared::{http_health_check, signals}; -use firezone_logging::{FilterReloadHandle, err_with_src, sentry_layer}; use firezone_relay::sockets::Sockets; use firezone_relay::{ AddressFamily, AllocationPort, ChannelData, ClientSocket, Command, IpStack, PeerSocket, Server, Sleep, VERSION, control_endpoint, ebpf, sockets, }; -use firezone_telemetry::{RELAY_DSN, Telemetry}; use futures::{FutureExt, future}; +use logging::{FilterReloadHandle, err_with_src, sentry_layer}; use phoenix_channel::{Event, LoginUrl, NoParams, PhoenixChannel, get_user_agent}; use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; @@ -23,6 +22,7 @@ use std::sync::{Arc, Mutex}; use std::task::{Poll, ready}; use std::time::{Duration, Instant}; use stun_codec::rfc5766::attributes::ChannelNumber; +use telemetry::{RELAY_DSN, Telemetry}; use tracing::Subscriber; use tracing_core::Dispatch; use tracing_stackdriver::CloudTraceConfiguration; @@ -111,7 +111,7 @@ struct Args { control_endpoint: SocketAddr, /// Enable sentry.io crash-reporting agent. - #[arg(long, env = "FIREZONE_TELEMETRY", default_value_t = false)] + #[arg(long, env = "TELEMETRY", default_value_t = false)] telemetry: bool, } @@ -288,7 +288,7 @@ fn setup_tracing(args: &Args) -> Result { let (dispatch, reload_handle) = match args.otlp_grpc_endpoint.clone() { None => { - let (filter, reload_handle) = firezone_logging::try_filter(&directives)?; + let (filter, reload_handle) = logging::try_filter(&directives)?; let dispatch: Dispatch = tracing_subscriber::registry() .with(log_layer(args).with_filter(filter)) @@ -333,8 +333,8 @@ fn setup_tracing(args: &Args) -> Result { tracing::trace!(target: "relay", "Successfully initialized metric provider on tokio runtime"); - let (log_filter, log_reload_handle) = firezone_logging::try_filter(&directives)?; - let (otel_filter, otel_reload_handle) = firezone_logging::try_filter(&directives)?; + let (log_filter, log_reload_handle) = logging::try_filter(&directives)?; + let (otel_filter, otel_reload_handle) = logging::try_filter(&directives)?; let dispatch: Dispatch = tracing_subscriber::registry() .with(log_layer(args).with_filter(log_filter)) @@ -372,7 +372,7 @@ where { match (args.log_format, args.google_cloud_project_id.clone()) { (LogFormat::Human, _) => tracing_subscriber::fmt::layer() - .with_ansi(firezone_logging::stdout_supports_ansi()) + .with_ansi(logging::stdout_supports_ansi()) .boxed(), (LogFormat::Json, _) => tracing_subscriber::fmt::layer().json().boxed(), (LogFormat::GoogleCloud, None) => { diff --git a/rust/relay/server/src/server.rs b/rust/relay/server/src/server.rs index 4176749ab..963b966cc 100644 --- a/rust/relay/server/src/server.rs +++ b/rust/relay/server/src/server.rs @@ -12,8 +12,8 @@ use crate::{ClientSocket, IpStack, PeerSocket, SOFTWARE}; use anyhow::Result; use bytecodec::EncodeExt; use core::fmt; -use firezone_logging::err_with_src; use hex_display::HexDisplayExt as _; +use logging::err_with_src; use opentelemetry::KeyValue; use opentelemetry::metrics::{Counter, UpDownCounter}; use rand::Rng; diff --git a/rust/relay/server/tests/regression.rs b/rust/relay/server/tests/regression.rs index 7004fe244..a8038ae59 100644 --- a/rust/relay/server/tests/regression.rs +++ b/rust/relay/server/tests/regression.rs @@ -28,7 +28,7 @@ fn can_answer_stun_request_from_ip4_address( source: SocketAddrV4, public_relay_addr: Ipv4Addr, ) { - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut server = TestServer::new(public_relay_addr); let transaction_id = request.transaction_id(); @@ -319,7 +319,7 @@ fn freeing_allocation_clears_all_channels( ) { let now = Instant::now(); - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut server = TestServer::new(public_relay_addr).with_nonce(nonce); let secret = server.auth_secret().to_owned(); @@ -391,7 +391,7 @@ fn ping_pong_relay( ) { let now = Instant::now(); - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut server = TestServer::new(public_relay_addr).with_nonce(nonce); let secret = server.auth_secret().to_owned(); @@ -502,7 +502,7 @@ fn allows_rebind_channel_after_expiry( ) { let now = Instant::now(); - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut server = TestServer::new(public_relay_addr).with_nonce(nonce); let secret = server.auth_secret().to_owned(); @@ -625,7 +625,7 @@ fn ping_pong_ip6_relay( ) { let now = Instant::now(); - let _guard = firezone_logging::test("debug"); + let _guard = logging::test("debug"); let mut server = TestServer::new((public_relay_ip4_addr, public_relay_ip6_addr)).with_nonce(nonce);