summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/Provider.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/Provider.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Provider.java184
1 files changed, 92 insertions, 92 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java
index d7ff6633..ee06a586 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java
@@ -1,6 +1,6 @@
/**
* Copyright (c) 2013 LEAP Encryption Access Project and contributers
- *
+ *
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -16,66 +16,56 @@
*/
package se.leap.bitmaskclient;
-import android.app.Activity;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Parcel;
-import android.os.Parcelable;
+import android.os.*;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
+import org.json.*;
-import java.io.File;
-import java.io.Serializable;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Locale;
+import java.io.*;
+import java.net.*;
+import java.util.*;
/**
* @author Sean Leonard <meanderingcode@aetherislands.net>
* @author Parménides GV <parmegv@sdf.org>
- *
*/
public final class Provider implements Parcelable {
- private JSONObject definition; // Represents our Provider's provider.json
+ private JSONObject definition; // Represents our Provider's provider.json
private URL main_url;
final public static String
- API_URL = "api_uri",
- API_VERSION = "api_version",
- ALLOW_REGISTRATION = "allow_registration",
- API_RETURN_SERIAL = "serial",
- SERVICE = "service",
- KEY = "provider",
- CA_CERT = "ca_cert",
- CA_CERT_URI = "ca_cert_uri",
- CA_CERT_FINGERPRINT = "ca_cert_fingerprint",
- NAME = "name",
- DESCRIPTION = "description",
- DOMAIN = "domain",
- MAIN_URL = "main_url",
- DOT_JSON_URL = "provider_json_url"
- ;
-
- // Array of what API versions we understand
- protected static final String[] API_VERSIONS = {"1"}; // I assume we might encounter arbitrary version "numbers"
- // Some API pieces we want to know about
- private static final String API_TERM_SERVICES = "services";
- private static final String API_TERM_NAME = "name";
- private static final String API_TERM_DOMAIN = "domain";
- private static final String API_TERM_DEFAULT_LANGUAGE = "default_language";
- protected static final String[] API_EIP_TYPES = {"openvpn"};
-
- public Provider(URL main_url) {
+ API_URL = "api_uri",
+ API_VERSION = "api_version",
+ ALLOW_REGISTRATION = "allow_registration",
+ API_RETURN_SERIAL = "serial",
+ SERVICE = "service",
+ KEY = "provider",
+ CA_CERT = "ca_cert",
+ CA_CERT_URI = "ca_cert_uri",
+ CA_CERT_FINGERPRINT = "ca_cert_fingerprint",
+ NAME = "name",
+ DESCRIPTION = "description",
+ DOMAIN = "domain",
+ MAIN_URL = "main_url",
+ DOT_JSON_URL = "provider_json_url";
+
+ // Array of what API versions we understand
+ protected static final String[] API_VERSIONS = {"1"}; // I assume we might encounter arbitrary version "numbers"
+ // Some API pieces we want to know about
+ private static final String API_TERM_SERVICES = "services";
+ private static final String API_TERM_NAME = "name";
+ private static final String API_TERM_DOMAIN = "domain";
+ private static final String API_TERM_DEFAULT_LANGUAGE = "default_language";
+ protected static final String[] API_EIP_TYPES = {"openvpn"};
+
+ public Provider(URL main_url) {
this.main_url = main_url;
}
public Provider(File provider_file) {
}
+
public static final Parcelable.Creator<Provider> CREATOR
= new Parcelable.Creator<Provider>() {
public Provider createFromParcel(Parcel in) {
@@ -91,7 +81,7 @@ public final class Provider implements Parcelable {
try {
main_url = new URL(in.readString());
String definition_string = in.readString();
- if(definition_string != null)
+ if (definition_string != null)
definition = new JSONObject((definition_string));
} catch (MalformedURLException e) {
e.printStackTrace();
@@ -104,60 +94,62 @@ public final class Provider implements Parcelable {
definition = provider_json;
}
- protected JSONObject definition() { return definition; }
+ protected JSONObject definition() {
+ return definition;
+ }
- protected String getDomain(){
- return main_url.getHost();
- }
+ protected String getDomain() {
+ return main_url.getHost();
+ }
protected URL mainUrl() {
return main_url;
}
-
- protected String getName(){
- // Should we pass the locale in, or query the system here?
- String lang = Locale.getDefault().getLanguage();
- String name = "";
- try {
- if(definition != null)
- name = definition.getJSONObject(API_TERM_NAME).getString(lang);
+
+ protected String getName() {
+ // Should we pass the locale in, or query the system here?
+ String lang = Locale.getDefault().getLanguage();
+ String name = "";
+ try {
+ if (definition != null)
+ name = definition.getJSONObject(API_TERM_NAME).getString(lang);
else throw new JSONException("Provider not defined");
- } catch (JSONException e) {
- if(main_url != null) {
+ } catch (JSONException e) {
+ if (main_url != null) {
String host = main_url.getHost();
name = host.substring(0, host.indexOf("."));
}
- }
-
- return name;
- }
-
- protected String getDescription(){
- String lang = Locale.getDefault().getLanguage();
- String desc = null;
- try {
- desc = definition.getJSONObject("description").getString(lang);
- } catch (JSONException e) {
- // TODO: handle exception!!
- try {
- desc = definition.getJSONObject("description").getString( definition.getString("default_language") );
- } catch (JSONException e2) {
- // TODO: i can't believe you're doing it again!
- }
- }
-
- return desc;
- }
-
- protected boolean hasEIP() {
- try {
+ }
+
+ return name;
+ }
+
+ protected String getDescription() {
+ String lang = Locale.getDefault().getLanguage();
+ String desc = null;
+ try {
+ desc = definition.getJSONObject("description").getString(lang);
+ } catch (JSONException e) {
+ // TODO: handle exception!!
+ try {
+ desc = definition.getJSONObject("description").getString(definition.getString("default_language"));
+ } catch (JSONException e2) {
+ // TODO: i can't believe you're doing it again!
+ }
+ }
+
+ return desc;
+ }
+
+ protected boolean hasEIP() {
+ try {
JSONArray services = definition.getJSONArray(API_TERM_SERVICES); // returns ["openvpn"]
- for (int i=0;i<API_EIP_TYPES.length+1;i++){
+ for (int i = 0; i < API_EIP_TYPES.length + 1; i++) {
try {
// Walk the EIP types array looking for matches in provider's service definitions
- if ( Arrays.asList(API_EIP_TYPES).contains( services.getString(i) ) )
+ if (Arrays.asList(API_EIP_TYPES).contains(services.getString(i)))
return true;
- } catch (NullPointerException e){
+ } catch (NullPointerException e) {
e.printStackTrace();
return false;
} catch (JSONException e) {
@@ -166,11 +158,19 @@ public final class Provider implements Parcelable {
return false;
}
}
- } catch (Exception e) {
- // TODO: handle exception
- }
- return false;
- }
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return false;
+ }
+
+ public boolean allowsRegistration() {
+ try {
+ return definition.getJSONObject(Provider.SERVICE).getBoolean(Provider.ALLOW_REGISTRATION);
+ } catch (JSONException e) {
+ return false;
+ }
+ }
@Override
public int describeContents() {
@@ -180,13 +180,13 @@ public final class Provider implements Parcelable {
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(main_url.toString());
- if(definition != null)
+ if (definition != null)
parcel.writeString(definition.toString());
}
@Override
public boolean equals(Object o) {
- if(o instanceof Provider) {
+ if (o instanceof Provider) {
Provider p = (Provider) o;
return p.mainUrl().getHost().equals(mainUrl().getHost());
} else return false;