diff options
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn')
3 files changed, 42 insertions, 7 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java index d816d97e..601fb2df 100644 --- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java +++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java @@ -202,7 +202,9 @@ public class VpnProfile implements Serializable { //cfg += "management-signal\n"; cfg += "management-query-passwords\n"; cfg += "management-hold\n\n"; - cfg += getVersionEnvString(context); + + if (!configForOvpn3) + cfg += String.format("setenv IV_GUI_VER %s \n", openVpnEscape(getVersionEnvString(context))); cfg += "machine-readable-output\n"; @@ -439,7 +441,7 @@ public class VpnProfile implements Serializable { return cfg; } - private String getVersionEnvString(Context c) { + public String getVersionEnvString(Context c) { String version = "unknown"; try { PackageInfo packageinfo = c.getPackageManager().getPackageInfo(c.getPackageName(), 0); @@ -447,7 +449,7 @@ public class VpnProfile implements Serializable { } catch (PackageManager.NameNotFoundException e) { VpnStatus.logException(e); } - return String.format(Locale.US, "setenv IV_GUI_VER \"%s %s\"\n", c.getPackageName(), version); + return String.format(Locale.US, "%s %s", c.getPackageName(), version); } @@ -573,7 +575,7 @@ public class VpnProfile implements Serializable { return intent; } - String[] getKeyStoreCertificates(Context context) { + public String[] getKeyStoreCertificates(Context context) { return getKeyStoreCertificates(context, 5); } @@ -761,7 +763,7 @@ public class VpnProfile implements Serializable { } } - boolean isUserPWAuth() { + public boolean isUserPWAuth() { switch (mAuthenticationType) { case TYPE_USERPASS: case TYPE_USERPASS_CERTIFICATES: diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java index 0de791d6..ff6ccd15 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java @@ -15,6 +15,8 @@ import android.os.*; import android.os.Handler.Callback; import android.preference.PreferenceManager; import android.text.TextUtils; + +import de.blinkt.openvpn.BuildConfig; import de.blinkt.openvpn.activities.DisconnectVPN; import de.blinkt.openvpn.activities.LogWindow; import de.blinkt.openvpn.R; @@ -295,7 +297,8 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac return START_REDELIVER_INTENT; } - assert (intent != null); + if (intent == null) + return START_NOT_STICKY; // Extract information from the intent. String prefix = getPackageName(); @@ -335,7 +338,8 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); mOvpn3 = prefs.getBoolean("ovpn3", false); - mOvpn3 = false; + if (!"ovpn3".equals(BuildConfig.FLAVOR)) + mOvpn3 = false; // Open the Management Interface @@ -383,6 +387,22 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac } private OpenVPNManagement instantiateOpenVPN3Core() { + try { + Class cl = Class.forName("de.blinkt.openvpn.core.OpenVPNThreadv3"); + return (OpenVPNManagement) cl.getConstructor(OpenVpnService.class,VpnProfile.class).newInstance(this,mProfile); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } return null; } @@ -542,6 +562,11 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac } } + /** Route that is always included, used by the v3 core */ + public void addRoute (CIDRIP route) { + mRoutes.addIP(route, true); + } + public void addRoute (String dest, String mask, String gateway, String device) { CIDRIP route = new CIDRIP(dest, mask); boolean include = isAndroidTunDevice(device); diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java b/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java index 2e486dfe..0c6bb5b4 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java @@ -16,6 +16,8 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; + +import de.blinkt.openvpn.BuildConfig; import de.blinkt.openvpn.R; import de.blinkt.openvpn.api.ExternalAppDatabase; @@ -54,6 +56,12 @@ public class GeneralSettings extends PreferenceFragment implements OnPreferenceC if(devHacks.getPreferenceCount()==0) getPreferenceScreen().removePreference(devHacks); + if (!"ovpn3".equals(BuildConfig.FLAVOR)) { + PreferenceCategory appBehaviour = (PreferenceCategory) findPreference("app_behaviour"); + appBehaviour.removePreference(findPreference("ovpn3")); + } + + setClearApiSummary(); } |