Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit ed64625f authored by tobiasKaminsky's avatar tobiasKaminsky
Browse files

optional proxy support

parent 57901082
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -30,9 +30,11 @@ package com.nextcloud.common

import android.content.Context
import android.net.Uri
import android.text.TextUtils
import com.owncloud.android.lib.common.OwnCloudClient
import com.owncloud.android.lib.common.OwnCloudClientFactory.DEFAULT_CONNECTION_TIMEOUT_LONG
import com.owncloud.android.lib.common.OwnCloudClientFactory.DEFAULT_DATA_TIMEOUT_LONG
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory
import com.owncloud.android.lib.common.accounts.AccountUtils
import com.owncloud.android.lib.common.network.AdvancedX509TrustManager
import com.owncloud.android.lib.common.network.NetworkUtils
@@ -45,6 +47,8 @@ import okhttp3.OkHttpClient
import okhttp3.Request
import org.apache.commons.httpclient.HttpStatus
import java.io.IOException
import java.net.InetSocketAddress
import java.net.Proxy
import java.util.concurrent.TimeUnit
import javax.net.ssl.SSLSession
import javax.net.ssl.TrustManager
@@ -81,14 +85,28 @@ class NextcloudClient private constructor(
            sslContext.init(null, arrayOf<TrustManager>(trustManager), null)
            val sslSocketFactory = sslContext.socketFactory

            var proxy: Proxy? = null

            val proxyHost = OwnCloudClientManagerFactory.getProxyHost()
            val proxyPort = OwnCloudClientManagerFactory.getProxyPort()

            if (!TextUtils.isEmpty(proxyHost) && proxyPort > 0) {
                proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(proxyHost, proxyPort))
                Log_OC.d(this, "Proxy settings: $proxyHost:$proxyPort")
            }

            return OkHttpClient.Builder()
                .cookieJar(CookieJar.NO_COOKIES)
                .connectTimeout(DEFAULT_CONNECTION_TIMEOUT_LONG, TimeUnit.MILLISECONDS)
                .readTimeout(DEFAULT_DATA_TIMEOUT_LONG, TimeUnit.MILLISECONDS)
                .callTimeout(DEFAULT_CONNECTION_TIMEOUT_LONG + DEFAULT_DATA_TIMEOUT_LONG, TimeUnit.MILLISECONDS)
                .callTimeout(
                    DEFAULT_CONNECTION_TIMEOUT_LONG + DEFAULT_DATA_TIMEOUT_LONG,
                    TimeUnit.MILLISECONDS
                )
                .sslSocketFactory(sslSocketFactory, trustManager)
                .hostnameVerifier { _: String?, _: SSLSession? -> true }
                .fastFallback(true)
                .proxy(proxy)
                .build()
        }
    }
+16 −0
Original line number Diff line number Diff line
@@ -29,13 +29,18 @@
package com.nextcloud.common

import android.content.Context
import android.text.TextUtils
import com.owncloud.android.lib.common.OwnCloudClientFactory.DEFAULT_DATA_TIMEOUT_LONG
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory
import com.owncloud.android.lib.common.network.AdvancedX509TrustManager
import com.owncloud.android.lib.common.network.NetworkUtils
import com.owncloud.android.lib.common.utils.Log_OC
import okhttp3.CookieJar
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException
import java.net.InetSocketAddress
import java.net.Proxy
import java.util.concurrent.TimeUnit
import javax.net.ssl.SSLSession
import javax.net.ssl.TrustManager
@@ -56,12 +61,23 @@ class PlainClient(context: Context) {
            sslContext.init(null, arrayOf<TrustManager>(trustManager), null)
            val sslSocketFactory = sslContext.socketFactory

            var proxy: Proxy? = null

            val proxyHost = OwnCloudClientManagerFactory.getProxyHost()
            val proxyPort = OwnCloudClientManagerFactory.getProxyPort()

            if (!TextUtils.isEmpty(proxyHost) && proxyPort > 0) {
                proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(proxyHost, proxyPort))
                Log_OC.d(this, "Proxy settings: $proxyHost:$proxyPort")
            }

            return OkHttpClient.Builder()
                .cookieJar(CookieJar.NO_COOKIES)
                .callTimeout(DEFAULT_DATA_TIMEOUT_LONG, TimeUnit.MILLISECONDS)
                .sslSocketFactory(sslSocketFactory, trustManager)
                .hostnameVerifier { _: String?, _: SSLSession? -> true }
                .fastFallback(true)
                .proxy(proxy)
                .build()
        }
    }
+9 −16
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
package com.owncloud.android.lib.common;

import android.net.Uri;
import android.text.TextUtils;

import com.nextcloud.common.DNSCache;
import com.nextcloud.common.NextcloudUriDelegate;
@@ -102,21 +103,13 @@ public class OwnCloudClient extends HttpClient {


    private void applyProxySettings() {
    	String proxyHost = System.getProperty("http.proxyHost");
    	String proxyPortSt = System.getProperty("http.proxyPort");
    	int proxyPort = 0;
    	try {
    		if (proxyPortSt != null && proxyPortSt.length() > 0) {
    			proxyPort = Integer.parseInt(proxyPortSt);
    		}
    	} catch (Exception e) {
    		// nothing to do here
    	}
        String proxyHost = OwnCloudClientManagerFactory.getProxyHost();
        Integer proxyPort = OwnCloudClientManagerFactory.getProxyPort();

    	if (proxyHost != null && proxyHost.length() > 0) {
        if (!TextUtils.isEmpty(proxyHost) && proxyPort > 0) {
            HostConfiguration hostCfg = getHostConfiguration();
            hostCfg.setProxy(proxyHost, proxyPort);
	    	Log_OC.d(TAG, "Proxy settings: " + proxyHost + ":" + proxyPort);
            Log_OC.d(this, "Proxy settings: " + proxyHost + ":" + proxyPort);
        }
    }

+18 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ package com.owncloud.android.lib.common;
public class OwnCloudClientManagerFactory {
    private static OwnCloudClientManager sDefaultSingleton;
    private static String sUserAgent = "Mozilla/5.0 (Android) Nextcloud-android";
    private static String proxyHost = "";
    private static int proxyPort = -1;

    public static OwnCloudClientManager getDefaultSingleton() {
        if (sDefaultSingleton == null) {
@@ -41,4 +43,20 @@ public class OwnCloudClientManagerFactory {
    public static String getUserAgent() {
        return sUserAgent;
    }

    public static void setProxyHost(String host) {
        proxyHost = host;
    }

    public static String getProxyHost() {
        return proxyHost;
    }

    public static void setProxyPort(int port) {
        proxyPort = port;
    }

    public static int getProxyPort() {
        return proxyPort;
    }
}