Deliver upgrade link to stale clients
This commit is contained in:
parent
1388103919
commit
f07f02d866
|
@ -186,6 +186,7 @@ public class AccountController {
|
|||
public Response createAccount(@PathParam("transport") String transport,
|
||||
@PathParam("number") String number,
|
||||
@HeaderParam("X-Forwarded-For") String forwardedFor,
|
||||
@HeaderParam("User-Agent") List<String> userAgent,
|
||||
@HeaderParam("Accept-Language") Optional<String> locale,
|
||||
@QueryParam("client") Optional<String> client,
|
||||
@QueryParam("captcha") Optional<String> captcha,
|
||||
|
@ -226,6 +227,11 @@ public class AccountController {
|
|||
throw new WebApplicationException(Response.status(422).build());
|
||||
}
|
||||
|
||||
if (userAgent != null && userAgent.stream().anyMatch(header -> header.toLowerCase().contains("okhttp"))) {
|
||||
smsSender.deliverUpdatetoSignalSms(number);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
VerificationCode verificationCode = generateVerificationCode(number);
|
||||
StoredVerificationCode storedVerificationCode = new StoredVerificationCode(verificationCode.getVerificationCode(),
|
||||
System.currentTimeMillis(),
|
||||
|
|
|
@ -36,6 +36,10 @@ public class SmsSender {
|
|||
this.twilioSender = twilioSender;
|
||||
}
|
||||
|
||||
public void deliverUpdatetoSignalSms(String destination) {
|
||||
twilioSender.deliverArbitrarySms(destination, "To continue installing, update to Signal: https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms");
|
||||
}
|
||||
|
||||
public void deliverSmsVerification(String destination, Optional<String> clientType, String verificationCode) {
|
||||
// Fix up mexico numbers to 'mobile' format just for SMS delivery.
|
||||
if (destination.startsWith("+52") && !destination.startsWith("+521")) {
|
||||
|
|
|
@ -55,6 +55,7 @@ public class TwilioSmsSender {
|
|||
private static final Logger logger = LoggerFactory.getLogger(TwilioSmsSender.class);
|
||||
|
||||
private final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME);
|
||||
private final Meter arbitraryMeter = metricRegistry.meter(name(getClass(), "arbitrary", "delivered"));
|
||||
private final Meter smsMeter = metricRegistry.meter(name(getClass(), "sms", "delivered"));
|
||||
private final Meter voxMeter = metricRegistry.meter(name(getClass(), "vox", "delivered"));
|
||||
private final Meter priceMeter = metricRegistry.meter(name(getClass(), "price"));
|
||||
|
@ -97,6 +98,32 @@ public class TwilioSmsSender {
|
|||
this("https://api.twilio.com", twilioConfiguration);
|
||||
}
|
||||
|
||||
public CompletableFuture<Boolean> deliverArbitrarySms(String destination, String message) {
|
||||
Map<String, String> requestParameters = new HashMap<>();
|
||||
requestParameters.put("To", destination);
|
||||
|
||||
if (Util.isEmpty(messagingServicesId)) {
|
||||
requestParameters.put("From", getRandom(random, numbers));
|
||||
} else {
|
||||
requestParameters.put("MessagingServiceSid", messagingServicesId);
|
||||
}
|
||||
|
||||
requestParameters.put("Body", message);
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(smsUri)
|
||||
.POST(FormDataBodyPublisher.of(requestParameters))
|
||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||
.header("Authorization", "Basic " + Base64.encodeBytes((accountId + ":" + accountToken).getBytes()))
|
||||
.build();
|
||||
|
||||
arbitraryMeter.mark();
|
||||
|
||||
return httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
||||
.thenApply(this::parseResponse)
|
||||
.handle(this::processResponse);
|
||||
}
|
||||
|
||||
public CompletableFuture<Boolean> deliverSmsVerification(String destination, Optional<String> clientType, String verificationCode) {
|
||||
Map<String, String> requestParameters = new HashMap<>();
|
||||
requestParameters.put("To", destination);
|
||||
|
|
Loading…
Reference in New Issue