Module m_captcha::mcaptcha [−][src]
MCaptcha actor module that manages defense levels
Usage:
use m_captcha::{mcaptcha::AddVisitor, MCaptchaBuilder, cache::HashCache, LevelBuilder, DefenseBuilder}; // traits from actix needs to be in scope for starting actor use actix::prelude::*; #[actix_rt::main] async fn main() -> std::io::Result<()> { // configure defense let defense = DefenseBuilder::default() // add as many levels as you see fit .add_level( LevelBuilder::default() // visitor_threshold is the threshold/limit at which // mCaptcha will adjust difficulty levels // it is advisable to set small values for the first // levels visitor_threshold and difficulty_factor // as this will be the work that clients will be // computing when there's no load .visitor_threshold(50) .difficulty_factor(500) .unwrap() .build() .unwrap(), ) .unwrap() .add_level( LevelBuilder::default() .visitor_threshold(5000) .difficulty_factor(50000) .unwrap() .build() .unwrap(), ) .unwrap() .build() .unwrap(); // create and start MCaptcha actor //let cache = HashCache::default().start(); let mcaptcha = MCaptchaBuilder::default() .defense(defense) // leaky bucket algorithm's emission interval .duration(30) .build() .unwrap() .start(); // increment count when user visits protected routes mcaptcha.send(AddVisitor).await.unwrap(); Ok(()) }
Structs
AddVisitor | Message to increment the visitor count returns difficulty factor and lifetime |
AddVisitorResult | Struct representing the return datatime of AddVisitor message. Contains MCaptcha lifetime and difficulty factor |
GetCurrentVisitorCount | Message to get the visitor count |
MCaptcha | This struct represents the mCaptcha state and is used to configure leaky-bucket lifetime and manage defense |
MCaptchaBuilder | Builder for MCaptcha |
Stop | Message to stop MCaptcha |