diff options
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/ConfigParser.java | 16 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/OpenVPN.java | 27 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/OpenVpnService.java | 4 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/Settings_Basic.java | 2 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/VpnProfile.java | 24 |
6 files changed, 51 insertions, 23 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 2f827fe5..64b8e28b 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 ea7d60e8..913fda24 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 c23ee56d..64ecf17c 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 6cf1e42a..3c836afa 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 1b82b579..0bf3078a 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 7ca75723..dd729a06 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()); |