Added local port collision check to the tunnel details input

validation

Signed-off-by: Balint Kovacs <blint@blint.hu>
This commit is contained in:
Balint Kovacs 2011-04-26 15:16:45 +02:00
parent 8d35c15a02
commit a094fa8be1
3 changed files with 27 additions and 3 deletions

View File

@ -56,6 +56,7 @@ public class SSLDroid extends Service {
}
cursor.deactivate();
cursor.close();
dbHelper.close();
createNotification(0, true, "SSLDroid is running", "Started and serving "+tunnelcount+" tunnels");
Log.d(TAG, "SSLDroid Service Started");
@ -73,6 +74,7 @@ public class SSLDroid extends Service {
@Override
public void onDestroy() {
dbHelper.close();
try {
for (TcpProxy proxy : tp) {
proxy.stop();

View File

@ -73,7 +73,6 @@ public class SSLDroidTunnelDetails extends Activity {
populateFields();
confirmButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//TODO: put local port collision check here
if (name.getText().length() == 0) {
Toast.makeText(getBaseContext(), "Required tunnel name parameter not setup, skipping save", 5).show();
return;
@ -95,7 +94,20 @@ public class SSLDroidTunnelDetails extends Activity {
if (cPort < 1025 || cPort > 65535) {
Toast.makeText(getBaseContext(), "Local port parameter not in valid range (1025-65535)", 5).show();
return;
}
}
//check if the requested port is colliding with a port already configured for another tunnel
SSLDroidDbAdapter dbHelper = new SSLDroidDbAdapter(getBaseContext());
dbHelper.open();
Cursor cursor = dbHelper.fetchAllLocalPorts();
startManagingCursor(cursor);
while (cursor.moveToNext()){
String cDbName = cursor.getString(cursor.getColumnIndexOrThrow(SSLDroidDbAdapter.KEY_NAME));
int cDbPort = cursor.getInt(cursor.getColumnIndexOrThrow(SSLDroidDbAdapter.KEY_LOCALPORT));
if (cPort == cDbPort){
Toast.makeText(getBaseContext(), "Local port already configured in tunnel '"+cDbName+"', please change...", 5).show();
return;
}
}
}
//remote host validation
if (remotehost.getText().length() == 0){

View File

@ -68,7 +68,7 @@ public class SSLDroidDbAdapter {
}
/**
* Return a Cursor over the list of all tunnel in the database
* Return a Cursor over the list of all tunnels in the database
*
* @return Cursor over all notes
*/
@ -78,6 +78,16 @@ public class SSLDroidDbAdapter {
KEY_PKCSPASS }, null, null, null, null, null);
}
/**
* Return a Cursor over the list of all tunnels in the database
*
* @return Cursor over all notes
*/
public Cursor fetchAllLocalPorts() {
return database.query(DATABASE_TABLE, new String[] { KEY_NAME,
KEY_LOCALPORT }, null, null, null, null, null);
}
/**
* Return a Cursor positioned at the defined tunnel
*/