From 47ec1ade23472ba0db337a34dba16fbed2f09a00 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 2 Dec 2023 12:39:00 +0100 Subject: [PATCH] Debug: proxy connections --- .../java/com/sun/mail/util/SocketFetcher.java | 2 +- .../java/eu/faircode/email/ApplicationEx.java | 2 ++ .../eu/faircode/email/ConnectionHelper.java | 32 +++++++++++++++++++ .../main/java/eu/faircode/email/Whois.java | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sun/mail/util/SocketFetcher.java b/app/src/main/java/com/sun/mail/util/SocketFetcher.java index 4559333272..a0706a51d6 100644 --- a/app/src/main/java/com/sun/mail/util/SocketFetcher.java +++ b/app/src/main/java/com/sun/mail/util/SocketFetcher.java @@ -312,7 +312,7 @@ public class SocketFetcher { } else { SocketFactory f = (SocketFactory) props.get("fairemail.factory"); eu.faircode.email.Log.i("Using socket factory=" + f); - socket = (f == null ? new Socket() : f.createSocket()); + socket = (f == null ? eu.faircode.email.ConnectionHelper.getSocket(host, port) : f.createSocket()); } } if (to >= 0) { diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index d5bfb73680..c45b5ca61f 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -125,6 +125,8 @@ public class ApplicationEx extends Application " process=" + android.os.Process.myPid()); Log.logMemory(this, "App"); + ConnectionHelper.setupProxy(this); + if (BuildConfig.DEBUG) UriHelper.test(this); diff --git a/app/src/main/java/eu/faircode/email/ConnectionHelper.java b/app/src/main/java/eu/faircode/email/ConnectionHelper.java index 97ae17813f..02c6141952 100644 --- a/app/src/main/java/eu/faircode/email/ConnectionHelper.java +++ b/app/src/main/java/eu/faircode/email/ConnectionHelper.java @@ -48,8 +48,12 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; +import java.net.Proxy; +import java.net.ProxySelector; import java.net.Socket; +import java.net.SocketAddress; import java.net.SocketException; +import java.net.URI; import java.net.URL; import java.net.URLDecoder; import java.net.UnknownHostException; @@ -906,4 +910,32 @@ public class ConnectionHelper { Log.w(ex); } } + + static void setupProxy(Context context) { + if (!BuildConfig.DEBUG) + return; + + // https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html + ProxySelector.setDefault(new ProxySelector() { + @Override + public List select(URI uri) { + // new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("", 0)); + Log.i("PROXY uri=" + uri); + return Arrays.asList(Proxy.NO_PROXY); + } + + @Override + public void connectFailed(URI uri, SocketAddress sa, IOException ex) { + Log.e("PROXY uri=" + uri + " sa=" + sa, ex); + } + }); + } + + public static Socket getSocket(String host, int port) { + if (BuildConfig.DEBUG) { + Proxy proxy = ProxySelector.getDefault().select(URI.create("socket://" + host + ":" + port)).get(0); + return new Socket(proxy); + } else + return new Socket(); + } } diff --git a/app/src/main/java/eu/faircode/email/Whois.java b/app/src/main/java/eu/faircode/email/Whois.java index 191d679905..a4c0241590 100644 --- a/app/src/main/java/eu/faircode/email/Whois.java +++ b/app/src/main/java/eu/faircode/email/Whois.java @@ -42,7 +42,7 @@ public class Whois { } static String get(String domain, String host, int port) throws IOException { - Socket socket = new Socket(); + Socket socket = ConnectionHelper.getSocket(host, port); socket.connect(new InetSocketAddress(host, port), WHOIS_TIMEOUT); try { byte[] request = (domain + "\r\n").getBytes(StandardCharsets.UTF_8);