summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/de/blinkt/openvpn/ConfigParser.java16
-rw-r--r--src/de/blinkt/openvpn/OpenVPN.java27
-rw-r--r--src/de/blinkt/openvpn/OpenVpnService.java4
-rw-r--r--src/de/blinkt/openvpn/Settings_Basic.java2
-rw-r--r--src/de/blinkt/openvpn/VpnProfile.java24
6 files changed, 51 insertions, 23 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2f827fe..64b8e28 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -219,5 +219,6 @@
<string name="show_log_window">Show log window</string>
<string name="keppstatus_summary">Keep the notification displayed after the connection is established to show traffic statistics.</string>
<string name="keepstatus">Show Traffic Statistics</string>
+ <string name="mobile_info">Running on %1$s (%2$s) %3$s, Android API %4$d</string>
</resources>
diff --git a/src/de/blinkt/openvpn/ConfigParser.java b/src/de/blinkt/openvpn/ConfigParser.java
index ea7d60e..913fda2 100644
--- a/src/de/blinkt/openvpn/ConfigParser.java
+++ b/src/de/blinkt/openvpn/ConfigParser.java
@@ -216,16 +216,22 @@ public class ConfigParser {
"ipchange",
"route-up",
"auth-user-pass-verify",
- "route-gateway",
- "topology",
+ "dhcp-release",
+ "dhcp-renew",
+ "management-hold",
+ "management",
+ "management-query-passwords",
+ "pause-exit",
"persist-tun",
"persist-key",
+ "register-dns",
+ "route-gateway",
"route-metric",
+ "route-method",
+ "show-net-up",
"suppress-timestamps",
- "management-query-passwords",
"tmp-dir",
- "management-hold",
- "management"
+ "topology",
};
diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java
index c23ee56..64ecf17 100644
--- a/src/de/blinkt/openvpn/OpenVPN.java
+++ b/src/de/blinkt/openvpn/OpenVPN.java
@@ -4,9 +4,24 @@ import java.util.LinkedList;
import java.util.Vector;
import android.content.Context;
+import android.os.Build;
public class OpenVPN {
+
+ public static LinkedList<LogItem> logbuffer;
+
+ private static Vector<LogListener> logListener;
+ private static Vector<StateListener> stateListener;
+ private static String[] mBconfig;
+
+ static {
+ logbuffer = new LinkedList<LogItem>();
+ logListener = new Vector<OpenVPN.LogListener>();
+ stateListener = new Vector<OpenVPN.StateListener>();
+ logInformation();
+ }
+
static class LogItem {
public static final int ERROR = 1;
public static final int INFO = 2;
@@ -68,11 +83,6 @@ public class OpenVPN {
- public static LinkedList<LogItem> logbuffer = new LinkedList<LogItem>();
-
- private static Vector<LogListener> logListener=new Vector<OpenVPN.LogListener>();
- private static Vector<StateListener> stateListener=new Vector<OpenVPN.StateListener>();
- private static String[] mBconfig;
public interface LogListener {
void newLog(LogItem logItem);
@@ -90,6 +100,12 @@ public class OpenVPN {
synchronized static void clearLog() {
logbuffer.clear();
+ logInformation();
+ }
+
+ private static void logInformation() {
+
+ logInfo(R.string.mobile_info,Build.MODEL, Build.BOARD,Build.BRAND,Build.VERSION.SDK_INT);
}
synchronized static void addLogListener(LogListener ll){
@@ -110,7 +126,6 @@ public class OpenVPN {
}
-
synchronized public static LogItem[] getlogbuffer() {
// The stoned way of java to return an array from a vector
diff --git a/src/de/blinkt/openvpn/OpenVpnService.java b/src/de/blinkt/openvpn/OpenVpnService.java
index 6cf1e42..3c836af 100644
--- a/src/de/blinkt/openvpn/OpenVpnService.java
+++ b/src/de/blinkt/openvpn/OpenVpnService.java
@@ -19,10 +19,7 @@ package de.blinkt.openvpn;
import java.io.IOException;
import java.util.Vector;
-import de.blinkt.openvpn.OpenVPN.StateListener;
-
import android.app.Notification;
-import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
@@ -35,6 +32,7 @@ import android.net.LocalSocketAddress;
import android.net.VpnService;
import android.os.ParcelFileDescriptor;
import android.preference.PreferenceManager;
+import de.blinkt.openvpn.OpenVPN.StateListener;
public class OpenVpnService extends VpnService implements StateListener {
private Thread mServiceThread;
diff --git a/src/de/blinkt/openvpn/Settings_Basic.java b/src/de/blinkt/openvpn/Settings_Basic.java
index 1b82b57..0bf3078 100644
--- a/src/de/blinkt/openvpn/Settings_Basic.java
+++ b/src/de/blinkt/openvpn/Settings_Basic.java
@@ -39,8 +39,6 @@ import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.ToggleButton;
-
-
import de.blinkt.openvpn.R.id;
public class Settings_Basic extends Fragment implements View.OnClickListener, OnItemSelectedListener, Callback {
diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java
index 7ca7572..dd729a0 100644
--- a/src/de/blinkt/openvpn/VpnProfile.java
+++ b/src/de/blinkt/openvpn/VpnProfile.java
@@ -28,7 +28,6 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.security.KeyChain;
import android.security.KeyChainException;
-import android.util.Log;
public class VpnProfile implements Serializable{
// Parcable
@@ -262,11 +261,14 @@ public class VpnProfile implements Serializable{
if(mUsePull && mRoutenopull)
cfg += "route-nopull\n";
+ String routes = "";
+ int numroutes=0;
if(mUseDefaultRoute)
- cfg += "route 0.0.0.0 0.0.0.0\n";
+ routes += "route 0.0.0.0 0.0.0.0\n";
else
for(String route:getCustomRoutes()) {
- cfg += "route " + route + "\n";
+ routes += "route " + route + "\n";
+ numroutes++;
}
@@ -274,9 +276,18 @@ public class VpnProfile implements Serializable{
cfg += "route-ipv6 ::/0\n";
else
for(String route:getCustomRoutesv6()) {
- cfg += "route-ipv6 " + route + "\n";
+ routes += "route-ipv6 " + route + "\n";
+ numroutes++;
}
+ // Round number to next 100
+ if(numroutes> 90) {
+ numroutes = ((numroutes / 100)+1) * 100;
+ cfg+="# Alot of routes are set, increase max-routes\n";
+ cfg+="max-routes " + numroutes + "\n";
+ }
+ cfg+=routes;
+
if(mOverrideDNS || !mUsePull) {
if(nonNull(mDNS1))
cfg+="dhcp-option DNS " + mDNS1 + "\n";
@@ -386,9 +397,9 @@ public class VpnProfile implements Serializable{
private String cidrToIPAndNetmask(String route) {
String[] parts = route.split("/");
- // No /xx, return verbatim
+ // No /xx, assume /32 as netmask
if (parts.length ==1)
- return route;
+ parts = (route + "/32").split("/");
if (parts.length!=2)
return null;
@@ -481,7 +492,6 @@ public class VpnProfile implements Serializable{
cachain = KeyChain.getCertificateChain(context, mAlias);
if(cachain.length <= 1 && !nonNull(mCaFilename))
OpenVPN.logMessage(0, "", context.getString(R.string.keychain_nocacert));
-
for(X509Certificate cert:cachain) {
OpenVPN.logInfo(R.string.cert_from_keystore,cert.getSubjectDN());