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`
155 lines
3.8 KiB
Markdown
155 lines
3.8 KiB
Markdown
# pmoutils
|
|
|
|
[](https://crates.io/crates/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.
|