From 07da9cd38bf6a485943aa458cd9641b37dafbdd4 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Wed, 30 May 2012 17:17:36 +0200 Subject: Add fix for CM9 /dev/tun ownership (closes issue #35) --- src/de/blinkt/openvpn/GeneralSettings.java | 17 +++++++++++++++++ src/de/blinkt/openvpn/LaunchVPN.java | 25 ++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/de/blinkt/openvpn/GeneralSettings.java (limited to 'src') diff --git a/src/de/blinkt/openvpn/GeneralSettings.java b/src/de/blinkt/openvpn/GeneralSettings.java new file mode 100644 index 00000000..24bf2616 --- /dev/null +++ b/src/de/blinkt/openvpn/GeneralSettings.java @@ -0,0 +1,17 @@ +package de.blinkt.openvpn; +import android.os.Bundle; +import android.preference.PreferenceFragment; + +public class GeneralSettings extends PreferenceFragment { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.general_settings); + } + + + } \ No newline at end of file diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java index 5d17e6b3..b7b010a4 100644 --- a/src/de/blinkt/openvpn/LaunchVPN.java +++ b/src/de/blinkt/openvpn/LaunchVPN.java @@ -30,9 +30,11 @@ import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; +import android.content.SharedPreferences; import android.net.VpnService; import android.os.Bundle; import android.os.Parcelable; +import android.preference.PreferenceManager; import android.text.InputType; import android.text.method.PasswordTransformationMethod; import android.view.View; @@ -76,7 +78,9 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { private ProfileManager mPM; private VpnProfile mSelectedProfile; - + + + private boolean mCmfixed=false; static boolean minivpnwritten=false; @Override @@ -326,6 +330,25 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { } Intent intent = VpnService.prepare(this); + // Check if we want to fix /dev/tun + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + boolean usecm9fix = prefs.getBoolean("useCM9Fix", false); + + if(usecm9fix && !mCmfixed ) { + ProcessBuilder pb = new ProcessBuilder(new String[] {"su","-c","chown system /dev/tun"}); + try { + Process p = pb.start(); + int ret = p.waitFor(); + if(ret ==0) + mCmfixed=true; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + if (intent != null) { // Start the query -- cgit v1.2.3