Skip to main content

Crate gradatum_warden

Crate gradatum_warden 

Source
Expand description

§gradatum-warden

Couche réseau L0 pour Gradatum : filtrage IP CIDR + rate limiting per-IP + bypass loopback.

§Composants publics

  • WardenLayer : implémentation tower Layer à monter sur un routeur Axum.
  • WardenConfig : configuration complète du warden (sérialisable TOML/JSON).
  • WardenError : erreur de construction (config invalide).
  • WardenDecision : décision interne par requête (observable dans les tests).

§Garantie bypass loopback

Contrairement à tower_governor (où error_handler terminait la chaîne avec Body::empty()), le warden appelle toujours inner.call(req) pour les requêtes bypass/allow. Le body retourné est celui du handler métier réel — jamais un body vide synthétique.

§Exemple

use gradatum_warden::{WardenConfig, WardenLayer};

let config = WardenConfig {
    enabled: true,
    rate_limit_per_minute: 60,
    rate_limit_burst: 10,
    bypass_loopback: true,
    ..WardenConfig::default()
};
let warden = WardenLayer::new(config).expect("config warden valide");
// app.layer(warden)

Re-exports§

pub use config::WardenConfig;
pub use error::WardenDecision;
pub use error::WardenError;
pub use layer::WardenLayer;

Modules§

config
Configuration du warden L0.
error
Types d’erreur et décision du warden.
ip
Filtrage IP par CIDR.
layer
Tower Layer implémentant le warden L0.
rate
Rate limiting per-IP.
service
Service tower implémentant la logique warden.