UI for onion keyserver, fix preference upgrade
This commit is contained in:
parent
911fa020c2
commit
f242d80c16
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue