From 3eb5405141d14a0c75c669c168b272878346cc38 Mon Sep 17 00:00:00 2001 From: Fup Duck Date: Sat, 27 Jan 2018 16:09:38 +0100 Subject: fix comments for mergerequest --- .../leap/bitmaskclient/ProviderListActivity.java | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java (limited to 'app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java') diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java new file mode 100644 index 00000000..034c9752 --- /dev/null +++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2013 LEAP Encryption Access Project and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package se.leap.bitmaskclient; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.FragmentTransaction; + +import java.net.MalformedURLException; +import java.net.URL; + +import se.leap.bitmaskclient.ProviderListContent.ProviderItem; + +/** + * Activity that builds and shows the list of known available providers. + *

+ * It also allows the user to enter custom providers with a button. + * + * @author parmegv + * @author cyberta + */ +public class ProviderListActivity extends ProviderListBaseActivity { + + @Override + protected void onItemSelectedLogic() { + boolean danger_on = preferences.getBoolean(ProviderItem.DANGER_ON, true); + setUpProvider(danger_on); + } + + @Override + public void cancelSettingUpProvider() { + super.cancelSettingUpProvider(); + preferences.edit().remove(ProviderItem.DANGER_ON).apply(); + } + + /** + * Open the new provider dialog with data + */ + public void addAndSelectNewProvider(String main_url, boolean danger_on) { + FragmentTransaction fragment_transaction = fragmentManager.removePreviousFragment(NewProviderDialog.TAG); + + DialogFragment newFragment = new NewProviderDialog(); + Bundle data = new Bundle(); + data.putString(Provider.MAIN_URL, main_url); + data.putBoolean(ProviderItem.DANGER_ON, danger_on); + newFragment.setArguments(data); + newFragment.show(fragment_transaction, NewProviderDialog.TAG); + } + + public void showAndSelectProvider(String provider_main_url, boolean danger_on) { + try { + provider = new Provider(new URL((provider_main_url))); + adapter.add(provider); + adapter.saveProviders(); + autoSelectProvider(provider, danger_on); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + private void autoSelectProvider(Provider provider, boolean danger_on) { + preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); + this.provider = provider; + onItemSelectedLogic(); + showProgressBar(); + } + + /** + * Asks ProviderAPI to download a new provider.json file + * + * @param danger_on tells if HTTPS client should bypass certificate errors + */ + public void setUpProvider(boolean danger_on) { + mConfigState.setAction(SETTING_UP_PROVIDER); + Intent providerAPICommand = new Intent(this, ProviderAPI.class); + Bundle parameters = new Bundle(); + parameters.putString(Provider.MAIN_URL, provider.getMainUrl().toString()); + parameters.putBoolean(ProviderItem.DANGER_ON, danger_on); + if (provider.hasCertificatePin()){ + parameters.putString(Provider.CA_CERT_FINGERPRINT, provider.certificatePin()); + } + if (provider.hasCaCert()) { + parameters.putString(Provider.CA_CERT, provider.getCaCert()); + } + if (provider.hasDefinition()) { + parameters.putString(Provider.KEY, provider.getDefinition().toString()); + } + + providerAPICommand.setAction(ProviderAPI.SET_UP_PROVIDER); + providerAPICommand.putExtra(ProviderAPI.PARAMETERS, parameters); + + startService(providerAPICommand); + } + + /** + * Retrys setup of last used provider, allows bypassing ca certificate validation. + */ + @Override + public void retrySetUpProvider() { + cancelSettingUpProvider(); + if (!ProviderAPI.caCertDownloaded()) { + addAndSelectNewProvider(ProviderAPI.lastProviderMainUrl(), ProviderAPI.lastDangerOn()); + } else { + showProgressBar(); + adapter.hideAllBut(adapter.indexOf(provider)); + + Intent providerAPICommand = new Intent(this, ProviderAPI.class); + + providerAPICommand.setAction(ProviderAPI.SET_UP_PROVIDER); + Bundle parameters = new Bundle(); + parameters.putString(Provider.MAIN_URL, provider.getMainUrl().toString()); + providerAPICommand.putExtra(ProviderAPI.PARAMETERS, parameters); + + startService(providerAPICommand); + } + } + +} -- cgit v1.2.3