From: Tobias Brunner Date: Tue, 7 Aug 2012 16:44:06 +0000 (+0200) Subject: Prompt the user for a password if none is configured in the VPN profile X-Git-Tag: 5.0.1~210^2~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1340aa12959b28f103a4c58d7db578de717fd9c;p=thirdparty%2Fstrongswan.git Prompt the user for a password if none is configured in the VPN profile --- diff --git a/src/frontends/android/res/layout/login_dialog.xml b/src/frontends/android/res/layout/login_dialog.xml new file mode 100644 index 0000000000..0262af0a3d --- /dev/null +++ b/src/frontends/android/res/layout/login_dialog.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + diff --git a/src/frontends/android/res/values/strings.xml b/src/frontends/android/res/values/strings.xml index f2db4a676a..6e6fa3aa69 100644 --- a/src/frontends/android/res/values/strings.xml +++ b/src/frontends/android/res/values/strings.xml @@ -50,4 +50,8 @@ No CA certificate selected Please select one or activate Select automatically + + Enter password to connect + Connect + diff --git a/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java index 35f8c653fc..7387dab8d3 100644 --- a/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java +++ b/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java @@ -26,14 +26,23 @@ import org.strongswan.android.ui.VpnProfileListFragment.OnVpnProfileSelectedList import android.app.ActionBar; import android.app.Activity; +import android.app.AlertDialog; +import android.app.AlertDialog.Builder; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.net.VpnService; import android.os.AsyncTask; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View; import android.view.Window; +import android.widget.EditText; public class MainActivity extends Activity implements OnVpnProfileSelectedListener { @@ -102,6 +111,8 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen { Intent intent = new Intent(this, CharonVpnService.class); intent.putExtra(VpnProfileDataSource.KEY_ID, activeProfile.getId()); + /* submit the password as the profile might not store one */ + intent.putExtra(VpnProfileDataSource.KEY_PASSWORD, activeProfile.getPassword()); this.startService(intent); } break; @@ -114,7 +125,14 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen public void onVpnProfileSelected(VpnProfile profile) { activeProfile = profile; - prepareVpnService(); + if (activeProfile.getPassword() == null) + { + new LoginDialog().show(getFragmentManager(), "LoginDialog"); + } + else + { + prepareVpnService(); + } } /** @@ -142,4 +160,37 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen setProgressBarIndeterminateVisibility(false); } } + + private class LoginDialog extends DialogFragment + { + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) + { + LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = inflater.inflate(R.layout.login_dialog, null); + EditText username = (EditText)view.findViewById(R.id.username); + username.setText(activeProfile.getUsername()); + final EditText password = (EditText)view.findViewById(R.id.password); + + Builder adb = new AlertDialog.Builder(MainActivity.this); + adb.setView(view); + adb.setTitle(getString(R.string.login_title)); + adb.setPositiveButton(R.string.login_confirm, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int whichButton) + { + activeProfile.setPassword(password.getText().toString().trim()); + prepareVpnService(); + } + }); + adb.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) + { + dismiss(); + } + }); + return adb.create(); + } + } }