24 bool recordAttempt(
const QString &key,
int maxAttempts,
int windowSeconds);
32 bool recordAttemptAt(
const QString &key,
int maxAttempts,
int windowSeconds, qint64 now);
40 bool isBlocked(
const QString &key,
int maxAttempts,
int windowSeconds)
const;
48 bool isBlockedAt(
const QString &key,
int maxAttempts,
int windowSeconds, qint64 now)
const;
63 int retryAfterSeconds(
const QString &key,
int maxAttempts,
int windowSeconds)
const;
70 int retryAfterSecondsAt(
const QString &key,
int maxAttempts,
int windowSeconds, qint64 now)
const;
Definition remote_connection_controller.h:20
Thread-safe per-key attempt limiter used to throttle abusive requests.
Definition ratelimiter.h:11
qint64 lastPruneSecs
Definition ratelimiter.h:89
static constexpr int PruneIntervalSeconds
Definition ratelimiter.h:90
void pruneLocked(qint64 now)
Drops keys whose last attempts have fully aged out of their window.
Definition ratelimiter.cpp:106
bool recordAttemptAt(const QString &key, int maxAttempts, int windowSeconds, qint64 now)
Record an attempt as seen at epoch second now.
Definition ratelimiter.cpp:10
bool isBlockedAt(const QString &key, int maxAttempts, int windowSeconds, qint64 now) const
Whether key is blocked as measured at epoch second now.
Definition ratelimiter.cpp:41
QMutex mutex
Definition ratelimiter.h:87
QMap< QString, AttemptHistory > attempts
Definition ratelimiter.h:88
bool isBlocked(const QString &key, int maxAttempts, int windowSeconds) const
True if key already has at least maxAttempts attempts within windowSeconds.
Definition ratelimiter.cpp:36
void clearAttempts(const QString &key)
Drop all recorded attempts for the key, e.g. after a successful login.
Definition ratelimiter.cpp:63
int retryAfterSecondsAt(const QString &key, int maxAttempts, int windowSeconds, qint64 now) const
Get the retry-after window in seconds for key as measured at now.
Definition ratelimiter.cpp:74
int retryAfterSeconds(const QString &key, int maxAttempts, int windowSeconds) const
Get the retry-after window in seconds for key.
Definition ratelimiter.cpp:69
bool recordAttempt(const QString &key, int maxAttempts, int windowSeconds)
Record an attempt for key and report whether the key is now blocked.
Definition ratelimiter.cpp:5
Definition ratelimiter.h:74
QList< qint64 > timestamps
Definition ratelimiter.h:75
int windowSeconds
Definition ratelimiter.h:76