commit f18654a730c9960f21c8479442c9bdc7f56f1ffa
Author: Nathan Freitas <nathan(a)freitas.net>
Date: Sun Jan 15 10:44:50 2012 -0500
improves toolbar notifications
---
src/org/torproject/android/service/TorService.java | 77 +++++++++++---------
1 files changed, 42 insertions(+), 35 deletions(-)
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 2d1698a..a61bb30 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -158,8 +158,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
}
+ private void clearNotifications ()
+ {
+ NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ mNotificationManager.cancelAll();
+ }
- private void showToolbarNotification (String notifyMsg, int notifyId, int icon)
+ private void showToolbarNotification (String notifyMsg, int notifyId, int icon, int flags)
{
@@ -171,6 +176,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
Notification notification = new Notification(icon, tickerText, when);
+ if (flags != -1)
+ notification.flags |= flags;
+
Context context = getApplicationContext();
CharSequence contentTitle = getString(R.string.app_name);
CharSequence contentText = notifyMsg;
@@ -204,9 +212,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
_torInstance = this;
- Log.i(TAG, "service started: " + intent.getAction());
-
-
Thread thread = new Thread ()
{
@@ -217,7 +222,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} catch (Exception e) {
logNotice("unable to find tor binaries: " + e.getMessage());
- showToolbarNotification(getString(R.string.error_installing_binares), NOTIFY_ID, R.drawable.tornotificationerr);
+ showToolbarNotification(getString(R.string.error_installing_binares), NOTIFY_ID, R.drawable.tornotificationerr, -1);
Log.e(TAG, "error checking tor binaries", e);
}
@@ -255,7 +260,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
catch (Exception e)
{
currentStatus = STATUS_OFF;
- this.showToolbarNotification(getString(R.string.status_disabled), NOTIFY_ID, R.drawable.tornotificationerr);
+ this.showToolbarNotification(getString(R.string.status_disabled), NOTIFY_ID, R.drawable.tornotificationerr, -1);
Log.d(TAG,"Unable to start Tor: " + e.getMessage(),e);
}
}
@@ -283,7 +288,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
currentStatus = STATUS_OFF;
- showToolbarNotification (getString(R.string.status_disabled),NOTIFY_ID,R.drawable.tornotificationoff);
+ clearNotifications();
+
+ //showToolbarNotification (getString(R.string.status_disabled),NOTIFY_ID,R.drawable.tornotificationoff);
sendCallbackStatusMessage(getString(R.string.status_disabled));
disableTransparentProxy();
@@ -337,7 +344,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
try {
String onionHostname = Utils.readString(new FileInputStream(file));
- showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, NOTIFY_ID, R.drawable.tornotification);
+ showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, NOTIFY_ID, R.drawable.tornotification, Notification.FLAG_ONGOING_EVENT);
Editor pEdit = prefs.edit();
pEdit.putString("pref_hs_hostname",onionHostname);
pEdit.commit();
@@ -345,13 +352,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} catch (FileNotFoundException e) {
logException("unable to read onion hostname file",e);
- showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), NOTIFY_ID, R.drawable.tornotificationerr);
+ showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), NOTIFY_ID, R.drawable.tornotificationerr, -1);
return;
}
}
else
{
- showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), NOTIFY_ID, R.drawable.tornotificationerr);
+ showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), NOTIFY_ID, R.drawable.tornotificationerr, -1);
}
@@ -423,6 +430,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
private boolean checkTorBinaries (boolean forceInstall) throws Exception
{
+ //android.os.Debug.waitForDebugger();
//check and install iptables
TorBinaryInstaller.assertIpTablesBinaries(this, true);
@@ -433,27 +441,34 @@ public class TorService extends Service implements TorServiceConstants, TorConst
File fileTor = new File(appBinHome, TOR_BINARY_ASSET_KEY);
File filePrivoxy = new File(appBinHome, PRIVOXY_ASSET_KEY);
- File fileTorOld = null;
- File filePrivoxyOld = null;
-
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String currTorBinary = prefs.getString(TorServiceConstants.PREF_BINARY_TOR_VERSION_INSTALLED, null);
String currPrivoxyBinary = prefs.getString(TorServiceConstants.PREF_BINARY_PRIVOXY_VERSION_INSTALLED, null);
+ StringBuilder cmdLog = new StringBuilder();
+ int exitCode = -1;
+
if (currTorBinary == null || (!currTorBinary.equals(TorServiceConstants.BINARY_TOR_VERSION)))
if (fileTor.exists())
{
- killTorProcess ();
- fileTorOld = new File(fileTor.getAbsolutePath() + ".old");
- fileTor.renameTo(fileTorOld);
+ if (currentStatus != STATUS_OFF)
+ stopTor();
+
+ String[] cmds = {"rm " + fileTor.getAbsolutePath()};
+ exitCode = TorServiceUtils.doShellCommand(cmds, cmdLog, false, true);
+
}
if (currPrivoxyBinary == null || (!currPrivoxyBinary.equals(TorServiceConstants.BINARY_PRIVOXY_VERSION)))
if (filePrivoxy.exists())
{
- killTorProcess ();
- filePrivoxyOld = new File(filePrivoxy.getAbsolutePath() + ".old");
- filePrivoxy.renameTo(filePrivoxyOld);
+ if (currentStatus != STATUS_OFF)
+ stopTor();
+
+
+ String[] cmds = {"rm " + filePrivoxy.getAbsolutePath()};
+ exitCode = TorServiceUtils.doShellCommand(cmds, cmdLog, false, true);
+
}
@@ -462,7 +477,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if ((!(fileTor.exists() && filePrivoxy.exists())) || forceInstall)
{
- killTorProcess ();
+ if (currentStatus != STATUS_OFF)
+ stopTor();
TorBinaryInstaller installer = new TorBinaryInstaller(this, appBinHome);
boolean success = installer.installFromRaw();
@@ -475,12 +491,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
edit.putString(TorServiceConstants.PREF_BINARY_PRIVOXY_VERSION_INSTALLED, TorServiceConstants.BINARY_PRIVOXY_VERSION);
edit.commit();
- if (fileTorOld != null)
- fileTorOld.delete();
-
- if (filePrivoxyOld != null)
- filePrivoxyOld.delete();
-
logNotice(getString(R.string.status_install_success));
//showToolbarNotification(getString(R.string.status_install_success), NOTIFY_ID, R.drawable.tornotification);
@@ -537,7 +547,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
try {
-
enableTransparentProxy();
runTorShellCmd();
runPrivoxyShellCmd();
@@ -725,7 +734,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice("Tor process id=" + procId);
- showToolbarNotification(getString(R.string.status_starting_up), NOTIFY_ID, R.drawable.tornotification);
+ //showToolbarNotification(getString(R.string.status_starting_up), NOTIFY_ID, R.drawable.tornotification);
initControlConnection ();
@@ -793,7 +802,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
return null;
}*/
- public void initControlConnection () throws Exception, RuntimeException
+ private void initControlConnection () throws Exception, RuntimeException
{
while (true)
{
@@ -801,8 +810,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
logNotice( "Connecting to control port: " + TOR_CONTROL_PORT);
- String baseMessage = getString(R.string.tor_process_starting);
- sendCallbackStatusMessage(baseMessage);
torConnSocket = new Socket(IP_LOCALHOST, TOR_CONTROL_PORT);
conn = TorControlConnection.getConnection(torConnSocket);
@@ -962,8 +969,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1)
{
currentStatus = STATUS_ON;
- showToolbarNotification (getString(R.string.status_activated),NOTIFY_ID,R.drawable.tornotificationon);
-
+ showToolbarNotification (getString(R.string.status_activated),NOTIFY_ID,R.drawable.tornotificationon, Notification.FLAG_ONGOING_EVENT);
getHiddenServiceHostname ();
@@ -977,7 +983,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
private void showAlert(String title, String msg)
{
- showToolbarNotification(msg, NOTIFY_ID, R.drawable.tornotification);
+ //showToolbarNotification(msg, NOTIFY_ID, R.drawable.tornotification);
+ sendCallbackStatusMessage(msg);
+
}
public void newDescriptors(List<String> orList) {
@@ -1135,7 +1143,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
applyPreferences();
-
if (currentStatus == STATUS_ON)
{
//reset iptables rules in active mode