Use ACIs instead of E164s for TURN URI overrides

This commit is contained in:
Jon Chambers
2023-08-01 15:38:44 -04:00
committed by Jon Chambers
parent b01945ff50
commit 42141e51a1
5 changed files with 22 additions and 17 deletions

View File

@@ -23,6 +23,7 @@ import java.time.Instant;
import java.util.Base64;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
public class TurnTokenGenerator {
@@ -39,9 +40,9 @@ public class TurnTokenGenerator {
this.turnSecret = turnSecret;
}
public TurnToken generate(final String e164) {
public TurnToken generate(final UUID aci) {
try {
final List<String> urls = urls(e164);
final List<String> urls = urls(aci);
final Mac mac = Mac.getInstance(ALGORITHM);
final long validUntilSeconds = Instant.now().plus(Duration.ofDays(1)).getEpochSecond();
final long user = Util.ensureNonNegativeInt(new SecureRandom().nextInt());
@@ -56,12 +57,12 @@ public class TurnTokenGenerator {
}
}
private List<String> urls(final String e164) {
private List<String> urls(final UUID aci) {
final DynamicTurnConfiguration turnConfig = dynamicConfigurationManager.getConfiguration().getTurnConfiguration();
// Check if number is enrolled to test out specific turn servers
final Optional<TurnUriConfiguration> enrolled = turnConfig.getUriConfigs().stream()
.filter(config -> config.getEnrolledNumbers().contains(e164))
.filter(config -> config.getEnrolledAcis().contains(aci))
.findFirst();
if (enrolled.isPresent()) {

View File

@@ -6,6 +6,7 @@ import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.UUID;
public class TurnUriConfiguration {
@JsonProperty
@@ -22,7 +23,8 @@ public class TurnUriConfiguration {
/**
* Enrolled numbers will always get this uri list
*/
private Set<String> enrolledNumbers = Collections.emptySet();
@JsonProperty
private Set<UUID> enrolledAcis = Collections.emptySet();
public List<String> getUris() {
return uris;
@@ -32,7 +34,7 @@ public class TurnUriConfiguration {
return weight;
}
public Set<String> getEnrolledNumbers() {
return Collections.unmodifiableSet(enrolledNumbers);
public Set<UUID> getEnrolledAcis() {
return Collections.unmodifiableSet(enrolledAcis);
}
}

View File

@@ -97,7 +97,7 @@ public class AccountController {
@Produces(MediaType.APPLICATION_JSON)
public TurnToken getTurnToken(@Auth AuthenticatedAccount auth) throws RateLimitExceededException {
rateLimiters.getTurnLimiter().validate(auth.getAccount().getUuid());
return turnTokenGenerator.generate(auth.getAccount().getNumber());
return turnTokenGenerator.generate(auth.getAccount().getUuid());
}
@Timed