aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2015-06-08 01:56:35 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2015-07-03 20:46:15 +0530
commitdbc3f90360e56538ca9f599241edce9ac81e063c (patch)
tree6eee5726cce6e406dce0a979e34852ecad72c283
parent413536c62b39f9c583cf86b4cd9750b088df6563 (diff)
downloadopen-keychain-dbc3f90360e56538ca9f599241edce9ac81e063c.tar.gz
open-keychain-dbc3f90360e56538ca9f599241edce9ac81e063c.tar.bz2
open-keychain-dbc3f90360e56538ca9f599241edce9ac81e063c.zip
fixed Proxy generation, proxy working for for cloud import
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java28
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java13
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableProxy.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java19
7 files changed, 46 insertions, 42 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
index da1494ce3..26f4da4e5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
@@ -190,21 +190,6 @@ public class HkpKeyserver extends Keyserver {
return mSecure ? "https://" : "http://";
}
- private HttpURLConnection openConnectioan(URL url) throws IOException {
- HttpURLConnection conn = null;
- try {
- conn = (HttpURLConnection) TlsHelper.opeanConnection(url);
- } catch (TlsHelper.TlsHelperException e) {
- Log.w(Constants.TAG, e);
- }
- if (conn == null) {
- conn = (HttpURLConnection) url.openConnection();
- }
- conn.setConnectTimeout(5000);
- conn.setReadTimeout(25000);
- return conn;
- }
-
/**
* returns a client with pinned certificate if necessary
*
@@ -223,8 +208,8 @@ public class HkpKeyserver extends Keyserver {
client.setProxy(proxy);
// TODO: PHILIP if proxy !=null increase timeout?
- client.setConnectTimeout(5000, TimeUnit.MILLISECONDS);
- client.setReadTimeout(25000, TimeUnit.MILLISECONDS);
+ client.setConnectTimeout(proxy != null ? 30000 : 5000, TimeUnit.MILLISECONDS);
+ client.setReadTimeout(45000, TimeUnit.MILLISECONDS);
return client;
}
@@ -233,9 +218,12 @@ public class HkpKeyserver extends Keyserver {
try {
URL url = new URL(getUrlPrefix() + mHost + ":" + mPort + request);
Log.d(Constants.TAG, "hkp keyserver query: " + url);
+ Log.d("PHILIP", "hkpKeyserver query(): " + proxy);
OkHttpClient client = getClient(url, proxy);
Response response = client.newCall(new Request.Builder().url(url).build()).execute();
+ tempIpTest(proxy);
+
String responseBody = response.body().string();// contains body both in case of success or failure
if (response.isSuccessful()) {
@@ -249,6 +237,12 @@ public class HkpKeyserver extends Keyserver {
}
}
+ private void tempIpTest(Proxy proxy) throws IOException {
+ URL url = new URL("https://wtfismyip.com/text");
+ Response response = getClient(url, proxy).newCall(new Request.Builder().url(url).build()).execute();
+ Log.e("PHILIP", "proxy Test: " + response.body().string());
+ }
+
/**
* Results are sorted by creation date of key!
*
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
index b2b6c224a..f78c19d13 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
@@ -43,9 +43,11 @@ import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.ParcelableFileCache;
import org.sufficientlysecure.keychain.util.ParcelableFileCache.IteratorWithSize;
+import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
import java.io.IOException;
+import java.net.Proxy;
import java.util.ArrayList;
public class ImportKeysActivity extends BaseNfcActivity
@@ -367,14 +369,14 @@ public class ImportKeysActivity extends BaseNfcActivity
}
}
- mListFragment.loadNew(loaderState, mProxyPrefs.proxy);
+ mListFragment.loadNew(loaderState, mProxyPrefs.parcelableProxy);
}
/**
* disables use of Tor as proxy for this session
*/
private void disableTorForSession() {
- mProxyPrefs = new Preferences.ProxyPrefs(false, false, null);
+ mProxyPrefs = new Preferences.ProxyPrefs(false, false, null, -1, null);
}
private void handleMessage(Message message) {
@@ -455,6 +457,8 @@ public class ImportKeysActivity extends BaseNfcActivity
ImportKeysListFragment.CloudLoaderState sls =
(ImportKeysListFragment.CloudLoaderState) ls;
+ data.putParcelable(KeychainService.EXTRA_PARCELABLE_PROXY, mProxyPrefs.parcelableProxy);
+
// get selected key entries
ArrayList<ParcelableKeyRing> keys = new ArrayList<>();
{
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
index a5f661fb7..23368504b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java
@@ -41,6 +41,7 @@ import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListLoader;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.ParcelableFileCache.IteratorWithSize;
+import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
import java.io.ByteArrayInputStream;
@@ -65,7 +66,7 @@ public class ImportKeysListFragment extends ListFragment implements
private ImportKeysAdapter mAdapter;
private LoaderState mLoaderState;
- private Proxy mProxy;
+ private ParcelableProxy mProxy;
private static final int LOADER_ID_BYTES = 0;
private static final int LOADER_ID_CLOUD = 1;
@@ -262,7 +263,7 @@ public class ImportKeysListFragment extends ListFragment implements
mAdapter.notifyDataSetChanged();
}
- public void loadNew(LoaderState loaderState, Proxy proxy) {
+ public void loadNew(LoaderState loaderState, ParcelableProxy proxy) {
mProxy = proxy;
mLoaderState = loaderState;
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 94b854b73..17df91ba6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SettingsActivity.java
@@ -23,10 +23,13 @@ import android.content.Intent;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
+import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.support.v7.widget.Toolbar;
+import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@@ -292,7 +295,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
mProxyHost.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- if (newValue.equals("")) {
+ if (TextUtils.isEmpty((String) newValue)) {
Notify.create(
ProxyPrefsFragment.this.getActivity(),
R.string.pref_proxy_host_err_invalid,
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java
index 3fd517043..a4f8f22e0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListCloudLoader.java
@@ -27,6 +27,7 @@ import org.sufficientlysecure.keychain.keyimport.Keyserver;
import org.sufficientlysecure.keychain.operations.results.GetKeyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.util.Log;
+import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
import java.net.Proxy;
@@ -39,18 +40,18 @@ public class ImportKeysListCloudLoader
Preferences.CloudSearchPrefs mCloudPrefs;
String mServerQuery;
- private Proxy mProxy;
+ private ParcelableProxy mParcelableProxy;
private ArrayList<ImportKeysListEntry> mEntryList = new ArrayList<>();
private AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> mEntryListWrapper;
public ImportKeysListCloudLoader(Context context, String serverQuery, Preferences.CloudSearchPrefs cloudPrefs,
- Proxy proxy) {
+ ParcelableProxy proxy) {
super(context);
mContext = context;
mServerQuery = serverQuery;
mCloudPrefs = cloudPrefs;
- mProxy = proxy;
+ mParcelableProxy = proxy;
}
@Override
@@ -100,7 +101,11 @@ public class ImportKeysListCloudLoader
*/
private void queryServer(boolean enforceFingerprint) {
try {
- ArrayList<ImportKeysListEntry> searchResult = CloudSearch.search(mServerQuery, mCloudPrefs, mProxy);
+ ArrayList<ImportKeysListEntry> searchResult = CloudSearch.search(
+ mServerQuery,
+ mCloudPrefs,
+ mParcelableProxy.getProxy()
+ );
mEntryList.clear();
// add result to data
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableProxy.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableProxy.java
index a24141a69..e5bb1deb4 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableProxy.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableProxy.java
@@ -34,13 +34,11 @@ public class ParcelableProxy implements Parcelable {
private final int TYPE_HTTP = 1;
private final int TYPE_SOCKS = 2;
- public ParcelableProxy(Proxy proxy) {
- InetSocketAddress address = (InetSocketAddress) proxy.address();
+ public ParcelableProxy(String hostName, int port, Proxy.Type type) {
+ mProxyHost = hostName;
+ mProxyPort = port;
- mProxyHost = address.getHostName();
- mProxyPort = address.getPort();
-
- switch (proxy.type()) {
+ switch (type) {
case HTTP: {
mProxyType = TYPE_HTTP;
break;
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 536f956cd..5650a7deb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java
@@ -310,23 +310,22 @@ public class Preferences {
}
public ProxyPrefs getProxyPrefs() {
- Proxy proxy = null;
boolean useTor = getUseTorProxy();
boolean useNormalProxy = getUseNormalProxy();
if (useTor) {
- proxy = new Proxy(Constants.Orbot.PROXY_TYPE,
- new InetSocketAddress(Constants.Orbot.PROXY_HOST, Constants.Orbot.PROXY_PORT));
+ return new ProxyPrefs(true, false, Constants.Orbot.PROXY_HOST, Constants.Orbot.PROXY_PORT,
+ Constants.Orbot.PROXY_TYPE);
}
else if (useNormalProxy) {
- proxy = new Proxy(getProxyType(), new InetSocketAddress(getProxyHost(), getProxyPort()));
+ return new ProxyPrefs(useTor, useNormalProxy, getProxyHost(), getProxyPort(), getProxyType());
+ } else {
+ return new ProxyPrefs(false, false, null, -1, null);
}
-
- return new ProxyPrefs(getUseTorProxy(), getUseNormalProxy(), proxy);
}
public static class ProxyPrefs {
- public final Proxy proxy;
+ public final ParcelableProxy parcelableProxy;
public final boolean torEnabled;
public final boolean normalPorxyEnabled;
@@ -335,12 +334,12 @@ public class Preferences {
*
* @param torEnabled if Tor is to be used
* @param normalPorxyEnabled if user-specified proxy is to be used
- * @param proxy proxy to use, leave null if none
*/
- public ProxyPrefs(boolean torEnabled, boolean normalPorxyEnabled, Proxy proxy) {
+ public ProxyPrefs(boolean torEnabled, boolean normalPorxyEnabled, String hostName, int port, Proxy.Type type) {
this.torEnabled = torEnabled;
this.normalPorxyEnabled = normalPorxyEnabled;
- this.proxy = proxy;
+ if(!torEnabled && !normalPorxyEnabled) this.parcelableProxy = null;
+ else this.parcelableProxy = new ParcelableProxy(hostName, port, type);
}
}