Commit Graph

18 Commits

Author SHA1 Message Date
Marco Cadetg 4959120ef3 Add historic connections toggle (#184)
* Add historic connections toggle ('t') to show closed connections
2026-03-13 22:43:44 +01:00
Marco Cadetg 0b667c6448 feat: add mouse support for TUI (#170)
- Click to switch tabs, select connections, copy fields in Details tab
- Scroll wheel to navigate the connection list
- Double-click to open Details or toggle group expand/collapse
- Add ClickableRegions hit-test registry and reusable clipboard helper
- Document mouse controls in Help tab and USAGE.md
2026-02-22 12:49:06 +01:00
Marco Cadetg d1793c6523 fix: update docs and remove dead code (#157)
- Update version references to 1.0.0 in PPA_SETUP, debian README
- Fix ARCHITECTURE.md dependency list to match Cargo.toml
- Fix QUIC timeout values and remove ssh: filter from USAGE.md
- Add missing keyboard shortcuts to README
- Remove unused TcpState::Listen, TlsVersion::Ssl3 variants
- Remove unused SniHeader._name_type field
- Move get_stats out of InterfaceStatsProvider trait
2026-02-14 12:33:03 +01:00
Marco Cadetg f49ff49760 feat: add GeoIP location support (#151)
* feat: adding geoip
2026-02-08 12:45:27 +01:00
Marco Cadetg f3f192763a feat: add PCAP export with process attribution sidecar (#137)
- Add --pcap-export flag to stream packets to PCAP file
- Write connection metadata (PID, process, timestamps) to JSONL sidecar
- Include Python script for enriching PCAP with process info
- Update documentation with usage examples and workflow
2026-01-17 19:51:07 +01:00
Marco Cadetg 69a9a15a38 feat(ui): add process grouping with expandable tree view (#122)
Group connections by process name with aggregated stats.
Toggle with 'a', expand/collapse with Space, reset with 'r'.
2026-01-04 15:56:47 +01:00
Marco Cadetg 278ce4c9ae feat: add hotkey to clear all connections (x) (#108) 2025-12-24 11:36:15 +01:00
Marco Cadetg 844f82ce60 Add reverse DNS hostnames to Details tab and filter PTR traffic (#104)
* feat: add reverse DNS resolution for IP addresses

- Add --resolve-dns flag to enable background DNS resolution
- Add --show-ptr-lookups flag to show/hide PTR lookup connections
- Create dns.rs module with async resolver and LRU cache
- Display hostnames in UI with 'd' key toggle
- Include hostname fields in JSON log output when resolved

Closes #97
2025-12-21 14:29:12 +01:00
Marco Cadetg 37486111c4 feat(logging): add pid, process_name, service_name to JSON log (#102)
* feat(logging): add pid, process_name, service_name to JSON log (#99)

* feat(logging): add connection direction to JSON log for TCP
2025-12-20 17:48:49 +01:00
Marco Cadetg 9089403d32 fix(macos): skip PKTAP when BPF filter is specified (#100)
BPF filters are incompatible with PKTAP (linktype 149) on macOS.
When a filter is specified, fall back to regular interface capture.
2025-12-19 07:53:16 +01:00
Marco Cadetg 2a1d58762b feat(cli): add --bpf-filter option for packet capture filtering (#92)
* Update demo GIF

* feat(cli): add --bpf-filter option for packet capture filtering
2025-12-13 15:21:59 +01:00
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 6e1426170b Feature/interface stats (#79)
* feat: adding interface stats

* macOS specific improvements

* fix windows interface stats
2025-11-22 17:34:53 +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 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 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
Marco Cadetg 0d55a86605 Add TUN/TAP interface support (#43)
* feat: add TUN/TAP interface support

Add comprehensive support for TUN/TAP virtual network interfaces by
refactoring link layer parsing into modular components.

New modules:
- link_layer: Modular packet parsing (ethernet, raw_ip, linux_sll, tun_tap)
- protocol: Dedicated TCP/UDP/ICMP parsers

Changes:
- Remove TUN/TAP interface exclusions in capture.rs
- Add TUN/TAP detection and parsing support
- macOS PKTAP support with conditional compilation

Platform compatibility:
- Linux: Full TUN/TAP support
- macOS: TUN (utun*) and TAP support
- Windows: No breaking changes

Fixes #39
2025-10-11 14:10:50 +02:00
Marco Cadetg b6b593056c docs: restructure documentation into focused files
Split large README.md (1101 lines) into separate documentation files
for better organization and maintainability:

- README.md: condensed to 233 lines with quick start and overview
- INSTALL.md: complete installation guide and permissions setup
- USAGE.md: detailed usage guide with filtering and sorting
- ARCHITECTURE.md: technical details and platform implementations
- EBPF_BUILD.md: updated references to new INSTALL.md structure

Added collapsible sections in README for optional details and
included "Documentation Moved" section for backward compatibility
with external links.
2025-10-09 13:12:47 +02:00