diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
index 64a530a8c..29e1c482b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
@@ -56,6 +56,7 @@ class BanlistRenderer {
buf.append("
");
+ String unban = _t("unban now");
for (Map.Entry e : entries.entrySet()) {
Hash key = e.getKey();
Banlist.Entry entry = e.getValue();
@@ -82,8 +83,9 @@ class BanlistRenderer {
buf.append(_t(entry.cause));
}
if (!key.equals(Hash.FAKE_HASH)) {
+ // note: CSS hides anchor text
buf.append(" [").append(_t("unban now")).append("]");
+ .append("#unsh\" title=\"").append(unban).append("\">[").append(unban).append("]");
}
buf.append("\n");
}
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigPeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigPeerHelper.java
index 3ac90c728..67815308d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigPeerHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigPeerHelper.java
@@ -5,6 +5,7 @@ import java.math.BigInteger;
import java.util.Collections;
import java.util.List;
+import net.i2p.data.Hash;
import net.i2p.router.Blocklist;
import net.i2p.router.web.HelperBase;
import net.i2p.util.Addresses;
@@ -132,6 +133,13 @@ public class ConfigPeerHelper extends HelperBase {
return out.toString();
}
+ /**
+ * @since 0.9.50
+ */
+ public boolean isBanned(Hash h) {
+ return _context.banlist().isBanlisted(h);
+ }
+
/**
* Convert a (non-negative) two's complement IP to exactly 16 bytes
*
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp
index a222c005e..fb8d89a4d 100644
--- a/apps/routerconsole/jsp/configpeer.jsp
+++ b/apps/routerconsole/jsp/configpeer.jsp
@@ -15,8 +15,23 @@
<% String peer = "";
- if (request.getParameter("peer") != null)
- peer = net.i2p.data.DataHelper.stripHTML(request.getParameter("peer")); // XSS
+ net.i2p.data.Hash peerHash = null;
+ boolean isBanned = false;
+ if (request.getParameter("peer") != null) {
+ // don't redisplay after POST, we don't do P-R-G
+ if (!"POST".equals(request.getMethod())) {
+ peer = net.i2p.data.DataHelper.stripHTML(request.getParameter("peer")); // XSS
+ if (peer.length() == 44) {
+ byte[] h = net.i2p.data.Base64.decode(peer);
+ if (h != null) {
+ try {
+ peerHash = net.i2p.data.Hash.create(h);
+ isBanned = peerhelper.isBanned(peerHash);
+ } catch (Exception e) {}
+ }
+ }
+ }
+ }
%>