From da0fb101f3b56588c2b92137fc770120eedb1cab Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Wed, 12 Oct 2016 16:01:09 -0400 Subject: [PATCH] multiple fixes to re-enable VPN mode and pdnsd daemon --- .../torproject/android/OnBootReceiver.java | 5 +- .../torproject/android/OrbotMainActivity.java | 60 +++-- .../android/vpn/VPNEnableActivity.java | 1 - app/src/main/res/layout/layout_main.xml | 225 +++++++++--------- external/Makefile | 2 +- .../android/service/TorService.java | 58 +++-- .../android/service/TorServiceConstants.java | 5 +- .../android/service/vpn/OrbotVpnManager.java | 19 +- orbotservice/src/main/jni/Application.mk | 3 +- orbotservice/src/main/res/values/pdnsd.xml | 6 +- 10 files changed, 193 insertions(+), 191 deletions(-) diff --git a/app/src/main/java/org/torproject/android/OnBootReceiver.java b/app/src/main/java/org/torproject/android/OnBootReceiver.java index 91d6beba..722f4f1b 100644 --- a/app/src/main/java/org/torproject/android/OnBootReceiver.java +++ b/app/src/main/java/org/torproject/android/OnBootReceiver.java @@ -16,10 +16,9 @@ public class OnBootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - Prefs.setContext(context); - if (Prefs.startOnBoot() && (!sReceivedBoot)) - { + if (Prefs.startOnBoot() && (!sReceivedBoot)) + { if (Prefs.useVpn()) startVpnService(context); //VPN will start Tor once it is done else diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java index c243c672..8b9cb5b0 100644 --- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java +++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java @@ -52,6 +52,7 @@ import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.SwitchCompat; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; @@ -70,10 +71,10 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.CompoundButton; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; -import android.widget.ToggleButton; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; @@ -89,9 +90,9 @@ public class OrbotMainActivity extends AppCompatActivity private TextView uploadText = null; private TextView mTxtOrbotLog = null; - private Button mBtnBrowser = null; - private ToggleButton mBtnVPN = null; - private ToggleButton mBtnBridges = null; + // private Button mBtnBrowser = null; + private SwitchCompat mBtnVPN = null; + private SwitchCompat mBtnBridges = null; private Spinner spnCountries = null; @@ -257,7 +258,7 @@ public class OrbotMainActivity extends AppCompatActivity // Gesture detection mGestureDetector = new GestureDetector(this, new MyGestureDetector()); - + /** mBtnBrowser = (Button)findViewById(R.id.btnBrowser); mBtnBrowser.setOnClickListener(new View.OnClickListener () { @@ -271,8 +272,9 @@ public class OrbotMainActivity extends AppCompatActivity }); mBtnBrowser.setEnabled(false); - - mBtnVPN = (ToggleButton)findViewById(R.id.btnVPN); + */ + + mBtnVPN = (SwitchCompat)findViewById(R.id.btnVPN); boolean canDoVPN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH; @@ -292,24 +294,23 @@ public class OrbotMainActivity extends AppCompatActivity startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class)); } - mBtnVPN.setOnClickListener(new View.OnClickListener () - { - - @Override - public void onClick(View v) { - - if (mBtnVPN.isChecked()) - startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class)); - else - stopVpnService(); - - } - - }); + mBtnVPN.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() + { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + if (isChecked) + startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class)); + else + stopVpnService(); + } + }); + + } - mBtnBridges = (ToggleButton)findViewById(R.id.btnBridges); + mBtnBridges = (SwitchCompat)findViewById(R.id.btnBridges); mBtnBridges.setChecked(Prefs.bridgesEnabled()); mBtnBridges.setOnClickListener(new View.OnClickListener () { @@ -323,7 +324,6 @@ public class OrbotMainActivity extends AppCompatActivity } else { - Toast.makeText(OrbotMainActivity.this, R.string.note_only_standard_tor_bridges_work_on_intel_x86_atom_devices, Toast.LENGTH_LONG).show(); showGetBridgePrompt(""); //if other chip ar, only stock bridges are supported } } @@ -1063,11 +1063,7 @@ public class OrbotMainActivity extends AppCompatActivity protected void onResume() { super.onResume(); - if (mPrefs != null) - { - mBtnVPN.setChecked(Prefs.useVpn()); - mBtnBridges.setChecked(Prefs.bridgesEnabled()); - } + mBtnBridges.setChecked(Prefs.bridgesEnabled()); requestTorStatus(); @@ -1124,7 +1120,7 @@ public class OrbotMainActivity extends AppCompatActivity imgStatus.setImageResource(R.drawable.toron); - mBtnBrowser.setEnabled(true); + //mBtnBrowser.setEnabled(true); if (torServiceMsg != null) { @@ -1170,7 +1166,7 @@ public class OrbotMainActivity extends AppCompatActivity else lblStatus.setText(getString(R.string.status_starting_up)); - mBtnBrowser.setEnabled(false); + // mBtnBrowser.setEnabled(false); } else if (torStatus == TorServiceConstants.STATUS_STOPPING) { @@ -1179,13 +1175,13 @@ public class OrbotMainActivity extends AppCompatActivity imgStatus.setImageResource(R.drawable.torstarting); lblStatus.setText(torServiceMsg); - mBtnBrowser.setEnabled(false); + // mBtnBrowser.setEnabled(false); } else if (torStatus == TorServiceConstants.STATUS_OFF) { imgStatus.setImageResource(R.drawable.toroff); lblStatus.setText(getString(R.string.press_to_start)); - mBtnBrowser.setEnabled(false); +// mBtnBrowser.setEnabled(false); } if (torServiceMsg != null && torServiceMsg.length() > 0) diff --git a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java index 6bbae302..9ed87d64 100644 --- a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java +++ b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java @@ -71,7 +71,6 @@ public class VPNEnableActivity extends Activity { @Override public void onClick(DialogInterface dialog, int which) { Prefs.putUseVpn(true); - startVpnService(); } diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml index 35dddc46..b8341359 100644 --- a/app/src/main/res/layout/layout_main.xml +++ b/app/src/main/res/layout/layout_main.xml @@ -30,92 +30,7 @@ android:layout_height="wrap_content" > - - - - - - - - - - - - - - - - - - + @@ -154,20 +68,20 @@ android:layout_gravity="center_horizontal|center_vertical"/> android:fontFamily="sans-serif-light" android:text="" android:lines="2" - android:maxLines="2" + android:maxLines="2" android:layout_gravity="center_horizontal" android:layout_margin="0dp" - android:layout_marginLeft="5dp" + android:layout_marginLeft="5dp" android:layout_marginRight="5dp" /> - + + - - - - + - - + + + + + + + + + + + + + + + + + + + + = 16 && Prefs.expandedNotifications()) { // Create remote view that needs to be set as bigContentView for the notification. @@ -531,7 +533,6 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY); fileXtables = new File(appBinHome, TorServiceConstants.IPTABLES_ASSET_KEY); fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY); - filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY); mEventHandler = new TorEventHandler(this); @@ -726,7 +727,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon // these states should probably be handled better sendCallbackLogMessage("Ignoring start request, currently " + mCurrentStatus); return; - } else if (mCurrentStatus == STATUS_ON && findExistingTorDaemon()) { + } else if (mCurrentStatus == STATUS_ON) { sendCallbackLogMessage("Ignoring start request, already started."); @@ -1444,7 +1445,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon @Override public void onReceive(Context context, Intent intent) { - if (mCurrentStatus != STATUS_ON) + if (mCurrentStatus == STATUS_OFF) return; SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); @@ -1484,39 +1485,36 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon { logNotice(context.getString(R.string.no_network_connectivity_putting_tor_to_sleep_)); showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off); - + } else { logNotice(context.getString(R.string.network_connectivity_is_good_waking_tor_up_)); showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor); } - - //is this a change in state? - if (isChanged) - { - try { - - if (mCurrentStatus != STATUS_OFF) - { - if (mConnectivity) - { - if (Prefs.useRoot() && Prefs.useTransparentProxying() && Prefs.transProxyNetworkRefresh()) - { - - disableTransparentProxy(); - enableTransparentProxy(); + try { - } - } - } - - } catch (Exception e) { - logException ("error updating state after network restart",e); - } + if (mCurrentStatus != STATUS_OFF) + { + if (mConnectivity) + { + if (Prefs.useRoot() && Prefs.useTransparentProxying() && Prefs.transProxyNetworkRefresh()) + { + + + disableTransparentProxy(); + enableTransparentProxy(); + + } + } + } + + } catch (Exception e) { + logException ("error updating state after network restart",e); + } - } + } diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java index e2f09641..f431b0cf 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java @@ -133,9 +133,8 @@ public interface TorServiceConstants { public static final String CMD_UPDATE_TRANS_PROXY = "update"; public static final String CMD_SET_EXIT = "setexit"; - - - public static final String BINARY_TOR_VERSION = "0.2.7.5-020120160125"; + + public static final String BINARY_TOR_VERSION = "0.2.8.1-1"; public static final String PREF_BINARY_TOR_VERSION_INSTALLED = "BINARY_TOR_VERSION_INSTALLED"; //obfsproxy diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java index ae038818..5830a858 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java @@ -86,7 +86,9 @@ public class OrbotVpnManager implements Handler.Callback { public OrbotVpnManager (VpnService service) { mService = service; - filePdnsd = mService.getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE); + + File fileBinHome = mService.getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE); + filePdnsd = new File(fileBinHome,TorServiceConstants.PDNSD_ASSET_KEY); } @@ -428,8 +430,19 @@ public class OrbotVpnManager implements Handler.Callback { ps.close(); //f.withWriter { out -> out.print conf }; - - + + /** + * + + server { + label= "upstream"; + ip = %s; + port = %d; + uptest = none; + } + */ + + File cache = new File(fileDir,"pdnsd.cache"); if (!cache.exists()) { diff --git a/orbotservice/src/main/jni/Application.mk b/orbotservice/src/main/jni/Application.mk index 25058c14..a356ed76 100644 --- a/orbotservice/src/main/jni/Application.mk +++ b/orbotservice/src/main/jni/Application.mk @@ -1,5 +1,4 @@ -#APP_ABI := armeabi x86 APP_ABI := armeabi -APP_PLATFORM := android-14 +APP_PLATFORM := android-16 APP_STL := stlport_static NDK_TOOLCHAIN_VERSION := 4.8 diff --git a/orbotservice/src/main/res/values/pdnsd.xml b/orbotservice/src/main/res/values/pdnsd.xml index 522f765a..a9ba34d7 100644 --- a/orbotservice/src/main/res/values/pdnsd.xml +++ b/orbotservice/src/main/res/values/pdnsd.xml @@ -1,6 +1,6 @@ - + global { perm_cache=0; cache_dir="/data/data/org.torproject.android/app_bin"; @@ -17,8 +17,8 @@ global { server { label= "upstream"; - ip = %s; - port = %d; + ip = %1$s; + port = %2$d; uptest = none; }