From: Tobias Brunner Date: Thu, 16 May 2013 11:32:50 +0000 (+0200) Subject: android: Show different error message depending on IMC state X-Git-Tag: 5.1.0dr2~2^2~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a8dc42b295590fa3abc05a9538662f3e6359ba17;p=thirdparty%2Fstrongswan.git android: Show different error message depending on IMC state --- diff --git a/src/frontends/android/res/values-de/strings.xml b/src/frontends/android/res/values-de/strings.xml index 3181e0a547..77bbbe7a22 100644 --- a/src/frontends/android/res/values-de/strings.xml +++ b/src/frontends/android/res/values-de/strings.xml @@ -94,6 +94,7 @@ Gateway ist nicht erreichbar. Authentifizierung des Gateway ist fehlgeschlagen. Benutzerauthentifizierung ist fehlgeschlagen. + Sicherheitsassessment ist fehlgeschlagen. Unbekannter Fehler während des Verbindens. Verbinden: %1$s Verbinde mit \""%1$s\". diff --git a/src/frontends/android/res/values-pl/strings.xml b/src/frontends/android/res/values-pl/strings.xml index 3ba5e1669b..9a5471530e 100644 --- a/src/frontends/android/res/values-pl/strings.xml +++ b/src/frontends/android/res/values-pl/strings.xml @@ -96,6 +96,7 @@ Bramka jest nieosiągalna Błąd przy weryfikacji bramki Błąd przy autoryzacji użytkownika + Security assessment failed. Nieznany błąd w czasie połączenia Łączenie: %1$s Tworzenie tunelu VPN z \""%1$s\". diff --git a/src/frontends/android/res/values-ru/strings.xml b/src/frontends/android/res/values-ru/strings.xml index afa21361be..9ff1eff5e9 100644 --- a/src/frontends/android/res/values-ru/strings.xml +++ b/src/frontends/android/res/values-ru/strings.xml @@ -91,6 +91,7 @@ Шлюз недоступен. Ошибка авторизаци при подключении к шлюзу. Ошибка авторизации пользователя. + Security assessment failed. Неизвестная ошибка. Подключение: %1$s Подключение к VPN с \""%1$s\". diff --git a/src/frontends/android/res/values-ua/strings.xml b/src/frontends/android/res/values-ua/strings.xml index 953ba0a540..e420a35f41 100644 --- a/src/frontends/android/res/values-ua/strings.xml +++ b/src/frontends/android/res/values-ua/strings.xml @@ -92,6 +92,7 @@ Немає зв\'язку зі шлюзом. Помилка перевірки данних аутентифікації шлюза. Помилка аутентифікації користувача. + Security assessment failed. Невідома помилка під час підключення. Підключення: %1$s Підключення VPN з \""%1$s\". diff --git a/src/frontends/android/res/values/strings.xml b/src/frontends/android/res/values/strings.xml index c91bce445b..e7b7fb6685 100644 --- a/src/frontends/android/res/values/strings.xml +++ b/src/frontends/android/res/values/strings.xml @@ -94,6 +94,7 @@ Gateway is unreachable. Verifying gateway authentication failed. User authentication failed. + Security assessment failed. Unspecified failure while connecting. Connecting: %1$s Establishing VPN with \""%1$s\". diff --git a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java index 6aec7e784e..d745d8344a 100644 --- a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java @@ -23,6 +23,7 @@ import org.strongswan.android.logic.VpnStateService; import org.strongswan.android.logic.VpnStateService.ErrorState; import org.strongswan.android.logic.VpnStateService.State; import org.strongswan.android.logic.VpnStateService.VpnStateListener; +import org.strongswan.android.logic.imc.ImcState; import android.app.AlertDialog; import android.app.Fragment; @@ -45,6 +46,7 @@ import android.widget.TextView; public class VpnStateFragment extends Fragment implements VpnStateListener { private static final String KEY_ERROR = "error"; + private static final String KEY_IMC_STATE = "imc_state"; private static final String KEY_NAME = "name"; private TextView mProfileNameView; @@ -56,6 +58,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private State mState; private AlertDialog mErrorDialog; private ErrorState mError; + private ImcState mImcState; private String mErrorProfileName; private VpnStateService mService; private final ServiceConnection mServiceConnection = new ServiceConnection() { @@ -85,9 +88,11 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mServiceConnection, Service.BIND_AUTO_CREATE); mError = ErrorState.NO_ERROR; + mImcState = ImcState.UNKNOWN; if (savedInstanceState != null && savedInstanceState.containsKey(KEY_ERROR)) { mError = (ErrorState)savedInstanceState.getSerializable(KEY_ERROR); + mImcState = (ImcState)savedInstanceState.getSerializable(KEY_IMC_STATE); mErrorProfileName = savedInstanceState.getString(KEY_NAME); } } @@ -98,6 +103,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener super.onSaveInstanceState(outState); outState.putSerializable(KEY_ERROR, mError); + outState.putSerializable(KEY_IMC_STATE, mImcState); outState.putString(KEY_NAME, mErrorProfileName); } @@ -167,6 +173,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener { State state = mService.getState(); ErrorState error = ErrorState.NO_ERROR; + ImcState imcState = ImcState.UNKNOWN; String name = "", gateway = ""; if (state != State.DISABLED) @@ -178,9 +185,10 @@ public class VpnStateFragment extends Fragment implements VpnStateListener gateway = profile.getGateway(); } error = mService.getErrorState(); + imcState = mService.getImcState(); } - if (reportError(name, state, error)) + if (reportError(name, state, error, imcState)) { return; } @@ -223,16 +231,18 @@ public class VpnStateFragment extends Fragment implements VpnStateListener } } - private boolean reportError(String name, State state, ErrorState error) + private boolean reportError(String name, State state, ErrorState error, ImcState imcState) { if (mError != ErrorState.NO_ERROR) { /* we are currently reporting an error which was not yet dismissed */ error = mError; + imcState = mImcState; name = mErrorProfileName; } else if (error != ErrorState.NO_ERROR && (state == State.CONNECTING || state == State.CONNECTED)) { /* while initiating we report errors */ mError = error; + mImcState = imcState; mErrorProfileName = name; } else @@ -257,7 +267,14 @@ public class VpnStateFragment extends Fragment implements VpnStateListener switch (error) { case AUTH_FAILED: - showErrorDialog(R.string.error_auth_failed); + if (imcState == ImcState.BLOCK) + { + showErrorDialog(R.string.error_assessment_failed); + } + else + { + showErrorDialog(R.string.error_auth_failed); + } break; case PEER_AUTH_FAILED: showErrorDialog(R.string.error_peer_auth_failed); @@ -308,6 +325,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private void clearError() { mError = ErrorState.NO_ERROR; + mImcState = ImcState.UNKNOWN; updateView(); }