From 0375f0eccdf2b22a47e0089b4a1868c3a54a527a Mon Sep 17 00:00:00 2001 From: cyberta Date: Thu, 23 Jan 2020 00:56:50 -0600 Subject: add api ip to provider class, implement ip lookup based on given provider host name --- .../main/java/se/leap/bitmaskclient/Provider.java | 59 +++++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/Provider.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java index 3dfee72c..88080a03 100644 --- a/app/src/main/java/se/leap/bitmaskclient/Provider.java +++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java @@ -52,6 +52,7 @@ public final class Provider implements Parcelable { private DefaultedURL mainUrl = new DefaultedURL(); private DefaultedURL apiUrl = new DefaultedURL(); private String providerIp = ""; + private String providerApiIp = ""; private String certificatePin = ""; private String certificatePinEncoding = ""; private String caCert = ""; @@ -77,7 +78,8 @@ public final class Provider implements Parcelable { DESCRIPTION = "description", DOMAIN = "domain", MAIN_URL = "main_url", - PROVIDER_IP = "provider_ip"; + PROVIDER_IP = "provider_ip", + PROVIDER_API_IP = "provider_api_ip"; private static final String API_TERM_NAME = "name"; @@ -91,16 +93,28 @@ public final class Provider implements Parcelable { } } - public Provider(URL mainUrl, String providerIp) { - this.mainUrl.setUrl(mainUrl); - this.providerIp = providerIp; + public Provider(String mainUrl, String providerIp, String providerApiIp) { + try { + this.mainUrl.setUrl(new URL(mainUrl)); + this.providerIp = providerIp; + this.providerApiIp = providerApiIp; + } catch (MalformedURLException e) { + e.printStackTrace(); + } } - public Provider(URL mainUrl, String providerIp, String caCert, String definition) { - this.mainUrl.setUrl(mainUrl); + public Provider(String mainUrl, String providerIp, String providerApiIp, String caCert, String definition) { + try { + this.mainUrl.setUrl(new URL(mainUrl)); + } catch (MalformedURLException e) { + e.printStackTrace(); + } if (this.providerIp != null) { this.providerIp = providerIp; } + if (this.providerApiIp != null) { + this.providerApiIp = providerApiIp; + } if (caCert != null) { this.caCert = caCert; } @@ -154,6 +168,25 @@ public final class Provider implements Parcelable { return false; } + public String getIpForHostname(String host) { + if (host != null) { + if (host.equals(mainUrl.getUrl().getHost())) { + return providerIp; + } else if (host.equals(apiUrl.getUrl().getHost())) { + return providerApiIp; + } + } + return ""; + } + + public String getProviderApiIp() { + return this.providerApiIp; + } + + public void setProviderApiIp(String providerApiIp) { + this.providerApiIp = providerApiIp; + } + public void setProviderIp(String providerIp) { this.providerIp = providerIp; } @@ -162,10 +195,6 @@ public final class Provider implements Parcelable { return this.providerIp; } - public byte[] getProviderIpAsBytes() { - return IPAddress.asBytes(providerIp); - } - public void setMainUrl(URL url) { mainUrl.setUrl(url); } @@ -286,6 +315,7 @@ public final class Provider implements Parcelable { public void writeToParcel(Parcel parcel, int i) { parcel.writeString(getMainUrlString()); parcel.writeString(getProviderIp()); + parcel.writeString(getProviderApiIp()); parcel.writeString(getDefinitionString()); parcel.writeString(getCaCert()); parcel.writeString(getEipServiceJsonString()); @@ -303,6 +333,7 @@ public final class Provider implements Parcelable { eipServiceJson.toString().equals(p.getEipServiceJson().toString())&& mainUrl.equals(p.getMainUrl()) && providerIp.equals(p.getProviderIp()) && + providerApiIp.equals(p.getProviderApiIp()) && apiUrl.equals(p.getApiUrl()) && certificatePin.equals(p.getCertificatePin()) && certificatePinEncoding.equals(p.getCertificatePinEncoding()) && @@ -345,6 +376,10 @@ public final class Provider implements Parcelable { providerIp = tmpString; } tmpString = in.readString(); + if (!tmpString.isEmpty()) { + providerApiIp = tmpString; + } + tmpString = in.readString(); if (!tmpString.isEmpty()) { definition = new JSONObject((tmpString)); parseDefinition(definition); @@ -469,10 +504,6 @@ public final class Provider implements Parcelable { return getCertificatePinEncoding() + ":" + getCertificatePin(); } - public boolean hasProviderIp() { - return !providerIp.isEmpty(); - } - /** * resets everything except the main url and the providerIp */ -- cgit v1.2.3