pub struct GlobalVelocityTracker { /* private fields */ }Expand description
Global velocity tracking for overall auth failure rate.
SECURITY: Detects sudden spikes in global auth failure rate that may indicate a coordinated attack across many IPs/usernames.
Implementations§
Source§impl GlobalVelocityTracker
impl GlobalVelocityTracker
Sourcepub fn new(max_window_size: usize, window_ms: u64) -> Self
pub fn new(max_window_size: usize, window_ms: u64) -> Self
Create a new global velocity tracker.
Sourcepub fn record_failure(&mut self, now: u64)
pub fn record_failure(&mut self, now: u64)
Record a failure.
Sourcepub fn failure_rate(&self, now: u64) -> f64
pub fn failure_rate(&self, now: u64) -> f64
Get current failure rate (failures per second in window).
Sourcepub fn failure_count(&self, now: u64) -> usize
pub fn failure_count(&self, now: u64) -> usize
Get failure count in window.
Trait Implementations§
Source§impl Clone for GlobalVelocityTracker
impl Clone for GlobalVelocityTracker
Source§fn clone(&self) -> GlobalVelocityTracker
fn clone(&self) -> GlobalVelocityTracker
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for GlobalVelocityTracker
impl Debug for GlobalVelocityTracker
Auto Trait Implementations§
impl Freeze for GlobalVelocityTracker
impl RefUnwindSafe for GlobalVelocityTracker
impl Send for GlobalVelocityTracker
impl Sync for GlobalVelocityTracker
impl Unpin for GlobalVelocityTracker
impl UnsafeUnpin for GlobalVelocityTracker
impl UnwindSafe for GlobalVelocityTracker
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&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>
Converts
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>
Converts
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