mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-21 19:48:29 +00:00
Use auth header for websocket connection instead of param.
This commit is contained in:
@@ -11,6 +11,7 @@ import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState;
|
|||||||
import org.whispersystems.signalservice.internal.configuration.SignalProxy;
|
import org.whispersystems.signalservice.internal.configuration.SignalProxy;
|
||||||
import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
|
import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
|
||||||
import org.whispersystems.signalservice.internal.configuration.SignalServiceUrl;
|
import org.whispersystems.signalservice.internal.configuration.SignalServiceUrl;
|
||||||
|
import org.whispersystems.signalservice.internal.push.AuthCredentials;
|
||||||
import org.whispersystems.signalservice.internal.util.BlacklistingTrustManager;
|
import org.whispersystems.signalservice.internal.util.BlacklistingTrustManager;
|
||||||
import org.whispersystems.signalservice.internal.util.Util;
|
import org.whispersystems.signalservice.internal.util.Util;
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers;
|
|||||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||||
import io.reactivex.rxjava3.subjects.SingleSubject;
|
import io.reactivex.rxjava3.subjects.SingleSubject;
|
||||||
import okhttp3.ConnectionSpec;
|
import okhttp3.ConnectionSpec;
|
||||||
|
import okhttp3.Credentials;
|
||||||
import okhttp3.Dns;
|
import okhttp3.Dns;
|
||||||
import okhttp3.Interceptor;
|
import okhttp3.Interceptor;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
@@ -115,12 +117,8 @@ public class OkHttpWebSocketConnection extends WebSocketListener implements WebS
|
|||||||
SignalServiceUrl serviceUrl = serviceUrls[random.nextInt(serviceUrls.length)];
|
SignalServiceUrl serviceUrl = serviceUrls[random.nextInt(serviceUrls.length)];
|
||||||
String uri = serviceUrl.getUrl().replace("https://", "wss://").replace("http://", "ws://");
|
String uri = serviceUrl.getUrl().replace("https://", "wss://").replace("http://", "ws://");
|
||||||
|
|
||||||
if (credentialsProvider.isPresent()) {
|
|
||||||
return new Pair<>(serviceUrl, uri + "/v1/websocket/" + extraPathUri + "?login=%s&password=%s");
|
|
||||||
} else {
|
|
||||||
return new Pair<>(serviceUrl, uri + "/v1/websocket/" + extraPathUri);
|
return new Pair<>(serviceUrl, uri + "/v1/websocket/" + extraPathUri);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Observable<WebSocketConnectionState> connect() {
|
public synchronized Observable<WebSocketConnectionState> connect() {
|
||||||
@@ -130,13 +128,6 @@ public class OkHttpWebSocketConnection extends WebSocketListener implements WebS
|
|||||||
Pair<SignalServiceUrl, String> connectionInfo = getConnectionInfo();
|
Pair<SignalServiceUrl, String> connectionInfo = getConnectionInfo();
|
||||||
SignalServiceUrl serviceUrl = connectionInfo.first();
|
SignalServiceUrl serviceUrl = connectionInfo.first();
|
||||||
String wsUri = connectionInfo.second();
|
String wsUri = connectionInfo.second();
|
||||||
String filledUri;
|
|
||||||
|
|
||||||
if (credentialsProvider.isPresent()) {
|
|
||||||
filledUri = String.format(wsUri, credentialsProvider.get().getUsername(), credentialsProvider.get().getPassword());
|
|
||||||
} else {
|
|
||||||
filledUri = wsUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pair<SSLSocketFactory, X509TrustManager> socketFactory = createTlsSocketFactory(trustStore);
|
Pair<SSLSocketFactory, X509TrustManager> socketFactory = createTlsSocketFactory(trustStore);
|
||||||
|
|
||||||
@@ -157,12 +148,20 @@ public class OkHttpWebSocketConnection extends WebSocketListener implements WebS
|
|||||||
|
|
||||||
OkHttpClient okHttpClient = clientBuilder.build();
|
OkHttpClient okHttpClient = clientBuilder.build();
|
||||||
|
|
||||||
Request.Builder requestBuilder = new Request.Builder().url(filledUri);
|
Request.Builder requestBuilder = new Request.Builder().url(wsUri);
|
||||||
|
|
||||||
if (signalAgent != null) {
|
if (signalAgent != null) {
|
||||||
requestBuilder.addHeader("X-Signal-Agent", signalAgent);
|
requestBuilder.addHeader("X-Signal-Agent", signalAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (credentialsProvider.isPresent()) {
|
||||||
|
if (credentialsProvider.get().getUsername() != null && credentialsProvider.get().getPassword() != null) {
|
||||||
|
requestBuilder.addHeader("Authorization", Credentials.basic(credentialsProvider.get().getUsername(), credentialsProvider.get().getPassword()));
|
||||||
|
} else {
|
||||||
|
Log.w(TAG, "CredentialsProvider was present, but username or password was missing!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
requestBuilder.addHeader("X-Signal-Receive-Stories", allowStories ? "true" : "false");
|
requestBuilder.addHeader("X-Signal-Receive-Stories", allowStories ? "true" : "false");
|
||||||
|
|
||||||
if (serviceUrl.getHostHeader().isPresent()) {
|
if (serviceUrl.getHostHeader().isPresent()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user