summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParménides GV <parmegv@sdf.org>2013-10-07 16:15:50 +0200
committercyBerta <richy@cyborgsociety.org>2013-11-15 23:53:51 +0100
commitd9c8729bfdead18aa695ceddac3a12efe6c8b568 (patch)
tree2d498408730d65b8b943f2133459a709bfd177e7
parent76d52773a237da8fcae3670a959bbe2bfe609796 (diff)
Dashboard asks for real VPN state.
Right now, the answer is always "disconnected", I think it's a problem in EIP.isRunning(). I've also added some new strings, trying to minimize the number of them scattered through litterals around the code.
-rw-r--r--res/layout/eip_service_fragment.xml2
-rwxr-xr-xres/values/strings.xml7
-rw-r--r--src/se/leap/bitmaskclient/Dashboard.java53
-rw-r--r--src/se/leap/bitmaskclient/EipServiceFragment.java8
4 files changed, 59 insertions, 11 deletions
diff --git a/res/layout/eip_service_fragment.xml b/res/layout/eip_service_fragment.xml
index e67f5651..8f5a93d0 100644
--- a/res/layout/eip_service_fragment.xml
+++ b/res/layout/eip_service_fragment.xml
@@ -65,7 +65,7 @@
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:clickable="true"
- android:text="@string/eip_status" />
+ android:text="@string/status_unknown" />
</RelativeLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dde3ad3f..b4839763 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -261,7 +261,12 @@
<string name="provider_label">Provider:</string>
<string name="provider_label_none">No provider configured</string>
<string name="eip_settings_button_description">Access EIP connection settings</string>
- <string name="eip_status">Status unknown</string>
+ <string name="status_unknown">Status unknown.</string>
+ <string name="connection_secure">Connection secure.</string>
+ <string name="future_anonymous_secured_status">Connection will be secure using an anonymous certificate.</string>
+ <string name="anonymous_secured_status">Connection secure using an anonymous certificate.</string>
+ <string name="future_authed_secured_status">Connection will be secure using your own certificate.</string>
+ <string name="authed_secured_status">Connection secure using your own certificate.</string>
<string name="eip_service_label">Encrypted Internet</string>
<string name="title_activity_configuration_wizard">Configure Bitmask</string>
<string name="provider_list_fragment_tag">Provider list fragment</string>
diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java
index 68b7d248..5066f286 100644
--- a/src/se/leap/bitmaskclient/Dashboard.java
+++ b/src/se/leap/bitmaskclient/Dashboard.java
@@ -39,6 +39,7 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
+import android.os.ResultReceiver;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -370,7 +371,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
authed_eip = false;
ConfigHelper.saveSharedPref(EIP.AUTHED_EIP, authed_eip);
- eipStatus.setText("Connection secure using anonymous certificate.");
+ changeStatusMessage(resultCode);
mProgressBar.setVisibility(ProgressBar.GONE);
mProgressBar.setProgress(0);
invalidateOptionsMenu();
@@ -383,19 +384,47 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
Toast.makeText(getApplicationContext(), R.string.log_out_failed_message, Toast.LENGTH_LONG).show();
} else if(resultCode == ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE) {
setResult(RESULT_OK);
- eipStatus.setText("Connection secure using authed certificate.");
mProgressBar.setVisibility(ProgressBar.GONE);
+ changeStatusMessage(resultCode);
//mProgressBar.setProgress(0);
Toast.makeText(getApplicationContext(), R.string.successful_authed_cert_downloaded_message, Toast.LENGTH_LONG).show();
} else if(resultCode == ProviderAPI.INCORRECTLY_DOWNLOADED_CERTIFICATE) {
setResult(RESULT_CANCELED);
mProgressBar.setVisibility(ProgressBar.GONE);
//mProgressBar.setProgress(0);
- eipStatus.setText("Connection secure using anonymous certificate.");
+ changeStatusMessage(resultCode);
Toast.makeText(getApplicationContext(), R.string.authed_cert_download_failed_message, Toast.LENGTH_LONG).show();
}
}
+ private void changeStatusMessage(final int previous_result_code) {
+ // TODO Auto-generated method stub
+ ResultReceiver eip_status_receiver = new ResultReceiver(new Handler()){
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ super.onReceiveResult(resultCode, resultData);
+ String request = resultData.getString(EIP.REQUEST_TAG);
+ if(resultCode == RESULT_OK) {
+ if(request.equalsIgnoreCase(EIP.ACTION_IS_EIP_RUNNING)) {
+ switch (previous_result_code) {
+ case ProviderAPI.LOGOUT_SUCCESSFUL: eipStatus.setText(R.string.anonymous_secured_status); break;
+ case ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE: eipStatus.setText(R.string.authed_secured_status); break;
+ }
+ }
+ } else {
+ if(request.equalsIgnoreCase(EIP.ACTION_IS_EIP_RUNNING)) {
+ switch (previous_result_code) {
+ case ProviderAPI.LOGOUT_SUCCESSFUL: eipStatus.setText(R.string.future_anonymous_secured_status); break;
+ case ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE: eipStatus.setText(R.string.future_authed_secured_status); break;
+ }
+ }
+ }
+ }
+ };
+ eipIsRunning(eip_status_receiver);
+
+ }
+
/**
* For retrieving the base application Context in classes that don't extend
* Android's Activity class
@@ -406,11 +435,19 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
return app;
}
- @Override
- public void startActivityForResult(Intent intent, int requestCode) {
- intent.putExtra(Dashboard.REQUEST_CODE, requestCode);
- super.startActivityForResult(intent, requestCode);
- }
+ /**
+ * Send a command to EIP
+ *
+ * @param action A valid String constant from EIP class representing an Intent
+ * filter for the EIP class
+ */
+ private void eipIsRunning(ResultReceiver eip_receiver){
+ // TODO validate "action"...how do we get the list of intent-filters for a class via Android API?
+ Intent eip_intent = new Intent(this, EIP.class);
+ eip_intent.setAction(EIP.ACTION_IS_EIP_RUNNING);
+ eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver);
+ startService(eip_intent);
+ }
public class ProviderAPIBroadcastReceiver_Update extends BroadcastReceiver {
diff --git a/src/se/leap/bitmaskclient/EipServiceFragment.java b/src/se/leap/bitmaskclient/EipServiceFragment.java
index 1b2cfb20..0d73f544 100644
--- a/src/se/leap/bitmaskclient/EipServiceFragment.java
+++ b/src/se/leap/bitmaskclient/EipServiceFragment.java
@@ -178,11 +178,17 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli
String statusMessage = "";
String prefix = getString(localizedResId);
if (state.equals("CONNECTED")){
+<<<<<<< HEAD
statusMessage = getString(R.string.eip_state_connected);
+=======
+ statusMessage = getResources().getString(R.string.connection_secure);
+>>>>>>> Dashboard asks for real VPN state.
getActivity().findViewById(R.id.eipProgress).setVisibility(View.GONE);
mEipStartPending = false;
} else if (state.equals("BYTECOUNT")) {
- statusMessage = logmessage;
+ statusMessage = getString(R.string.eip_state_connected); getActivity().findViewById(R.id.eipProgress).setVisibility(View.GONE);
+ mEipStartPending = false;
+
} else if ( (state.equals("NOPROCESS") && !mEipStartPending ) || state.equals("EXITING")) {
statusMessage = getString(R.string.eip_state_not_connected);
getActivity().findViewById(R.id.eipProgress).setVisibility(View.GONE);