Limit voice calls daily as well

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2016-10-24 10:11:56 -07:00
parent 917eaa50fb
commit e07c521288
3 changed files with 17 additions and 0 deletions

View File

@ -26,6 +26,9 @@ public class RateLimitsConfiguration {
@JsonProperty
private RateLimitConfiguration voiceDestination = new RateLimitConfiguration(2, 1.0 / 2.0);
@JsonProperty
private RateLimitConfiguration voiceDestinationDaily = new RateLimitConfiguration(10, 10.0 / (24.0 * 60.0));
@JsonProperty
private RateLimitConfiguration verifyNumber = new RateLimitConfiguration(2, 2);
@ -79,6 +82,10 @@ public class RateLimitsConfiguration {
return voiceDestination;
}
public RateLimitConfiguration getVoiceDestinationDaily() {
return voiceDestinationDaily;
}
public RateLimitConfiguration getVerifyNumber() {
return verifyNumber;
}

View File

@ -128,6 +128,7 @@ public class AccountController {
break;
case "voice":
rateLimiters.getVoiceDestinationLimiter().validate(number);
rateLimiters.getVoiceDestinationDailyLimiter().validate(number);
break;
default:
throw new WebApplicationException(Response.status(422).build());

View File

@ -25,6 +25,7 @@ public class RateLimiters {
private final RateLimiter smsDestinationLimiter;
private final RateLimiter voiceDestinationLimiter;
private final RateLimiter voiceDestinationDailyLimiter;
private final RateLimiter verifyLimiter;
private final RateLimiter attachmentLimiter;
@ -44,6 +45,10 @@ public class RateLimiters {
config.getVoiceDestination().getBucketSize(),
config.getVoiceDestination().getLeakRatePerMinute());
this.voiceDestinationDailyLimiter = new RateLimiter(cacheClient, "voxDestinationDaily",
config.getVoiceDestinationDaily().getBucketSize(),
config.getVoiceDestinationDaily().getLeakRatePerMinute());
this.verifyLimiter = new RateLimiter(cacheClient, "verify",
config.getVerifyNumber().getBucketSize(),
config.getVerifyNumber().getLeakRatePerMinute());
@ -106,6 +111,10 @@ public class RateLimiters {
return voiceDestinationLimiter;
}
public RateLimiter getVoiceDestinationDailyLimiter() {
return voiceDestinationDailyLimiter;
}
public RateLimiter getVerifyLimiter() {
return verifyLimiter;
}