From 2eb79a51856b05fc2636d81ed15bd75755646972 Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Tue, 17 Jun 2014 16:32:49 -0400 Subject: [PATCH] fulfilles the wishes of #12413 by support --default-torrc and -f --- .../android/service/TorResourceInstaller.java | 29 +------- .../android/service/TorService.java | 73 +++++++++++++++---- 2 files changed, 63 insertions(+), 39 deletions(-) diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java index 94783841..3e91ea44 100644 --- a/src/org/torproject/android/service/TorResourceInstaller.java +++ b/src/org/torproject/android/service/TorResourceInstaller.java @@ -116,35 +116,12 @@ public class TorResourceInstaller implements TorServiceConstants { return true; } - public boolean updateTorConfig (File fileTorRc, String extraLines) throws IOException, FileNotFoundException, TimeoutException + public boolean updateTorConfigCustom (File fileTorRcCustom, String extraLines) throws IOException, FileNotFoundException, TimeoutException { - InputStream is; - - Shell shell = Shell.startShell(new ArrayList(),installFolder.getAbsolutePath()); - - is = context.getResources().openRawResource(R.raw.torrc); - shell.add(new SimpleCommand(COMMAND_RM_FORCE + fileTorRc.getAbsolutePath())).waitForFinish(); - streamToFile(is,fileTorRc, false, false); - if (extraLines != null && extraLines.length() > 0) - { - StringBufferInputStream sbis = new StringBufferInputStream('\n' + extraLines + '\n'); - streamToFile(sbis,fileTorRc,true,false); - } - - is = context.getResources().openRawResource(R.raw.torrcdiag); - fileTorRc = new File(installFolder, TORRCDIAG_ASSET_KEY); - shell.add(new SimpleCommand(COMMAND_RM_FORCE + fileTorRc.getAbsolutePath())).waitForFinish(); - streamToFile(is,fileTorRc, false, false); - - if (extraLines != null && extraLines.length() > 0) - { - StringBufferInputStream sbis = new StringBufferInputStream('\n' + extraLines + '\n'); - streamToFile(sbis,fileTorRc,true,false); - } - - shell.close(); + StringBufferInputStream sbis = new StringBufferInputStream(extraLines + '\n'); + streamToFile(sbis,fileTorRcCustom,false,false); return true; } diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 5acb900d..cca714c6 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -23,8 +23,6 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; -import java.util.Timer; -import java.util.TimerTask; import java.util.concurrent.TimeoutException; import net.freehaven.tor.control.ConfigEntry; @@ -54,6 +52,7 @@ import android.graphics.Color; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; +import android.os.Handler; import android.os.IBinder; import android.os.RemoteCallbackList; import android.os.RemoteException; @@ -194,7 +193,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst public int getTorStatus () { - + return currentStatus; } @@ -236,10 +235,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst if (notifyId == ERROR_NOTIFY_ID) { mNotifyBuilder.setTicker(notifyMsg); - mNotifyBuilder.setOngoing(false); mNotifyBuilder.setLights(Color.RED, 1000, 1000); mNotifyBuilder.setSmallIcon(R.drawable.ic_stat_notifyerr); } + else + { + mNotifyBuilder.setTicker(""); + //mNotifyBuilder.setLights(Color.GREEN, 5000, 5000); + } if (isOngoing) { @@ -559,9 +562,10 @@ public class TorService extends Service implements TorServiceConstants, TorConst extraLines.append('\n'); extraLines.append(prefs.getString("pref_custom_torrc", "")); - logNotice("updating torrc configuration..."); + logNotice("updating torrc custom configuration..."); - boolean success = installer.updateTorConfig(fileTorRc, extraLines.toString()); + File fileTorRcCustom = new File(fileTorRc.getAbsolutePath() + ".custom"); + boolean success = installer.updateTorConfigCustom(fileTorRcCustom, extraLines.toString()); if (success) { @@ -765,7 +769,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst Shell shell = Shell.startShell(); - SimpleCommand cmdTor = new SimpleCommand(fileTor.getCanonicalPath() + " DataDirectory " + appCacheHome.getCanonicalPath() + " -f " + torrcPath + " &"); + SimpleCommand cmdTor = new SimpleCommand(fileTor.getCanonicalPath() + + " DataDirectory " + appCacheHome.getCanonicalPath() + + " --defaults-torrc " + torrcPath + + " -f " + torrcPath + ".custom" + + " &"); shell.add(cmdTor); @@ -1110,7 +1118,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst return PROFILE_ON; } - public void setTorProfile(int profile) { if (currentStatus == STATUS_OFF) @@ -1123,6 +1130,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst initTor(); currentStatus = STATUS_CONNECTING; + } catch (Exception e) { @@ -1159,6 +1167,48 @@ public class TorService extends Service implements TorServiceConstants, TorConst } + + + + private Handler mHandlerStatusChecker = null; + + private void enableStatusChecker () + { + + if (mHandlerStatusChecker != null) + mHandlerStatusChecker = new Handler(); + + mHandlerStatusChecker.postDelayed(new Runnable () + { + public void run () + { + if (conn != null) + { + try + { + String state = conn.getInfo("dormant"); + if (state != null && Integer.parseInt(state) == 0) + { + currentStatus = STATUS_ON; + + } + else + { + currentStatus = STATUS_CONNECTING; + showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off,prefPersistNotifications); + + } + } + catch (Exception e){} + + + mHandlerStatusChecker.postDelayed(this,1000); + } + + + } + },1000); + } public void newDescriptors(List orList) { @@ -1233,9 +1283,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst sendCallbackStatusMessage(written, read, mTotalTrafficWritten, mTotalTrafficRead); - // if(++notificationCounter%10==0) - // startService(new Intent(ITorService.class.getName())); - } lastWritten = written; @@ -1762,8 +1809,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst 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,prefPersistNotifications); - if (mHasRoot && mEnableTransparentProxy) - enableTransparentProxy(mTransProxyAll, mTransProxyTethering); + //if (mHasRoot && mEnableTransparentProxy) + //enableTransparentProxy(mTransProxyAll, mTransProxyTethering); } }