mirror of
https://github.com/moparisthebest/SSLDroid
synced 2025-01-06 19:08:00 -05:00
Support for local settings
Signed-off-by: Balint Kovacs <blint@blint.hu>
This commit is contained in:
parent
02465d3450
commit
a447f4419f
BIN
bin/SSLDroid.apk
BIN
bin/SSLDroid.apk
Binary file not shown.
BIN
bin/classes.dex
BIN
bin/classes.dex
Binary file not shown.
Binary file not shown.
@ -1,12 +1,29 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:gravity="center">
|
android:gravity="center">
|
||||||
|
<TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
|
||||||
|
<TextView android:text="@string/local_port" android:gravity="left" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textSize="15sp" android:id="@+id/localportlabel"></TextView>
|
||||||
|
<EditText android:layout_width="70dip" android:text="@string/empty" android:id="@+id/localport" android:digits="0123456789" android:layout_height="35dip"></EditText>
|
||||||
|
</TableRow>
|
||||||
|
<TextView android:text="@string/remote_host" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:id="@+id/remotehostlabel"></TextView>
|
||||||
|
<EditText android:layout_width="wrap_content" android:id="@+id/remotehost" android:text="@string/empty" android:layout_height="35dip"></EditText>
|
||||||
|
<TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content">
|
||||||
|
<TextView android:text="@string/remote_port" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:id="@+id/remoteportlabel"></TextView>
|
||||||
|
<EditText android:text="@string/empty" android:layout_width="70dip" android:id="@+id/remoteport" android:digits="0123456789" android:layout_height="35dip"></EditText>
|
||||||
|
</TableRow>
|
||||||
|
<TextView android:text="@string/cert_file" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:id="@+id/certfilelabel"></TextView>
|
||||||
|
<EditText android:text="@string/empty" android:layout_width="wrap_content" android:layout_height="35dip" android:id="@+id/pkcsfile"></EditText>
|
||||||
|
<TextView android:layout_width="wrap_content" android:id="@+id/pkcspasslabel" android:layout_height="wrap_content" android:text="@string/pkcspass"></TextView>
|
||||||
|
<EditText android:layout_width="wrap_content" android:text="@string/empty" android:password="true" android:layout_height="35dip" android:id="@+id/pkcspass"></EditText>
|
||||||
|
<Button android:id="@+id/buttonApply" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/apply"></Button>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content" android:text="SSLDroid service control" android:gravity="center" android:textSize="20sp" android:padding="20dp"/>
|
android:layout_height="wrap_content" android:gravity="center" android:textSize="20sp" android:padding="20dp" android:text="@string/service_control" android:id="@+id/servicecontrollabel"/>
|
||||||
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonStart" android:text="Start"></Button>
|
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
|
||||||
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop" android:id="@+id/buttonStop"></Button>
|
<Button android:id="@+id/buttonStart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start"></Button>
|
||||||
</LinearLayout>
|
<Button android:id="@+id/buttonStop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop"></Button>
|
||||||
|
</TableRow>
|
||||||
|
</TableLayout>
|
@ -2,4 +2,12 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="hello">Hello World, SSLDroidGui!</string>
|
<string name="hello">Hello World, SSLDroidGui!</string>
|
||||||
<string name="app_name">SSLDroid</string>
|
<string name="app_name">SSLDroid</string>
|
||||||
|
<string name="service_control">Service Control</string>
|
||||||
|
<string name="local_port">Local port to listen on</string>
|
||||||
|
<string name="remote_host">Remote host to connect to</string>
|
||||||
|
<string name="remote_port">Remote port to connect to</string>
|
||||||
|
<string name="cert_file">PKCS12 file to use for auth</string>
|
||||||
|
<string name="empty"></string>
|
||||||
|
<string name="apply">Apply</string>
|
||||||
|
<string name="pkcspass">PKCS12 password</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -3,22 +3,60 @@ package hu.blint.ssldroid;
|
|||||||
import hu.blint.ssldroid.TcpProxy;
|
import hu.blint.ssldroid.TcpProxy;
|
||||||
import android.app.*;
|
import android.app.*;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class SSLDroid extends Service {
|
public class SSLDroid extends Service {
|
||||||
|
|
||||||
final String TAG = "SSLDroid";
|
final String TAG = "SSLDroid";
|
||||||
|
public static final String PREFS_NAME = "MyPrefsFile";
|
||||||
TcpProxy tp;
|
TcpProxy tp;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
int listenPort = 9999; // port to listen on
|
|
||||||
int targetPort = 443; // port to connect to
|
// Restore preferences
|
||||||
String targetHost = "sogo.balabit.com"; // remote host
|
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
|
||||||
String keyFile = "/mnt/sdcard/blint-imaps.p12";
|
int settingLocalport = settings.getInt("0.localPort", 0);
|
||||||
String keyPass = "titkos";
|
String settingRemotehost = settings.getString("0.remoteHost", "");
|
||||||
|
int settingRemoteport = settings.getInt("0.remotePort", 0);
|
||||||
|
String settingPkcsfile = settings.getString("0.pkcsFile", "");
|
||||||
|
String settingPkcspass = settings.getString("0.pkcsPass", "");
|
||||||
|
|
||||||
|
int listenPort;
|
||||||
|
int targetPort;
|
||||||
|
String targetHost;
|
||||||
|
String keyFile;
|
||||||
|
String keyPass;
|
||||||
|
|
||||||
|
if (settingLocalport!=0)
|
||||||
|
listenPort = settingLocalport;
|
||||||
|
else {
|
||||||
|
Toast.makeText(this, "Please set up local port first", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (settingRemotehost!="")
|
||||||
|
targetHost = settingRemotehost;
|
||||||
|
else {
|
||||||
|
Toast.makeText(this, "Please set up remote host first", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (settingRemoteport!=0)
|
||||||
|
targetPort = settingRemoteport;
|
||||||
|
else {
|
||||||
|
Toast.makeText(this, "Please set up remote port first", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (settingPkcsfile!="")
|
||||||
|
keyFile = settingPkcsfile;
|
||||||
|
else {
|
||||||
|
Toast.makeText(this, "Please set up PKCS12 file first", Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
keyPass = settingPkcspass;
|
||||||
|
|
||||||
//Toast.makeText(this, "SSLDroid Service Started", Toast.LENGTH_LONG).show();
|
//Toast.makeText(this, "SSLDroid Service Started", Toast.LENGTH_LONG).show();
|
||||||
createNotification(0, "SSLDroid is running", "SSLDroid service is running");
|
createNotification(0, "SSLDroid is running", "SSLDroid service is running");
|
||||||
Log.d(TAG, "SSLDroid Service Started");
|
Log.d(TAG, "SSLDroid Service Started");
|
||||||
|
@ -2,16 +2,66 @@ package hu.blint.ssldroid;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class SSLDroidGui extends Activity implements OnClickListener {
|
public class SSLDroidGui extends Activity implements OnClickListener {
|
||||||
private static final String TAG = "SSLDroidGui";
|
private static final String TAG = "SSLDroidGui";
|
||||||
Button buttonStart, buttonStop, showLog;
|
public static final String PREFS_NAME = "MyPrefsFile";
|
||||||
|
Button buttonStart, buttonStop, buttonApply;
|
||||||
|
|
||||||
|
public boolean saveSettings(){
|
||||||
|
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
|
||||||
|
SharedPreferences.Editor editor = settings.edit();
|
||||||
|
|
||||||
|
TextView localport = (TextView) findViewById(R.id.localport);
|
||||||
|
TextView remotehost = (TextView) findViewById(R.id.remotehost);
|
||||||
|
TextView remoteport = (TextView) findViewById(R.id.remoteport);
|
||||||
|
TextView pkcsfile = (TextView) findViewById(R.id.pkcsfile);
|
||||||
|
TextView pkcspass = (TextView) findViewById(R.id.pkcspass);
|
||||||
|
|
||||||
|
String settingLocalport = localport.getText().toString();
|
||||||
|
String settingRemotehost = remotehost.getText().toString();
|
||||||
|
String settingRemoteport = remoteport.getText().toString();
|
||||||
|
String settingPkcsfile = pkcsfile.getText().toString();
|
||||||
|
String settingPkcspass = pkcspass.getText().toString();
|
||||||
|
|
||||||
|
if (settingLocalport.length() == 0) {
|
||||||
|
Toast.makeText(this, "Required local port parameter not setup, skipping save", 5).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (settingRemotehost.length() == 0){
|
||||||
|
Toast.makeText(this, "Required remote host parameter not setup, skipping save", 5).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (settingRemoteport.length() == 0){
|
||||||
|
Toast.makeText(this, "Required remote port parameter not setup, skipping save", 5).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (settingPkcsfile.length() == 0){
|
||||||
|
Toast.makeText(this, "Required PKCS12 file parameter not setup, skipping save", 5).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
editor.putInt("0.localPort", Integer.parseInt(settingLocalport));
|
||||||
|
//Log.d(TAG, "settingSave: '"+ settingLocalport+"'");
|
||||||
|
editor.putString("0.remoteHost", settingRemotehost);
|
||||||
|
//Log.d(TAG, "settingSave: '"+ settingRemotehost+"'");
|
||||||
|
editor.putInt("0.remotePort", Integer.parseInt(settingRemoteport));
|
||||||
|
//Log.d(TAG, "settingSave: '"+ settingRemoteport+"'");
|
||||||
|
editor.putString("0.pkcsFile", settingPkcsfile);
|
||||||
|
//Log.d(TAG, "settingSave: '"+ settingPkcsfile+"'");
|
||||||
|
editor.putString("0.pkcsPass", settingPkcspass);
|
||||||
|
//Log.d(TAG, "settingSave: '"+ settingPkcspass+"'");
|
||||||
|
editor.commit();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -19,21 +69,56 @@ public class SSLDroidGui extends Activity implements OnClickListener {
|
|||||||
|
|
||||||
buttonStart = (Button) findViewById(R.id.buttonStart);
|
buttonStart = (Button) findViewById(R.id.buttonStart);
|
||||||
buttonStop = (Button) findViewById(R.id.buttonStop);
|
buttonStop = (Button) findViewById(R.id.buttonStop);
|
||||||
|
buttonApply = (Button) findViewById(R.id.buttonApply);
|
||||||
|
|
||||||
buttonStart.setOnClickListener(this);
|
buttonStart.setOnClickListener(this);
|
||||||
buttonStop.setOnClickListener(this);
|
buttonStop.setOnClickListener(this);
|
||||||
|
buttonApply.setOnClickListener(this);
|
||||||
|
|
||||||
|
TextView localport = (TextView) findViewById(R.id.localport);
|
||||||
|
TextView remotehost = (TextView) findViewById(R.id.remotehost);
|
||||||
|
TextView remoteport = (TextView) findViewById(R.id.remoteport);
|
||||||
|
TextView pkcsfile = (TextView) findViewById(R.id.pkcsfile);
|
||||||
|
TextView pkcspass = (TextView) findViewById(R.id.pkcspass);
|
||||||
|
|
||||||
|
// Restore preferences
|
||||||
|
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
|
||||||
|
int settingLocalport = settings.getInt("0.localPort", 0);
|
||||||
|
String settingRemotehost = settings.getString("0.remoteHost", "");
|
||||||
|
int settingRemoteport = settings.getInt("0.remotePort", 0);
|
||||||
|
String settingPkcsfile = settings.getString("0.pkcsFile", "");
|
||||||
|
String settingPkcspass = settings.getString("0.pkcsPass", "");
|
||||||
|
|
||||||
|
if (settingLocalport!=0)
|
||||||
|
localport.setText(String.valueOf(settingLocalport));
|
||||||
|
if (settingRemotehost!="")
|
||||||
|
remotehost.setText(settingRemotehost);
|
||||||
|
if (settingRemoteport!=0)
|
||||||
|
remoteport.setText(String.valueOf(settingRemoteport));
|
||||||
|
if (settingPkcsfile!="")
|
||||||
|
pkcsfile.setText(settingPkcsfile);
|
||||||
|
if (settingPkcspass!="")
|
||||||
|
pkcspass.setText(settingPkcspass);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClick(View src) {
|
public void onClick(View src) {
|
||||||
switch (src.getId()) {
|
switch (src.getId()) {
|
||||||
case R.id.buttonStart:
|
case R.id.buttonStart:
|
||||||
Log.d(TAG, "onClick: starting service");
|
Log.d(TAG, "Starting service");
|
||||||
startService(new Intent(this, SSLDroid.class));
|
startService(new Intent(this, SSLDroid.class));
|
||||||
break;
|
break;
|
||||||
case R.id.buttonStop:
|
case R.id.buttonStop:
|
||||||
Log.d(TAG, "onClick: stopping service");
|
Log.d(TAG, "Stopping service");
|
||||||
stopService(new Intent(this, SSLDroid.class));
|
stopService(new Intent(this, SSLDroid.class));
|
||||||
break;
|
break;
|
||||||
|
case R.id.buttonApply:
|
||||||
|
Log.d(TAG, "Saving settings...");
|
||||||
|
if (saveSettings()){
|
||||||
|
Log.d(TAG, "Restarting service after setting save");
|
||||||
|
stopService(new Intent(this, SSLDroid.class));
|
||||||
|
startService(new Intent(this, SSLDroid.class));
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user