pub struct ManagerConfig {Show 25 fields
pub shared_threshold: usize,
pub rotation_window: Duration,
pub rotation_threshold: usize,
pub scan_interval: Duration,
pub background_scanning: bool,
pub track_combined: bool,
pub shared_confidence: f64,
pub attack_sequence_min_ips: usize,
pub attack_sequence_window: Duration,
pub auth_token_min_ips: usize,
pub auth_token_window: Duration,
pub behavioral_min_ips: usize,
pub behavioral_min_sequence: usize,
pub behavioral_window: Duration,
pub timing_min_ips: usize,
pub timing_bucket_ms: u64,
pub timing_min_bucket_hits: usize,
pub timing_window: Duration,
pub network_min_ips: usize,
pub network_check_subnet: bool,
pub graph_min_component_size: usize,
pub graph_max_depth: usize,
pub graph_edge_ttl: Duration,
pub auto_mitigation_enabled: bool,
pub auto_mitigation_threshold: f64,
}Expand description
Configuration for the campaign manager.
Controls detector thresholds, timing windows, and background scanning behavior.
Fields§
Minimum IPs sharing fingerprint to form campaign (shared FP detector).
Default: 3
rotation_window: DurationTime window for rotation detection.
Default: 60 seconds
rotation_threshold: usizeMinimum fingerprints for rotation detection.
Default: 3
scan_interval: DurationHow often to run full detector scans.
Default: 5 seconds
background_scanning: boolEnable background scanning.
When enabled, a background worker periodically runs detection cycles. Default: true
track_combined: boolTrack combined fingerprints (JA4+JA4H) in rotation detector.
Default: true
Base confidence for shared fingerprint detections.
Default: 0.85
attack_sequence_min_ips: usizeMinimum IPs sharing same payload to trigger detection.
Default: 2
attack_sequence_window: DurationTime window for attack sequence correlation.
Default: 300 seconds (5 minutes)
auth_token_min_ips: usizeMinimum IPs sharing token structure to trigger detection.
Default: 2
auth_token_window: DurationTime window for auth token correlation.
Default: 600 seconds (10 minutes)
behavioral_min_ips: usizeMinimum IPs with same behavior pattern.
Default: 2
behavioral_min_sequence: usizeMinimum sequence length to consider for behavioral analysis.
Default: 3
behavioral_window: DurationTime window for behavioral pattern observation.
Default: 300 seconds (5 minutes)
timing_min_ips: usizeMinimum IPs with synchronized timing.
Default: 3
timing_bucket_ms: u64Time bucket size for synchronization detection in milliseconds.
Default: 100ms
timing_min_bucket_hits: usizeMinimum requests in same bucket to consider correlated.
Default: 5
timing_window: DurationTime window for timing analysis.
Default: 60 seconds
network_min_ips: usizeMinimum IPs in same network segment.
Default: 3
network_check_subnet: boolEnable subnet-based correlation (/24 for IPv4).
Default: true
graph_min_component_size: usizeMinimum connected component size.
Default: 3
graph_max_depth: usizeMaximum traversal depth.
Default: 3
graph_edge_ttl: DurationEdge TTL.
Default: 3600 seconds
auto_mitigation_enabled: boolEnable automated mitigation (blocking) of high-confidence campaigns.
Default: false
auto_mitigation_threshold: f64Confidence threshold for automated mitigation (0.0 - 1.0).
Default: 0.90
Implementations§
Source§impl ManagerConfig
impl ManagerConfig
Builder method to set shared threshold.
Sourcepub fn with_rotation_window(self, window: Duration) -> Self
pub fn with_rotation_window(self, window: Duration) -> Self
Builder method to set rotation window.
Sourcepub fn with_rotation_threshold(self, threshold: usize) -> Self
pub fn with_rotation_threshold(self, threshold: usize) -> Self
Builder method to set rotation threshold.
Sourcepub fn with_scan_interval(self, interval: Duration) -> Self
pub fn with_scan_interval(self, interval: Duration) -> Self
Builder method to set scan interval.
Sourcepub fn with_background_scanning(self, enabled: bool) -> Self
pub fn with_background_scanning(self, enabled: bool) -> Self
Builder method to enable/disable background scanning.
Sourcepub fn with_track_combined(self, enabled: bool) -> Self
pub fn with_track_combined(self, enabled: bool) -> Self
Builder method to enable/disable combined fingerprint tracking.
Builder method to set shared confidence.
Sourcepub fn with_auto_mitigation(self, enabled: bool) -> Self
pub fn with_auto_mitigation(self, enabled: bool) -> Self
Builder method to enable/disable automated mitigation.
Sourcepub fn with_auto_mitigation_threshold(self, threshold: f64) -> Self
pub fn with_auto_mitigation_threshold(self, threshold: f64) -> Self
Builder method to set automated mitigation threshold.
Trait Implementations§
Source§impl Clone for ManagerConfig
impl Clone for ManagerConfig
Source§fn clone(&self) -> ManagerConfig
fn clone(&self) -> ManagerConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ManagerConfig
impl Debug for ManagerConfig
Auto Trait Implementations§
impl Freeze for ManagerConfig
impl RefUnwindSafe for ManagerConfig
impl Send for ManagerConfig
impl Sync for ManagerConfig
impl Unpin for ManagerConfig
impl UnsafeUnpin for ManagerConfig
impl UnwindSafe for ManagerConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more