Skip to content
Snippets Groups Projects

APIv5 bugfixes

Merged cyberta requested to merge fix_apiv5_npe into master
1 file
+ 41
6
Compare changes
  • Side-by-side
  • Inline
@@ -9,9 +9,11 @@ import static se.leap.bitmaskclient.base.models.Constants.BROADCAST_RESULT_KEY;
import static se.leap.bitmaskclient.base.models.Constants.COUNTRYCODE;
import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.CORRECTLY_DOWNLOADED_EIP_SERVICE;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.CORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.DOWNLOAD_SERVICE_JSON;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.ERRORS;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.INCORRECTLY_DOWNLOADED_EIP_SERVICE;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.INCORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.PROVIDER_NOK;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.PROVIDER_OK;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.QUIETLY_UPDATE_VPN_CERTIFICATE;
@@ -19,8 +21,8 @@ import static se.leap.bitmaskclient.providersetup.ProviderAPI.SET_UP_PROVIDER;
import static se.leap.bitmaskclient.providersetup.ProviderAPI.UPDATE_INVALID_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.providersetup.ProviderSetupFailedDialog.DOWNLOAD_ERRORS.ERROR_INVALID_CERTIFICATE;
import static se.leap.bitmaskclient.providersetup.ProviderSetupObservable.DOWNLOADED_V5_BRIDGES;
import static se.leap.bitmaskclient.providersetup.ProviderSetupObservable.DOWNLOADED_V5_SERVICE_JSON;
import static se.leap.bitmaskclient.providersetup.ProviderSetupObservable.DOWNLOADED_V5_GATEWAYS;
import static se.leap.bitmaskclient.providersetup.ProviderSetupObservable.DOWNLOADED_V5_SERVICE_JSON;
import static se.leap.bitmaskclient.providersetup.ProviderSetupObservable.DOWNLOADED_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.tor.TorStatusObservable.TorStatus.OFF;
@@ -84,7 +86,6 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
break;
case QUIETLY_UPDATE_VPN_CERTIFICATE:
case UPDATE_INVALID_VPN_CERTIFICATE:
result = updateVpnCertificate(provider);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
Log.d(TAG, "successfully downloaded VPN certificate");
@@ -93,6 +94,14 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
ProviderObservable.getInstance().updateProvider(provider);
}
break;
case UPDATE_INVALID_VPN_CERTIFICATE:
result = updateVpnCertificate(provider);
if (result.getBoolean(BROADCAST_RESULT_KEY)) {
eventSender.sendToReceiverOrBroadcast(receiver, CORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE, result, provider);
} else {
eventSender.sendToReceiverOrBroadcast(receiver, INCORRECTLY_UPDATED_INVALID_VPN_CERTIFICATE, result, provider);
}
break;
}
}
@@ -103,6 +112,7 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
BitmaskMobile bm;
try {
bm = new BitmaskMobile(provider.getMainUrl(), new PreferenceHelper.SharedPreferenceStore());
bm.setDebug(BuildConfig.DEBUG);
} catch (IllegalStateException e) {
return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
}
@@ -120,12 +130,21 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
}
try {
if (provider.hasIntroducer()) {
bm.setIntroducer(provider.getIntroducer().toUrl());
}
} catch (Exception e) {
return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
}
if (PreferenceHelper.getUseBridges()) {
try {
String bridgesJson = bm.getAllBridges("", "", "", "");
provider.setBridges(bridgesJson);
} catch (Exception e) {
// TODO: send failed to fetch bridges event
return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
}
} else {
try {
@@ -137,7 +156,7 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
}
}
currentDownload.putBoolean(BROADCAST_RESULT_KEY, true);
return currentDownload;
}
@@ -191,7 +210,6 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
}
try {
// TODO: check if provider supports this API endpoint?
String gatewaysJson = bm.getAllGateways("", "", "");
Log.d(TAG, "gateways Json reponse: " + gatewaysJson);
provider.setGateways(gatewaysJson);
@@ -203,7 +221,6 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
}
try {
// TODO: check if provider supports this API endpoint?
String bridgesJson = bm.getAllBridges("", "", "", "");
Log.d(TAG, "bridges Json reponse: " + bridgesJson);
provider.setBridges(bridgesJson);
@@ -313,7 +330,25 @@ public class ProviderApiManagerV5 extends ProviderApiManagerBase implements IPro
}
protected Bundle updateVpnCertificate(Provider provider) {
return null;
Bundle currentDownload = new Bundle();
BitmaskMobile bm;
try {
bm = new BitmaskMobile(provider.getMainUrl(), new PreferenceHelper.SharedPreferenceStore());
bm.setDebug(BuildConfig.DEBUG);
} catch (IllegalStateException e) {
return eventSender.setErrorResult(currentDownload, R.string.config_error_found, null);
}
try {
String cert = bm.getOpenVPNCert();
currentDownload = loadCredentials(provider, cert);
currentDownload = validateCertificateForProvider(currentDownload, provider);
ProviderSetupObservable.updateProgress(DOWNLOADED_VPN_CERTIFICATE);
} catch (Exception e) {
return eventSender.setErrorResult(currentDownload, R.string.error_json_exception_user_message, null);
}
return currentDownload;
}
}
Loading