Commit Graph

312 Commits

Author SHA1 Message Date
Marco Cadetg 5a059a3a12 feat: add Landlock sandbox and capability dropping for Linux (#86)
* feat: add Landlock sandbox and capability dropping for Linux

- Restrict filesystem access to /proc only after initialization
- Block TCP bind/connect on kernel 6.4+ (network sandbox)
- Drop CAP_NET_RAW after pcap handle opened
- Add --no-sandbox and --sandbox-strict CLI options
- Show privilege info on non-Linux platforms in UI
- Add SECURITY.md documentation

* fix: remove unused set_sandbox_info and hide Landlock line on non-Linux

* fix: gate SandboxInfo to Linux only to fix clippy warnings

* fix: add is_admin() function for Windows builds

The Windows build was failing because ui.rs called crate::is_admin()
but the function didn't exist. Added the implementation using Windows
Security API to check if the process has elevated privileges.

Also added Win32_Security feature to windows crate dependencies.

* fix: add is_admin() to main.rs for Windows binary crate

The previous fix added is_admin() to lib.rs but ui.rs is compiled
as part of the binary crate (main.rs), not the library crate.
Added the function to main.rs so crate::is_admin() resolves correctly.
2025-12-06 17:50:21 +01:00
Marco Cadetg dd0b7e0923 fix: make RateTracker tests deterministic with injectable timestamps (#85) 2025-12-06 15:36:05 +01:00
Marco Cadetg 5c8ca435b3 refactor: simplify QUIC DPI and reorganize platform code (#84)
* refactor: simplify QUIC DPI and unify SNI extraction helpers

* refactor: reorganize platform code and improve code structure
2025-12-06 13:31:17 +01:00
dependabot[bot] 2fb66fe478 chore(deps): bump pcap in the rust-dependencies group (#83)
Bumps the rust-dependencies group with 1 update: [pcap](https://github.com/rust-pcap/pcap).


Updates `pcap` from 2.3.0 to 2.4.0
- [Changelog](https://github.com/rust-pcap/pcap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-pcap/pcap/compare/v2.3.0...v2.4.0)

---
updated-dependencies:
- dependency-name: pcap
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-04 21:02:41 +01:00
dependabot[bot] 1a47b1a8d8 chore(deps): bump vmactions/freebsd-vm in the actions group (#82)
Bumps the actions group with 1 update: [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm).


Updates `vmactions/freebsd-vm` from 1.2.7 to 1.2.8
- [Release notes](https://github.com/vmactions/freebsd-vm/releases)
- [Commits](https://github.com/vmactions/freebsd-vm/compare/b9c3f24600acdef618ef1c9e2d3c6eeda4dce712...0cd283ca698d48b59cda444a9948f48a30709627)

---
updated-dependencies:
- dependency-name: vmactions/freebsd-vm
  dependency-version: 1.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-04 21:00:57 +01:00
Marco Cadetg 3a8e8614bc feat: reorganize platform code into per-platform directories (#81)
* feat: reorganize platform code into per-platform directories

- Move platform files into linux/, macos/, windows/, freebsd/ subdirectories
- Unify create_process_lookup() API with _use_pktap parameter across all platforms
- Update build.rs paths for eBPF program location
- Reduce cfg attributes in main mod.rs from ~42 to 8

* fix: widen tolerance for test_sliding_window_no_skip_first_sample

Increase acceptable range from 9000-11000 to 5000-15000 to account
for timing variability on macOS ARM CI runners.

* docs: update Linux build dependencies and remove EBPF_BUILD.md

- Add missing build-essential, pkg-config, zlib1g-dev to documentation
- Update rust.yml CI with complete dependencies
- Remove EBPF_BUILD.md (info already in INSTALL.md)
- Update references in README.md and ARCHITECTURE.md
2025-11-30 18:08:11 +01:00
Marco Cadetg fed1efaa30 Enhance Dependabot configuration for Rust and Actions
Added cooldown and grouping settings for Rust and GitHub Actions dependencies.
2025-11-26 08:10:24 +01:00
Marco Cadetg abfac77826 Run Docker container as host user 2025-11-22 22:31:02 +01:00
Marco Cadetg 60f7f546ad Fix .SRCINFO file ownership 2025-11-22 22:26:21 +01:00
Marco Cadetg d3053e1ec6 Run makepkg as non-root user 2025-11-22 22:24:41 +01:00
Marco Cadetg f91731726b Fix tag detection for manual triggers 2025-11-22 22:23:25 +01:00
Marco Cadetg 51951a2dc0 Use latest tag for manual workflow triggers 2025-11-22 22:20:01 +01:00
Marco Cadetg 93902d3911 Fix AUR workflow version extraction 2025-11-22 22:18:45 +01:00
Marco Cadetg 2c0f0d7aae Add AUR package automation workflow 2025-11-22 22:12:05 +01:00
Marco Cadetg f12a3e21cd chore: pin vmactions/freebsd-vm to v1.2.7 SHA 2025-11-22 18:59:05 +01:00
Marco Cadetg 8db02be5fe Release v0.16.1
- Fix cross-compilation build issues for eBPF on non-Linux platforms
- Switch FreeBSD to native VM builds instead of cross-compilation
- Fix build.rs to check TARGET instead of host platform
v0.16.1
2025-11-22 18:35:49 +01:00
Marco Cadetg b85d69114c Use FreeBSD VM for native builds instead of cross-compilation
- Removed freebsd-x64 from cross-compilation matrix
- Added dedicated build-freebsd job using vmactions/freebsd-vm
- Builds natively on actual FreeBSD using pkg and native toolchain
- Updated test-freebsd workflow to use VM as well
- Avoids all cross-compilation sysroot/libpcap issues
v0.16.0
2025-11-22 18:17:48 +01:00
Marco Cadetg 972d4de2f4 Fix FreeBSD build: make libbpf-cargo optional and add libpcap to Cross.toml
- Made libbpf-cargo an optional build dependency
- Only builds when ebpf feature is enabled
- Added Cross.toml configuration for FreeBSD to install libpcap
- Verified libbpf-sys no longer tries to build for FreeBSD
- Now fixing linker error for missing libpcap
2025-11-22 18:07:36 +01:00
Marco Cadetg 99a7cbd033 Fix FreeBSD build by making libbpf-cargo optional
- Make libbpf-cargo an optional build dependency
- Include it in ebpf feature to only build when needed
- Add test workflow for FreeBSD builds that can be manually triggered
- This prevents libbpf-sys from being built when cross-compiling to FreeBSD
2025-11-22 17:58:36 +01:00
Marco Cadetg 68ab2a1b57 Fix build.rs to check TARGET instead of host for eBPF compilation 2025-11-22 17:53:41 +01:00
Marco Cadetg 9796af5b71 Fix FreeBSD build by disabling eBPF for non-Linux platforms 2025-11-22 17:50:20 +01:00
Marco Cadetg 3fc3a7d017 Release v0.16.0
- Network interface statistics feature with cross-platform support
- Link layer parsing improvements and modularization
- Windows and macOS interface statistics fixes
2025-11-22 17:41:14 +01:00
Marco Cadetg 6e1426170b Feature/interface stats (#79)
* feat: adding interface stats

* macOS specific improvements

* fix windows interface stats
2025-11-22 17:34:53 +01:00
dependabot[bot] eb4b72d318 chore(deps): bump actions/checkout from 5 to 6 (#78)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-21 17:34:02 +01:00
dependabot[bot] 6f00d83f4c chore(deps): bump clap from 4.5.52 to 4.5.53 (#76)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.52 to 4.5.53.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.52...clap_complete-v4.5.53)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.5.53
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 16:40:37 +01:00
dependabot[bot] e15a567924 chore(deps): bump clap_complete from 4.5.60 to 4.5.61 (#77)
Bumps [clap_complete](https://github.com/clap-rs/clap) from 4.5.60 to 4.5.61.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.60...clap_complete-v4.5.61)

---
updated-dependencies:
- dependency-name: clap_complete
  dependency-version: 4.5.61
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 16:40:21 +01:00
dependabot[bot] cbef7e4457 chore(deps): bump bytes from 1.10.1 to 1.11.0 (#73)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.1...v1.11.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:22:21 +01:00
dependabot[bot] 183ec7f2b2 chore(deps): bump clap from 4.5.51 to 4.5.52 (#74)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.51 to 4.5.52.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.51...clap_complete-v4.5.52)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.5.52
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:22:05 +01:00
dependabot[bot] f5ebb62c9e chore(deps): bump http_req from 0.14.1 to 0.14.2 (#75)
Bumps [http_req](https://github.com/jayjamesjay/http_req) from 0.14.1 to 0.14.2.
- [Release notes](https://github.com/jayjamesjay/http_req/releases)
- [Commits](https://github.com/jayjamesjay/http_req/compare/v0.14.1...v0.14.2)

---
updated-dependencies:
- dependency-name: http_req
  dependency-version: 0.14.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:21:46 +01:00
Marco Cadetg dda39e5cdf feat: add TCP network analytics with retransmission detection (#72)
Adds real-time TCP connection quality monitoring:
- Retransmission detection via sequence number analysis
- Out-of-order packet tracking
- Fast retransmit detection (RFC 2581)
- Per-connection and aggregate statistics
- Network Stats panel in UI
- Platform-independent implementation using pcap data

Statistics show both active (current connections) and total
(cumulative) counts. Individual connection details display
per-connection metrics for troubleshooting network issues.
2025-11-14 12:38:38 +01:00
Marco Cadetg 8822af9793 chore: update README.md a bit 2025-11-02 20:13:51 +01:00
Marco Cadetg e1917b6ea2 fix: linux tests 2025-11-02 20:13:32 +01:00
Marco Cadetg dc32e4a9f5 Add Homebrew installation instructions to README
Added Homebrew installation instructions for macOS and Linux.
2025-11-02 19:52:42 +01:00
Marco Cadetg 85b2662c85 feat: add freebsd (#71)
* feat: add freebsd
2025-11-02 19:47:26 +01:00
Marco Cadetg 03cc04624f chore: cleanup dead code 2025-10-31 14:31:07 +01:00
dependabot[bot] 0d2a10f47f chore(deps): bump clap_complete from 4.5.59 to 4.5.60 (#70)
Bumps [clap_complete](https://github.com/clap-rs/clap) from 4.5.59 to 4.5.60.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.59...clap_complete-v4.5.60)

---
updated-dependencies:
- dependency-name: clap_complete
  dependency-version: 4.5.60
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-30 13:49:34 +01:00
dependabot[bot] 2813c61bf3 chore(deps): bump clap from 4.5.50 to 4.5.51 (#69)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.50 to 4.5.51.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.50...clap_complete-v4.5.51)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.5.51
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-30 13:49:06 +01:00
dependabot[bot] 434a2edb5b chore(deps): bump actions/upload-artifact from 4 to 5 (#67)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 13:02:42 +01:00
dependabot[bot] 0ac881c75c chore(deps): bump actions/download-artifact from 5 to 6 (#66)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 13:02:23 +01:00
Marco Cadetg a46617b83a Release v0.15.0
- Ubuntu PPA packaging support
- Bandwidth sorting by combined up+down total
- Removed CAP_NET_ADMIN requirement (read-only capture)
- Improved bandwidth rate tracking accuracy
- Updated dependencies: clap, clap_mangen, clap_complete, dns-lookup, windows, zip, libc
v0.15.0
2025-10-25 21:35:00 +02:00
Marco Cadetg a0e1e6d080 feat: sort bandwidth by combined up+down total (#64)
Changed bandwidth sorting to use the sum of upload and download speeds
instead of separate sorting for each direction. This provides a simpler
way to identify connections with the highest total bandwidth usage.

- Replace BandwidthDown/BandwidthUp with single BandwidthTotal enum
- Update sort logic to calculate combined rates
- Simplify UI to show "Down/Up ↓/↑" indicator
- Update documentation and tests
2025-10-25 20:58:20 +02:00
Marco Cadetg fe7f694a4b fix: improve bandwidth rate tracking accuracy and stability (#63)
- Change sliding window from 5s to 10s for stable measurements
- Increase max_samples from 100 to 20,000 to preserve full time window
- Fix minimum time span threshold from 100ms to 1s for stability
- Remove skip(1) bug that excluded first sample from calculations
- Remove artificial decay logic causing rate drops during transfers
- Add idle connection detection for proper zero-rate display
- Update tests for 1s minimum requirement and add edge case coverage
2025-10-25 18:27:37 +02:00
dependabot[bot] d78b6d09e5 chore(deps): bump clap_mangen from 0.2.30 to 0.2.31 (#62)
Bumps [clap_mangen](https://github.com/clap-rs/clap) from 0.2.30 to 0.2.31.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_mangen-v0.2.30...clap_mangen-v0.2.31)

---
updated-dependencies:
- dependency-name: clap_mangen
  dependency-version: 0.2.31
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-24 21:57:39 +02:00
dependabot[bot] f2ed1d708e chore(deps): bump dns-lookup from 3.0.0 to 3.0.1 (#61)
Bumps [dns-lookup](https://github.com/keeperofdakeys/dns-lookup) from 3.0.0 to 3.0.1.
- [Commits](https://github.com/keeperofdakeys/dns-lookup/commits)

---
updated-dependencies:
- dependency-name: dns-lookup
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-21 21:01:50 +02:00
dependabot[bot] 1951fdf2b5 chore(deps): bump clap from 4.5.49 to 4.5.50 (#60)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.49 to 4.5.50.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.49...clap_complete-v4.5.50)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.5.50
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-21 21:01:36 +02:00
Marco Cadetg 4ae965a8a4 feat: remove CAP_NET_ADMIN and CAP_SYS_ADMIN, use read-only packet capture (#59)
Remove CAP_NET_ADMIN requirement and eliminate need for CAP_SYS_ADMIN on
modern kernels by using non-promiscuous mode for packet capture. This
significantly reduces security surface by following principle of least privilege.
2025-10-19 17:03:58 +02:00
dependabot[bot] ff6d924a5d chore(deps): bump windows from 0.61.3 to 0.62.2 (#58)
Bumps [windows](https://github.com/microsoft/windows-rs) from 0.61.3 to 0.62.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows
  dependency-version: 0.62.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-15 18:22:41 +02:00
dependabot[bot] cde043b9d4 chore(deps): bump actions/download-artifact from 4 to 5 (#49)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 15:38:42 +02:00
dependabot[bot] 02b09fd800 chore(deps): bump docker/build-push-action from 5 to 6 (#50)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 15:38:14 +02:00
dependabot[bot] 4c79b5ce8f chore(deps): bump actions/checkout from 4 to 5 (#51)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 15:38:01 +02:00