Add support for domain fronting

This commit is contained in:
NekoInverter committed 2020-12-11 16:38:32 +08:00
1 parent 913b9e0457
commit b9da8919cd
3 files changed
+88

No files matched your search

@@ -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();
@@ -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;
}
}
@@ -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];
}
}