Expand description
§prt-core
Core library for prt — a real-time network port monitor.
This crate provides the platform-independent logic for scanning, tracking, enriching, filtering, sorting, and exporting network port information. It is designed to be consumed by any frontend (TUI, GUI, CLI).
§Architecture
platform::scan_ports()
→ Session::refresh()
→ scanner::diff_entries() (New / Unchanged / Gone + first_seen)
→ enrich: service names, suspicious flags, containers
→ retain: drop Gone entries older than 5s
→ bandwidth.sample()
→ scanner::sort_entries()
→ (frontend layer)
→ alerts::evaluate()
→ scanner::filter_indices()
→ UI renders§Modules
model— Core data types:PortEntry,TrackedEntry,ViewMode,DetailTab,SortState.core— Business logic: scanning, diffing, filtering, sorting, killing, session management, alerts, suspicious detection, bandwidth tracking, container resolution, namespaces, process detail, firewall.config— TOML configuration from~/.config/prt/(known port overrides, alert rules).known_ports— Well-known port → service name database (~170 entries + user overrides).i18n— Internationalization: runtime-switchable language support (English, Russian, Chinese) backed byAtomicU8.platform— OS-specific port scanning: macOS (lsof), Linux (/proc).
§Example
use prt_core::core::scanner;
use prt_core::model::ExportFormat;
let entries = scanner::scan().expect("scan failed");
let json = scanner::export(&entries, ExportFormat::Json).unwrap();
println!("{json}");Modules§
- config
- Configuration loading from
~/.config/prt/config.toml. - core
- Core business logic: scanning, diffing, killing, and session management.
- i18n
- Internationalization with runtime language switching.
- known_
ports - Well-known port → service name database.
- model
- Core data types for the port monitor.
- platform
- Platform-specific port scanning.