public final class RateLimiter
extends java.lang.Object
[Schluessel = RateLimit
als CSV]
Aenderungen an der Keystore-Datei loesen zur Laufzeit im Refresh-Intervall
einen Abgleich gegen die Laufzeit-Werte aus.admin$=1 66.6.6.6$=0 $myfunc=1,10 premiumUser$myfunc=10,1 basicAuthUser@1355030580=3,10
admin
hat vollen Zugriff.66.6.6.6
ist komplett geblockt.
myfunc
kann hier von premiumUser
10 mal in der
Sekunde ausgefuehrt werden, von anderen Benutzern hingegen nur 1 Mal in 10 Sekunden.
Ein Schluessel kann sowohl eine IP, ein API-KEY, als auch ein BasicAuth
sein. Durch eine geschickte Vergabe, kann also auch eine IP (hier 66.6.6.6)
gesperrt werden.user@password
,
wobei letzteres als String.hashCode()
im KeyStore vorliegen muss.validate(String, String, String)
,
RateLimit
,
RateLimitFilter
Constructor and Description |
---|
RateLimiter(Log log) |
RateLimiter(Log log,
java.io.File backupFile,
long refreshInterval,
int backupTrigger,
long maxIdle) |
RateLimiter(Log log,
java.io.File backupFile,
long refreshInterval,
int backupTrigger,
long maxIdle,
java.io.File keystoreFile) |
RateLimiter(Log log,
java.io.File backupFile,
long refreshInterval,
int backupTrigger,
long maxIdle,
Props keystore) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
RateLimiter |
start() |
java.lang.String |
validate(java.lang.String key)
Validiert gegen Anmelde-Schluessel.
|
RateLimit.Status |
validate(java.lang.String anonKey,
java.lang.String userKey,
java.lang.String endpoint)
Validiert gegen Anmelde-Schluessel.
|
static java.lang.String |
validationParamsToString(java.lang.String anonKey,
java.lang.String userKey,
java.lang.String endpoint) |
public RateLimiter(Log log)
public RateLimiter(Log log, java.io.File backupFile, long refreshInterval, int backupTrigger, long maxIdle)
public RateLimiter(Log log, java.io.File backupFile, long refreshInterval, int backupTrigger, long maxIdle, Props keystore)
public RateLimiter(Log log, java.io.File backupFile, long refreshInterval, int backupTrigger, long maxIdle, java.io.File keystoreFile)
public final RateLimiter start()
public final void close()
public static final java.lang.String validationParamsToString(java.lang.String anonKey, java.lang.String userKey, java.lang.String endpoint)
public final java.lang.String validate(java.lang.String key)
validate(String, String, String)
.key
- String der Form 'anonKey;userKey;endpoint'RateLimit.Status
als Stringpublic final RateLimit.Status validate(java.lang.String anonKey, java.lang.String userKey, java.lang.String endpoint)
anonKey
- String Fallback: anonymer Schluessel, z.B IP. NOT NULLuserKey
- String optionaler Anmelde-Schluessel, z.B. API-Key, NULLABLEendpoint
- String optional zusaetzlicher Endpunkt (Funktion)RateLimit.validate()