diff options
author | cyBerta <cyberta@riseup.net> | 2019-12-13 15:58:58 +0100 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2019-12-13 16:00:03 +0100 |
commit | 2267c1d82c5c0ccd3d1cd2fe9e723709c993643c (patch) | |
tree | de4b0a6d58d74205c578d90efbced5624d1f22b9 /app/src/main/java/se/leap/bitmaskclient/Provider.java | |
parent | 0977dcb66048d3039d6ff84b8d484ec90cf1c38e (diff) |
improve better server balancing: update eip-service.json every 3 days after a successful connection in order to recognize newly added gateways (#8974)
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/Provider.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/Provider.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java index 067f9b2e..507a11bf 100644 --- a/app/src/main/java/se/leap/bitmaskclient/Provider.java +++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java @@ -44,6 +44,7 @@ import static se.leap.bitmaskclient.ProviderAPI.ERRORS; */ public final class Provider implements Parcelable { + private static long EIP_SERVICE_TIMEOUT = 1000 * 60 * 60 * 24 * 3; private JSONObject definition = new JSONObject(); // Represents our Provider's provider.json private JSONObject eipServiceJson = new JSONObject(); private DefaultedURL mainUrl = new DefaultedURL(); @@ -54,6 +55,7 @@ public final class Provider implements Parcelable { private String apiVersion = ""; private String privateKey = ""; private String vpnCertificate = ""; + private long lastEipServiceUpdate = 0L; private boolean allowAnonymous; private boolean allowRegistered; @@ -268,6 +270,7 @@ public final class Provider implements Parcelable { parcel.writeString(getEipServiceJsonString()); parcel.writeString(getPrivateKey()); parcel.writeString(getVpnCertificate()); + parcel.writeLong(lastEipServiceUpdate); } @Override @@ -286,7 +289,8 @@ public final class Provider implements Parcelable { privateKey.equals(p.getPrivateKey()) && vpnCertificate.equals(p.getVpnCertificate()) && allowAnonymous == p.allowsAnonymous() && - allowRegistered == p.allowsRegistered(); + allowRegistered == p.allowsRegistered() && + lastEipServiceUpdate == p.getLastEipServiceUpdate(); } else return false; } @@ -336,6 +340,7 @@ public final class Provider implements Parcelable { if (!tmpString.isEmpty()) { this.setVpnCertificate(tmpString); } + this.lastEipServiceUpdate = in.readLong(); } catch (MalformedURLException | JSONException e) { e.printStackTrace(); } @@ -368,6 +373,18 @@ public final class Provider implements Parcelable { return allowRegistered; } + public void setLastEipServiceUpdate(long timestamp) { + lastEipServiceUpdate = timestamp; + } + + public long getLastEipServiceUpdate() { + return lastEipServiceUpdate; + } + + public boolean shouldUpdateEipServiceJson() { + return System.currentTimeMillis() - lastEipServiceUpdate >= EIP_SERVICE_TIMEOUT; + } + public boolean setEipServiceJson(JSONObject eipServiceJson) { if (eipServiceJson.has(ERRORS)) { return false; |