From 3a7f4331f0708076cabbeefc87daa2009a58ad42 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 17 Jun 2011 20:15:26 +0000 Subject: [PATCH] - Enable UPnP - Increase max NTCP connections - Delete old wrapper.log at startup - Spoof network status on emulator - Increase client start delay - Disable shared clients - Stop LogWriter from starting a new App context at shutdown - LogWriter tweaks - Logging tweaks --- README.txt | 3 +++ res/raw/i2ptunnel_config | 8 ++++---- res/raw/logger_config | 11 ++++++++++- res/raw/router_config | 4 ++-- .../i2p/android/router/receiver/I2PReceiver.java | 5 +++++ src/net/i2p/android/router/service/Init.java | 2 ++ .../android/router/service/LoadClientsJob.java | 10 +++++----- .../android/router/service/RouterService.java | 16 ++++++++++------ src/net/i2p/util/LogWriter.java | 11 ++++++++++- 9 files changed, 51 insertions(+), 19 deletions(-) diff --git a/README.txt b/README.txt index 6c1e22f17..683ef2da1 100644 --- a/README.txt +++ b/README.txt @@ -39,6 +39,9 @@ The i2p source must be installed in ../i2p.i2p ../android-sdk-linux_86/tools/emulator -avd i2p & # or to talk to a real phone in debug mode: +# You have to do this if you get a permission error - +# Stop ddms, unplug the phone, do the following, +# then plug in the phone, then start ddms adb kill-server sudo adb start-server adb devices diff --git a/res/raw/i2ptunnel_config b/res/raw/i2ptunnel_config index 378a6277c..cd9c66297 100644 --- a/res/raw/i2ptunnel_config +++ b/res/raw/i2ptunnel_config @@ -2,14 +2,14 @@ tunnel.0.name=I2P HTTP Proxy tunnel.0.description=HTTP proxy for browsing eepsites and the web tunnel.0.type=httpclient -tunnel.0.sharedClient=true +tunnel.0.sharedClient=false tunnel.0.interface=127.0.0.1 tunnel.0.listenPort=4444 tunnel.0.proxyList=false.i2p tunnel.0.i2cpHost=127.0.0.1 tunnel.0.i2cpPort=7654 -tunnel.0.option.inbound.nickname=shared clients -tunnel.0.option.outbound.nickname=shared clients +tunnel.0.option.inbound.nickname=HTTP Proxy +tunnel.0.option.outbound.nickname=HTTP Proxy #tunnel.0.option.i2cp.delayOpen=true tunnel.0.option.i2cp.reduceIdleTime=600000 tunnel.0.option.i2cp.reduceOnIdle=true @@ -25,7 +25,7 @@ tunnel.0.startOnLoad=true tunnel.1.name=IRC Proxy tunnel.1.description=IRC proxy to access anonymous IRC servers tunnel.1.type=ircclient -tunnel.1.sharedClient=true +tunnel.1.sharedClient=false tunnel.1.interface=127.0.0.1 tunnel.1.listenPort=6668 tunnel.1.targetDestination=irc.postman.i2p,irc.freshcoffee.i2p diff --git a/res/raw/logger_config b/res/raw/logger_config index 86651d880..e87fa2b5d 100644 --- a/res/raw/logger_config +++ b/res/raw/logger_config @@ -1,8 +1,17 @@ +logger.dateFormat=MM/dd HH:mm:ss.SSS logger.defaultLevel=INFO -logger.record.net.i2p.router.peerManager.ProfileOrganizer=WARN +logger.displayOnScreen=true +logger.logFileSize=64k +logger.logRotationLimit=2 +logger.minimumOnScreenLevel=WARN +logger.record.net.i2p.router.networkdb=WARN +logger.record.net.i2p.router.peermanager=WARN +logger.record.net.i2p.router.peermanager.ProfileOrganizer=WARN logger.record.net.i2p.router.transport=WARN logger.record.net.i2p.router.transport.FIFOBandwidthRefiller=ERROR +logger.record.net.i2p.router.tunnel=WARN logger.record.net.i2p.stat.Rate=ERROR logger.record.net.i2p.util.LogManager=WARN logger.record.net.i2p.util.LogWriter=WARN logger.record.net.i2p.util.NativeBigInteger=DEBUG +logger.record.net.org.cybergarage.util.debug=DEBUG diff --git a/res/raw/router_config b/res/raw/router_config index a48e139e0..b448224c2 100644 --- a/res/raw/router_config +++ b/res/raw/router_config @@ -37,7 +37,7 @@ i2np.bandwidth.outboundKBytesPerSecond=30 # NTCP # #i2np.ntcp.enable=false -i2np.ntcp.maxConnections=12 +i2np.ntcp.maxConnections=24 # # UDP disabled for now # @@ -48,5 +48,5 @@ i2np.udp.maxConnections=12 #i2p.vmCommSystem=true # # not on android -i2np.upnp.enable=false +i2np.upnp.enable=true routerconsole.geoip.enable=false diff --git a/src/net/i2p/android/router/receiver/I2PReceiver.java b/src/net/i2p/android/router/receiver/I2PReceiver.java index 307ff8ee3..6a9c21861 100644 --- a/src/net/i2p/android/router/receiver/I2PReceiver.java +++ b/src/net/i2p/android/router/receiver/I2PReceiver.java @@ -8,6 +8,7 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.os.Build; import android.os.IBinder; import net.i2p.android.router.binder.RouterBinder; @@ -20,6 +21,7 @@ public class I2PReceiver extends BroadcastReceiver { private int _unconnectedCount; private RouterService _routerService; private ServiceConnection _connection; + private static final boolean _isEmulator = Build.MODEL.equals("sdk"); /** * Registers itself @@ -78,6 +80,9 @@ public class I2PReceiver extends BroadcastReceiver { } public boolean isConnected() { + // emulator always returns null NetworkInfo + if (_isEmulator) + return true; NetworkInfo current = getInfo(); return current != null && current.isConnected(); } diff --git a/src/net/i2p/android/router/service/Init.java b/src/net/i2p/android/router/service/Init.java index 7eb98ef5b..4c95a4952 100644 --- a/src/net/i2p/android/router/service/Init.java +++ b/src/net/i2p/android/router/service/Init.java @@ -83,6 +83,8 @@ class Init { mergeResourceToFile(R.raw.hosts_txt, "hosts.txt", null); copyResourceToFile(R.raw.blocklist_txt, "blocklist.txt"); + (new File(myDir, "wrapper.log")).delete(); + // Set up the locations so Router and WorkingDir can find them System.setProperty("i2p.dir.base", myDir); System.setProperty("i2p.dir.config", myDir); diff --git a/src/net/i2p/android/router/service/LoadClientsJob.java b/src/net/i2p/android/router/service/LoadClientsJob.java index e74bf744e..d680e8045 100644 --- a/src/net/i2p/android/router/service/LoadClientsJob.java +++ b/src/net/i2p/android/router/service/LoadClientsJob.java @@ -30,8 +30,8 @@ class LoadClientsJob extends JobImpl { private Thread _fetcherThread; - /** this is the delay to load the clients. There are additional delays e.g. in i2ptunnel.config */ - private static final long LOAD_DELAY = 10*1000; + /** this is the delay to load (and start) the clients. */ + private static final long LOAD_DELAY = 2*60*1000; public LoadClientsJob(RouterContext ctx) { @@ -62,8 +62,9 @@ class LoadClientsJob extends JobImpl { public void runJob() { System.err.println("Starting i2ptunnel"); - TunnelControllerGroup.main(null); - System.err.println("i2ptunnel started"); + TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(); + int sz = tcg.getControllers().size(); + System.err.println("i2ptunnel started " + sz + " clients"); getContext().addShutdownTask(new I2PTunnelShutdownHook()); } @@ -74,7 +75,6 @@ class LoadClientsJob extends JobImpl { System.err.println("i2ptunnel shutdown hook"); if (_fetcherThread != null) _fetcherThread.interrupt(); - TunnelControllerGroup.getInstance().unloadControllers(); } } } diff --git a/src/net/i2p/android/router/service/RouterService.java b/src/net/i2p/android/router/service/RouterService.java index c34888442..ae3f830ac 100644 --- a/src/net/i2p/android/router/service/RouterService.java +++ b/src/net/i2p/android/router/service/RouterService.java @@ -47,6 +47,7 @@ public class RouterService extends Service { System.err.println(this + " onCreate called" + " Current state is: " + _state); + (new File(getFilesDir(), "wrapper.log")).delete(); _myDir = getFilesDir().getAbsolutePath(); Init init = new Init(this); init.debugStuff(); @@ -138,17 +139,16 @@ public class RouterService extends Service { } } + /** TODO change to a handler */ private class StatusThread implements Runnable { public void run() { System.err.println(MARKER + this + " status thread started" + " Current state is: " + _state); + try { + Thread.sleep(5*1000); + } catch (InterruptedException ie) {} Router router = _context.router(); while (_state == State.RUNNING && router.isAlive()) { - try { - Thread.sleep(15*1000); - } catch (InterruptedException ie) { - break; - } int active = _context.commSystem().countActivePeers(); int known = Math.max(_context.netDb().getKnownRouters() - 1, 0); int inEx = _context.tunnelManager().getFreeTunnelCount(); @@ -186,8 +186,12 @@ public class RouterService extends Service { " Up " + uptime; _statusBar.update(status, details); + try { + Thread.sleep(15*1000); + } catch (InterruptedException ie) { + break; + } } - _statusBar.update("Status thread died"); System.err.println(MARKER + this + " status thread finished" + " Current state is: " + _state); } diff --git a/src/net/i2p/util/LogWriter.java b/src/net/i2p/util/LogWriter.java index 8de250199..be06b7c0c 100644 --- a/src/net/i2p/util/LogWriter.java +++ b/src/net/i2p/util/LogWriter.java @@ -45,7 +45,8 @@ class LogWriter implements Runnable { try { while (_write) { flushRecords(); - rereadConfig(); + if (_write) + rereadConfig(); } } catch (Exception e) { System.err.println("Error writing the logs: " + e.getMessage()); @@ -103,6 +104,14 @@ class LogWriter implements Runnable { log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage()); else log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage(), rec.getThrowable()); + + // we always add to the console buffer, but only sometimes write to stdout + if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) { + if (_manager.displayOnScreen()) { + // android log already does time stamps, so reformat without the date + System.out.print(LogRecordFormatter.formatRecord(_manager, rec, false)); + } + } } public void log(int priority, Class src, String name, String threadName, String msg) { -- GitLab