[][src]Module m_captcha::mcaptcha

MCaptcha actor module that manages defense levels

Usage:

use m_captcha::{mcaptcha::Visitor, 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(Visitor).await.unwrap();

    Ok(())
}

Structs

MCaptcha

This struct represents the mCaptcha state and is used to configure leaky-bucket lifetime and manage defense

MCaptchaBuilder

Builder for MCaptcha.

Visitor

Message to increment the visitor count returns difficulty factor and lifetime

VisitorResult

Struct representing the return datatime of Visitor message. Contains MCaptcha lifetime and difficulty factor