From e9bd6907d121671851a73e3c69b3ef337fc35729 Mon Sep 17 00:00:00 2001
From: zzz <zzz>
Date: Sat, 22 Dec 2007 23:58:46 +0000
Subject: [PATCH] 2007-12-22 zzz     * Add support for multiple update URLs    
 * Change default for update to use i2p proxy,       add several URLs as
 defaults     * Enable trusted key form on configupdate.jsp

---
 .../i2p/router/web/ConfigUpdateHandler.java   |  5 +++--
 .../src/net/i2p/router/web/UpdateHandler.java | 22 +++++++++++++++++--
 apps/routerconsole/jsp/configupdate.jsp       |  7 +++---
 history.txt                                   | 14 ++++++++++--
 .../src/net/i2p/router/RouterVersion.java     |  4 ++--
 5 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
index f059dc94e1..d83ce09e2d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
@@ -24,11 +24,12 @@ public class ConfigUpdateHandler extends FormHandler {
     public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
     public static final String DEFAULT_REFRESH_FREQUENCY = 12*60*60*1000 + "";
     public static final String PROP_UPDATE_URL = "router.updateURL";
-    public static final String DEFAULT_UPDATE_URL = "http://dev.i2p.net/i2p/i2pupdate.sud";
+//  public static final String DEFAULT_UPDATE_URL = "http://dev.i2p.net/i2p/i2pupdate.sud";
+    public static final String DEFAULT_UPDATE_URL = "http://amiga.i2p/i2p/i2pupdate.sud,http://stats.i2p/i2p/i2pupdate.sud,http://complication.i2p/i2p/i2pupdate.sud";
     public static final String PROP_UPDATE_POLICY = "router.updatePolicy";
     public static final String DEFAULT_UPDATE_POLICY = "notify";
     public static final String PROP_SHOULD_PROXY = "router.updateThroughProxy";
-    public static final String DEFAULT_SHOULD_PROXY = Boolean.FALSE.toString();
+    public static final String DEFAULT_SHOULD_PROXY = Boolean.TRUE.toString();
     public static final String PROP_PROXY_HOST = "router.updateProxyHost";
     public static final String DEFAULT_PROXY_HOST = "localhost";
     public static final String PROP_PROXY_PORT = "router.updateProxyPort";
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java
index 4ed2dae909..02e5bc99fa 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java
@@ -2,6 +2,9 @@ package net.i2p.router.web;
 
 import java.io.File;
 import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
 
 import net.i2p.I2PAppContext;
 import net.i2p.crypto.TrustedUpdate;
@@ -102,7 +105,7 @@ public class UpdateHandler {
         private void update() {
             _startedOn = -1;
             _status = "<b>Updating</b><br />";
-            String updateURL = _context.getProperty(ConfigUpdateHandler.PROP_UPDATE_URL, ConfigUpdateHandler.DEFAULT_UPDATE_URL);
+            String updateURL = selectUpdateURL();
             boolean shouldProxy = Boolean.valueOf(_context.getProperty(ConfigUpdateHandler.PROP_SHOULD_PROXY, ConfigUpdateHandler.DEFAULT_SHOULD_PROXY)).booleanValue();
             String proxyHost = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST, ConfigUpdateHandler.DEFAULT_PROXY_HOST);
             String port = _context.getProperty(ConfigUpdateHandler.PROP_PROXY_PORT, ConfigUpdateHandler.DEFAULT_PROXY_PORT);
@@ -162,7 +165,7 @@ public class UpdateHandler {
             }
         }
         public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
-            _log.log(Log.CRIT, "Update did not download completely (" + bytesTransferred + " with " 
+            _log.log(Log.CRIT, "Update from " + url + " did not download completely (" + bytesTransferred + " with " 
                                + bytesRemaining + " after " + currentAttempt + " tries)");
 
             _status = "<b>Transfer failed</b><br />";
@@ -176,4 +179,19 @@ public class UpdateHandler {
         _context.router().addShutdownTask(new ConfigServiceHandler.UpdateWrapperManagerTask(Router.EXIT_GRACEFUL_RESTART));
         _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
     }
+
+    private String selectUpdateURL() {
+        String URLs = _context.getProperty(ConfigUpdateHandler.PROP_UPDATE_URL, ConfigUpdateHandler.DEFAULT_UPDATE_URL);
+        StringTokenizer tok = new StringTokenizer(URLs, ",");
+        List URLList = new ArrayList();
+        while (tok.hasMoreTokens())
+            URLList.add(tok.nextToken().trim());
+        int size = URLList.size();
+        if (size <= 0) {
+            _log.log(Log.WARN, "Update list is empty - no update available");
+            return null;
+        }
+        int index = I2PAppContext.getGlobalContext().random().nextInt(size);
+        return (String) URLList.get(index);
+    }
 }
diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp
index 3ddc875086..096f44d003 100644
--- a/apps/routerconsole/jsp/configupdate.jsp
+++ b/apps/routerconsole/jsp/configupdate.jsp
@@ -32,8 +32,8 @@
  <input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"><br />
  Refresh frequency:
  <jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /><br />
- Update URL:
- <input type="text" size="60" name="updateURL" value="<jsp:getProperty name="updatehelper" property="updateURL" />"><br />
+ Update URLs:
+ <input type="text" size="90" name="updateURL" value="<jsp:getProperty name="updatehelper" property="updateURL" />"><br />
  Update policy:
  <jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /><br />
 Update through the eepProxy?
@@ -42,7 +42,8 @@ Update through the eepProxy?
  eepProxy port: <input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /><br />
  <!-- prompt for the eepproxy -->
  Trusted keys:
- <textarea name="trustedKeys" disabled="true" cols="60" rows="2"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea>
+ <textarea name="trustedKeys" cols="60" rows="2"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea>
+ <br /><br />
  <input type="submit" name="action" value="Save" />
  </form>
 </div>
diff --git a/history.txt b/history.txt
index e07cdaaca8..5dfa3af8e9 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,14 @@
-$Id: history.txt,v 1.600 2007-12-02 23:19:25 complication Exp $
+$Id: history.txt,v 1.601 2007-12-10 17:23:00 zzz Exp $
+
+2007-12-22 zzz
+    * Add support for multiple update URLs
+    * Change default for update to use i2p proxy,
+      add several URLs as defaults
+    * Enable trusted key form on configupdate.jsp
+    * Clarify the 'destination not found' error page
+
+2007-12-16 zzz
+    * i2psnark: remove anonymitytracker from default list
 
 2007-12-10 zzz
     * Fix NPE in CLI TrustedUpdate keygen
@@ -23,7 +33,7 @@ $Id: history.txt,v 1.600 2007-12-02 23:19:25 complication Exp $
       (bitfield never transmitted, connection never dropped)
 
 2007-11-06 jrandom
-    * add i2phost.i2p to the jump list
+    * add i2host.i2p to the jump list
 
 2007-10-11 zzz
     * IRC Proxy: Fix several possible anonymity holes:
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 6f9b3b154c..de2b8d16c6 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
  *
  */
 public class RouterVersion {
-    public final static String ID = "$Revision: 1.535 $ $Date: 2007-12-02 23:19:28 $";
+    public final static String ID = "$Revision: 1.536 $ $Date: 2007-12-10 17:22:59 $";
     public final static String VERSION = "0.6.1.30";
-    public final static long BUILD = 7;
+    public final static long BUILD = 8;
     public static void main(String args[]) {
         System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
         System.out.println("Router ID: " + RouterVersion.ID);
-- 
GitLab