+ +
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java new file mode 100644 index 000000000..68f46d204 --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java @@ -0,0 +1,80 @@ +package net.i2p.router.web; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.data.Hash; +import net.i2p.data.Base64; +import net.i2p.router.Router; +import net.i2p.router.peermanager.PeerProfile; +import net.i2p.util.Log; + +/** + * + */ +public class ConfigPeerHandler extends FormHandler { + private String _peer; + private String _speed; + private String _capacity; + + protected void processForm() { + if ("Save Configuration".equals(_action)) { + _context.router().saveConfig(); + addFormNotice("Settings saved - not really!!!!!"); + } else if (_action.startsWith("Shitlist")) { + Hash h = getHash(); + if (h != null) { + _context.shitlist().shitlistRouterForever(h, "Manually shitlisted via configpeer.jsp"); + addFormNotice("Peer " + _peer + " shitlisted forever"); + return; + } + addFormError("Invalid peer"); + } else if (_action.startsWith("Unshitlist")) { + Hash h = getHash(); + if (h != null) { + if (_context.shitlist().isShitlisted(h)) { + _context.shitlist().unshitlistRouter(h); + addFormNotice("Peer " + _peer + " unshitlisted"); + } else + addFormNotice("Peer " + _peer + " is not currently shitlisted"); + return; + } + addFormError("Invalid peer"); + } else if (_action.startsWith("Adjust")) { + Hash h = getHash(); + if (h != null) { + PeerProfile prof = _context.profileOrganizer().getProfile(h); + if (prof != null) { + try { + prof.setSpeedBonus(Long.parseLong(_speed)); + } catch (NumberFormatException nfe) { + addFormError("Bad speed value"); + } + try { + prof.setCapacityBonus(Long.parseLong(_capacity)); + } catch (NumberFormatException nfe) { + addFormError("Bad capacity value"); + } + addFormNotice("Bonuses adjusted for " + _peer); + } else + addFormError("No profile exists for " + _peer); + return; + } + addFormError("Invalid peer"); + } else if (_action.startsWith("Check")) { + addFormError("Unsupported"); + } + } + + private Hash getHash() { + if (_peer != null && _peer.length() == 44) { + byte[] b = Base64.decode(_peer); + if (b != null) + return new Hash(b); + } + return null; + } + + public void setPeer(String peer) { _peer = peer; } + public void setSpeed(String bonus) { _speed = bonus; } + public void setCapacity(String bonus) { _capacity = bonus; } +} diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java new file mode 100644 index 000000000..647aaa3df --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java @@ -0,0 +1,24 @@ +package net.i2p.router.web; + +import net.i2p.data.DataHelper; +import net.i2p.router.RouterContext; + +public class ConfigPeerHelper { + private RouterContext _context; + /** + * Configure this bean to query a particular router context + * + * @param contextId begging few characters of the routerHash, or null to pick + * the first one we come across. + */ + public void setContextId(String contextId) { + try { + _context = ContextHelper.getContext(contextId); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + public ConfigPeerHelper() {} + +} diff --git a/apps/routerconsole/jsp/confignav.jsp b/apps/routerconsole/jsp/confignav.jsp index 7ab47f76b..b6a5ce6df 100644 --- a/apps/routerconsole/jsp/confignav.jsp +++ b/apps/routerconsole/jsp/confignav.jsp @@ -8,6 +8,8 @@ %>Tunnels | <% } else { %>Tunnels | <% } if (request.getRequestURI().indexOf("configclients.jsp") != -1) { %>Clients | <% } else { %>Clients | <% } + if (request.getRequestURI().indexOf("configpeer.jsp") != -1) { + %>Peers | <% } else { %>Peers | <% } if (request.getRequestURI().indexOf("configlogging.jsp") != -1) { %>Logging | <% } else { %>Logging | <% } if (request.getRequestURI().indexOf("configstats.jsp") != -1) { diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp new file mode 100644 index 000000000..16e624e5f --- /dev/null +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -0,0 +1,83 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + +
+