From 953307ca30726dcfe29b36120d650b85617dff35 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 16 Jun 2019 15:06:28 +0200 Subject: [PATCH] use socks instead of http proxy for http upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http proxy doesn’t seem to work with onion v3 --- .../eu/siacs/conversations/http/HttpConnectionManager.java | 2 +- .../eu/siacs/conversations/http/HttpDownloadConnection.java | 4 +++- .../eu/siacs/conversations/http/HttpUploadConnection.java | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java b/src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java index 76fd83f08..d96bb4deb 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java +++ b/src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java @@ -36,7 +36,7 @@ public class HttpConnectionManager extends AbstractConnectionManager { } public static Proxy getProxy() throws IOException { - return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(InetAddress.getByAddress(new byte[]{127, 0, 0, 1}), 8118)); + return new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(InetAddress.getByAddress(new byte[]{127, 0, 0, 1}), 9050)); } public void createNewDownloadConnection(Message message) { diff --git a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java index e67ac2db5..b5aed7212 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java @@ -276,7 +276,9 @@ public class HttpDownloadConnection implements Transferable { Log.d(Config.LOGTAG, "retrieve file size. interactive:" + String.valueOf(interactive)); changeStatus(STATUS_CHECKING); HttpURLConnection connection; - if (mUseTor || message.getConversation().getAccount().isOnion()) { + final String hostname = mUrl.getHost(); + final boolean onion = hostname != null && hostname.endsWith(".onion"); + if (mUseTor || message.getConversation().getAccount().isOnion() || onion) { connection = (HttpURLConnection) mUrl.openConnection(HttpConnectionManager.getProxy()); } else { connection = (HttpURLConnection) mUrl.openConnection(); diff --git a/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java index b3f5f021b..daa0c20c7 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java @@ -155,11 +155,14 @@ public class HttpUploadConnection implements Transferable { PowerManager.WakeLock wakeLock = mHttpConnectionManager.createWakeLock("http_upload_"+message.getUuid()); try { fileInputStream = new FileInputStream(file); + final String slotHostname = slot.getPutUrl().getHost(); + final boolean onionSlot = slotHostname != null && slotHostname.endsWith(".onion"); final int expectedFileSize = (int) file.getExpectedSize(); final int readTimeout = (expectedFileSize / 2048) + Config.SOCKET_TIMEOUT; //assuming a minimum transfer speed of 16kbit/s wakeLock.acquire(readTimeout); Log.d(Config.LOGTAG, "uploading to " + slot.getPutUrl().toString()+ " w/ read timeout of "+readTimeout+"s"); - if (mUseTor || message.getConversation().getAccount().isOnion()) { + + if (mUseTor || message.getConversation().getAccount().isOnion() || onionSlot) { connection = (HttpURLConnection) slot.getPutUrl().openConnection(HttpConnectionManager.getProxy()); } else { connection = (HttpURLConnection) slot.getPutUrl().openConnection();