updated notification icon to new onion

This commit is contained in:
n8fr8 2012-10-25 15:28:45 +05:30
parent 0af2b712ce
commit 4edb1cc992
1 changed files with 77 additions and 44 deletions

View File

@ -8,7 +8,6 @@
package org.torproject.android.service; package org.torproject.android.service;
import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -20,7 +19,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import net.freehaven.tor.control.ConfigEntry; import net.freehaven.tor.control.ConfigEntry;
@ -45,11 +43,8 @@ import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.Editor;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.Bundle; import android.os.AsyncTask;
import android.os.IBinder; import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Parcelable;
import android.os.RemoteCallbackList; import android.os.RemoteCallbackList;
import android.os.RemoteException; import android.os.RemoteException;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@ -90,16 +85,26 @@ public class TorService extends Service implements TorServiceConstants, TorConst
private TorTransProxy mTransProxy; private TorTransProxy mTransProxy;
public static void logMessage(String msg) private long mTotalTrafficWritten = 0;
private long mTotalTrafficRead = 0;
public void logMessage(String msg)
{ {
if (ENABLE_DEBUG_LOG) if (ENABLE_DEBUG_LOG)
{
Log.d(TAG,msg); Log.d(TAG,msg);
sendCallbackLogMessage(msg);
}
} }
public static void logException(String msg, Exception e) public void logException(String msg, Exception e)
{ {
if (ENABLE_DEBUG_LOG) if (ENABLE_DEBUG_LOG)
{
Log.e(TAG,msg,e); Log.e(TAG,msg,e);
sendCallbackLogMessage(msg);
}
} }
@ -381,7 +386,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
try { try {
String onionHostname = Utils.readString(new FileInputStream(file)); String onionHostname = Utils.readString(new FileInputStream(file));
showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_notify, Notification.FLAG_ONGOING_EVENT); showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor, Notification.FLAG_ONGOING_EVENT);
Editor pEdit = prefs.edit(); Editor pEdit = prefs.edit();
pEdit.putString("pref_hs_hostname",onionHostname); pEdit.putString("pref_hs_hostname",onionHostname);
pEdit.commit(); pEdit.commit();
@ -549,7 +554,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice(getString(R.string.status_install_success)); logNotice(getString(R.string.status_install_success));
//showToolbarNotification(getString(R.string.status_install_success), NOTIFY_ID, R.drawable.ic_stat_notify); //showToolbarNotification(getString(R.string.status_install_success), NOTIFY_ID, R.drawable.ic_stat_tor);
} }
else else
@ -609,6 +614,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if (hasRoot && enableTransparentProxy) if (hasRoot && enableTransparentProxy)
enableTransparentProxy(transProxyAll, transProxyTethering); enableTransparentProxy(transProxyAll, transProxyTethering);
new Thread (new TotalUpdaterRunnable()).start();
} catch (Exception e) { } catch (Exception e) {
logException("Unable to start Tor: " + e.getMessage(),e); logException("Unable to start Tor: " + e.getMessage(),e);
sendCallbackStatusMessage(getString(R.string.unable_to_start_tor) + ' ' + e.getMessage()); sendCallbackStatusMessage(getString(R.string.unable_to_start_tor) + ' ' + e.getMessage());
@ -627,9 +634,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
if (mTransProxy == null) if (mTransProxy == null)
mTransProxy = new TorTransProxy(); mTransProxy = new TorTransProxy(this);
TorService.logMessage ("Transparent Proxying: enabling..."); logMessage ("Transparent Proxying: enabling...");
//TODO: Find a nice place for the next (commented) line //TODO: Find a nice place for the next (commented) line
//TorTransProxy.setDNSProxying(); //TorTransProxy.setDNSProxying();
@ -638,27 +645,27 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if(proxyAll) if(proxyAll)
{ {
showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
code = mTransProxy.setTransparentProxyingAll(this); code = mTransProxy.setTransparentProxyingAll(this);
} }
else else
{ {
showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
code = mTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this)); code = mTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this));
} }
TorService.logMessage ("TorTransProxy resp code: " + code); logMessage ("TorTransProxy resp code: " + code);
if (code == 0) if (code == 0)
{ {
showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
if (enableTether) if (enableTether)
{ {
showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
mTransProxy.enableTetheringRules(this); mTransProxy.enableTetheringRules(this);
@ -666,7 +673,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} }
else else
{ {
showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
} }
@ -682,19 +689,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst
private boolean disableTransparentProxy () throws Exception private boolean disableTransparentProxy () throws Exception
{ {
TorService.logMessage ("Transparent Proxying: disabling..."); logMessage ("Transparent Proxying: disabling...");
if (mTransProxy == null) if (mTransProxy == null)
mTransProxy = new TorTransProxy(); mTransProxy = new TorTransProxy(this);
// if (transProxyAll)
mTransProxy.clearTransparentProxyingAll(this); mTransProxy.clearTransparentProxyingAll(this);
// else
mTransProxy.clearTransparentProxyingByApp(this,AppManager.getApps(this)); mTransProxy.clearTransparentProxyingByApp(this,AppManager.getApps(this));
//showToolbarNotification(getString(R.string.transproxy_rules_cleared), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1);
clearNotifications(); clearNotifications();
return true; return true;
@ -766,7 +768,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice("Tor process id=" + procId); logNotice("Tor process id=" + procId);
//showToolbarNotification(getString(R.string.status_starting_up), NOTIFY_ID, R.drawable.ic_stat_notify); //showToolbarNotification(getString(R.string.status_starting_up), NOTIFY_ID, R.drawable.ic_stat_tor);
initControlConnection (); initControlConnection ();
@ -993,7 +995,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
private void startNotification () private void startNotification ()
{ {
Notification notice = new Notification(R.drawable.ic_stat_notify, getString(R.string.status_activated), System.currentTimeMillis()); Notification notice = new Notification(R.drawable.ic_stat_tor, getString(R.string.status_activated), System.currentTimeMillis());
//This constructor is deprecated. Use Notification.Builder instead //This constructor is deprecated. Use Notification.Builder instead
//Notification notice = new Notification(R.drawable.iocipher, "Active: " + mIpAddress, System.currentTimeMillis()); //Notification notice = new Notification(R.drawable.iocipher, "Active: " + mIpAddress, System.currentTimeMillis());
@ -1029,7 +1031,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} }
else else
{ {
showToolbarNotification (getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_notify, Notification.FLAG_ONGOING_EVENT); showToolbarNotification (getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor, Notification.FLAG_ONGOING_EVENT);
} }
@ -1088,7 +1090,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public void bandwidthUsed(long read, long written) { public void bandwidthUsed(long read, long written) {
if (ENABLE_DEBUG_LOG) /*if (ENABLE_DEBUG_LOG) //too much debugging data NF 2012/10
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Bandwidth used: "); sb.append("Bandwidth used: ");
@ -1098,15 +1100,45 @@ public class TorService extends Service implements TorServiceConstants, TorConst
sb.append("kb written"); sb.append("kb written");
logNotice(sb.toString()); logNotice(sb.toString());
} }*/
sendCallbackStatusMessage(written, read);
sendCallbackStatusMessage(written, read, mTotalTrafficWritten, mTotalTrafficRead);
} }
class TotalUpdaterRunnable implements Runnable
{
public void run ()
{
while (currentStatus != STATUS_OFF)
{
try
{
try
{
mTotalTrafficWritten = Long.parseLong(conn.getInfo("traffic/written"));
mTotalTrafficRead = Long.parseLong(conn.getInfo("traffic/read"));
}
catch (Exception ioe)
{
Log.e(TAG,"error reading control port traffic",ioe);
}
Thread.sleep(3000); //wait three seconds
}
catch (Exception e)
{
//nada
}
}
}
}
public void circuitStatus(String status, String circID, String path) { public void circuitStatus(String status, String circID, String path) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -1190,6 +1222,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
findExistingProc (); findExistingProc ();
} }
}.start(); }.start();
if (ITorService.class.getName().equals(intent.getAction())) { if (ITorService.class.getName().equals(intent.getAction())) {
@ -1402,7 +1436,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
inCallback = false; inCallback = false;
} }
private synchronized void sendCallbackStatusMessage (long upload, long download) private synchronized void sendCallbackStatusMessage (long upload, long download, long written, long read)
{ {
if (mCallbacks == null) if (mCallbacks == null)
@ -1417,8 +1451,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
for (int i=0; i<N; i++) { for (int i=0; i<N; i++) {
try { try {
mCallbacks.getBroadcastItem(i).updateBandwidth(upload, download); mCallbacks.getBroadcastItem(i).updateBandwidth(upload, download, written, read);
} catch (RemoteException e) { } catch (RemoteException e) {
// The RemoteCallbackList will take care of removing // The RemoteCallbackList will take care of removing
@ -1555,7 +1588,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} }
catch (IOException e) catch (IOException e)
{ {
showToolbarNotification (getString(R.string.error_installing_binares),ERROR_NOTIFY_ID,R.drawable.ic_stat_notify, Notification.FLAG_ONGOING_EVENT); showToolbarNotification (getString(R.string.error_installing_binares),ERROR_NOTIFY_ID,R.drawable.ic_stat_tor, Notification.FLAG_ONGOING_EVENT);
return false; return false;
} }
@ -1574,7 +1607,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
String msgBridge = getString(R.string.bridge_requires_ip) + String msgBridge = getString(R.string.bridge_requires_ip) +
getString(R.string.send_email_for_bridges); getString(R.string.send_email_for_bridges);
showToolbarNotification(msgBridge, ERROR_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(msgBridge, ERROR_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
return false; return false;
@ -1589,7 +1622,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
bridgeDelim = ","; bridgeDelim = ",";
} }
showToolbarNotification(getString(R.string.notification_using_bridges) + ": " + bridgeList, TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_notify, -1); showToolbarNotification(getString(R.string.notification_using_bridges) + ": " + bridgeList, TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, -1);
boolean obfsBridges = prefs.getBoolean(TorConstants.PREF_BRIDGES_OBFUSCATED, false); boolean obfsBridges = prefs.getBoolean(TorConstants.PREF_BRIDGES_OBFUSCATED, false);
String bridgeCfgKey = "bridge"; String bridgeCfgKey = "bridge";
@ -1637,7 +1670,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} }
catch (Exception e) catch (Exception e)
{ {
showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notify, Notification.FLAG_ONGOING_EVENT); showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_tor, Notification.FLAG_ONGOING_EVENT);
return false; return false;
} }
@ -1666,7 +1699,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
} }
catch (Exception e) catch (Exception e)
{ {
showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notify, Notification.FLAG_ONGOING_EVENT); showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_tor, Notification.FLAG_ONGOING_EVENT);
return false; return false;