diff --git a/src/frontends/android/res/layout/profile_detail_view.xml b/src/frontends/android/res/layout/profile_detail_view.xml
index 91cd345ff..15fe42401 100644
--- a/src/frontends/android/res/layout/profile_detail_view.xml
+++ b/src/frontends/android/res/layout/profile_detail_view.xml
@@ -1,6 +1,6 @@
Bitte geben Sie hier die Gateway-Adresse ein
Bitte geben Sie hier Ihren Benutzernamen ein
Kein CA-Zertifikat ausgewählt
Bitte wählen Sie eines aus oder aktivieren Sie Automatisch wählen
+ Bitte geben Sie eine Nummer von %1$d - %2$d ein
EAP-TNC kann Ihre Privatsphäre beeinträchtigen
Gerätedaten werden an den Gateway-Betreiber gesendet
<p>Trusted Network Connect (TNC) erlaubt Gateway-Betreibern den Gesundheitszustand von Endgeräten zu prüfen.</p><p>Dazu kann der Betreiber Daten verlangen, wie etwa eine eindeutige Identifikationsnummer, eine Liste der installierten Pakete, Systemeinstellungen oder kryptografische Prüfsummen von Dateien.</p><b>Solche Daten werden nur übermittelt nachdem die Identität des Gateways geprüft wurde.</b>
diff --git a/src/frontends/android/res/values-pl/strings.xml b/src/frontends/android/res/values-pl/strings.xml
index d0cfa48f1..a46e8da2a 100644
--- a/src/frontends/android/res/values-pl/strings.xml
+++ b/src/frontends/android/res/values-pl/strings.xml
@@ -63,11 +63,15 @@
Wybierz automatycznie
Wybierz certyfikat CA
Wybierz określony certyfikat CA
+ Show advanced settings
+ MTU:
+ (use default)
Wprowadź adres bramki
Wprowadź swoją nazwę użytkownika
Nie wybrano żadnego certyfikatu CA
Wybierz lub uaktywnij jeden Wybierz automatycznie
+ Please enter a number in the range from %1$d - %2$d
EAP-TNC may affect your privacy
Device data is sent to the gateway operator
<p>Trusted Network Connect (TNC) allows gateway operators to assess the health of a client device.</p><p>For that purpose the gateway operator may request data such as a unique identifier, a list of installed packages, system settings, or cryptographic checksums of files.</p><b>Any data will be sent only after verifying the gateway\'s identity.</b>
diff --git a/src/frontends/android/res/values-ru/strings.xml b/src/frontends/android/res/values-ru/strings.xml
index eb69183db..7fbe231d3 100644
--- a/src/frontends/android/res/values-ru/strings.xml
+++ b/src/frontends/android/res/values-ru/strings.xml
@@ -60,11 +60,15 @@
Выбрать автоматически
Выбрать сертификат CA
Выбрать CA сертификат
+ Show advanced settings
+ MTU:
+ (use default)
Пожалуйста введите адрес шлюза
Пожалуйста введите имя пользователя
Не выбран сертификат CA
Пожалуйста выберите один Выбрать автоматически
+ Please enter a number in the range from %1$d - %2$d
EAP-TNC may affect your privacy
Device data is sent to the gateway operator
<p>Trusted Network Connect (TNC) allows gateway operators to assess the health of a client device.</p><p>For that purpose the gateway operator may request data such as a unique identifier, a list of installed packages, system settings, or cryptographic checksums of files.</p><b>Any data will be sent only after verifying the gateway\'s identity.</b>
diff --git a/src/frontends/android/res/values-ua/strings.xml b/src/frontends/android/res/values-ua/strings.xml
index e23b9b9b2..19587b219 100644
--- a/src/frontends/android/res/values-ua/strings.xml
+++ b/src/frontends/android/res/values-ua/strings.xml
@@ -61,11 +61,15 @@
Вибрати автоматично
Вибрати сертифікат CA
Вибрати спеціальний сертифікат CA
+ Show advanced settings
+ MTU:
+ (use default)
Введіть адресу шлюза тут
Введіть ім\'я користувача тут
Не вибрано сертифікат CA
Будь ласка виберіть один Вибрати автоматично
+ Please enter a number in the range from %1$d - %2$d
EAP-TNC may affect your privacy
Device data is sent to the gateway operator
<p>Trusted Network Connect (TNC) allows gateway operators to assess the health of a client device.</p><p>For that purpose the gateway operator may request data such as a unique identifier, a list of installed packages, system settings, or cryptographic checksums of files.</p><b>Any data will be sent only after verifying the gateway\'s identity.</b>
diff --git a/src/frontends/android/res/values/strings.xml b/src/frontends/android/res/values/strings.xml
index 933a80aff..3e9d7337c 100644
--- a/src/frontends/android/res/values/strings.xml
+++ b/src/frontends/android/res/values/strings.xml
@@ -1,6 +1,6 @@
Please enter the gateway address here
Please enter your username here
No CA certificate selected
Please select one or activate Select automatically
+ Please enter a number in the range from %1$d - %2$d
EAP-TNC may affect your privacy
Device data is sent to the gateway operator
<p>Trusted Network Connect (TNC) allows gateway operators to assess the health of a client device.</p><p>For that purpose the gateway operator may request data such as a unique identifier, a list of installed packages, system settings, or cryptographic checksums of files.</p><b>Any data will be sent only after verifying the gateway\'s identity.</b>
diff --git a/src/frontends/android/src/org/strongswan/android/ui/VpnProfileDetailActivity.java b/src/frontends/android/src/org/strongswan/android/ui/VpnProfileDetailActivity.java
index 41cd6e98c..8d8e07f9d 100644
--- a/src/frontends/android/src/org/strongswan/android/ui/VpnProfileDetailActivity.java
+++ b/src/frontends/android/src/org/strongswan/android/ui/VpnProfileDetailActivity.java
@@ -60,6 +60,8 @@ import android.widget.TextView;
public class VpnProfileDetailActivity extends Activity
{
private static final int SELECT_TRUSTED_CERTIFICATE = 0;
+ private static final int MTU_MIN = 1280;
+ private static final int MTU_MAX = 1500;
private VpnProfileDataSource mDataSource;
private Long mId;
@@ -79,6 +81,9 @@ public class VpnProfileDetailActivity extends Activity
private CheckBox mCheckAuto;
private RelativeLayout mSelectCert;
private RelativeLayout mTncNotice;
+ private CheckBox mShowAdvanced;
+ private ViewGroup mAdvancedSettings;
+ private EditText mMTU;
@Override
public void onCreate(Bundle savedInstanceState)
@@ -108,6 +113,11 @@ public class VpnProfileDetailActivity extends Activity
mCheckAuto = (CheckBox)findViewById(R.id.ca_auto);
mSelectCert = (RelativeLayout)findViewById(R.id.select_certificate);
+ mShowAdvanced = (CheckBox)findViewById(R.id.show_advanced);
+ mAdvancedSettings = (ViewGroup)findViewById(R.id.advanced_settings);
+
+ mMTU = (EditText)findViewById(R.id.mtu);
+
mSelectVpnType.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id)
@@ -154,6 +164,14 @@ public class VpnProfileDetailActivity extends Activity
}
});
+ mShowAdvanced.setOnCheckedChangeListener(new OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
+ {
+ updateAdvancedSettings();
+ }
+ });
+
mId = savedInstanceState == null ? null : savedInstanceState.getLong(VpnProfileDataSource.KEY_ID);
if (mId == null)
{
@@ -165,6 +183,7 @@ public class VpnProfileDetailActivity extends Activity
updateCredentialView();
updateCertificateSelector();
+ updateAdvancedSettings();
}
@Override
@@ -314,6 +333,21 @@ public class VpnProfileDetailActivity extends Activity
}
}
+ /**
+ * Update the advanced settings UI depending on whether any advanced
+ * settings have already been made.
+ */
+ private void updateAdvancedSettings()
+ {
+ boolean show = mShowAdvanced.isChecked();
+ if (!show && mProfile != null)
+ {
+ show = mProfile.getMTU() != null;
+ }
+ mShowAdvanced.setVisibility(!show ? View.VISIBLE : View.GONE);
+ mAdvancedSettings.setVisibility(show ? View.VISIBLE : View.GONE);
+ }
+
/**
* Save or update the profile depending on whether we actually have a
* profile object or not (this was created in updateProfileData)
@@ -368,6 +402,12 @@ public class VpnProfileDetailActivity extends Activity
showCertificateAlert();
valid = false;
}
+ Integer mtu = getInteger(mMTU);
+ if (mtu != null && (mtu < MTU_MIN || mtu > MTU_MAX))
+ {
+ mMTU.setError(String.format(getString(R.string.alert_text_out_of_range), MTU_MIN, MTU_MAX));
+ valid = false;
+ }
return valid;
}
@@ -395,6 +435,7 @@ public class VpnProfileDetailActivity extends Activity
}
String certAlias = mCheckAuto.isChecked() ? null : mCertEntry.getAlias();
mProfile.setCertificateAlias(certAlias);
+ mProfile.setMTU(getInteger(mMTU));
}
/**
@@ -417,6 +458,7 @@ public class VpnProfileDetailActivity extends Activity
mVpnType = mProfile.getVpnType();
mUsername.setText(mProfile.getUsername());
mPassword.setText(mProfile.getPassword());
+ mMTU.setText(mProfile.getMTU() != null ? mProfile.getMTU().toString() : null);
useralias = mProfile.getUserCertificateAlias();
alias = mProfile.getCertificateAlias();
getActionBar().setTitle(mProfile.getName());
@@ -458,6 +500,17 @@ public class VpnProfileDetailActivity extends Activity
}
}
+ /**
+ * Get the integer value in the given text box or null if empty
+ *
+ * @param view text box (numeric entry assumed)
+ */
+ private Integer getInteger(EditText view)
+ {
+ String value = view.getText().toString().trim();
+ return value.isEmpty() ? null : Integer.valueOf(value);
+ }
+
private class SelectUserCertOnClickListener implements OnClickListener, KeyChainAliasCallback
{
@Override