summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml6
-rw-r--r--res/drawable-hdpi/ic_menu_trash_holo_light.pngbin0 -> 1001 bytes
-rw-r--r--res/drawable-mdpi/ic_menu_trash_holo_light.pngbin0 -> 746 bytes
-rw-r--r--res/drawable-xhdpi/ic_menu_trash_holo_light.pngbin0 -> 1279 bytes
-rw-r--r--res/menu/logmenu.xml18
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/de/blinkt/openvpn/LaunchVPN.java2
-rw-r--r--src/de/blinkt/openvpn/LogWindow.java22
-rw-r--r--src/de/blinkt/openvpn/OpenVpnManagementThread.java16
9 files changed, 57 insertions, 11 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3541f6c..5b4bdef 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -33,10 +33,13 @@
<activity android:name="com.lamerman.FileDialog" />
<activity android:name=".AboutFragment" />
<activity android:name=".VPNPreferences" />
- <activity android:name=".LogWindow" />
+ <activity
+ android:name=".LogWindow"
+ android:label="OpenVPN Log" />
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
+
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
@@ -54,6 +57,7 @@
android:label="@string/vpn_launch_title" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
+
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
diff --git a/res/drawable-hdpi/ic_menu_trash_holo_light.png b/res/drawable-hdpi/ic_menu_trash_holo_light.png
new file mode 100644
index 0000000..c62295a
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_trash_holo_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_trash_holo_light.png b/res/drawable-mdpi/ic_menu_trash_holo_light.png
new file mode 100644
index 0000000..0829185
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_trash_holo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_trash_holo_light.png b/res/drawable-xhdpi/ic_menu_trash_holo_light.png
new file mode 100644
index 0000000..bd3fd78
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_trash_holo_light.png
Binary files differ
diff --git a/res/menu/logmenu.xml b/res/menu/logmenu.xml
index 5fcadae..80331c5 100644
--- a/res/menu/logmenu.xml
+++ b/res/menu/logmenu.xml
@@ -1,9 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
-<item android:id="@+id/clearlog"
- android:icon="@android:drawable/ic_menu_crop"
- android:title="clear log"
- android:showAsAction="ifRoom"
- />
+
+ <item
+ android:id="@+id/clearlog"
+ android:icon="@drawable/ic_menu_trash_holo_light"
+ android:showAsAction="ifRoom|withText"
+ android:title="@string/clear_log"/>
+
+ <item android:id="@+id/cancel"
+ android:icon="@android:drawable/ic_menu_close_clear_cancel"
+ android:showAsAction="ifRoom|withText"
+ android:title="@string/cancel_connection"
+ />
+
</menu> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7bc7ab9..28863ab 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -113,4 +113,8 @@
<string name="custom_config_summary">Specify custom options. Use with care!</string>
<string name="route_rejected">Route rejected by Android</string>
<string formatted="false" name="ip_not_cidr">Cannot make sense of %s and %s as IP and CIDR netmask, assuming P2P for local address (/32)</string>
+ <string name="cancel_connection">cancel</string>
+ <string name="clear_log">clear log</string>
+ <string name="title_cancel">Cancel Confirmation</string>
+ <string name="cancel_connection_query">Disconnect the connected VPN/cancel the connection attempt?</string>
</resources>
diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java
index 38a3b5d..2bd647f 100644
--- a/src/de/blinkt/openvpn/LaunchVPN.java
+++ b/src/de/blinkt/openvpn/LaunchVPN.java
@@ -255,7 +255,7 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener {
AlertDialog.Builder d = new AlertDialog.Builder(this);
d.setTitle(R.string.config_error_found);
d.setMessage(vpnok);
- d.setPositiveButton("Ok", null);
+ d.setPositiveButton(android.R.string.ok, null);
d.show();
}
diff --git a/src/de/blinkt/openvpn/LogWindow.java b/src/de/blinkt/openvpn/LogWindow.java
index f600488..001dbf1 100644
--- a/src/de/blinkt/openvpn/LogWindow.java
+++ b/src/de/blinkt/openvpn/LogWindow.java
@@ -2,7 +2,11 @@ package de.blinkt.openvpn;
import java.util.Vector;
+import android.app.AlertDialog;
+import android.app.AlertDialog.Builder;
import android.app.ListActivity;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.os.Handler;
@@ -143,12 +147,14 @@ public class LogWindow extends ListActivity {
for (DataSetObserver observer : observers) {
observer.onInvalidated();
}
- }
+ }
return true;
}
void clearLog() {
+ // Actually is probably called from GUI Thread as result of the user
+ // pressing a button. But better safe than sorry
OpenVPN.clearLog();
OpenVPN.logMessage(0,"","Log cleared.");
mHandler.sendEmptyMessage(MESSAGE_CLEARLOG);
@@ -165,6 +171,20 @@ public class LogWindow extends ListActivity {
if(item.getItemId()==R.id.clearlog) {
ladapter.clearLog();
return true;
+ } else if(item.getItemId()==R.id.cancel){
+ Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.title_cancel);
+ builder.setMessage(R.string.cancel_connection_query);
+ builder.setPositiveButton(android.R.string.yes, new OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ OpenVpnManagementThread.stopOpenVPN();
+ }
+ });
+ builder.setNegativeButton(android.R.string.no, null);
+ builder.show();
+ return true;
}
return super.onOptionsItemSelected(item);
diff --git a/src/de/blinkt/openvpn/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/OpenVpnManagementThread.java
index 00d8fe9..02e5dc4 100644
--- a/src/de/blinkt/openvpn/OpenVpnManagementThread.java
+++ b/src/de/blinkt/openvpn/OpenVpnManagementThread.java
@@ -2,6 +2,7 @@ package de.blinkt.openvpn;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Vector;
import android.net.LocalSocket;
import android.util.Log;
@@ -11,7 +12,8 @@ public class OpenVpnManagementThread implements Runnable {
private static final String TAG = "openvpn";
private LocalSocket mSocket;
private VpnProfile mProfile;
-
+private static Vector<OpenVpnManagementThread> active=new Vector<OpenVpnManagementThread>();
+
public OpenVpnManagementThread(VpnProfile profile, LocalSocket mgmtsocket) {
mProfile = profile;
mSocket = mgmtsocket;
@@ -48,6 +50,7 @@ public class OpenVpnManagementThread implements Runnable {
e.printStackTrace();
}
String pendingInput="";
+ active.add(this);
try {
@@ -68,6 +71,7 @@ public class OpenVpnManagementThread implements Runnable {
} catch (IOException e) {
e.printStackTrace();
}
+ active.remove(this);
}
@@ -133,8 +137,14 @@ public class OpenVpnManagementThread implements Runnable {
private void logStatusMessage(String command) {
- // TODO Auto-generated method stub
-
+ OpenVPN.logMessage(0,"MGMT:", command);
+ }
+
+
+ public static void stopOpenVPN() {
+ for (OpenVpnManagementThread mt: active){
+ mt.managmentCommand("signal SIGINT\n");
+ }
}
}