mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 18:18:55 +00:00
The module and crate structure around the GUI client and its background service are currently a mess of circular dependencies. Most of the service implementation actually sits in `firezone-headless-client` because the headless-client and the service share certain modules. We have recently moved most of these to `firezone-bin-shared` which is the correct place for these modules. In order to move the background service to `firezone-gui-client`, we need to untangle a few more things in the GUI client. Those are done commit-by-commit in this PR. With that out the way, we can finally move the service module to the GUI client; where is should actually live given that it has nothing to do with the headless client. As a result, the headless-client is - as one would expect - really just a thin wrapper around connlib itself and is reduced down to 4 files with this PR. To make things more consistent in the GUI client, we move the `main.rs` file also into `bin/`. By convention `bin/` is where you define binaries if a crate has more than one. cargo will then build all of them. Eventually, we can optimise the compile-times for `firezone-gui-client` by splitting it into multiple crates: - Shared structs like IPC messages - Background service - GUI client This will be useful because it allows only re-compiling of the GUI client alone if nothing in `connlib` changes and vice versa. Resolves: #6913 Resolves: #5754
89 lines
3.0 KiB
TOML
89 lines
3.0 KiB
TOML
[package]
|
|
name = "firezone-bin-shared"
|
|
version = "0.1.0"
|
|
edition = { workspace = true }
|
|
description = "Firezone-specific modules shared between binaries."
|
|
license = { workspace = true }
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
anyhow = { workspace = true }
|
|
atomicwrites = { workspace = true }
|
|
axum = { workspace = true, features = ["http1", "tokio"] }
|
|
clap = { workspace = true, features = ["derive", "env"] }
|
|
dns-types = { workspace = true }
|
|
firezone-logging = { workspace = true }
|
|
futures = { workspace = true, features = ["std", "async-await"] }
|
|
gat-lending-iterator = { workspace = true }
|
|
hex-literal = { workspace = true }
|
|
ip-packet = { workspace = true }
|
|
ip_network = { workspace = true, features = ["serde"] }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true }
|
|
smbios-lib = { workspace = true }
|
|
socket-factory = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true, features = ["io-util", "net", "rt", "sync", "process"] }
|
|
tracing = { workspace = true }
|
|
tun = { workspace = true }
|
|
uuid = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
bufferpool = { workspace = true }
|
|
bytes = { workspace = true }
|
|
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
dirs = { workspace = true }
|
|
atomicwrites = { workspace = true }
|
|
flume = { workspace = true }
|
|
libc = { workspace = true }
|
|
netlink-packet-core = { version = "0.7" }
|
|
netlink-packet-route = { version = "0.19" }
|
|
nix = { workspace = true, features = ["socket"] }
|
|
resolv-conf = { workspace = true }
|
|
rtnetlink = { workspace = true }
|
|
zbus = { workspace = true } # Can't use `zbus`'s `tokio` feature here, or it will break toast popups all the way over in `gui-client`.
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
known-folders = { workspace = true }
|
|
ring = "0.17"
|
|
uuid = { workspace = true, features = ["v4"] }
|
|
windows-core = { workspace = true }
|
|
windows-implement = { workspace = true }
|
|
wintun = "0.5.1"
|
|
winreg = { workspace = true }
|
|
tokio-util = { workspace = true }
|
|
ipconfig = "0.3.2"
|
|
itertools = { workspace = true }
|
|
|
|
[target.'cfg(windows)'.dependencies.windows]
|
|
workspace = true
|
|
features = [
|
|
# For implementing COM interfaces
|
|
"Win32_Foundation",
|
|
# For listening for network change events
|
|
"Win32_Networking_NetworkListManager",
|
|
"Win32_NetworkManagement_IpHelper",
|
|
"Win32_NetworkManagement_Ndis",
|
|
"Win32_Networking_WinSock",
|
|
"Win32_Security",
|
|
"Win32_System_Com",
|
|
# Needed to listen for system DNS changes
|
|
"Win32_System_Registry",
|
|
"Win32_System_Threading",
|
|
"Win32_System_SystemInformation", # For uptime
|
|
"Win32_System_GroupPolicy", # For NRPT when GPO is used
|
|
]
|
|
|
|
[target.'cfg(windows)'.dev-dependencies]
|
|
ip-packet = { workspace = true }
|
|
tokio = { workspace = true, features = ["net", "time"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dev-dependencies]
|
|
mutants = "0.0.3" # Needed to mark functions as exempt from `cargo-mutants` testing
|
|
tempfile = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|