mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 21:08:07 +01:00
Don't send contacts to CDS if they've opted out of discoverability. (SERVER-130)
This commit is contained in:
committed by
Jon Chambers
parent
58e3122dab
commit
ce026e7ad0
@@ -345,7 +345,7 @@ public class AccountController {
|
||||
accounts.update(account);
|
||||
|
||||
if (!wasAccountEnabled && account.isEnabled()) {
|
||||
directoryQueue.addRegisteredUser(account.getUuid(), account.getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,10 +359,7 @@ public class AccountController {
|
||||
device.setFetchesMessages(false);
|
||||
|
||||
accounts.update(account);
|
||||
|
||||
if (!account.isEnabled()) {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
}
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
|
||||
@Timed
|
||||
@@ -381,7 +378,7 @@ public class AccountController {
|
||||
accounts.update(account);
|
||||
|
||||
if (!wasAccountEnabled && account.isEnabled()) {
|
||||
directoryQueue.addRegisteredUser(account.getUuid(), account.getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,10 +392,7 @@ public class AccountController {
|
||||
device.setFetchesMessages(false);
|
||||
|
||||
accounts.update(account);
|
||||
|
||||
if (!account.isEnabled()) {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
}
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
|
||||
@Timed
|
||||
@@ -485,7 +479,9 @@ public class AccountController {
|
||||
account.setDiscoverableByPhoneNumber(attributes.isDiscoverableByPhoneNumber());
|
||||
|
||||
accounts.update(account);
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/whoami")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@@ -636,12 +632,7 @@ public class AccountController {
|
||||
newUserMeter.mark();
|
||||
}
|
||||
|
||||
if (account.isEnabled()) {
|
||||
directoryQueue.addRegisteredUser(account.getUuid(), number);
|
||||
} else {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), number);
|
||||
}
|
||||
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
messagesManager.clear(number, maybeExistingAccount.map(Account::getUuid).orElse(null));
|
||||
pendingAccounts.remove(number);
|
||||
|
||||
|
||||
@@ -112,11 +112,7 @@ public class DeviceController {
|
||||
|
||||
account.removeDevice(deviceId);
|
||||
accounts.update(account);
|
||||
|
||||
if (!account.isEnabled()) {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
}
|
||||
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
messages.clear(account.getNumber(), account.getUuid(), deviceId);
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public class KeysController {
|
||||
accounts.update(account);
|
||||
|
||||
if (!wasAccountEnabled && account.isEnabled()) {
|
||||
directoryQueue.addRegisteredUser(account.getUuid(), account.getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ public class KeysController {
|
||||
accounts.update(account);
|
||||
|
||||
if (!wasAccountEnabled && account.isEnabled()) {
|
||||
directoryQueue.addRegisteredUser(account.getUuid(), account.getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,9 +28,11 @@ import com.amazonaws.services.sqs.model.SendMessageRequest;
|
||||
import com.codahale.metrics.Meter;
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.codahale.metrics.SharedMetricRegistries;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.whispersystems.textsecuregcm.configuration.SqsConfiguration;
|
||||
import org.whispersystems.textsecuregcm.storage.Account;
|
||||
import org.whispersystems.textsecuregcm.util.Constants;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -58,12 +60,14 @@ public class DirectoryQueue {
|
||||
this.sqs = AmazonSQSClientBuilder.standard().withRegion(sqsConfig.getRegion()).withCredentials(credentialsProvider).build();
|
||||
}
|
||||
|
||||
public void addRegisteredUser(UUID uuid, String number) {
|
||||
sendMessage("add", uuid, number);
|
||||
@VisibleForTesting
|
||||
DirectoryQueue(final String queueUrl, final AmazonSQS sqs) {
|
||||
this.queueUrl = queueUrl;
|
||||
this.sqs = sqs;
|
||||
}
|
||||
|
||||
public void deleteRegisteredUser(UUID uuid, String number) {
|
||||
sendMessage("delete", uuid, number);
|
||||
public void refreshRegisteredUser(final Account account) {
|
||||
sendMessage(account.isEnabled() && account.isDiscoverableByPhoneNumber() ? "add" : "delete", account.getUuid(), account.getNumber());
|
||||
}
|
||||
|
||||
private void sendMessage(String action, UUID uuid, String number) {
|
||||
|
||||
@@ -71,8 +71,7 @@ public class AccountCleaner extends AccountDatabaseCrawlerListener {
|
||||
|
||||
accountUpdateCount++;
|
||||
accountsManager.update(account);
|
||||
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.codahale.metrics.MetricRegistry.name;
|
||||
|
||||
@@ -83,7 +82,7 @@ public class DirectoryReconciler extends AccountDatabaseCrawlerListener {
|
||||
|
||||
try {
|
||||
for (Account account : accounts) {
|
||||
if (account.isEnabled()) {
|
||||
if (account.isEnabled() && account.isDiscoverableByPhoneNumber()) {
|
||||
byte[] token = Util.getContactToken(account.getNumber());
|
||||
ClientContact clientContact = new ClientContact(token, null, true, true);
|
||||
directoryManager.add(batchOperation, clientContact);
|
||||
@@ -100,7 +99,7 @@ public class DirectoryReconciler extends AccountDatabaseCrawlerListener {
|
||||
private DirectoryReconciliationRequest createChunkRequest(Optional<UUID> fromUuid, List<Account> accounts) {
|
||||
List<DirectoryReconciliationRequest.User> users = new ArrayList<>(accounts.size());
|
||||
for (Account account : accounts) {
|
||||
if (account.isEnabled()) {
|
||||
if (account.isEnabled() && account.isDiscoverableByPhoneNumber()) {
|
||||
users.add(new DirectoryReconciliationRequest.User(account.getUuid(), account.getNumber()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,10 +60,7 @@ public class PushFeedbackProcessor extends AccountDatabaseCrawlerListener {
|
||||
|
||||
if (update) {
|
||||
accountsManager.update(account);
|
||||
|
||||
if (!account.isEnabled()) {
|
||||
directoryQueue.deleteRegisteredUser(account.getUuid(), account.getNumber());
|
||||
}
|
||||
directoryQueue.refreshRegisteredUser(account);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ public class DeleteUserCommand extends EnvironmentCommand<WhisperServerConfigura
|
||||
device.get().setAuthenticationCredentials(new AuthenticationCredentials(Base64.encodeBytes(random)));
|
||||
|
||||
accountsManager.update(account.get());
|
||||
directoryQueue.deleteRegisteredUser(account.get().getUuid(), account.get().getNumber());
|
||||
directoryQueue.refreshRegisteredUser(account.get());
|
||||
|
||||
logger.warn("Removed " + account.get().getNumber());
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user