diff options
| -rw-r--r-- | res/layout/client_dashboard.xml | 4 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/ConfigurationWizard.java | 12 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/Dashboard.java | 3 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/ProviderAPI.java | 70 | ||||
| -rw-r--r-- | src/se/leap/bitmaskclient/ProviderListFragment.java | 1 | 
5 files changed, 52 insertions, 38 deletions
| diff --git a/res/layout/client_dashboard.xml b/res/layout/client_dashboard.xml index 16e152be..9bda6d2e 100644 --- a/res/layout/client_dashboard.xml +++ b/res/layout/client_dashboard.xml @@ -5,7 +5,7 @@      android:layout_height="match_parent"      android:orientation="vertical"      tools:context=".Dashboard" > - +          <LinearLayout          android:id="@+id/providerLine"          android:layout_width="match_parent" @@ -68,4 +68,4 @@          android:orientation="vertical" >      </LinearLayout> -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/src/se/leap/bitmaskclient/ConfigurationWizard.java b/src/se/leap/bitmaskclient/ConfigurationWizard.java index a4d8599f..0cdd4561 100644 --- a/src/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/src/se/leap/bitmaskclient/ConfigurationWizard.java @@ -189,7 +189,8 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn  	//	resetOldConnection();
  	    ProviderItem selected_provider = getProvider(id);
  	    int provider_index = getProviderIndex(id);
 -	    startProgressBar(provider_index);
 + +	    startProgressBar(provider_index+1);  	    provider_list_fragment.hideAllBut(provider_index);  	    setUpProvider(selected_provider.providerMainUrl(), true);      }
 @@ -236,6 +237,12 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn  	    return "";
      }
 +	private void startProgressBar() {
 +	    mProgressBar.setVisibility(ProgressBar.VISIBLE);
 +	    mProgressBar.setProgress(0);
 +	    mProgressBar.setMax(3);
 +	}
 +	
  	private void startProgressBar(int list_item_index) {
  	    mProgressBar.setVisibility(ProgressBar.VISIBLE);
  	    progressbar_description.setVisibility(TextView.VISIBLE);
 @@ -253,8 +260,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn  		    ProviderItem provider = providers_iterator.next();
  		    if(provider.name().equalsIgnoreCase(id)) {
  			    break;
 -		    }
 -		    index++;
 +		    } else index++;
  	    }
  	    return index;
      }
 diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java index 8c7c495d..ecac500e 100644 --- a/src/se/leap/bitmaskclient/Dashboard.java +++ b/src/se/leap/bitmaskclient/Dashboard.java @@ -166,6 +166,8 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  		providerNameTV = (TextView) findViewById(R.id.providerName);  		providerNameTV.setText(provider.getDomain());  		providerNameTV.setTextSize(28); +		 +	    mProgressBar = (ProgressBar) findViewById(R.id.eipProgress);  		FragmentManager fragMan = getFragmentManager();  		if ( provider.hasEIP()){ @@ -224,6 +226,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf  				}  				eipStop();  			} +			//unregisterReceiver(providerAPI_broadcast_receiver_update);  			ConfigHelper.removeFromSharedPref(Provider.KEY);  			startActivityForResult(new Intent(this,ConfigurationWizard.class), SWITCH_PROVIDER);  			return true; diff --git a/src/se/leap/bitmaskclient/ProviderAPI.java b/src/se/leap/bitmaskclient/ProviderAPI.java index bf3cf662..0070b307 100644 --- a/src/se/leap/bitmaskclient/ProviderAPI.java +++ b/src/se/leap/bitmaskclient/ProviderAPI.java @@ -58,7 +58,6 @@ import org.apache.http.client.ClientProtocolException;  import org.jboss.security.srp.SRPParameters;  import org.json.JSONException;  import org.json.JSONObject; -import org.json.JSONStringer;  import se.leap.bitmaskclient.R;  import se.leap.bitmaskclient.ProviderListContent.ProviderItem; @@ -69,7 +68,6 @@ import android.os.Handler;  import android.os.ResultReceiver;  import android.util.Base64;  import android.util.Log; -import android.widget.Toast;  /**   * Implements HTTP api methods used to manage communications with the provider server. @@ -97,8 +95,8 @@ public class ProviderAPI extends IntentService {      SESSION_ID_COOKIE_KEY = "session_id_cookie_key",      SESSION_ID_KEY = "session_id",      ERRORS = "errors", -    UPDATE_PROGRESSBAR = "update_action", -    CURRENT_PROGRESS = "update data", +    UPDATE_PROGRESSBAR = "update_progressbar", +    CURRENT_PROGRESS = "current_progress",      TAG = "provider_api_tag"      ; @@ -123,6 +121,7 @@ public class ProviderAPI extends IntentService {      PROVIDER_JSON_DOWNLOADED = false,      EIP_SERVICE_JSON_DOWNLOADED = false      ; +      	public ProviderAPI() {  		super("ProviderAPI");  		Log.v("ClassName", "Provider API"); @@ -150,7 +149,7 @@ public class ProviderAPI extends IntentService {  			if(result.getBoolean(RESULT_KEY)) {  				receiver.send(PROVIDER_OK, Bundle.EMPTY);  			} else {  -				receiver.send(PROVIDER_NOK, Bundle.EMPTY); +				receiver.send(PROVIDER_NOK, result);  			}  		} else if (action.equalsIgnoreCase(SRP_AUTH)) {  			Bundle session_id_bundle = authenticateBySRP(parameters); @@ -425,39 +424,43 @@ public class ProviderAPI extends IntentService {  	 * @return a bundle with a boolean value mapped to a key named RESULT_KEY, and which is true if the update was successful.   	 */  	private Bundle setUpProvider(Bundle task) { -		Bundle result = new Bundle();  		int progress = 0;  		boolean danger_on = task.getBoolean(ProviderItem.DANGER_ON);  		String provider_main_url = task.getString(Provider.MAIN_URL); -		result.putBoolean(RESULT_KEY, false); -		if(downloadCACert(provider_main_url, danger_on)) { +		Bundle current_download = downloadCACert(provider_main_url, danger_on); +		if(current_download.containsKey(RESULT_KEY) && current_download.getBoolean(RESULT_KEY)) {  			broadcast_progress(progress++); -			CA_CERT_DOWNLOADED = true; -			if(getAndSetProviderJson(provider_main_url)) { +			//CA_CERT_DOWNLOADED = true; +			current_download = getAndSetProviderJson(provider_main_url);  +			if(current_download.containsKey(RESULT_KEY) && current_download.getBoolean(RESULT_KEY)) {  				broadcast_progress(progress++); -				PROVIDER_JSON_DOWNLOADED = true; -				if(getAndSetEipServiceJson()) { +				//PROVIDER_JSON_DOWNLOADED = true; +				current_download = getAndSetEipServiceJson();  +				if(current_download.containsKey(RESULT_KEY) && current_download.getBoolean(RESULT_KEY)) {  					broadcast_progress(progress++); -					EIP_SERVICE_JSON_DOWNLOADED = true; +					//EIP_SERVICE_JSON_DOWNLOADED = true;  				}  			}  		} -		if(CA_CERT_DOWNLOADED && PROVIDER_JSON_DOWNLOADED && EIP_SERVICE_JSON_DOWNLOADED) -			result.putBoolean(RESULT_KEY, true); -		 -		return result; +		return current_download;  	} -	private boolean downloadCACert(String provider_main_url, boolean danger_on) { +	private Bundle downloadCACert(String provider_main_url, boolean danger_on) { +		Bundle result = new Bundle();  		String cert_string = downloadWithCommercialCA(provider_main_url + "/ca.crt", danger_on); -		if(validCertificate(cert_string)) +		if(validCertificate(cert_string)) {  			ConfigHelper.saveSharedPref(Provider.CA_CERT, cert_string); -		else -			return false; +			result.putBoolean(RESULT_KEY, true); +		} else { +			String reason_to_fail = cert_string; +			result.putString(ERRORS, reason_to_fail); +			result.putBoolean(RESULT_KEY, false); +			 +		} -		return true; +		return result;  	}  	private boolean validCertificate(String cert_string) { @@ -475,8 +478,8 @@ public class ProviderAPI extends IntentService {  		return result;  	} -	private boolean getAndSetProviderJson(String provider_main_url) { -		boolean result = false; +	private Bundle getAndSetProviderJson(String provider_main_url) { +		Bundle result = new Bundle();  		String provider_dot_json_string = downloadWithProviderCA(provider_main_url + "/provider.json", true); @@ -487,28 +490,31 @@ public class ProviderAPI extends IntentService {  			ConfigHelper.saveSharedPref(Provider.KEY, provider_json);  			ConfigHelper.saveSharedPref(EIP.ALLOWED_ANON, provider_json.getJSONObject(Provider.SERVICE).getBoolean(EIP.ALLOWED_ANON)); -			ProviderItem added_provider = new ProviderItem(name, provider_main_url); -			 -			result = true; + +			result.putBoolean(RESULT_KEY, true);  		} catch (JSONException e) {  		}  		return result;  	} -	private boolean getAndSetEipServiceJson() { -		boolean result = false; - +	private Bundle getAndSetEipServiceJson() { +		Bundle result = new Bundle(); +		String eip_service_json_string = "";  		try {  			JSONObject provider_json = ConfigHelper.getJsonFromSharedPref(Provider.KEY);  			String eip_service_url = provider_json.getString(Provider.API_URL) +  "/" + provider_json.getString(Provider.API_VERSION) + "/" + EIP.SERVICE_API_PATH; -			String eip_service_json_string = downloadWithProviderCA(eip_service_url, true); +			eip_service_json_string = downloadWithProviderCA(eip_service_url, true);  			JSONObject eip_service_json = new JSONObject(eip_service_json_string);  			eip_service_json.getInt(Provider.API_RETURN_SERIAL);  			ConfigHelper.saveSharedPref(EIP.KEY, eip_service_json); -			result = true; + +			result.putBoolean(RESULT_KEY, true);  		} catch (JSONException e) { +			String reason_to_fail = eip_service_json_string; +			result.putString(ERRORS, reason_to_fail); +			result.putBoolean(RESULT_KEY, false);  		}  		return result;  	} diff --git a/src/se/leap/bitmaskclient/ProviderListFragment.java b/src/se/leap/bitmaskclient/ProviderListFragment.java index 862177a2..76628f8c 100644 --- a/src/se/leap/bitmaskclient/ProviderListFragment.java +++ b/src/se/leap/bitmaskclient/ProviderListFragment.java @@ -19,7 +19,6 @@  import se.leap.bitmaskclient.R;
  import se.leap.bitmaskclient.ProviderListContent.ProviderItem;
  import android.app.Activity;
 -import android.app.DialogFragment;
  import android.app.ListFragment;
  import android.os.Bundle;
  import android.view.LayoutInflater;
 | 
