summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2018-10-02 18:57:28 +0200
committerArne Schwabe <arne@rfc2549.org>2018-10-02 18:57:28 +0200
commitde2173c73acd042d5364685ac36fa287161face2 (patch)
treeb063bc598f3e2bfbcb0a27daf799a419d59bbbf7 /main
parent84dd219b0e59d262bf74d6995ec5420d44a6c8ce (diff)
Fix some VPN Config import problem (closes #935)
Diffstat (limited to 'main')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/VpnProfile.java3
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java23
-rw-r--r--main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.java82
3 files changed, 79 insertions, 29 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
index 031e77ca..db8f157c 100644
--- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -122,7 +122,7 @@ public class VpnProfile implements Serializable, Cloneable {
public String mCustomConfigOptions = "";
public String mVerb = "1"; //ignored
public String mCipher = "";
- public boolean mNobind = false;
+ public boolean mNobind = true;
public boolean mUseDefaultRoutev6 = true;
public String mCustomRoutesv6 = "";
public String mKeyPassword = "";
@@ -253,6 +253,7 @@ public class VpnProfile implements Serializable, Cloneable {
mAllowLocalLAN = true;
mPushPeerInfo = false;
mMssFix = 0;
+ mNobind = false;
}
public UUID getUUID() {
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index ee0fdd05..0148bfb7 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -34,7 +34,7 @@ public class ConfigParser {
// Ignore all scripts
// in most cases these won't work and user who wish to execute scripts will
// figure out themselves
- final String[] ignoreOptions = {"tls-client",
+ private final String[] ignoreOptions = {"tls-client",
"allow-recursive-routing",
"askpass",
"auth-nocache",
@@ -42,7 +42,6 @@ public class ConfigParser {
"down",
"route-up",
"ipchange",
- "route-up",
"route-pre-down",
"auth-user-pass-verify",
"block-outside-dns",
@@ -88,15 +87,16 @@ public class ConfigParser {
"user",
"win-sys",
};
- final String[][] ignoreOptionsWithArg =
+ private final String[][] ignoreOptionsWithArg =
{
{"setenv", "IV_GUI_VER"},
+ {"setenv", "IV_PLAT_VER"},
{"setenv", "IV_OPENVPN_GUI_VERSION"},
{"engine", "dynamic"},
{"setenv", "CLIENT_CERT"},
- {"resolve-retry", "60"}
+ {"resolv-retry", "60"}
};
- final String[] connectionOptions = {
+ private final String[] connectionOptions = {
"local",
"remote",
"float",
@@ -469,7 +469,7 @@ public class ConfigParser {
}
- Vector<String> tunmtu = getOption("mtu", 1, 1);
+ Vector<String> tunmtu = getOption("tun-mtu", 1, 1);
if (tunmtu != null) {
try {
@@ -908,7 +908,16 @@ public class ConfigParser {
options.remove(option);
- if (options.size() > 0) {
+ boolean customOptions=false;
+ for (Vector<Vector<String>> option: options.values())
+ {
+ for (Vector<String> optionsline : option) {
+ if (!ignoreThisOption(optionsline)) {
+ customOptions = true;
+ }
+ }
+ }
+ if (customOptions) {
np.mCustomConfigOptions = "# These options found in the config file do not map to config settings:\n"
+ np.mCustomConfigOptions;
diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.java b/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.java
index f0047ac7..248f6089 100644
--- a/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.java
+++ b/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.java
@@ -29,7 +29,27 @@ import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
public class TestConfigParser {
- String miniconfig = "client\nremote test.blinkt.de\n";
+ public static final String fakeCerts = "<ca>\n" +
+ "-----BEGIN CERTIFICATE-----\n" +
+ "\n" +
+ "-----END CERTIFICATE-----\n" +
+ "\n" +
+ "</ca>\n" +
+ "\n" +
+ "<cert>\n" +
+ "-----BEGIN CERTIFICATE-----\n" +
+ "\n" +
+ "-----END CERTIFICATE-----\n" +
+ "\n" +
+ "</cert>\n" +
+ "\n" +
+ "<key>\n" +
+ "-----BEGIN PRIVATE KEY-----\n" +
+ "\n" +
+ "-----END PRIVATE KEY-----\n" +
+ "\n" +
+ "</key>";
+ private final String miniconfig = "client\nremote test.blinkt.de\n";
@Test
public void testHttpProxyPass() throws IOException, ConfigParser.ConfigParseError {
@@ -47,6 +67,45 @@ public class TestConfigParser {
}
@Test
+ public void cleanReImport() throws IOException, ConfigParser.ConfigParseError {
+ ConfigParser cp = new ConfigParser();
+ cp.parseConfig(new StringReader(miniconfig + fakeCerts));
+ VpnProfile vp = cp.convertProfile();
+
+ String outConfig = vp.getConfigFile(RuntimeEnvironment.application, false);
+
+ cp = new ConfigParser();
+ cp.parseConfig(new StringReader(outConfig));
+ VpnProfile vp2 = cp.convertProfile();
+
+ String outConfig2 = vp2.getConfigFile(RuntimeEnvironment.application, false);
+
+ Assert.assertEquals(outConfig, outConfig2);
+ Assert.assertFalse(vp.mUseCustomConfig);
+ Assert.assertFalse(vp2.mUseCustomConfig);
+
+ }
+
+ @Test
+ public void testCommonOptionsImport() throws IOException, ConfigParser.ConfigParseError
+ {
+ String config = "client\n"
+ + "tun-mtu 1234\n" +
+ "<connection>\n" +
+ "remote foo.bar\n" +
+ "tun-mtu 1222\n"+
+ "</connection>\n";
+
+ ConfigParser cp = new ConfigParser();
+ cp.parseConfig(new StringReader(config));
+ VpnProfile vp = cp.convertProfile();
+
+ Assert.assertEquals(1234, vp.mTunMtu);
+ Assert.assertTrue(vp.mConnections[0].mCustomConfiguration.contains("tun-mtu 1222"));
+ Assert.assertTrue(vp.mConnections[0].mUseCustomConfig);
+ }
+
+ @Test
public void testSockProxyImport() throws IOException, ConfigParser.ConfigParseError {
String proxy =
"ca baz\n" +
@@ -166,26 +225,7 @@ public class TestConfigParser {
"http-proxy-option CUSTOM-HEADER \"DNT: 1\"\n" +
"http-proxy-option CUSTOM-HEADER \"Tk: N\"\n" +
"\n" +
- "<ca>\n" +
- "-----BEGIN CERTIFICATE-----\n" +
- "\n" +
- "-----END CERTIFICATE-----\n" +
- "\n" +
- "</ca>\n" +
- "\n" +
- "<cert>\n" +
- "-----BEGIN CERTIFICATE-----\n" +
- "\n" +
- "-----END CERTIFICATE-----\n" +
- "\n" +
- "</cert>\n" +
- "\n" +
- "<key>\n" +
- "-----BEGIN PRIVATE KEY-----\n" +
- "\n" +
- "-----END PRIVATE KEY-----\n" +
- "\n" +
- "</key>";
+ fakeCerts;
ConfigParser cp = new ConfigParser();
cp.parseConfig(new StringReader(proxyconf));