diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.java b/app/src/main/java/com/hippo/ehviewer/EhApplication.java index e35693c73..7f14cd5f8 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhApplication.java +++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.java @@ -42,6 +42,8 @@ import com.hippo.ehviewer.client.EhClient; import com.hippo.ehviewer.client.EhCookieStore; import com.hippo.ehviewer.client.EhDns; import com.hippo.ehviewer.client.EhEngine; +import com.hippo.ehviewer.client.EhSSLSocketFactory; +import com.hippo.ehviewer.client.EhX509TrustManager; import com.hippo.ehviewer.client.data.GalleryDetail; import com.hippo.ehviewer.download.DownloadManager; import com.hippo.ehviewer.spider.SpiderDen; @@ -140,6 +142,8 @@ public class EhApplication extends RecordingApplication { .callTimeout(10, TimeUnit.SECONDS) .cookieJar(getEhCookieStore(application)) .cache(getOkHttpCache(application)) + .sslSocketFactory(new EhSSLSocketFactory(), new EhX509TrustManager()) + .hostnameVerifier((hostname, session) -> true) .dns(new EhDns(application)) .proxySelector(getEhProxySelector(application)) .build(); diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.java b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.java new file mode 100644 index 000000000..d3e2c5eec --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.java @@ -0,0 +1,58 @@ +package com.hippo.ehviewer.client; + +import android.util.Log; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; + +import javax.net.ssl.SSLSocketFactory; + +public class EhSSLSocketFactory extends SSLSocketFactory { + @Override + public String[] getDefaultCipherSuites() { + return new String[0]; + } + + @Override + public String[] getSupportedCipherSuites() { + return new String[0]; + } + + @Override + public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException { + InetAddress address = s.getInetAddress(); + Log.d("EhSSLSocketFactory", "Host: " + host + " Address: " + address.getHostAddress()); + if (autoClose) s.close(); + if (host.endsWith("e-hentai.org") || + host.endsWith("exhentai.org") || + host.endsWith("ehgt.org") || + host.endsWith("hath.network")) { + return getDefault().createSocket(address, port); + } else { + return getDefault().createSocket(host, port); + } + } + + @Override + public Socket createSocket(String host, int port) { + return null; + } + + @Override + public Socket createSocket(String host, int port, InetAddress localHost, int localPort) { + return null; + } + + @Override + public Socket createSocket(InetAddress host, int port) { + return null; + } + + @Override + public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) { + return null; + } + + +} diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.java b/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.java new file mode 100644 index 000000000..079a7e974 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/client/EhX509TrustManager.java @@ -0,0 +1,26 @@ +package com.hippo.ehviewer.client; + +import android.annotation.SuppressLint; + +import java.security.cert.X509Certificate; + +import javax.net.ssl.X509TrustManager; + +public class EhX509TrustManager implements X509TrustManager { + @SuppressLint("TrustAllX509TrustManager") + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) { + + } + + @SuppressLint("TrustAllX509TrustManager") + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) { + + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } +}