propagate from branch 'i2p.i2p.zzz.test3' (head d847100f901613ad765312ac9fed6d578d08d907)

to branch 'i2p.i2p' (head 63ce4ace08b7b7ba01531f0951ffc47ed57411a6)
This commit is contained in:
zzz
2009-08-11 16:11:45 +00:00
16 changed files with 39 additions and 35 deletions

View File

@ -20,22 +20,22 @@ public class ConfigPeerHandler extends FormHandler {
if ("Save Configuration".equals(_action)) { if ("Save Configuration".equals(_action)) {
_context.router().saveConfig(); _context.router().saveConfig();
addFormNotice("Settings saved - not really!!!!!"); addFormNotice("Settings saved - not really!!!!!");
} else if (_action.startsWith("Shitlist")) { } else if (_action.startsWith("Ban")) {
Hash h = getHash(); Hash h = getHash();
if (h != null) { if (h != null) {
_context.shitlist().shitlistRouterForever(h, "Manually shitlisted via <a href=\"configpeer.jsp\">configpeer.jsp</a>"); _context.shitlist().shitlistRouterForever(h, "Manually banned via <a href=\"configpeer.jsp\">configpeer.jsp</a>");
addFormNotice("Peer " + _peer + " shitlisted forever"); addFormNotice("Peer " + _peer + " banned until restart");
return; return;
} }
addFormError("Invalid peer"); addFormError("Invalid peer");
} else if (_action.startsWith("Unshitlist")) { } else if (_action.startsWith("Unban")) {
Hash h = getHash(); Hash h = getHash();
if (h != null) { if (h != null) {
if (_context.shitlist().isShitlisted(h)) { if (_context.shitlist().isShitlisted(h)) {
_context.shitlist().unshitlistRouter(h); _context.shitlist().unshitlistRouter(h);
addFormNotice("Peer " + _peer + " unshitlisted"); addFormNotice("Peer " + _peer + " unbanned");
} else } else
addFormNotice("Peer " + _peer + " is not currently shitlisted"); addFormNotice("Peer " + _peer + " is not currently banned");
return; return;
} }
addFormError("Invalid peer"); addFormError("Invalid peer");

View File

@ -6,7 +6,6 @@ import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.admin.StatsGenerator;
public class OldConsoleHelper extends HelperBase { public class OldConsoleHelper extends HelperBase {
public OldConsoleHelper() {} public OldConsoleHelper() {}

View File

@ -1,4 +1,4 @@
package net.i2p.router.admin; package net.i2p.router.web;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;

View File

@ -39,12 +39,12 @@
<h2>Manual Peer Controls</h2> <h2>Manual Peer Controls</h2>
<div class="mediumtags">Router Hash: <div class="mediumtags">Router Hash:
<input type="text" size="55" name="peer" value="<%=peer%>" /></div> <input type="text" size="55" name="peer" value="<%=peer%>" /></div>
<h3>Manually Shitlist / Unshitlist a Router</h3> <h3>Manually Ban / Unban a Peer</h3>
Shitlisting will prevent the participation of this peer in tunnels you create. Shitlisting will prevent the participation of this peer in tunnels you create.
<hr /> <hr />
<div class="formaction"> <div class="formaction">
<input type="submit" name="action" value="Shitlist peer until restart" /> <input type="submit" name="action" value="Ban peer until restart" />
<input type="submit" name="action" value="Unshitlist peer" /> <input type="submit" name="action" value="Unban peer" />
<% if (! "".equals(peer)) { %> <% if (! "".equals(peer)) { %>
<!-- <font color="blue">&lt;---- click to verify action</font> --> <!-- <font color="blue">&lt;---- click to verify action</font> -->
<% } %> <% } %>

View File

@ -1,15 +1,14 @@
<%@page contentType="text/html"%> <%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%> <%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<% <%
/* /*
* All links in the summary bar must have target="_top" * All links in the summary bar must have target="_top"
* so they don't load in the iframe * so they don't load in the iframe
*/ */
%> %>
<html><head> <html><head>
<%@include file="css.jsp" %>
<title>Summary Bar</title> <title>Summary Bar</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<% <%
@ -50,7 +49,6 @@
} }
} }
%> %>
<%@include file="css.jsp" %>
</head> </head>
<body style="margin: 0;"> <body style="margin: 0;">

View File

@ -17,6 +17,10 @@ import java.util.Properties;
/** /**
* Simple config file handler. * Simple config file handler.
* *
* Warning - browser needs double quotes and double backslashes on Windows
* e.g.
* browser="C:\\Program Files\\Mozilla Firefox\\firefox.exe"
*
* @author hypercubus * @author hypercubus
*/ */
public class ConfigFile { public class ConfigFile {

View File

@ -212,6 +212,11 @@ public class DataHelper {
/** /**
* A more efficient Properties.load * A more efficient Properties.load
* *
* Some of the other differences:
* - This does not process or drop backslashes
* - '#' or ';' starts a comment line, but '!' does not
* - Leading whitespace is not trimmed
* - '=' is the only key-termination character (not ':' or whitespace)
*/ */
public static void loadProps(Properties props, File file) throws IOException { public static void loadProps(Properties props, File file) throws IOException {
loadProps(props, file, false); loadProps(props, file, false);

View File

@ -111,7 +111,7 @@ public class Blocklist {
} }
for (Iterator iter = _peerBlocklist.keySet().iterator(); iter.hasNext(); ) { for (Iterator iter = _peerBlocklist.keySet().iterator(); iter.hasNext(); ) {
Hash peer = (Hash) iter.next(); Hash peer = (Hash) iter.next();
String reason = "Blocklisted by router hash"; String reason = "Banned by router hash";
String comment = (String) _peerBlocklist.get(peer); String comment = (String) _peerBlocklist.get(peer);
if (comment != null) if (comment != null)
reason = reason + ": " + comment; reason = reason + ": " + comment;
@ -659,7 +659,7 @@ public class Blocklist {
*/ */
public void shitlist(Hash peer) { public void shitlist(Hash peer) {
// Temporary reason, until the job finishes // Temporary reason, until the job finishes
_context.shitlist().shitlistRouterForever(peer, "IP Blocklisted"); _context.shitlist().shitlistRouterForever(peer, "IP Banned");
if (! "true".equals( _context.getProperty(PROP_BLOCKLIST_DETAIL, "true"))) if (! "true".equals( _context.getProperty(PROP_BLOCKLIST_DETAIL, "true")))
return; return;
boolean shouldRunJob; boolean shouldRunJob;
@ -682,7 +682,7 @@ public class Blocklist {
super(_context); super(_context);
_peer = p; _peer = p;
} }
public String getName() { return "Shitlist Peer Forever"; } public String getName() { return "Ban Peer by IP"; }
public void runJob() { public void runJob() {
shitlistForever(_peer); shitlistForever(_peer);
synchronized (_inProcess) { synchronized (_inProcess) {
@ -735,7 +735,7 @@ public class Blocklist {
if (i != 3) if (i != 3)
reason = reason + '.'; reason = reason + '.';
} }
reason = reason + " blocklisted by entry \"" + buf + "\""; reason = reason + " banned by " + BLOCKLIST_FILE_DEFAULT + " entry \"" + buf + "\"";
if (_log.shouldLog(Log.WARN)) if (_log.shouldLog(Log.WARN))
_log.warn("Shitlisting " + peer + " " + reason); _log.warn("Shitlisting " + peer + " " + reason);
_context.shitlist().shitlistRouterForever(peer, reason); _context.shitlist().shitlistRouterForever(peer, reason);
@ -755,7 +755,7 @@ public class Blocklist {
/** write directly to the stream so we don't OOM on a huge list */ /** write directly to the stream so we don't OOM on a huge list */
public void renderStatusHTML(Writer out) throws IOException { public void renderStatusHTML(Writer out) throws IOException {
out.write("<h2>IP Blocklist</h2>"); out.write("<h2>Banned IPs</h2>");
Set singles = new TreeSet(); Set singles = new TreeSet();
singles.addAll(_singleIPBlocklist); singles.addAll(_singleIPBlocklist);
if (singles.size() > 0) { if (singles.size() > 0) {

View File

@ -771,14 +771,15 @@ public class Router {
out.flush(); out.flush();
} }
private static int MAX_MSG_LENGTH = 120; //private static int MAX_MSG_LENGTH = 120;
private static final void appendLogMessage(StringBuilder buf, String msg) { private static final void appendLogMessage(StringBuilder buf, String msg) {
// disable this code for the moment because i think it // disable this code for the moment because i think it
// looks ugly (on the router console) // looks ugly (on the router console)
if (true) { //if (true) {
buf.append(msg); buf.append(msg);
return; return;
} //}
/******
if (msg.length() < MAX_MSG_LENGTH) { if (msg.length() < MAX_MSG_LENGTH) {
buf.append(msg); buf.append(msg);
return; return;
@ -810,9 +811,11 @@ public class Router {
newline = msg.indexOf('\n'); newline = msg.indexOf('\n');
len = msg.length(); len = msg.length();
} }
******/
} }
/** main-ish method for testing appendLogMessage */ /** main-ish method for testing appendLogMessage */
/******
private static final void testAppendLog() { private static final void testAppendLog() {
StringBuilder buf = new StringBuilder(1024); StringBuilder buf = new StringBuilder(1024);
Router.appendLogMessage(buf, "hi\nhow are you\nh0h0h0"); Router.appendLogMessage(buf, "hi\nhow are you\nh0h0h0");
@ -846,6 +849,7 @@ public class Router {
System.out.println("line: [" + buf.toString() + "]"); System.out.println("line: [" + buf.toString() + "]");
buf.setLength(0); buf.setLength(0);
} }
******/
public static final int EXIT_GRACEFUL = 2; public static final int EXIT_GRACEFUL = 2;
public static final int EXIT_HARD = 3; public static final int EXIT_HARD = 3;

View File

@ -6,7 +6,6 @@ import java.util.Properties;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.data.Hash; import net.i2p.data.Hash;
import net.i2p.router.admin.AdminManager;
import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.client.ClientManagerFacadeImpl;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.peermanager.Calculator; import net.i2p.router.peermanager.Calculator;
@ -35,7 +34,6 @@ import net.i2p.util.KeyRing;
*/ */
public class RouterContext extends I2PAppContext { public class RouterContext extends I2PAppContext {
private Router _router; private Router _router;
private AdminManager _adminManager;
private ClientManagerFacade _clientManagerFacade; private ClientManagerFacade _clientManagerFacade;
private ClientMessagePool _clientMessagePool; private ClientMessagePool _clientMessagePool;
private JobQueue _jobQueue; private JobQueue _jobQueue;
@ -91,7 +89,6 @@ public class RouterContext extends I2PAppContext {
return envProps; return envProps;
} }
public void initAll() { public void initAll() {
//_adminManager = new AdminManager(this);
if ("false".equals(getProperty("i2p.dummyClientFacade", "false"))) if ("false".equals(getProperty("i2p.dummyClientFacade", "false")))
_clientManagerFacade = new ClientManagerFacadeImpl(this); _clientManagerFacade = new ClientManagerFacadeImpl(this);
else else
@ -149,11 +146,6 @@ public class RouterContext extends I2PAppContext {
/** convenience method for querying the router's ident */ /** convenience method for querying the router's ident */
public Hash routerHash() { return _router.getRouterInfo().getIdentity().getHash(); } public Hash routerHash() { return _router.getRouterInfo().getIdentity().getHash(); }
/**
* Controls a basic admin interface
*
*/
public AdminManager adminManager() { return _adminManager; }
/** /**
* How are we coordinating clients for the router? * How are we coordinating clients for the router?
*/ */

View File

@ -65,7 +65,7 @@ public class Shitlist {
_toUnshitlist = new ArrayList(4); _toUnshitlist = new ArrayList(4);
getTiming().setStartAfter(ctx.clock().now() + SHITLIST_CLEANER_START_DELAY); getTiming().setStartAfter(ctx.clock().now() + SHITLIST_CLEANER_START_DELAY);
} }
public String getName() { return "Cleanup shitlist"; } public String getName() { return "Expire banned peers"; }
public void runJob() { public void runJob() {
_toUnshitlist.clear(); _toUnshitlist.clear();
long now = getContext().clock().now(); long now = getContext().clock().now();
@ -253,7 +253,7 @@ public class Shitlist {
public void renderStatusHTML(Writer out) throws IOException { public void renderStatusHTML(Writer out) throws IOException {
StringBuilder buf = new StringBuilder(1024); StringBuilder buf = new StringBuilder(1024);
buf.append("<h2>Shitlist</h2>"); buf.append("<h2>Banned Peers</h2>");
Map<Hash, Entry> entries = new TreeMap(new HashComparator()); Map<Hash, Entry> entries = new TreeMap(new HashComparator());
entries.putAll(_entries); entries.putAll(_entries);
@ -273,7 +273,7 @@ public class Shitlist {
buf.append("<br />\n"); buf.append("<br />\n");
buf.append(entry.cause); buf.append(entry.cause);
} }
buf.append(" (<a href=\"configpeer.jsp?peer=").append(key.toBase64()).append("#unsh\">unshitlist now</a>)"); buf.append(" (<a href=\"configpeer.jsp?peer=").append(key.toBase64()).append("#unsh\">unban now</a>)");
buf.append("</li>\n"); buf.append("</li>\n");
} }
buf.append("</ul>\n"); buf.append("</ul>\n");

View File

@ -121,7 +121,9 @@ public class StatisticsManager implements Service {
//includeRate("transport.sendProcessingTime", stats, new long[] { 60*60*1000 }); //includeRate("transport.sendProcessingTime", stats, new long[] { 60*60*1000 });
//includeRate("jobQueue.jobRunSlow", stats, new long[] { 10*60*1000l, 60*60*1000l }); //includeRate("jobQueue.jobRunSlow", stats, new long[] { 10*60*1000l, 60*60*1000l });
//includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*60*1000 }); //includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*60*1000 });
includeRate("tunnel.participatingTunnels", stats, new long[] { 60*60*1000 }); // total event count can be used to track uptime
boolean hideTotals = ! RouterVersion.VERSION.equals("0.7.6");
includeRate("tunnel.participatingTunnels", stats, new long[] { 60*60*1000 }, hideTotals);
//includeRate("tunnel.testSuccessTime", stats, new long[] { 10*60*1000l }); //includeRate("tunnel.testSuccessTime", stats, new long[] { 10*60*1000l });
//includeRate("client.sendAckTime", stats, new long[] { 60*60*1000 }, true); //includeRate("client.sendAckTime", stats, new long[] { 60*60*1000 }, true);
//includeRate("udp.sendConfirmTime", stats, new long[] { 10*60*1000 }); //includeRate("udp.sendConfirmTime", stats, new long[] { 10*60*1000 });

View File

@ -138,7 +138,7 @@ class ProfileOrganizerRenderer {
} }
buf.append("</td><td align=\"right\">").append(num(prof.getIntegrationValue())); buf.append("</td><td align=\"right\">").append(num(prof.getIntegrationValue()));
buf.append("</td><td align=\"center\">"); buf.append("</td><td align=\"center\">");
if (_context.shitlist().isShitlisted(peer)) buf.append("Shitlist"); if (_context.shitlist().isShitlisted(peer)) buf.append("Banned");
if (prof.getIsFailing()) buf.append(" Failing"); if (prof.getIsFailing()) buf.append(" Failing");
if (_context.commSystem().wasUnreachable(peer)) buf.append(" Unreachable"); if (_context.commSystem().wasUnreachable(peer)) buf.append(" Unreachable");
Rate failed = prof.getTunnelHistory().getFailedRate().getRate(30*60*1000); Rate failed = prof.getTunnelHistory().getFailedRate().getRate(30*60*1000);