UI for onion keyserver, fix preference upgrade

This commit is contained in:
Dominik Schürmann 2016-10-27 17:01:22 +02:00
parent 911fa020c2
commit f242d80c16
6 changed files with 50 additions and 22 deletions

View file

@ -98,7 +98,7 @@ public final class Constants {
public static final String PASSPHRASE_CACHE_SUBS = "passphraseCacheSubs";
public static final String LANGUAGE = "language";
public static final String KEY_SERVERS = "keyServers";
public static final String PREF_DEFAULT_VERSION = "keyServersDefaultVersion";
public static final String PREF_VERSION = "keyServersDefaultVersion";
public static final String FIRST_TIME = "firstTime";
public static final String CACHED_CONSOLIDATE = "cachedConsolidate";
public static final String SEARCH_KEYSERVER = "search_keyserver_pref";
@ -147,7 +147,7 @@ public final class Constants {
public static final class Defaults {
public static final String KEY_SERVERS = "hkps://hkps.pool.sks-keyservers.net, hkps://pgp.mit.edu";
public static final int PREF_VERSION = 7;
public static final int PREF_CURRENT_VERSION = 8;
}
public static final class key {

View file

@ -155,7 +155,7 @@ public class ParcelableHkpKeyserver extends Keyserver implements Parcelable {
return getURI(mOnion);
}
public URI getProxiedURL(ParcelableProxy proxy) throws URISyntaxException {
private URI getProxiedURL(ParcelableProxy proxy) throws URISyntaxException {
if (proxy.isTorEnabled()) {
return getOnionURI();
} else {
@ -195,7 +195,7 @@ public class ParcelableHkpKeyserver extends Keyserver implements Parcelable {
private String query(String request, @NonNull ParcelableProxy proxy) throws Keyserver.QueryFailedException, HttpError {
try {
URL url = new URL(getProxiedURL(proxy).toString() + request);
Log.d(Constants.TAG, "hkp keyserver query: " + url + " Proxy: " + proxy);
Log.d(Constants.TAG, "hkp keyserver query: " + url + " Proxy: " + proxy.getProxy());
OkHttpClient client = OkHttpClientFactory.getClientPinnedIfAvailable(url, proxy.getProxy());
Response response = client.newCall(new Request.Builder().url(url).build()).execute();
@ -347,7 +347,7 @@ public class ParcelableHkpKeyserver extends Keyserver implements Parcelable {
@Override
public String get(String keyIdHex, ParcelableProxy proxy) throws Keyserver.QueryFailedException {
String request = "/pks/lookup?op=get&options=mr&search=" + keyIdHex;
Log.d(Constants.TAG, "hkp keyserver get: " + request + " using Proxy: " + proxy);
Log.d(Constants.TAG, "hkp keyserver get: " + request + " using Proxy: " + proxy.getProxy());
String data;
try {
data = query(request, proxy);

View file

@ -82,6 +82,8 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On
private EditText mKeyserverEditText;
private TextInputLayout mKeyserverEditTextLayout;
private EditText mKeyserverEditOnionText;
private TextInputLayout mKeyserverEditOnionTextLayout;
private CheckBox mVerifyKeyserverCheckBox;
private CheckBox mOnlyTrustedKeyserverCheckBox;
@ -130,6 +132,8 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On
mKeyserverEditText = (EditText) view.findViewById(R.id.keyserver_url_edit_text);
mKeyserverEditTextLayout = (TextInputLayout) view.findViewById(R.id.keyserver_url_edit_text_layout);
mKeyserverEditOnionText = (EditText) view.findViewById(R.id.keyserver_onion_edit_text);
mKeyserverEditOnionTextLayout = (TextInputLayout) view.findViewById(R.id.keyserver_onion_edit_text_layout);
mVerifyKeyserverCheckBox = (CheckBox) view.findViewById(R.id.verify_connection_checkbox);
mOnlyTrustedKeyserverCheckBox = (CheckBox) view.findViewById(R.id.only_trusted_keyserver_checkbox);
mVerifyKeyserverCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@ -148,6 +152,7 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On
alert.setTitle(R.string.edit_keyserver_dialog_title);
ParcelableHkpKeyserver keyserver = getArguments().getParcelable(ARG_KEYSERVER);
mKeyserverEditText.setText(keyserver.getUrl());
mKeyserverEditOnionText.setText(keyserver.getOnion());
break;
}
}
@ -225,11 +230,12 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On
@Override
public void onClick(View v) {
mKeyserverEditTextLayout.setErrorEnabled(false);
mKeyserverEditOnionTextLayout.setErrorEnabled(false);
// behaviour same for edit and add
String keyserverUrl = mKeyserverEditText.getText().toString();
// TODO!
String keyserverOnion = mKeyserverEditText.getText().toString();
String keyserverOnion = mKeyserverEditOnionText.getText() == null ? null
: mKeyserverEditOnionText.getText().toString();
final ParcelableHkpKeyserver keyserver = new ParcelableHkpKeyserver(keyserverUrl, keyserverOnion);
if (mVerifyKeyserverCheckBox.isChecked()) {
final ParcelableProxy proxy = Preferences.getPreferences(getActivity())
@ -269,7 +275,7 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On
} else {
dismiss();
// return unverified keyserver back to activity
keyserverEdited(new ParcelableHkpKeyserver(keyserverUrl, null), false);
keyserverEdited(keyserver, false);
}
}
});

View file

@ -137,7 +137,6 @@ public class Preferences {
ArrayList<ParcelableHkpKeyserver> servers = new ArrayList<>();
String[] entries = rawData.split(",");
for (String entry : entries) {
String[] addresses = entry.trim().split(";");
String url = addresses[0];
String onion = addresses.length == 1 ? null : addresses[1];
@ -452,9 +451,12 @@ public class Preferences {
}
public void upgradePreferences(Context context) {
if (mSharedPreferences.getInt(Constants.Pref.PREF_DEFAULT_VERSION, 0) !=
Constants.Defaults.PREF_VERSION) {
switch (mSharedPreferences.getInt(Constants.Pref.PREF_DEFAULT_VERSION, 0)) {
Log.d(Constants.TAG, "Upgrading preferences…");
int oldVersion = mSharedPreferences.getInt(Constants.Pref.PREF_VERSION, 0);
boolean requiresUpgrade = oldVersion < Constants.Defaults.PREF_CURRENT_VERSION;
if (requiresUpgrade) {
switch (oldVersion) {
case 1:
// fall through
case 2:
@ -469,18 +471,21 @@ public class Preferences {
continue;
}
switch (server.getUrl()) {
case "pool.sks-keyservers.net":
case "pool.sks-keyservers.net": {
// use HKPS!
it.set(new ParcelableHkpKeyserver("hkps://hkps.pool.sks-keyservers.net", null));
break;
case "pgp.mit.edu":
}
case "pgp.mit.edu": {
// use HKPS!
it.set(new ParcelableHkpKeyserver("hkps://pgp.mit.edu", null));
break;
case "subkeys.pgp.net":
}
case "subkeys.pgp.net": {
// remove, because often down and no HKPS!
it.remove();
break;
}
}
}
@ -507,12 +512,10 @@ public class Preferences {
if (server == null) {
continue;
}
switch (server.getUrl()) {
case "hkps://hkps.pool.sks-keyservers.net":
it.set(new ParcelableHkpKeyserver(
"hkps://hkps.pool.sks-keyservers.net",
"hkp://jirk5u4osbsr34t5.onion"));
break;
if ("hkps://hkps.pool.sks-keyservers.net".equals(server.getUrl())) {
it.set(new ParcelableHkpKeyserver(
"hkps://hkps.pool.sks-keyservers.net",
"hkp://jirk5u4osbsr34t5.onion"));
}
}
@ -522,7 +525,7 @@ public class Preferences {
// write new preference version
mSharedPreferences.edit()
.putInt(Constants.Pref.PREF_DEFAULT_VERSION, Constants.Defaults.PREF_VERSION)
.putInt(Constants.Pref.PREF_VERSION, Constants.Defaults.PREF_CURRENT_VERSION)
.commit();
}
}

View file

@ -27,6 +27,24 @@
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/keyserver_onion_edit_text_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp">
<EditText
android:id="@+id/keyserver_onion_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:hint="@string/label_enter_keyserver_onion"
android:imeOptions="actionDone"
android:inputType="textUri" />
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/verify_connection_checkbox"

View file

@ -190,6 +190,7 @@
<string name="label_verify_keyserver_connection">"Test connection"</string>
<string name="label_only_trusted_keyserver">"Only trusted keyserver"</string>
<string name="label_enter_keyserver_url">"URL"</string>
<string name="label_enter_keyserver_onion">"Optional Tor .onion URL"</string>
<string name="label_keyserver_dialog_delete">"Delete keyserver"</string>
<string name="label_theme">"Theme"</string>