From 5081755d0b5a21cb9e71510d665a218b6604f250 Mon Sep 17 00:00:00 2001 From: privateer <privateer@mail.i2p> Date: Fri, 4 Jun 2010 23:50:13 +0000 Subject: [PATCH] - integration of dynamicly configurable startup delay of i2psnark - i2psnark webfrontent configuration of startup delay - default startup delay 3 minutes - new config variable in i2psnark.config: i2psnark.startupDelay --- .../src/org/klomp/snark/I2PSnarkUtil.java | 14 +++++++-- .../src/org/klomp/snark/SnarkManager.java | 29 +++++++++++++++---- .../org/klomp/snark/web/I2PSnarkServlet.java | 9 +++++- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index fdae016fca..127a2bb19a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -53,14 +53,15 @@ public class I2PSnarkUtil { private int _maxUpBW; private int _maxConnections; private File _tmpDir; - + private int _startupDelay; + + public static final int DEFAULT_STARTUP_DELAY = 3; public static final String PROP_USE_OPENTRACKERS = "i2psnark.useOpentrackers"; public static final boolean DEFAULT_USE_OPENTRACKERS = true; public static final String PROP_OPENTRACKERS = "i2psnark.opentrackers"; public static final String DEFAULT_OPENTRACKERS = "http://tracker.welterde.i2p/a"; public static final int DEFAULT_MAX_UP_BW = 8; //KBps public static final int MAX_CONNECTIONS = 16; // per torrent - public I2PSnarkUtil(I2PAppContext ctx) { _context = ctx; _log = _context.logManager().getLog(Snark.class); @@ -72,6 +73,7 @@ public class I2PSnarkUtil { _maxUploaders = Snark.MAX_TOTAL_UPLOADERS; _maxUpBW = DEFAULT_MAX_UP_BW; _maxConnections = MAX_CONNECTIONS; + _startupDelay = DEFAULT_STARTUP_DELAY; // This is used for both announce replies and .torrent file downloads, // so it must be available even if not connected to I2CP. // so much for multiple instances @@ -127,6 +129,11 @@ public class I2PSnarkUtil { _maxConnections = limit; _configured = true; } + + public void setStartupDelay(int minutes) { + _startupDelay = minutes; + _configured = true; + } public String getI2CPHost() { return _i2cpHost; } public int getI2CPPort() { return _i2cpPort; } @@ -137,7 +144,8 @@ public class I2PSnarkUtil { public int getMaxUploaders() { return _maxUploaders; } public int getMaxUpBW() { return _maxUpBW; } public int getMaxConnections() { return _maxConnections; } - + public int getStartupDelay() { return _startupDelay; } + /** * Connect to the router, if we aren't already */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 75f1485a1c..59ab86a129 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -59,10 +59,11 @@ public class SnarkManager implements Snark.CompleteListener { public static final String DEFAULT_AUTO_START = "false"; public static final String PROP_LINK_PREFIX = "i2psnark.linkPrefix"; public static final String DEFAULT_LINK_PREFIX = "file:///"; - + public static final String PROP_STARTUP_DELAY = "i2psnark.startupDelay"; + public static final int MIN_UP_BW = 2; public static final int DEFAULT_MAX_UP_BW = 10; - + public static final int DEFAULT_STARTUP_DELAY = 3; private SnarkManager() { _snarks = new HashMap(); _addSnarkLock = new Object(); @@ -124,7 +125,9 @@ public class SnarkManager implements Snark.CompleteListener { public String linkPrefix() { return _config.getProperty(PROP_LINK_PREFIX, DEFAULT_LINK_PREFIX + getDataDir().getAbsolutePath() + File.separatorChar); } - private int getStartupDelayMinutes() { return 3; } + private int getStartupDelayMinutes() { + return Integer.valueOf(_config.getProperty(PROP_STARTUP_DELAY)).intValue(); + } public File getDataDir() { String dir = _config.getProperty(PROP_DIR, "i2psnark"); File f = new File(dir); @@ -167,6 +170,9 @@ public class SnarkManager implements Snark.CompleteListener { _config.setProperty(PROP_DIR, "i2psnark"); if (!_config.containsKey(PROP_AUTO_START)) _config.setProperty(PROP_AUTO_START, DEFAULT_AUTO_START); + if (!_config.containsKey(PROP_STARTUP_DELAY)) + _config.setProperty(PROP_STARTUP_DELAY, "" + DEFAULT_STARTUP_DELAY); + updateConfig(); } @@ -204,6 +210,7 @@ public class SnarkManager implements Snark.CompleteListener { // _util.setProxy(eepHost, eepPort); _util.setMaxUploaders(getInt(PROP_UPLOADERS_TOTAL, Snark.MAX_TOTAL_UPLOADERS)); _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW)); + _util.setStartupDelay(getInt(PROP_STARTUP_DELAY, DEFAULT_STARTUP_DELAY)); String ot = _config.getProperty(I2PSnarkUtil.PROP_OPENTRACKERS); if (ot != null) _util.setOpenTrackerString(ot); @@ -222,7 +229,7 @@ public class SnarkManager implements Snark.CompleteListener { return defaultVal; } - public void updateConfig(String dataDir, boolean autoStart, String seedPct, String eepHost, + public void updateConfig(String dataDir, boolean autoStart, String startDelay, String seedPct, String eepHost, String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts, String upLimit, String upBW, boolean useOpenTrackers, String openTrackers) { boolean changed = false; @@ -268,7 +275,19 @@ public class SnarkManager implements Snark.CompleteListener { } } } - if (i2cpHost != null) { + + if (startDelay != null){ + int minutes = _util.getStartupDelay(); + try { minutes = Integer.parseInt(startDelay); } catch (NumberFormatException nfe) {} + if ( minutes != _util.getStartupDelay()) { + _util.setStartupDelay(minutes); + changed = true; + _config.setProperty(PROP_STARTUP_DELAY, "" + minutes); + addMessage(_("Startup delay limit changed to {0} minutes", minutes)); + } + + } + if (i2cpHost != null) { int oldI2CPPort = _util.getI2CPPort(); String oldI2CPHost = _util.getI2CPHost(); int port = oldI2CPPort; diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 98c64fbbdd..a88c15cce6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -451,9 +451,10 @@ public class I2PSnarkServlet extends Default { String i2cpOpts = buildI2CPOpts(req); String upLimit = req.getParameter("upLimit"); String upBW = req.getParameter("upBW"); + String startupDel = req.getParameter("startupDelay"); boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null; String openTrackers = req.getParameter("openTrackers"); - _manager.updateConfig(dataDir, autoStart, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, upLimit, upBW, useOpenTrackers, openTrackers); + _manager.updateConfig(dataDir, autoStart, startupDel, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, upLimit, upBW, useOpenTrackers, openTrackers); } else if ("Create".equals(action)) { String baseData = req.getParameter("baseFile"); if (baseData != null && baseData.trim().length() > 0) { @@ -990,6 +991,11 @@ public class I2PSnarkServlet extends Default { out.write(_("If checked, automatically start torrents that are added")); out.write("\" >"); + out.write("<tr><td>"); + out.write(_("Startup delay")); + out.write(": <td><input name=\"startupDelay\" size=\"3\" value=\"" + _manager.util().getStartupDelay() + "\"> minutes <br>\n"); + + //Auto add: <input type="checkbox" name="autoAdd" value="true" title="If true, automatically add torrents that are found in the data directory" /> //Auto stop: <input type="checkbox" name="autoStop" value="true" title="If true, automatically stop torrents that are removed from the data directory" /> //out.write("<br>\n"); @@ -1079,6 +1085,7 @@ public class I2PSnarkServlet extends Default { out.write(_("I2CP options")); out.write(": <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" >" + opts.toString() + "</textarea><br>\n"); + out.write("<tr><td> <td><input type=\"submit\" value=\""); out.write(_("Save configuration")); -- GitLab