Files
pmoutils/README.md
Eric Coissac 8fb31ea834 Mise à jour de la configuration Rust, documentation et dépendances
Migration vers Rust 2021, ajout de la documentation en français, mise à jour des dépendances et suppression des crates inutilisées.

- Mise à jour de l'édition Rust à 2021
- Ajout de commentaires de documentation en français
- Suppression des dépendances `quick-xml` et `xmltree`
- Ajout de nouvelles dépendances : `get_if_addrs`, `os_info`, `netstat2`, `sysinfo`, `users`
- Mise à jour du fichier README.md et LICENSE
- Correction de l'ordre des imports dans `src/process.rs`
2026-02-28 16:00:42 +01:00

155 lines
3.8 KiB
Markdown

# pmoutils
[![Crates.io](https://img.shields.io/crates/v/pmoutils)](https://crates.io/crates/pmoutils)
[![Docs.rs](https://img.shields.io/docsrs/pmoutils)](https://docs.rs/pmoutils)
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` :
```toml
[dependencies]
pmoutils = "0.1"
```
### Depuis la source
```bash
git clone https://github.com/coissac/pmo.git
cd pmo/pmoutils
cargo build --release
```
## Documentation
La documentation complète est disponible sur [docs.rs](https://docs.rs/pmoutils).
### Gestion des adresses IP
```rust
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
```rust
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
```rust
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](https://docs.rs/pmoutils) 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
```bash
cargo build --release
```
### Tests
```bash
cargo test
```
### Documentation locale
```bash
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](https://cecill.info)
See the `LICENSE` file for the full license text.