[package] name = "rustnet-monitor" version = "0.17.0" authors = ["domcyrus"] edition = "2024" rust-version = "1.88.0" # Let-chains require Rust 1.88.0+ description = "A cross-platform network monitoring terminal UI tool built with Rust" repository = "https://github.com/domcyrus/rustnet" homepage = "https://github.com/domcyrus/rustnet" documentation = "https://docs.rs/rustnet-monitor" readme = "README.md" license = "Apache-2.0" keywords = ["network", "monitoring", "tui", "terminal", "packet-capture"] categories = ["command-line-utilities", "network-programming", "visualization"] exclude = [".github/", "scripts/", "tests/", "*.log", "target/", ".gitignore"] [lib] name = "rustnet_monitor" path = "src/lib.rs" [[bin]] name = "rustnet" path = "src/main.rs" [dependencies] anyhow = "1.0" arboard = { version = "3.6", features = ["wayland-data-control"] } crossterm = "0.29" crossbeam = "0.8" dashmap = "6.1" dns-lookup = "3.0" log = "0.4" num_cpus = "1.17" pcap = "2.4.0" pnet_datalink = "0.35" clap = { version = "4.5", features = ["derive"] } simple-logging = "2.0" simplelog = "0.12" chrono = "0.4" ratatui = { version = "0.29", features = ["all-widgets"] } ring = "0.17" aes = "0.8" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" [target.'cfg(target_os = "linux")'.dependencies] procfs = "0.18" libbpf-rs = { version = "0.25", optional = true } bytes = { version = "1.11", optional = true } libc = { version = "0.2", optional = true } landlock = { version = "0.4", optional = true } caps = { version = "0.5", optional = true } [target.'cfg(any(target_os = "macos", target_os = "freebsd"))'.dependencies] libc = "0.2" [target.'cfg(windows)'.dependencies] windows = { version = "0.62", features = [ "Win32_Foundation", "Win32_NetworkManagement_IpHelper", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock", "Win32_Security", "Win32_System_LibraryLoader", "Win32_System_Threading", ] } # FreeBSD support uses the system's sockstat command for process lookup # and native libpcap (via pcap crate) for packet capture. # No additional FreeBSD-specific dependencies required at this time. [build-dependencies] anyhow = "1.0" clap = { version = "4.5", features = ["derive"] } clap_complete = "4.5" clap_mangen = "0.2" [target.'cfg(windows)'.build-dependencies] http_req = "0.14" zip = "6.0" windows = { version = "0.62", features = [ "Win32_Foundation", "Win32_NetworkManagement_IpHelper", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock", "Win32_Security", "Win32_System_LibraryLoader", "Win32_System_Threading", ] } [target.'cfg(target_os = "linux")'.build-dependencies] libbpf-cargo = { version = "0.25", optional = true } [features] # eBPF is enabled by default for enhanced performance on Linux. # On non-Linux platforms, this feature has no effect as all eBPF code # and dependencies are Linux-specific (guarded by target_os checks). # Landlock provides security sandboxing on Linux 5.13+. default = ["ebpf", "landlock"] linux-default = ["ebpf"] # Deprecated: kept for backwards compatibility ebpf = ["libbpf-rs", "bytes", "libc", "dep:libbpf-cargo"] landlock = ["dep:landlock", "dep:caps"] # Minimal cross configuration to override dependency conflicts [workspace.metadata.cross.build.env] passthrough = [ "CARGO_INCREMENTAL", "CARGO_NET_RETRY", "CARGO_NET_TIMEOUT", ] [package.metadata.deb] maintainer = "domcyrus " copyright = "2024, domcyrus " license-file = ["LICENSE", "4"] extended-description = """\ A real-time network monitoring terminal UI tool built with Rust. Features: - Real-time network monitoring with detailed state information - Deep packet inspection for HTTP/HTTPS, DNS, SSH, and QUIC - Connection lifecycle management with configurable timeouts - Process identification and service name resolution - Advanced filtering with vim/fzf-style search - Multi-threaded processing for optimal performance - eBPF-enhanced process detection on Linux (with automatic fallback) """ depends = "libpcap0.8, libelf1" section = "net" priority = "optional" assets = [ [ "target/release/rustnet", "usr/bin/", "755", ], [ "README.md", "usr/share/doc/rustnet-monitor/", "644", ], [ "assets/services", "usr/share/rustnet-monitor/", "644", ], [ "resources/packaging/linux/graphics/rustnet.png", "usr/share/icons/hicolor/256x256/apps/", "644", ], [ "resources/packaging/linux/rustnet.desktop", "usr/share/applications/", "644", ], ] conf-files = [] [package.metadata.generate-rpm] assets = [ { source = "target/release/rustnet", dest = "/usr/bin/rustnet", mode = "755" }, { source = "README.md", dest = "/usr/share/doc/rustnet-monitor/README.md", mode = "644" }, { source = "assets/services", dest = "/usr/share/rustnet-monitor/services", mode = "644" }, { source = "resources/packaging/linux/graphics/rustnet.png", dest = "/usr/share/icons/hicolor/256x256/apps/rustnet.png", mode = "644" }, { source = "resources/packaging/linux/rustnet.desktop", dest = "/usr/share/applications/rustnet.desktop", mode = "644" }, ] [package.metadata.generate-rpm.requires] libpcap = "*" elfutils-libelf = "*" [package.metadata.wix] upgrade-guid = "455c823b-9665-43e0-baa4-bd0fcb762463" path-guid = "d3a2452e-f04f-4d4f-becf-c3580f49f8fc" license = false eula = false