Skip to main content

Crate prt_core

Crate prt_core 

Source
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 by AtomicU8.
  • 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.