parlov 0.8.0

HTTP oracle detection tool — systematic probing for RFC-compliant information leakage.
Documentation
//! parlov binary entry point.
//!
//! Thin dispatch layer: parse CLI arguments, hand off to the appropriate oracle pipeline.
//! All logic lives in library crates; `main` is kept minimal by design.

#![deny(clippy::all)]
#![warn(clippy::pedantic)]

mod cli;
mod existence;
mod parse;
mod pipeline_state;
mod scan;
mod scan_context;
mod scan_exec;
mod scan_runner;
mod scan_runner_finding;
mod strategy_filter;
mod util;
mod vector_filter;
mod verdict_builder;

use clap::Parser;
use cli::{Cli, Command};

#[tokio::main]
async fn main() {
    let cli = Cli::parse();
    let format = cli.format;

    let result = match cli.command {
        Command::Existence(args) => {
            eprintln!("warning: `existence` is deprecated; use `scan --strategy <id>` instead");
            existence::run(args, format).await
        }
        Command::Scan(args) => scan::run(args, format).await,
    };

    if let Err(e) = result {
        eprintln!("error: {e}");
        std::process::exit(1);
    }
}