No description
  • Rust 75.8%
  • Makefile 24.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-02-28 18:50:32 +01:00
.cargo Bump version to 0.1.2 2026-02-28 18:49:38 +01:00
src Bump version to 0.1.1 and enhance IP detection with timeout support 2026-02-28 18:37:39 +01:00
.gitignore Initial commit with core utilities 2026-02-28 14:56:11 +01:00
AGENTS.md Mise à jour de la configuration Rust, documentation et dépendances 2026-02-28 16:00:42 +01:00
Cargo.lock Bump version to 0.1.2 2026-02-28 18:49:38 +01:00
Cargo.toml Bump version to 0.1.2 2026-02-28 18:49:38 +01:00
LICENSE Mise à jour de la configuration Rust, documentation et dépendances 2026-02-28 16:00:42 +01:00
Makefile Bump version to 0.1.1 and enhance IP detection with timeout support 2026-02-28 18:37:39 +01:00
README.md Bump version to 0.1.1 and enhance IP detection with timeout support 2026-02-28 18:37:39 +01:00
version.txt Bump version to 0.1.2 2026-02-28 18:49:38 +01:00

pmoutils

Crates.io Docs.rs

Pmo Crates Docs.rs

Utilitaires système pour la gestion des adresses IP réseau et des processus.

Fonctionnalités

  • Gestion des adresses IP : Détection et listing des interfaces réseau
  • Surveillance des processus : Identification des processus utilisant un port spécifique
  • Informations système : Détection de l'OS et de sa version

Installation

Via Cargo (recommandé)

Ajoutez cette dépendance à votre Cargo.toml :

[dependencies]
pmoutils = "0.1"

Depuis la source

git clone https://github.com/coissac/pmo.git
cd pmo/pmoutils
cargo build --release

Documentation

La documentation complète est disponible sur docs.rs.

Gestion des adresses IP

use pmoutils::guess_local_ip;

// Devine l'adresse IP locale utilisée pour les connexions sortantes
let ip = guess_local_ip();
println!("Adresse IP locale: {}", ip);

// Liste toutes les adresses IP non-loopback
use pmoutils::ip_utils::list_all_ips;

let ips = list_all_ips();
for (interface, addresses) in ips {
    println!("Interface {}: {:?}", interface, addresses);
}

Surveillance des processus

use pmoutils::{find_process_using_port, TransportProtocol};

// Trouve le processus qui écoute sur un port spécifique
let info = find_process_using_port(8080, TransportProtocol::Tcp);

if let Some(process_info) = info {
    println!("PID: {}", process_info.pid);
    println!("Nom: {}", process_info.process_name);
    println!("Propriétaire: {}", process_info.owner);
}

Informations système

use pmoutils::get_os_string;

// Obtient le nom et la version du système d'exploitation
let os_info = get_os_string();
println!("Système: {}", os_info); // Ex: "Linux/6.5.0" ou "macOS/15.1"

API

Modules

  • ip_utils : Utilitaires pour la gestion des adresses IP

    • guess_local_ip() → Devine l'IP locale
    • list_all_ips() → Liste toutes les IPs non-loopback
  • process : Utilitaires pour la gestion des processus

    • find_process_using_port() → Trouve un processus par port
    • ProcessPortInfo → Structure contenant les informations du processus
    • TransportProtocol → Énumération TCP/UDP

Fonctions publiques

  • get_os_string() → Retourne une chaîne décrivant l'OS et sa version

Exemples complets

Voir la documentation API pour plus d'exemples.

Platformes supportées

  • macOS (x86_64, ARM64)
  • Linux (x86_64, ARM64)
  • Windows (limité - certaines fonctionnalités peuvent ne pas être disponibles)

Développement

Prérequis

  • Rust 1.70+ (edition 2021)
  • Cargo (inclus dans Rust)

Compilation

cargo build --release

Tests

cargo test

Documentation locale

cargo doc --no-deps

Ouvrez target/doc/pmoutils/index.html dans votre navigateur.

Dépendances

  • get_if_addrs : Detection des adresses d'interfaces réseau
  • os_info : Détection multiplateforme de l'OS
  • netstat2 : Mapping des sockets et processus
  • sysinfo : Informations système et processus
  • users : Résolution des utilisateurs par UID

License

Ce logiciel est régi par la licence CeCILL version 2.1.

Ce logiciel est un programme informatique servant à la gestion des adresses IP réseau et des processus système. Il est distribué sous la licence CeCILL telle que publiée par le CEA, le CNRS et l'INRIA.

Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous les termes de la licence CeCILL telle que publiée par CEA, CNRS et INRIA à l'adresse suivante : https://cecill.info

See the LICENSE file for the full license text.