From 3034db0f71f9dd8e2f4d8838c1803952702f7520 Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Sat, 6 Jun 2015 15:26:22 +0530 Subject: added proxy type --- .../org/sufficientlysecure/keychain/Constants.java | 7 +----- .../keychain/ui/SettingsActivity.java | 22 ++++++++++++++++-- .../keychain/util/Preferences.java | 26 ++++++++++++++++++++++ OpenKeychain/src/main/res/values/arrays.xml | 8 +++++++ OpenKeychain/src/main/res/values/strings.xml | 14 ++++++++---- OpenKeychain/src/main/res/xml/proxy_prefs.xml | 13 ++++++++--- 6 files changed, 75 insertions(+), 15 deletions(-) (limited to 'OpenKeychain') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 048fbf327..045ef347c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -98,12 +98,7 @@ public final class Constants { public static final String USE_TOR_PROXY = "useTorProxy"; public static final String PROXY_HOST = "proxyHost"; public static final String PROXY_PORT = "proxyPort"; - } - - public static final class ProxyOrbot { - public static final String PROXY_HOST = "127.0.0.1"; - public static final int PROXY_HTTP_PORT = 8118; - public static final int PROXY_SOCKS_PORT = 9050; + public static final String PROXY_TYPE = "proxyType"; } public static final class Defaults { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java index a49eb731d..383a542ff 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java @@ -217,6 +217,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { private CheckBoxPreference mUseNormalProxy; private EditTextPreference mProxyHost; private EditTextPreference mProxyPort; + private ListPreference mProxyType; @Override public void onCreate(Bundle savedInstanceState) { @@ -229,10 +230,12 @@ public class SettingsActivity extends AppCompatPreferenceActivity { mUseNormalProxy = (CheckBoxPreference) findPreference(Constants.Pref.USE_NORMAL_PROXY); mProxyHost = (EditTextPreference) findPreference(Constants.Pref.PROXY_HOST); mProxyPort = (EditTextPreference) findPreference(Constants.Pref.PROXY_PORT); + mProxyType = (ListPreference) findPreference(Constants.Pref.PROXY_TYPE); initializeUseTorPref(); initializeUseNormalProxyPref(); - initialiseEditTextPreferences(); + initializeEditTextPreferences(); + initializeProxyTypePreference(); if (mUseTor.isChecked()) disableNormalProxyPrefs(); else if (mUseNormalProxy.isChecked()) disableUseTorPrefs(); @@ -279,7 +282,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { }); } - private void initialiseEditTextPreferences() { + private void initializeEditTextPreferences() { mProxyHost.setSummary(mProxyHost.getText()); mProxyPort.setSummary(mProxyPort.getText()); @@ -328,17 +331,32 @@ public class SettingsActivity extends AppCompatPreferenceActivity { }); } + private void initializeProxyTypePreference() { + mProxyType.setSummary(mProxyType.getEntry()); + + mProxyType.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + CharSequence entry = mProxyType.getEntries()[mProxyType.findIndexOfValue((String) newValue)]; + mProxyType.setSummary(entry); + return true; + } + }); + } + private void disableNormalProxyPrefs() { mUseNormalProxy.setChecked(false); mUseNormalProxy.setEnabled(false); mProxyHost.setEnabled(false); mProxyPort.setEnabled(false); + mProxyType.setEnabled(false); } private void enableNormalProxyPrefs() { mUseNormalProxy.setEnabled(true); mProxyHost.setEnabled(true); mProxyPort.setEnabled(true); + mProxyType.setEnabled(true); } private void disableUseTorPrefs() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java index 80f0500c6..6a7d6d3eb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -21,9 +21,12 @@ package org.sufficientlysecure.keychain.util; import android.content.Context; import android.content.SharedPreferences; +import android.content.res.Resources; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants.Pref; +import org.sufficientlysecure.keychain.R; +import java.net.Proxy; import java.util.ArrayList; import java.util.Arrays; import java.util.ListIterator; @@ -35,6 +38,7 @@ import java.util.Vector; public class Preferences { private static Preferences sPreferences; private SharedPreferences mSharedPreferences; + private Resources mResources; public static synchronized Preferences getPreferences(Context context) { return getPreferences(context, false); @@ -51,6 +55,7 @@ public class Preferences { } private Preferences(Context context) { + mResources = context.getResources(); updateSharedPreferences(context); } @@ -228,6 +233,8 @@ public class Preferences { return mSharedPreferences.getBoolean(Pref.ENCRYPT_FILENAMES, true); } + // proxy preference functions start here + public boolean getUseNormalProxy() { return mSharedPreferences.getBoolean(Constants.Pref.USE_NORMAL_PROXY, false); } @@ -260,13 +267,16 @@ public class Preferences { /** * we store port as String for easy interfacing with EditTextPreference, but return it as an integer + * * @return port number of proxy */ public int getProxyPort() { return Integer.parseInt(mSharedPreferences.getString(Pref.PROXY_PORT, "-1")); } + /** * we store port as String for easy interfacing with EditTextPreference, but return it as an integer + * * @param port proxy port */ public void setProxyPort(String port) { @@ -275,6 +285,22 @@ public class Preferences { editor.commit(); } + public Proxy.Type getProxyType() { + final String typeHttp = mResources.getString(R.string.pref_proxy_type_value_http); + final String typeSocks = mResources.getString(R.string.pref_proxy_type_value_socks); + + String type = mSharedPreferences.getString(Pref.PROXY_TYPE, typeHttp); + + if(type.equals(typeHttp)) return Proxy.Type.HTTP; + else if(type.equals(typeSocks)) return Proxy.Type.SOCKS; + else { // shouldn't happen + Log.e(Constants.TAG, "Invalid Proxy Type in preferences"); + return null; + } + } + + // proxy preference functions ends here + public CloudSearchPrefs getCloudSearchPrefs() { return new CloudSearchPrefs(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true), mSharedPreferences.getBoolean(Pref.SEARCH_KEYBASE, true), diff --git a/OpenKeychain/src/main/res/values/arrays.xml b/OpenKeychain/src/main/res/values/arrays.xml index 44bbe00cc..241f530d8 100644 --- a/OpenKeychain/src/main/res/values/arrays.xml +++ b/OpenKeychain/src/main/res/values/arrays.xml @@ -29,6 +29,14 @@ 28800 -1 + + @string/pref_proxy_type_choice_http + @string/pref_proxy_type_choice_socks + + + @string/pref_proxy_type_value_http + @string/pref_proxy_type_value_socks + @string/key_size_2048 @string/key_size_4096 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index defa7d2a5..d8499ed06 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -174,14 +174,20 @@ "Search keys on keybase.io" - "Don't use a proxy" - "Enable Tor" + "Enable Tor" "Requires Orbot to be installed" "Enable other proxy" - "Proxy Host" + "Proxy Host" "Proxy host cannot be empty" - "Proxy Port" + "Proxy Port" "Invalid port number entered" + "Proxy Type" + + + "HTTP" + "SOCKS" + "proxyHttp" + "proxySocks" "<no name>" "<none>" diff --git a/OpenKeychain/src/main/res/xml/proxy_prefs.xml b/OpenKeychain/src/main/res/xml/proxy_prefs.xml index e77ac6d71..ab9c5a3e3 100644 --- a/OpenKeychain/src/main/res/xml/proxy_prefs.xml +++ b/OpenKeychain/src/main/res/xml/proxy_prefs.xml @@ -3,7 +3,7 @@ @@ -21,7 +21,14 @@ android:key="proxyPort" android:defaultValue="8118" android:persistent="true" - android:title="@string/pref_proxy_port" + android:title="@string/pref_proxy_port_label" android:textCursorDrawable="@null" android:inputType="number" /> + -- cgit v1.2.3