diff options
| -rw-r--r-- | src/se/leap/leapclient/ConfigHelper.java | 63 | ||||
| -rw-r--r-- | src/se/leap/leapclient/ConfigurationWizard.java | 46 | ||||
| -rw-r--r-- | src/se/leap/leapclient/Dashboard.java | 9 | ||||
| -rw-r--r-- | src/se/leap/leapclient/ProviderAPI.java | 21 | 
4 files changed, 91 insertions, 48 deletions
| diff --git a/src/se/leap/leapclient/ConfigHelper.java b/src/se/leap/leapclient/ConfigHelper.java index 6a70378..e8bc27c 100644 --- a/src/se/leap/leapclient/ConfigHelper.java +++ b/src/se/leap/leapclient/ConfigHelper.java @@ -18,6 +18,7 @@ import java.security.cert.X509Certificate;  import org.json.JSONException;  import org.json.JSONObject; +import android.content.Context;  import android.content.SharedPreferences;  import android.os.Environment;  import android.util.Log; @@ -88,6 +89,17 @@ public class ConfigHelper {      INCORRECTLY_DOWNLOADED_ANON_CERTIFICATE = 14      ; +     +    private static boolean checkSharedPrefs() { +    	try { +    		shared_preferences = Dashboard.getAppContext().getSharedPreferences(PREFERENCES_KEY,Context.MODE_PRIVATE); +    	} catch (Exception e) { +    		return false; +    	} +    	 +    	return true; +    } +      	public static void saveSharedPref(String shared_preferences_key, JSONObject content) {  		SharedPreferences.Editor shared_preferences_editor = shared_preferences @@ -97,16 +109,49 @@ public class ConfigHelper {  		shared_preferences_editor.commit();  	} +	public static void saveSharedPref(String shared_preferences_key, String content) { + +		SharedPreferences.Editor shared_preferences_editor = shared_preferences +				.edit(); +		shared_preferences_editor.putString(shared_preferences_key, +				content); +		shared_preferences_editor.commit(); +	} +	 +	public static void saveSharedPref(String shared_preferences_key, boolean content) { + +		SharedPreferences.Editor shared_preferences_editor = shared_preferences +				.edit(); +		shared_preferences_editor.putBoolean(shared_preferences_key, content); +		shared_preferences_editor.commit(); +	} +	  	public static String getStringFromSharedPref(String shared_preferences_key) { -		String value = ""; -		if(shared_preferences != null) { -			String content = shared_preferences.getString(shared_preferences_key, ""); -			try { -				JSONObject json_object = new JSONObject(content); -				value = json_object.toString(); -			} catch (JSONException e) { -				value = content; -			} +		String content = null; +		if ( checkSharedPrefs() ) { +			content = shared_preferences.getString(shared_preferences_key, ""); +		} +		return content; +	} +	 +	public static JSONObject getJsonFromSharedPref(String shared_preferences_key) throws JSONException { +		JSONObject content = null; +		if ( checkSharedPrefs() ) { +			content = new JSONObject( shared_preferences.getString(shared_preferences_key, "") ); +		} +		 +		return content; +	} +	 +	/* +	 * This method defaults to false. +	 * If you use this method, be sure to fail-closed on false! +	 * TODO This is obviously less than ideal...solve it! +	 */ +	public static boolean getBoolFromSharedPref(String shared_preferences_key) { +		boolean value = false; +		if ( checkSharedPrefs() ) { +			value = shared_preferences.getBoolean(shared_preferences_key, false);  		}  		return value;  	} diff --git a/src/se/leap/leapclient/ConfigurationWizard.java b/src/se/leap/leapclient/ConfigurationWizard.java index fff155a..3afbdac 100644 --- a/src/se/leap/leapclient/ConfigurationWizard.java +++ b/src/se/leap/leapclient/ConfigurationWizard.java @@ -84,7 +84,7 @@ public class ConfigurationWizard extends Activity  				provider_json = new JSONObject(resultData.getString(ConfigHelper.PROVIDER_KEY));
  				boolean danger_on = resultData.getBoolean(ConfigHelper.DANGER_ON);
  				ConfigHelper.saveSharedPref(ConfigHelper.PROVIDER_KEY, provider_json);
 -				ConfigHelper.saveSharedPref(ConfigHelper.DANGER_ON, new JSONObject().put(ConfigHelper.DANGER_ON, danger_on));
 +				ConfigHelper.saveSharedPref(ConfigHelper.DANGER_ON, danger_on);
  				downloadAnonCert();
  			} catch (JSONException e) {
  				// TODO Auto-generated catch block
 @@ -163,9 +163,8 @@ public class ConfigurationWizard extends Activity      			provider_contents = new Scanner(ConfigHelper.openFileInputStream(current_provider_item.provider_json_filename)).useDelimiter("\\A").next();
      			provider_json = new JSONObject(provider_contents);
      			ConfigHelper.saveSharedPref(ConfigHelper.PROVIDER_KEY, provider_json);
 -    			ConfigHelper.saveSharedPref(ConfigHelper.ALLOWED_ANON, new JSONObject().put(ConfigHelper.ALLOWED_ANON, provider_json.getJSONObject(ConfigHelper.SERVICE_KEY).getBoolean(ConfigHelper.ALLOWED_ANON)));
 -    			ConfigHelper.saveSharedPref(ConfigHelper.DANGER_ON, new JSONObject().put(ConfigHelper.DANGER_ON, current_provider_item.danger_on));
 -				downloadAnonCert();
 +    			ConfigHelper.saveSharedPref(ConfigHelper.ALLOWED_ANON, provider_json.getJSONObject(ConfigHelper.SERVICE_KEY).getBoolean(ConfigHelper.ALLOWED_ANON));
 +    			ConfigHelper.saveSharedPref(ConfigHelper.DANGER_ON, current_provider_item.danger_on);
      			return true;
      		}
      	} catch (JSONException e) {
 @@ -194,31 +193,28 @@ public class ConfigurationWizard extends Activity  	private boolean downloadAnonCert() {
 -		JSONObject allowed_anon;
 -		try {
 -			allowed_anon = new JSONObject(ConfigHelper.getStringFromSharedPref(ConfigHelper.ALLOWED_ANON));
 -			if(allowed_anon.getBoolean(ConfigHelper.ALLOWED_ANON)) {
 -				providerAPI_result_receiver = new ProviderAPIResultReceiver(new Handler());
 -				providerAPI_result_receiver.setReceiver(this);
 -				
 -				Intent provider_API_command = new Intent(this, ProviderAPI.class);
 -				
 -				Bundle method_and_parameters = new Bundle();
 -				
 -				method_and_parameters.putString(ConfigHelper.TYPE_OF_CERTIFICATE, ConfigHelper.ANON_CERTIFICATE);
 -				
 -				provider_API_command.putExtra(ConfigHelper.DOWNLOAD_CERTIFICATE, method_and_parameters);
 -				provider_API_command.putExtra("receiver", providerAPI_result_receiver);
 +		boolean allowed_anon; +		allowed_anon = ConfigHelper.getBoolFromSharedPref(ConfigHelper.ALLOWED_ANON);
 +		if(allowed_anon) {
 +			providerAPI_result_receiver = new ProviderAPIResultReceiver(new Handler());
 +			providerAPI_result_receiver.setReceiver(this);
 -				startService(provider_API_command);
 -				return true;
 -			} else {
 -				return false;
 -			}
 -		} catch (JSONException e) {
 +			Intent provider_API_command = new Intent(this, ProviderAPI.class);
 +
 +			Bundle method_and_parameters = new Bundle();
 +
 +			method_and_parameters.putString(ConfigHelper.TYPE_OF_CERTIFICATE, ConfigHelper.ANON_CERTIFICATE);
 +
 +			provider_API_command.putExtra(ConfigHelper.DOWNLOAD_CERTIFICATE, method_and_parameters);
 +			provider_API_command.putExtra("receiver", providerAPI_result_receiver);
 +
 +			startService(provider_API_command);
 +			return true;
 +		} else {
  			return false;
  		}
  	}
 +	
  	public void addNewProvider(View view) {
  		FragmentTransaction fragment_transaction = getFragmentManager().beginTransaction();
  	    Fragment previous_new_provider_dialog = getFragmentManager().findFragmentByTag(ConfigHelper.NEW_PROVIDER_DIALOG);
 diff --git a/src/se/leap/leapclient/Dashboard.java b/src/se/leap/leapclient/Dashboard.java index 5ffbc19..de7946e 100644 --- a/src/se/leap/leapclient/Dashboard.java +++ b/src/se/leap/leapclient/Dashboard.java @@ -16,6 +16,7 @@ import android.app.Activity;  import android.app.DialogFragment;  import android.app.Fragment;  import android.app.FragmentTransaction; +import android.content.Context;  import android.content.Intent;  import android.content.SharedPreferences;  import android.os.Bundle; @@ -34,6 +35,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  	protected static final int CONFIGURE_LEAP = 0; +	private static Context app;  	private static SharedPreferences preferences;  	private static Provider provider; @@ -45,6 +47,9 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState); +		 +		app = this; +		  		setContentView(R.layout.client_dashboard);  		preferences = getSharedPreferences(ConfigHelper.PREFERENCES_KEY,MODE_PRIVATE); @@ -288,4 +293,8 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  		}  	} +	// Used for getting Context when outside of a class extending Context +	public static Context getAppContext() { +		return app; +	}  } diff --git a/src/se/leap/leapclient/ProviderAPI.java b/src/se/leap/leapclient/ProviderAPI.java index a6a2d6b..cd19da0 100644 --- a/src/se/leap/leapclient/ProviderAPI.java +++ b/src/se/leap/leapclient/ProviderAPI.java @@ -117,8 +117,7 @@ public class ProviderAPI extends IntentService {  		boolean danger_on = task.getBoolean(ConfigHelper.DANGER_ON);  		try {  			String cert_string = getStringFromProvider(cert_url, danger_on); -			JSONObject cert_json = new JSONObject().put(ConfigHelper.MAIN_CERT_KEY, cert_string); -			ConfigHelper.saveSharedPref(ConfigHelper.MAIN_CERT_KEY, cert_json); +			ConfigHelper.saveSharedPref(ConfigHelper.MAIN_CERT_KEY, cert_string);  			JSONObject eip_service_json = getJSONFromProvider(eip_service_json_url, danger_on);  			ConfigHelper.saveSharedPref(ConfigHelper.EIP_SERVICE_KEY, eip_service_json);  			return true; @@ -227,7 +226,7 @@ public class ProviderAPI extends IntentService {  			if(provider_json == null) {  				result.putBoolean(ConfigHelper.RESULT_KEY, false);  			} else {    			 -				ConfigHelper.saveSharedPref(ConfigHelper.ALLOWED_ANON, new JSONObject().put(ConfigHelper.ALLOWED_ANON, provider_json.getJSONObject(ConfigHelper.SERVICE_KEY).getBoolean(ConfigHelper.ALLOWED_ANON))); +				ConfigHelper.saveSharedPref(ConfigHelper.ALLOWED_ANON, provider_json.getJSONObject(ConfigHelper.SERVICE_KEY).getBoolean(ConfigHelper.ALLOWED_ANON));  				String filename = provider_name + "_provider.json".replaceFirst("__", "_");  				ConfigHelper.saveFile(filename, provider_json.toString()); @@ -333,8 +332,7 @@ public class ProviderAPI extends IntentService {  		try {  			cf = CertificateFactory.getInstance("X.509"); -			String cert_json_string = ConfigHelper.getStringFromSharedPref(ConfigHelper.MAIN_CERT_KEY); -			String cert_string = new JSONObject(cert_json_string).getString(ConfigHelper.MAIN_CERT_KEY); +			String cert_string = ConfigHelper.getStringFromSharedPref(ConfigHelper.MAIN_CERT_KEY);  			cert_string = cert_string.replaceFirst("-----BEGIN CERTIFICATE-----", "").replaceFirst("-----END CERTIFICATE-----", "").trim();  			byte[] cert_bytes = Base64.decode(cert_string, Base64.DEFAULT);  			InputStream caInput =  new ByteArrayInputStream(cert_bytes); @@ -381,10 +379,8 @@ public class ProviderAPI extends IntentService {  		} catch (KeyManagementException e) {  			// TODO Auto-generated catch block  			e.printStackTrace(); -		} catch (JSONException e) { -			// TODO Auto-generated catch block -			e.printStackTrace();  		} +  		return json_file_content;  	} @@ -424,10 +420,9 @@ public class ProviderAPI extends IntentService {  	}  	private boolean getNewCert(Bundle task) { -		String provider_json_string = ConfigHelper.getStringFromSharedPref(ConfigHelper.PROVIDER_KEY);  		String type_of_certificate = task.getString(ConfigHelper.TYPE_OF_CERTIFICATE);  		try { -			JSONObject provider_json = new JSONObject(provider_json_string); +			JSONObject provider_json = ConfigHelper.getJsonFromSharedPref(ConfigHelper.PROVIDER_KEY);  			URL provider_main_url = new URL(provider_json.getString(ConfigHelper.API_URL_KEY).replace("api.", ""));  			String new_cert_string_url = provider_main_url.getProtocol() + "://" + provider_main_url.getHost() + "/" + provider_json.getString(ConfigHelper.API_VERSION_KEY) + "/" + ConfigHelper.CERT_KEY; @@ -439,12 +434,10 @@ public class ProviderAPI extends IntentService {  				CookieHandler.setDefault(cookieManager);  			} -			String danger_on_json_string = ConfigHelper.getStringFromSharedPref(ConfigHelper.DANGER_ON); -			boolean danger_on = new JSONObject(danger_on_json_string).getBoolean(ConfigHelper.DANGER_ON); +			boolean danger_on = ConfigHelper.getBoolFromSharedPref(ConfigHelper.DANGER_ON);  			String cert_string = getStringFromProvider(new_cert_string_url, danger_on);  			if(!cert_string.isEmpty()) {  -				JSONObject cert_json = new JSONObject().put(ConfigHelper.CERT_KEY, cert_string); -				ConfigHelper.saveSharedPref(ConfigHelper.CERT_KEY, cert_json); +				ConfigHelper.saveSharedPref(ConfigHelper.CERT_KEY, cert_string);  				return true;  			} else {  				return false; | 
