#![allow(clippy::missing_panics_doc)]
#![allow(clippy::type_complexity)]
#![allow(clippy::missing_const_for_fn)]
use std::marker::PhantomData;
#[allow(clippy::wildcard_imports)]
use super::typestate::*;
use super::{AsyncFuzzer, FuzzingLoopHook};
use crate::client;
use crate::deciders::Deciders;
use crate::mutators::Mutators;
use crate::observers::Observers;
use crate::processors::Processors;
use crate::requests::Request;
use crate::responses::AsyncResponse;
use crate::schedulers::Scheduler;
use crate::state::SharedState;
use crate::std_ext::ops::LogicOperation;
pub struct AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
threads: usize,
request_id: usize,
client: Option<A>,
request: Option<Request>,
scheduler: Option<S>,
mutators: Option<M>,
observers: Option<O>,
processors: Option<P>,
deciders: Option<D>,
pre_send_logic: Option<LogicOperation>,
post_send_logic: Option<LogicOperation>,
pre_loop_hook: Option<FuzzingLoopHook>,
post_loop_hook: Option<FuzzingLoopHook>,
_client_state: PhantomData<CS>,
_request_state: PhantomData<RS>,
_scheduler_state: PhantomData<SS>,
_mutator_state: PhantomData<MS>,
_observer_state: PhantomData<OS>,
_processor_state: PhantomData<PS>,
_decider_state: PhantomData<DS>,
_pre_loop_logic_state: PhantomData<PreSndLgcS>,
_post_loop_logic_state: PhantomData<PostSndLgcS>,
_pre_loop_hook_state: PhantomData<PreLpHkS>,
_post_loop_hook_state: PhantomData<PostLpHkS>,
}
impl<A, D, M, O, P, S>
AsyncFuzzerBuilder<
NoClient,
NoRequest,
NoScheduler,
NoMutators,
NoObservers,
NoProcessors,
NoDeciders,
NoPreSendLogic,
NoPostSendLogic,
NoPreLoopHook,
NoPostLoopHook,
A,
D,
M,
O,
P,
S,
>
{
#[must_use]
pub fn new(threads: usize, request_id: usize) -> Self {
Self {
threads,
request_id,
client: None,
request: None,
scheduler: None,
mutators: None,
observers: None,
processors: None,
deciders: None,
pre_send_logic: None,
post_send_logic: None,
pre_loop_hook: None,
post_loop_hook: None,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<RS, SS, MS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
NoClient,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn client(
self,
client: A,
) -> AsyncFuzzerBuilder<
HasClient,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: Some(client),
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, SS, MS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
NoRequest,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn request(
self,
request: Request,
) -> AsyncFuzzerBuilder<
CS,
HasRequest,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: Some(request),
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, MS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
NoScheduler,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn scheduler(
self,
scheduler: S,
) -> AsyncFuzzerBuilder<
CS,
RS,
HasScheduler,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: Some(scheduler),
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
NoMutators,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn mutators(
self,
mutators: M,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
HasMutators,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: Some(mutators),
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
NoObservers,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn observers(
self,
observers: O,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
HasObservers,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: Some(observers),
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
NoProcessors,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn processors(
self,
processors: P,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
HasProcessors,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: Some(processors),
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, PS, PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn deciders(
self,
deciders: D,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: Some(deciders),
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, PS, DS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
NoPreSendLogic,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn pre_send_logic(
self,
logic_operation: LogicOperation,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
HasPreSendLogic,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: Some(logic_operation),
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, PS, DS, PreSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
NoPostSendLogic,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn post_send_logic(
self,
logic_operation: LogicOperation,
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
HasPostSendLogic,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: Some(logic_operation),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
NoPreLoopHook,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
{
pub fn pre_loop_hook(
self,
callback: fn(&mut SharedState),
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
HasPreLoopHook,
PostLpHkS,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: Some(FuzzingLoopHook::new(callback)),
post_loop_hook: self.post_loop_hook,
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<CS, RS, SS, MS, OS, PS, DS, PreSndLgcS, PostSndLgcS, PreLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
NoPostLoopHook,
A,
D,
M,
O,
P,
S,
>
where
CS: FuzzerBuildState,
RS: FuzzerBuildState,
SS: FuzzerBuildState,
MS: FuzzerBuildState,
OS: FuzzerBuildState,
PS: FuzzerBuildState,
DS: FuzzerBuildState,
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
{
pub fn post_loop_hook(
self,
callback: fn(&mut SharedState),
) -> AsyncFuzzerBuilder<
CS,
RS,
SS,
MS,
OS,
PS,
DS,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
HasPostLoopHook,
A,
D,
M,
O,
P,
S,
> {
AsyncFuzzerBuilder {
threads: self.threads,
request_id: self.request_id,
client: self.client,
request: self.request,
scheduler: self.scheduler,
mutators: self.mutators,
observers: self.observers,
processors: self.processors,
deciders: self.deciders,
pre_send_logic: self.pre_send_logic,
post_send_logic: self.post_send_logic,
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: Some(FuzzingLoopHook::new(callback)),
_client_state: PhantomData,
_request_state: PhantomData,
_scheduler_state: PhantomData,
_mutator_state: PhantomData,
_observer_state: PhantomData,
_processor_state: PhantomData,
_decider_state: PhantomData,
_pre_loop_logic_state: PhantomData,
_post_loop_logic_state: PhantomData,
_pre_loop_hook_state: PhantomData,
_post_loop_hook_state: PhantomData,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
HasObservers,
HasProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<O, AsyncResponse>,
M: Mutators,
O: Observers<AsyncResponse>,
P: Processors<O, AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, M, O, P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: self.observers.unwrap(), processors: self.processors.unwrap(), deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
NoObservers,
NoProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
(),
(),
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), (), (), (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: (),
processors: (),
deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, O, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
HasObservers,
HasProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
(),
O,
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<O, AsyncResponse>,
O: Observers<AsyncResponse>,
P: Processors<O, AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, (), O, P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (), observers: self.observers.unwrap(), processors: self.processors.unwrap(), deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
NoObservers,
HasProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
(),
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<(), AsyncResponse>,
M: Mutators,
P: Processors<(), AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, M, (), P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: (),
processors: self.processors.unwrap(), deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, O, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
HasObservers,
NoProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
O,
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<O, AsyncResponse>,
M: Mutators,
O: Observers<AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, M, O, (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: self.observers.unwrap(), processors: (),
deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, M, O, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
HasObservers,
HasProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
M,
O,
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
M: Mutators,
O: Observers<AsyncResponse>,
P: Processors<O, AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), M, O, P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: self.observers.unwrap(), processors: self.processors.unwrap(), deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, M, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
NoObservers,
NoProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
M,
(),
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
M: Mutators,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), M, (), (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: (),
processors: (),
deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, O, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
HasObservers,
NoProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
(),
O,
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
O: Observers<AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), (), O, (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: self.observers.unwrap(), processors: (),
deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
NoObservers,
HasProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
(),
(),
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
P: Processors<(), AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), (), (), P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: (),
processors: self.processors.unwrap(), deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
NoObservers,
NoProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
(),
(),
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<(), AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, (), (), (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: (),
processors: (),
deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, M, O, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
HasObservers,
NoProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
M,
O,
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
M: Mutators,
O: Observers<AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), M, O, (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: self.observers.unwrap(), processors: (),
deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, M, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
NoObservers,
HasProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
M,
(),
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
M: Mutators,
P: Processors<(), AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), M, (), P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: (),
processors: self.processors.unwrap(), deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, M, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
HasMutators,
NoObservers,
NoProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
M,
(),
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<(), AsyncResponse>,
M: Mutators,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, M, (), (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: self.mutators.unwrap(), observers: (),
processors: (),
deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, O, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
HasObservers,
HasProcessors,
NoDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
(),
(),
O,
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
O: Observers<AsyncResponse>,
P: Processors<O, AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, (), (), O, P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: self.observers.unwrap(), processors: self.processors.unwrap(), deciders: (),
pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, O, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
HasObservers,
NoProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
(),
O,
(),
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<O, AsyncResponse>,
O: Observers<AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, (), O, (), S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: self.observers.unwrap(), processors: (),
deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
impl<PreSndLgcS, PostSndLgcS, PreLpHkS, PostLpHkS, A, D, P, S>
AsyncFuzzerBuilder<
HasClient,
HasRequest,
HasScheduler,
NoMutators,
NoObservers,
HasProcessors,
HasDeciders,
PreSndLgcS,
PostSndLgcS,
PreLpHkS,
PostLpHkS,
A,
D,
(),
(),
P,
S,
>
where
PreSndLgcS: FuzzerBuildState,
PostSndLgcS: FuzzerBuildState,
PreLpHkS: FuzzerBuildState,
PostLpHkS: FuzzerBuildState,
A: client::AsyncRequests,
D: Deciders<(), AsyncResponse>,
P: Processors<(), AsyncResponse>,
S: Scheduler,
{
pub fn build(self) -> AsyncFuzzer<A, D, (), (), P, S> {
AsyncFuzzer {
threads: self.threads, request_id: self.request_id, client: self.client.unwrap(), request: self.request.unwrap(), scheduler: self.scheduler.unwrap(), mutators: (),
observers: (),
processors: self.processors.unwrap(), deciders: self.deciders.unwrap(), pre_send_logic: self.pre_send_logic.unwrap_or_default(),
post_send_logic: self.post_send_logic.unwrap_or_default(),
pre_loop_hook: self.pre_loop_hook,
post_loop_hook: self.post_loop_hook,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::actions::Action;
use crate::client::{AsyncClient, HttpClient};
use crate::corpora::Wordlist;
use crate::deciders::StatusCodeDecider;
use crate::mutators::ReplaceKeyword;
use crate::observers::ResponseObserver;
use crate::processors::RequestProcessor;
use crate::schedulers::OrderedScheduler;
use crate::{build_deciders, build_mutators, build_observers, build_processors};
#[test]
fn test_async_fuzzer_builder_tttt() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_ffff() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.build();
}
#[test]
fn test_async_fuzzer_builder_fttt() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_tftt() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_ttft() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_tttf() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.build();
}
#[test]
fn test_async_fuzzer_builder_tfff() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.build();
}
#[test]
fn test_async_fuzzer_builder_ftff() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.build();
}
#[test]
fn test_async_fuzzer_builder_fftf() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.build();
}
#[test]
fn test_async_fuzzer_builder_ffft() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_ttff() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.build();
}
#[test]
fn test_async_fuzzer_builder_tftf() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.build();
}
#[test]
fn test_async_fuzzer_builder_tfft() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let mutator = ReplaceKeyword::new(&"RANGE1", "range1");
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.mutators(build_mutators!(mutator))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_fttf() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.build();
}
#[test]
fn test_async_fuzzer_builder_ftft() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.observers(build_observers!(ResponseObserver::<AsyncResponse>::new()))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
#[test]
fn test_async_fuzzer_builder_fftt() {
let req_client = reqwest::Client::builder().build().unwrap();
let client = AsyncClient::with_client(req_client);
let request = Request::from_url("http://localhost:8000/", None).unwrap();
let corpus = Wordlist::with_words(["hi"]).name("corpus").build();
let scheduler = OrderedScheduler::new(SharedState::with_corpus(corpus)).unwrap();
let _tested = AsyncFuzzer::new(10)
.client(client)
.request(request)
.scheduler(scheduler)
.processors(build_processors!(RequestProcessor::new(|_, _, _| {})))
.deciders(build_deciders!(StatusCodeDecider::new(200, |_, _, _| {
Action::Discard
})))
.build();
}
}