diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.java b/app/src/main/java/com/hippo/ehviewer/EhApplication.java
index 072071984..404fb2c16 100644
--- a/app/src/main/java/com/hippo/ehviewer/EhApplication.java
+++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.java
@@ -77,14 +77,12 @@ import com.hippo.yorozuya.OSUtils;
import com.hippo.yorozuya.SimpleHandler;
import java.io.File;
-import java.io.IOException;
import java.security.KeyStore;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
@@ -165,27 +163,29 @@ public class EhApplication extends SceneApplication {
EhApplication application = ((EhApplication) context.getApplicationContext());
if (application.mOkHttpClient == null) {
OkHttpClient.Builder builder = new OkHttpClient.Builder()
- .connectTimeout(5, TimeUnit.SECONDS)
- .readTimeout(5, TimeUnit.SECONDS)
- .writeTimeout(5, TimeUnit.SECONDS)
- .callTimeout(10, TimeUnit.SECONDS)
.cookieJar(getEhCookieStore(application))
.cache(getOkHttpCache(application))
.dns(new EhDns(application))
.proxySelector(getEhProxySelector(application));
- try {
- TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
- TrustManagerFactory.getDefaultAlgorithm());
- trustManagerFactory.init((KeyStore) null);
- TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
- if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager trustManager)) {
- throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
+
+ if (Settings.getDF()) {
+ X509TrustManager trustManager;
+ try {
+ TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
+ TrustManagerFactory.getDefaultAlgorithm());
+ trustManagerFactory.init((KeyStore) null);
+ TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
+ if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager trustManager1)) {
+ throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
+ }
+ trustManager = trustManager1;
+ } catch (Exception e) {
+ e.printStackTrace();
+ trustManager = new EhX509TrustManager();
}
builder.sslSocketFactory(new EhSSLSocketFactory(), trustManager);
- } catch (Exception e) {
- e.printStackTrace();
- builder.sslSocketFactory(new EhSSLSocketFactory(), new EhX509TrustManager());
}
+
application.mOkHttpClient = builder.build();
}
return application.mOkHttpClient;
diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt
index ed917edc9..d2ec934e6 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt
+++ b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt
@@ -15,65 +15,58 @@
* You should have received a copy of the GNU General Public License along with EhViewer.
* If not, see .
*/
+package com.hippo.ehviewer.client
-package com.hippo.ehviewer.client;
+import android.util.Log
+import java.net.InetAddress
+import java.net.Socket
+import javax.net.ssl.SSLSocket
+import javax.net.ssl.SSLSocketFactory
-import android.util.Log;
-
-import com.hippo.ehviewer.Settings;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-
-public class EhSSLSocketFactory extends SSLSocketFactory {
- @Override
- public String[] getDefaultCipherSuites() {
- return ((SSLSocketFactory) getDefault()).getDefaultCipherSuites();
+class EhSSLSocketFactory : SSLSocketFactory() {
+ private val sslSocketFactory = getDefault() as SSLSocketFactory
+ override fun getDefaultCipherSuites(): Array {
+ return sslSocketFactory.defaultCipherSuites
}
- @Override
- public String[] getSupportedCipherSuites() {
- return ((SSLSocketFactory) getDefault()).getSupportedCipherSuites();
+ override fun getSupportedCipherSuites(): Array {
+ return sslSocketFactory.supportedCipherSuites
}
- @Override
- public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
- SSLSocketFactory defaultFactory = (SSLSocketFactory) getDefault();
- if (!Settings.getDF()) {
- return defaultFactory.createSocket(s, host, port, autoClose);
- }
- String address = s.getInetAddress().getHostAddress();
- SSLSocket socket = (SSLSocket) defaultFactory.createSocket(s, address, port, autoClose);
- SSLSession sslSession = socket.getSession();
- Log.d("EhSSLSocketFactory", "Host: " + host + " Address: " + address + " Protocol:" + sslSession.getProtocol() + " CipherSuite:" + sslSession.getCipherSuite());
- socket.setEnabledProtocols(socket.getSupportedProtocols());
- return socket;
+ override fun createSocket(s: Socket, host: String, port: Int, autoClose: Boolean): Socket {
+ val address = s.inetAddress.hostAddress
+ val socket = sslSocketFactory.createSocket(s, address, port, autoClose) as SSLSocket
+ val sslSession = socket.session
+ Log.d(
+ "EhSSLSocketFactory",
+ "Host: " + host + " Address: " + address + " Protocol:" + sslSession.protocol + " CipherSuite:" + sslSession.cipherSuite
+ )
+ return socket
}
- @Override
- public Socket createSocket(String host, int port) throws IOException {
- return getDefault().createSocket(host, port);
+ override fun createSocket(host: String, port: Int): Socket {
+ return sslSocketFactory.createSocket(host, port)
}
- @Override
- public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
- return getDefault().createSocket(host, port, localHost, localPort);
+ override fun createSocket(
+ host: String,
+ port: Int,
+ localHost: InetAddress,
+ localPort: Int
+ ): Socket {
+ return sslSocketFactory.createSocket(host, port, localHost, localPort)
}
- @Override
- public Socket createSocket(InetAddress host, int port) throws IOException {
- return getDefault().createSocket(host, port);
+ override fun createSocket(host: InetAddress, port: Int): Socket {
+ return sslSocketFactory.createSocket(host, port)
}
- @Override
- public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
- return getDefault().createSocket(address, port, localAddress, localPort);
+ override fun createSocket(
+ address: InetAddress,
+ port: Int,
+ localAddress: InetAddress,
+ localPort: Int
+ ): Socket {
+ return sslSocketFactory.createSocket(address, port, localAddress, localPort)
}
-
-
}
diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.kt b/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.kt
index 70b28a6f3..af7b1385e 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.kt
+++ b/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.kt
@@ -15,30 +15,23 @@
* You should have received a copy of the GNU General Public License along with EhViewer.
* If not, see .
*/
+package com.hippo.ehviewer.client
-package com.hippo.ehviewer.client;
+import android.annotation.SuppressLint
+import java.security.cert.X509Certificate
+import javax.net.ssl.X509TrustManager
-import android.annotation.SuppressLint;
-
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.X509TrustManager;
-
-public class EhX509TrustManager implements X509TrustManager {
+@SuppressLint("CustomX509TrustManager")
+class EhX509TrustManager : X509TrustManager {
@SuppressLint("TrustAllX509TrustManager")
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType) {
-
+ override fun checkClientTrusted(chain: Array, authType: String) {
}
@SuppressLint("TrustAllX509TrustManager")
- @Override
- public void checkServerTrusted(X509Certificate[] chain, String authType) {
-
+ override fun checkServerTrusted(chain: Array, authType: String) {
}
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
+ override fun getAcceptedIssuers(): Array {
+ return arrayOfNulls(0)
}
}