summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2020-01-23 01:03:39 -0600
committercyberta <cyberta@riseup.net>2020-01-23 01:03:39 -0600
commit91c35b8d30997b9c74a12256b289272d8b625fdb (patch)
tree0e5ce4547482f8173084c5b64911581159fc55fb
parent0375f0eccdf2b22a47e0089b4a1868c3a54a527a (diff)
set provider used in dns fallback resolution in ProviderApi service
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java3
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java27
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java1
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java1
4 files changed, 26 insertions, 6 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java b/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
index b3efe187..74f132b9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipSetupObserver.java
@@ -152,9 +152,6 @@ class EipSetupObserver extends BroadcastReceiver implements VpnStatus.StateListe
PreferenceHelper.storeProviderInPreferences(preferences, provider);
EipCommand.startVPN(context.getApplicationContext(), true);
break;
- case PROVIDER_NOK:
- ProviderObservable.getInstance().setProviderToSetup(null);
- break;
default:
break;
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
index 0baa4e0d..b632abc2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java
@@ -63,6 +63,9 @@ import static se.leap.bitmaskclient.Constants.CREDENTIALS_USERNAME;
import static se.leap.bitmaskclient.Constants.PROVIDER_KEY;
import static se.leap.bitmaskclient.Constants.PROVIDER_PRIVATE_KEY;
import static se.leap.bitmaskclient.Constants.PROVIDER_VPN_CERTIFICATE;
+import static se.leap.bitmaskclient.Provider.CA_CERT;
+import static se.leap.bitmaskclient.Provider.PROVIDER_API_IP;
+import static se.leap.bitmaskclient.Provider.PROVIDER_IP;
import static se.leap.bitmaskclient.ProviderAPI.BACKEND_ERROR_KEY;
import static se.leap.bitmaskclient.ProviderAPI.BACKEND_ERROR_MESSAGE;
import static se.leap.bitmaskclient.ProviderAPI.CORRECTLY_DOWNLOADED_EIP_SERVICE;
@@ -159,6 +162,7 @@ public abstract class ProviderApiManagerBase {
Bundle result = new Bundle();
switch (action) {
case UPDATE_PROVIDER_DETAILS:
+ ProviderObservable.getInstance().setProviderForDns(provider);
resetProviderDetails(provider);
Bundle task = new Bundle();
result = setUpProvider(provider, task);
@@ -167,14 +171,17 @@ public abstract class ProviderApiManagerBase {
} else {
sendToReceiverOrBroadcast(receiver, PROVIDER_NOK, result, provider);
}
+ ProviderObservable.getInstance().setProviderForDns(null);
break;
case SET_UP_PROVIDER:
+ ProviderObservable.getInstance().setProviderForDns(provider);
result = setUpProvider(provider, parameters);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
sendToReceiverOrBroadcast(receiver, PROVIDER_OK, result, provider);
} else {
sendToReceiverOrBroadcast(receiver, PROVIDER_NOK, result, provider);
}
+ ProviderObservable.getInstance().setProviderForDns(null);
break;
case SIGN_UP:
result = tryToRegister(provider, parameters);
@@ -200,22 +207,27 @@ public abstract class ProviderApiManagerBase {
}
break;
case DOWNLOAD_VPN_CERTIFICATE:
+ ProviderObservable.getInstance().setProviderForDns(provider);
result = updateVpnCertificate(provider);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
sendToReceiverOrBroadcast(receiver, CORRECTLY_DOWNLOADED_VPN_CERTIFICATE, result, provider);
} else {
sendToReceiverOrBroadcast(receiver, INCORRECTLY_DOWNLOADED_VPN_CERTIFICATE, result, provider);
}
+ ProviderObservable.getInstance().setProviderForDns(null);
break;
case UPDATE_INVALID_VPN_CERTIFICATE:
+ ProviderObservable.getInstance().setProviderForDns(provider);
result = updateVpnCertificate(provider);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
sendToReceiverOrBroadcast(receiver, CORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE, result, provider);
} else {
sendToReceiverOrBroadcast(receiver, INCORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE, result, provider);
}
+ ProviderObservable.getInstance().setProviderForDns(null);
break;
case DOWNLOAD_SERVICE_JSON:
+ ProviderObservable.getInstance().setProviderForDns(provider);
Log.d(TAG, "update eip service json");
result = getAndSetEipServiceJson(provider);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
@@ -223,6 +235,7 @@ public abstract class ProviderApiManagerBase {
} else {
sendToReceiverOrBroadcast(receiver, INCORRECTLY_DOWNLOADED_EIP_SERVICE, result, provider);
}
+ ProviderObservable.getInstance().getProviderForDns();
break;
case PROVIDER_SET_UP:
if(provider.hasEIP() && provider.hasCaCert() && provider.hasDefinition()) {
@@ -693,6 +706,8 @@ public abstract class ProviderApiManagerBase {
provider.define(getPersistedProviderDefinition(providerDomain));
provider.setPrivateKey(getPersistedPrivateKey(providerDomain));
provider.setVpnCertificate(getPersistedVPNCertificate(providerDomain));
+ provider.setProviderApiIp(getPersistedProviderApiIp(providerDomain));
+ provider.setProviderIp(getPersistedProviderIp(providerDomain));
}
}
@@ -799,11 +814,19 @@ public abstract class ProviderApiManagerBase {
}
protected String getPersistedProviderCA(String providerDomain) {
- return preferences.getString(Provider.CA_CERT + "." + providerDomain, "");
+ return getFromPersistedProvider(CA_CERT, providerDomain, preferences);
+ }
+
+ protected String getPersistedProviderApiIp(String providerDomain) {
+ return getFromPersistedProvider(PROVIDER_API_IP, providerDomain, preferences);
+ }
+
+ protected String getPersistedProviderIp(String providerDomain) {
+ return getFromPersistedProvider(PROVIDER_IP, providerDomain, preferences);
}
protected boolean hasUpdatedProviderDetails(String domain) {
- return preferences.contains(Provider.KEY + "." + domain) && preferences.contains(Provider.CA_CERT + "." + domain);
+ return preferences.contains(Provider.KEY + "." + domain) && preferences.contains(CA_CERT + "." + domain);
}
protected String getDomainFromMainURL(String mainUrl) {
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
index f403dc00..56edd534 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
@@ -161,7 +161,6 @@ public abstract class ProviderListBaseActivity extends ProviderSetupBaseActivity
if (provider != null && !provider.isDefault()) {
//TODO Code 2 pane view
providerConfigState = SETTING_UP_PROVIDER;
- ProviderObservable.getInstance().setProviderToSetup(provider);
showProgressBar();
onItemSelectedLogic();
} else {
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
index 3b8df0a8..b1bb3b07 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderSetupBaseActivity.java
@@ -153,6 +153,7 @@ public abstract class ProviderSetupBaseActivity extends ConfigWizardBaseActivity
public void cancelSettingUpProvider() {
providerConfigState = PROVIDER_NOT_SET;
provider = null;
+ ProviderObservable.getInstance().setProviderForDns(null);
hideProgressBar();
}