diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
index f35705d14..bcd090268 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
@@ -119,4 +119,12 @@ public class ConfigUpdateHelper {
public String getTrustedKeys() {
return new TrustedUpdate(_context).getTrustedKeysString();
}
+
+ public String getNewsStatus() {
+ return NewsFetcher.getInstance(_context).status();
+ }
+
+ public String getUpdateVersion() {
+ return NewsFetcher.getInstance(_context).updateVersion();
+ }
}
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java
index 92430654e..31c1565eb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java
@@ -25,6 +25,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
private Log _log;
private boolean _updateAvailable;
private long _lastFetch;
+ private long _lastUpdated;
+ private String _updateVersion;
private String _lastModified;
private static NewsFetcher _instance;
//public static final synchronized NewsFetcher getInstance() { return _instance; }
@@ -44,6 +46,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
_instance = this;
_lastFetch = 0;
updateLastFetched();
+ _lastUpdated = _lastFetch;
+ _updateVersion = "";
}
private void updateLastFetched() {
@@ -56,6 +60,14 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
}
public boolean updateAvailable() { return _updateAvailable; }
+ public String updateVersion() { return _updateVersion; }
+
+ public String status() {
+ long now = _context.clock().now();
+ return
+ (_lastUpdated > 0 ? "News last updated " + DataHelper.formatDuration(now - _lastUpdated) + " ago" : "") +
+ (_lastFetch > _lastUpdated ? ", last checked " + DataHelper.formatDuration(now - _lastFetch) + " ago" : "");
+ }
public void run() {
try { Thread.sleep(_context.random().nextLong(5*60*1000)); } catch (InterruptedException ie) {}
@@ -146,6 +158,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
if (TrustedUpdate.needsUpdate(RouterVersion.VERSION, ver)) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Our version is out of date, update!");
+ _updateVersion = ver;
break;
} else {
if (_log.shouldLog(Log.DEBUG))
diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp
index 1fea0861f..0589e1035 100644
--- a/apps/routerconsole/jsp/config.jsp
+++ b/apps/routerconsole/jsp/config.jsp
@@ -93,6 +93,10 @@
OR use the same port configured for SSU
(currently
+
A hostname entered here will be published in the network database. + It is not private. + Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1. +
You do not need to allow inbound TCP connections - outbound connections work with no
configuration. However, if you want to receive inbound TCP connections, you must poke a hole
in your NAT or firewall for unsolicited TCP connections. If you specify the wrong IP address or
diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp
index 634b362ae..276b503ae 100644
--- a/apps/routerconsole/jsp/configupdate.jsp
+++ b/apps/routerconsole/jsp/configupdate.jsp
@@ -22,6 +22,7 @@