Merge branch 'proxy-and-jenkins-script' into 'master'
HTTP Proxy preference for Tor, I2P, etc; add jenkins script This adds a preference to set the HTTP Proxy so that FDroid can funnel all traffic through Tor, I2P, psiphon, or any other HTTP proxy. Also, there is a script for jenkins to run before calling `ant clean debug` for the whole setup process. This script sets the `versionCode` to the UNIX time in seconds, and adds the date/time to the `versionName` so that the debug builds are very clearly marked from real builds, and they will automatically update when included in a debug repo: https://dev.guardianproject.info/issues/2601
This commit is contained in:
		
						commit
						d13a8c101a
					
				@ -10,6 +10,8 @@
 | 
			
		||||
 | 
			
		||||
* use FDroid repos on Tor Hidden Services (.onion addresses)
 | 
			
		||||
 | 
			
		||||
* support for a HTTP Proxy in Preferences
 | 
			
		||||
 | 
			
		||||
* directly send installed apps to other devices via Bluetooth and Android Beam
 | 
			
		||||
  (NFC+Bluetooth), also compatible with Samsung/HTC S-Beam
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								jenkins-build
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								jenkins-build
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# Jenkins uses this script to set up the ant build.  Jenkins will then call
 | 
			
		||||
# ant itself once this script has completed.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -x
 | 
			
		||||
 | 
			
		||||
# reset version code/name to current date
 | 
			
		||||
versionCodeDate=`date +%s`
 | 
			
		||||
versionNameDate=`date +%Y-%m-%d_%H.%M.%S`
 | 
			
		||||
 | 
			
		||||
sed -i \
 | 
			
		||||
    -e "s,android:versionCode=\"[0-9][0-9]*\",android:versionCode=\"$versionCodeDate\"," \
 | 
			
		||||
    -e "s,android:versionName=\"\([^\"][^\"]*\)\",android:versionName=\"\1.$versionNameDate\"," \
 | 
			
		||||
    AndroidManifest.xml
 | 
			
		||||
 | 
			
		||||
. ~/.android/bashrc
 | 
			
		||||
./ant-prepare.sh
 | 
			
		||||
@ -197,6 +197,14 @@
 | 
			
		||||
	<string name="qr_wizard_download_instructions">Scan this QR Code to connect to the website for getting started.</string>
 | 
			
		||||
	<string name="send_fdroid_via_wifi">Send FDroid via WiFi…</string>
 | 
			
		||||
 | 
			
		||||
	<string name="proxy">Proxy</string>
 | 
			
		||||
	<string name="enable_proxy_title">Enable HTTP Proxy</string>
 | 
			
		||||
	<string name="enable_proxy_summary">Configure HTTP Proxy for all network requests</string>
 | 
			
		||||
	<string name="proxy_host">Proxy Host</string>
 | 
			
		||||
	<string name="proxy_host_summary">Configure your proxy\'s hostname (e.g. 127.0.0.1)</string>
 | 
			
		||||
	<string name="proxy_port">Proxy Port</string>
 | 
			
		||||
	<string name="proxy_port_summary">Configure your proxy\'s port number (e.g. 8118)</string>
 | 
			
		||||
 | 
			
		||||
	<!--
 | 
			
		||||
	status_download takes four parameters:
 | 
			
		||||
	  - Repository (url)
 | 
			
		||||
 | 
			
		||||
@ -70,4 +70,19 @@
 | 
			
		||||
			android:defaultValue="false"
 | 
			
		||||
			android:key="systemInstaller" />
 | 
			
		||||
	</PreferenceCategory>
 | 
			
		||||
	<PreferenceCategory android:title="@string/proxy" >
 | 
			
		||||
        <CheckBoxPreference
 | 
			
		||||
            android:defaultValue="false"
 | 
			
		||||
            android:key="enableProxy"
 | 
			
		||||
            android:title="@string/enable_proxy_title"
 | 
			
		||||
            android:summary="@string/enable_proxy_summary" />
 | 
			
		||||
        <EditTextPreference
 | 
			
		||||
            android:key="proxyHost"
 | 
			
		||||
            android:title="@string/proxy_host"
 | 
			
		||||
            android:summary="@string/proxy_host_summary" />
 | 
			
		||||
        <EditTextPreference
 | 
			
		||||
            android:key="proxyPort"
 | 
			
		||||
            android:title="@string/proxy_port"
 | 
			
		||||
            android:summary="@string/proxy_port_summary" />
 | 
			
		||||
	</PreferenceCategory>
 | 
			
		||||
</PreferenceScreen>
 | 
			
		||||
 | 
			
		||||
@ -53,6 +53,9 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
 | 
			
		||||
    public static final String PREF_LOCAL_REPO_BONJOUR = "localRepoBonjour";
 | 
			
		||||
    public static final String PREF_LOCAL_REPO_NAME = "localRepoName";
 | 
			
		||||
    public static final String PREF_LOCAL_REPO_HTTPS = "localRepoHttps";
 | 
			
		||||
    public static final String PREF_ENABLE_PROXY = "enableProxy";
 | 
			
		||||
    public static final String PREF_PROXY_HOST = "proxyHost";
 | 
			
		||||
    public static final String PREF_PROXY_PORT = "proxyPort";
 | 
			
		||||
 | 
			
		||||
    private static final boolean DEFAULT_COMPACT_LAYOUT = false;
 | 
			
		||||
    private static final boolean DEFAULT_ROOTED = true;
 | 
			
		||||
@ -64,6 +67,9 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
 | 
			
		||||
    private static final boolean DEFAULT_INCOMP_VER = false;
 | 
			
		||||
    private static final boolean DEFAULT_EXPERT = false;
 | 
			
		||||
    private static final boolean DEFAULT_PERMISSIONS = false;
 | 
			
		||||
    private static final boolean DEFAULT_ENABLE_PROXY = false;
 | 
			
		||||
    public static final String DEFAULT_PROXY_HOST = "127.0.0.1";
 | 
			
		||||
    public static final int DEFAULT_PROXY_PORT = 8118;
 | 
			
		||||
 | 
			
		||||
    private boolean compactLayout = DEFAULT_COMPACT_LAYOUT;
 | 
			
		||||
    private boolean filterAppsRequiringRoot = DEFAULT_ROOTED;
 | 
			
		||||
@ -88,11 +94,11 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
 | 
			
		||||
    private void uninitialize(String key) {
 | 
			
		||||
        initialized.put(key, false);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public boolean isRootInstallerEnabled() {
 | 
			
		||||
        return preferences.getBoolean(PREF_ROOT_INSTALLER, DEFAULT_ROOT_INSTALLER);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public boolean isSystemInstallerEnabled() {
 | 
			
		||||
        return preferences.getBoolean(PREF_SYSTEM_INSTALLER, DEFAULT_SYSTEM_INSTALLER);
 | 
			
		||||
    }
 | 
			
		||||
@ -126,6 +132,28 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
 | 
			
		||||
        return preferences.getString(PREF_LOCAL_REPO_NAME, getDefaultLocalRepoName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isProxyEnabled() {
 | 
			
		||||
        return preferences.getBoolean(PREF_ENABLE_PROXY, DEFAULT_ENABLE_PROXY);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getProxyHost() {
 | 
			
		||||
        return preferences.getString(PREF_PROXY_HOST, DEFAULT_PROXY_HOST);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getProxyPort() {
 | 
			
		||||
        String port = preferences.getString(PREF_PROXY_PORT, String.valueOf(DEFAULT_PROXY_PORT));
 | 
			
		||||
        try {
 | 
			
		||||
            return Integer.parseInt(port);
 | 
			
		||||
        } catch (NumberFormatException e) {
 | 
			
		||||
            // hack until this can be a number-only preference
 | 
			
		||||
            try {
 | 
			
		||||
                return Integer.parseInt(port.replaceAll("[^0-9]", ""));
 | 
			
		||||
            } catch (Exception e1) {
 | 
			
		||||
                return DEFAULT_PROXY_PORT;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasCompactLayout() {
 | 
			
		||||
        if (!isInitialized(PREF_COMPACT_LAYOUT)) {
 | 
			
		||||
            initialize(PREF_COMPACT_LAYOUT);
 | 
			
		||||
 | 
			
		||||
@ -3,12 +3,17 @@ package org.fdroid.fdroid.net;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.Preferences;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileNotFoundException;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
import java.net.InetSocketAddress;
 | 
			
		||||
import java.net.MalformedURLException;
 | 
			
		||||
import java.net.Proxy;
 | 
			
		||||
import java.net.SocketAddress;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
 | 
			
		||||
import javax.net.ssl.SSLHandshakeException;
 | 
			
		||||
@ -70,7 +75,14 @@ public class HttpDownloader extends Downloader {
 | 
			
		||||
    protected void setupConnection() throws IOException {
 | 
			
		||||
        if (connection != null)
 | 
			
		||||
            return;
 | 
			
		||||
        connection = (HttpURLConnection) sourceUrl.openConnection();
 | 
			
		||||
        Preferences prefs = Preferences.get();
 | 
			
		||||
        if (prefs.isProxyEnabled()) {
 | 
			
		||||
            SocketAddress sa = new InetSocketAddress(prefs.getProxyHost(), prefs.getProxyPort());
 | 
			
		||||
            Proxy proxy = new Proxy(Proxy.Type.HTTP, sa);
 | 
			
		||||
            connection = (HttpURLConnection) sourceUrl.openConnection(proxy);
 | 
			
		||||
        } else {
 | 
			
		||||
            connection = (HttpURLConnection) sourceUrl.openConnection();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void doDownload() throws IOException, InterruptedException {
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,8 @@ import android.preference.CheckBoxPreference;
 | 
			
		||||
import android.preference.EditTextPreference;
 | 
			
		||||
import android.preference.ListPreference;
 | 
			
		||||
import android.preference.Preference;
 | 
			
		||||
import android.text.TextUtils;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.Preferences;
 | 
			
		||||
import org.fdroid.fdroid.PreferencesActivity;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
@ -34,7 +36,10 @@ public class PreferenceFragment
 | 
			
		||||
        Preferences.PREF_CACHE_APK,
 | 
			
		||||
        Preferences.PREF_EXPERT,
 | 
			
		||||
        Preferences.PREF_ROOT_INSTALLER,
 | 
			
		||||
        Preferences.PREF_SYSTEM_INSTALLER
 | 
			
		||||
        Preferences.PREF_SYSTEM_INSTALLER,
 | 
			
		||||
        Preferences.PREF_ENABLE_PROXY,
 | 
			
		||||
        Preferences.PREF_PROXY_HOST,
 | 
			
		||||
        Preferences.PREF_PROXY_PORT,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@ -144,6 +149,35 @@ public class PreferenceFragment
 | 
			
		||||
            onoffSummary(key, R.string.system_installer_on,
 | 
			
		||||
                    R.string.system_installer_off);
 | 
			
		||||
 | 
			
		||||
        } else if (key.equals(Preferences.PREF_ENABLE_PROXY)) {
 | 
			
		||||
            CheckBoxPreference pref = (CheckBoxPreference) findPreference(key);
 | 
			
		||||
            pref.setSummary(R.string.enable_proxy_summary);
 | 
			
		||||
            Preference h = findPreference(Preferences.PREF_PROXY_HOST);
 | 
			
		||||
            Preference p = findPreference(Preferences.PREF_PROXY_PORT);
 | 
			
		||||
            if (pref.isChecked()) {
 | 
			
		||||
                h.setEnabled(true);
 | 
			
		||||
                p.setEnabled(true);
 | 
			
		||||
            } else {
 | 
			
		||||
                h.setEnabled(false);
 | 
			
		||||
                p.setEnabled(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        } else if (key.equals(Preferences.PREF_PROXY_HOST)) {
 | 
			
		||||
            EditTextPreference textPref = (EditTextPreference) findPreference(key);
 | 
			
		||||
            String text = Preferences.get().getProxyHost();
 | 
			
		||||
            if (TextUtils.isEmpty(text) || text.equals(Preferences.DEFAULT_PROXY_HOST))
 | 
			
		||||
                textPref.setSummary(R.string.proxy_host_summary);
 | 
			
		||||
            else
 | 
			
		||||
                textPref.setSummary(text);
 | 
			
		||||
 | 
			
		||||
        } else if (key.equals(Preferences.PREF_PROXY_PORT)) {
 | 
			
		||||
            EditTextPreference textPref = (EditTextPreference) findPreference(key);
 | 
			
		||||
            int port = Preferences.get().getProxyPort();
 | 
			
		||||
            if (port == Preferences.DEFAULT_PROXY_PORT)
 | 
			
		||||
                textPref.setSummary(R.string.proxy_port_summary);
 | 
			
		||||
            else
 | 
			
		||||
                textPref.setSummary(String.valueOf(port));
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user