mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Support proxy in connections managed by libsignal.
This commit is contained in:
committed by
Greyson Parrelli
parent
d20f588802
commit
f9a8f447d2
@@ -8,7 +8,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import org.signal.core.util.concurrent.DeadlockDetector;
|
||||
import org.signal.libsignal.net.Network;
|
||||
import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations;
|
||||
import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations;
|
||||
import org.thoughtcrime.securesms.components.TypingStatusRepository;
|
||||
@@ -59,6 +58,7 @@ import org.whispersystems.signalservice.api.util.Tls12SocketFactory;
|
||||
import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
|
||||
import org.whispersystems.signalservice.internal.util.BlacklistingTrustManager;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
import org.whispersystems.signalservice.internal.websocket.LibSignalNetwork;
|
||||
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
@@ -131,7 +131,7 @@ public class ApplicationDependencies {
|
||||
private static volatile DeadlockDetector deadlockDetector;
|
||||
private static volatile ClientZkReceiptOperations clientZkReceiptOperations;
|
||||
private static volatile ScheduledMessageManager scheduledMessagesManager;
|
||||
private static volatile Network libsignalNetwork;
|
||||
private static volatile LibSignalNetwork libsignalNetwork;
|
||||
|
||||
@MainThread
|
||||
public static void init(@NonNull Application application, @NonNull Provider provider) {
|
||||
@@ -260,6 +260,9 @@ public class ApplicationDependencies {
|
||||
public static void resetAllNetworkConnections() {
|
||||
synchronized (LOCK) {
|
||||
closeConnections();
|
||||
if (libsignalNetwork != null) {
|
||||
libsignalNetwork.resetSettings(getSignalServiceNetworkAccess().getConfiguration());
|
||||
}
|
||||
if (signalWebSocket != null) {
|
||||
signalWebSocket.forceNewWebSockets();
|
||||
}
|
||||
@@ -688,11 +691,11 @@ public class ApplicationDependencies {
|
||||
return deadlockDetector;
|
||||
}
|
||||
|
||||
public static @NonNull Network getLibsignalNetwork() {
|
||||
public static @NonNull LibSignalNetwork getLibsignalNetwork() {
|
||||
if (libsignalNetwork == null) {
|
||||
synchronized (LIBSIGNAL_NETWORK_LOCK) {
|
||||
if (libsignalNetwork == null) {
|
||||
libsignalNetwork = provider.provideLibsignalNetwork();
|
||||
libsignalNetwork = provider.provideLibsignalNetwork(getSignalServiceNetworkAccess().getConfiguration());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -726,7 +729,7 @@ public class ApplicationDependencies {
|
||||
@NonNull SignalCallManager provideSignalCallManager();
|
||||
@NonNull PendingRetryReceiptManager providePendingRetryReceiptManager();
|
||||
@NonNull PendingRetryReceiptCache providePendingRetryReceiptCache();
|
||||
@NonNull SignalWebSocket provideSignalWebSocket(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull Supplier<Network> libSignalNetworkSupplier);
|
||||
@NonNull SignalWebSocket provideSignalWebSocket(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull Supplier<LibSignalNetwork> libSignalNetworkSupplier);
|
||||
@NonNull SignalServiceDataStoreImpl provideProtocolStore();
|
||||
@NonNull GiphyMp4Cache provideGiphyMp4Cache();
|
||||
@NonNull SimpleExoPlayerPool provideExoPlayerPool();
|
||||
@@ -737,6 +740,6 @@ public class ApplicationDependencies {
|
||||
@NonNull DeadlockDetector provideDeadlockDetector();
|
||||
@NonNull ClientZkReceiptOperations provideClientZkReceiptOperations(@NonNull SignalServiceConfiguration signalServiceConfiguration);
|
||||
@NonNull ScheduledMessageManager provideScheduledMessageManager();
|
||||
@NonNull Network provideLibsignalNetwork();
|
||||
@NonNull LibSignalNetwork provideLibsignalNetwork(@NonNull SignalServiceConfiguration config);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,8 +233,8 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull Network provideLibsignalNetwork() {
|
||||
return new Network(BuildConfig.LIBSIGNAL_NET_ENV);
|
||||
public @NonNull LibSignalNetwork provideLibsignalNetwork(@NonNull SignalServiceConfiguration config) {
|
||||
return new LibSignalNetwork(new Network(BuildConfig.LIBSIGNAL_NET_ENV), config);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -290,7 +290,7 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull SignalWebSocket provideSignalWebSocket(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull Supplier<Network> libSignalNetworkSupplier) {
|
||||
public @NonNull SignalWebSocket provideSignalWebSocket(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull Supplier<LibSignalNetwork> libSignalNetworkSupplier) {
|
||||
SleepTimer sleepTimer = !SignalStore.account().isFcmEnabled() || SignalStore.internalValues().isWebsocketModeForced() ? new AlarmSleepTimer(context) : new UptimeSleepTimer() ;
|
||||
SignalWebSocketHealthMonitor healthMonitor = new SignalWebSocketHealthMonitor(context, sleepTimer);
|
||||
SignalWebSocket signalWebSocket = new SignalWebSocket(provideWebSocketFactory(signalServiceConfigurationSupplier, healthMonitor, libSignalNetworkSupplier));
|
||||
@@ -400,7 +400,7 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
|
||||
return provideClientZkOperations(signalServiceConfiguration).getReceiptOperations();
|
||||
}
|
||||
|
||||
@NonNull WebSocketFactory provideWebSocketFactory(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull SignalWebSocketHealthMonitor healthMonitor, @NonNull Supplier<Network> libSignalNetworkSupplier) {
|
||||
@NonNull WebSocketFactory provideWebSocketFactory(@NonNull Supplier<SignalServiceConfiguration> signalServiceConfigurationSupplier, @NonNull SignalWebSocketHealthMonitor healthMonitor, @NonNull Supplier<LibSignalNetwork> libSignalNetworkSupplier) {
|
||||
return new WebSocketFactory() {
|
||||
@Override
|
||||
public WebSocketConnection createWebSocket() {
|
||||
@@ -415,7 +415,7 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
|
||||
@Override
|
||||
public WebSocketConnection createUnidentifiedWebSocket() {
|
||||
if (FeatureFlags.libSignalWebSocketEnabled()) {
|
||||
var network = new LibSignalNetwork(libSignalNetworkSupplier.get());
|
||||
LibSignalNetwork network = libSignalNetworkSupplier.get();
|
||||
return new LibSignalChatConnection(
|
||||
"libsignal-unauth",
|
||||
network.createChatService(null),
|
||||
|
||||
Reference in New Issue
Block a user