summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2023-04-15 13:06:53 +0200
committercyBerta <cyberta@riseup.net>2023-04-15 13:06:53 +0200
commit601a77ad059b3da754c3baaf10b01dbc19b927be (patch)
treece7fbc789919fc91952d2233f1ab951677dc20c9 /app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java
parenta51dbb9a0bb51441786cf5763d5f0d014e803b69 (diff)
fix missing domain name of manually added providers in provider selection
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java58
1 files changed, 32 insertions, 26 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java
index 1ae2a033..775e174a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderManager.java
@@ -1,11 +1,28 @@
package se.leap.bitmaskclient.providersetup;
+import static se.leap.bitmaskclient.base.models.Constants.EXT_JSON;
+import static se.leap.bitmaskclient.base.models.Constants.EXT_PEM;
+import static se.leap.bitmaskclient.base.models.Constants.URLS;
+import static se.leap.bitmaskclient.base.models.Provider.DOMAIN;
+import static se.leap.bitmaskclient.base.models.Provider.GEOIP_URL;
+import static se.leap.bitmaskclient.base.models.Provider.MAIN_URL;
+import static se.leap.bitmaskclient.base.models.Provider.MOTD_URL;
+import static se.leap.bitmaskclient.base.models.Provider.PROVIDER_API_IP;
+import static se.leap.bitmaskclient.base.models.Provider.PROVIDER_IP;
+import static se.leap.bitmaskclient.base.utils.FileHelper.createFile;
+import static se.leap.bitmaskclient.base.utils.FileHelper.persistFile;
+import static se.leap.bitmaskclient.base.utils.InputStreamHelper.getInputStreamFrom;
+import static se.leap.bitmaskclient.base.utils.InputStreamHelper.inputStreamToJson;
+import static se.leap.bitmaskclient.base.utils.InputStreamHelper.loadInputStreamAsString;
+
import android.content.res.AssetManager;
import androidx.annotation.VisibleForTesting;
import com.pedrogomez.renderers.AdapteeCollection;
+import org.json.JSONObject;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -19,20 +36,6 @@ import java.util.Set;
import se.leap.bitmaskclient.base.models.Provider;
-import static se.leap.bitmaskclient.base.models.Constants.EXT_JSON;
-import static se.leap.bitmaskclient.base.models.Constants.EXT_PEM;
-import static se.leap.bitmaskclient.base.models.Constants.URLS;
-import static se.leap.bitmaskclient.base.models.Provider.GEOIP_URL;
-import static se.leap.bitmaskclient.base.models.Provider.MAIN_URL;
-import static se.leap.bitmaskclient.base.models.Provider.MOTD_URL;
-import static se.leap.bitmaskclient.base.models.Provider.PROVIDER_API_IP;
-import static se.leap.bitmaskclient.base.models.Provider.PROVIDER_IP;
-import static se.leap.bitmaskclient.base.utils.FileHelper.createFile;
-import static se.leap.bitmaskclient.base.utils.FileHelper.persistFile;
-import static se.leap.bitmaskclient.base.utils.InputStreamHelper.extractKeyFromInputStream;
-import static se.leap.bitmaskclient.base.utils.InputStreamHelper.getInputStreamFrom;
-import static se.leap.bitmaskclient.base.utils.InputStreamHelper.loadInputStreamAsString;
-
/**
* Created by parmegv on 4/12/14.
*/
@@ -96,11 +99,14 @@ public class ProviderManager implements AdapteeCollection<Provider> {
try {
String provider = file.substring(0, file.length() - ".url".length());
InputStream providerFile = assetsManager.open(directory + "/" + file);
- mainUrl = extractKeyFromInputStream(providerFile, MAIN_URL);
- providerIp = extractKeyFromInputStream(providerFile, PROVIDER_IP);
- providerApiIp = extractKeyFromInputStream(providerFile, PROVIDER_API_IP);
- geoipUrl = extractKeyFromInputStream(providerFile, GEOIP_URL);
- motdUrl = extractKeyFromInputStream(providerFile, MOTD_URL);
+ JSONObject providerConfig = inputStreamToJson(providerFile);
+ if (providerConfig != null) {
+ mainUrl = providerConfig.optString(MAIN_URL);
+ providerIp = providerConfig.optString(PROVIDER_IP);
+ providerApiIp = providerConfig.optString(PROVIDER_API_IP);
+ geoipUrl = providerConfig.optString(GEOIP_URL);
+ motdUrl = providerConfig.optString(MOTD_URL);
+ }
certificate = loadInputStreamAsString(assetsManager.open(provider + EXT_PEM));
providerDefinition = loadInputStreamAsString(assetsManager.open(provider + EXT_JSON));
} catch (IOException e) {
@@ -116,20 +122,20 @@ public class ProviderManager implements AdapteeCollection<Provider> {
private void addCustomProviders(File externalFilesDir) {
this.externalFilesDir = externalFilesDir;
customProviders = externalFilesDir != null && externalFilesDir.isDirectory() ?
- providersFromFiles(externalFilesDir.list()) :
+ customProvidersFromFiles(externalFilesDir.list()) :
new HashSet<>();
customProviderURLs = getProviderUrlSetFromProviderSet(customProviders);
}
- private Set<Provider> providersFromFiles(String[] files) {
+ private Set<Provider> customProvidersFromFiles(String[] files) {
Set<Provider> providers = new HashSet<>();
try {
for (String file : files) {
InputStream inputStream = getInputStreamFrom(externalFilesDir.getAbsolutePath() + "/" + file);
- String mainUrl = extractKeyFromInputStream(inputStream, MAIN_URL);
- String providerIp = extractKeyFromInputStream(inputStream, PROVIDER_IP);
- String providerApiIp = extractKeyFromInputStream(inputStream, PROVIDER_API_IP);
- providers.add(new Provider(mainUrl, providerIp, providerApiIp));
+ JSONObject providerConfig = inputStreamToJson(inputStream);
+ String mainUrl = providerConfig.optString(MAIN_URL);
+ String domain = providerConfig.optString(DOMAIN);
+ providers.add(Provider.createCustomProvider(mainUrl, domain));
}
} catch (FileNotFoundException | NullPointerException e) {
e.printStackTrace();
@@ -238,7 +244,7 @@ public class ProviderManager implements AdapteeCollection<Provider> {
*/
private void deleteLegacyCustomProviders() throws IOException, SecurityException {
Set<Provider> persistedCustomProviders = externalFilesDir != null && externalFilesDir.isDirectory() ?
- providersFromFiles(externalFilesDir.list()) : new HashSet<Provider>();
+ customProvidersFromFiles(externalFilesDir.list()) : new HashSet<Provider>();
persistedCustomProviders.removeAll(customProviders);
for (Provider providerToDelete : persistedCustomProviders) {
File providerFile = createFile(externalFilesDir, providerToDelete.getName() + EXT_JSON);