forked from I2P_Developers/i2p.i2p
* Console: Tab the netdb and profile pages
This commit is contained in:
@@ -11,8 +11,27 @@ public class NetDbHelper extends HelperBase {
|
|||||||
private int _full;
|
private int _full;
|
||||||
private boolean _lease;
|
private boolean _lease;
|
||||||
private boolean _debug;
|
private boolean _debug;
|
||||||
|
private boolean _graphical;
|
||||||
|
|
||||||
public NetDbHelper() {}
|
private static final String PROP_DEBUG = "routerconsole.debug";
|
||||||
|
|
||||||
|
private static final String titles[] =
|
||||||
|
{_x("Summary"), // 0
|
||||||
|
_x("Local Router"), // 1
|
||||||
|
_x("Router Lookup"), // 2
|
||||||
|
_x("All Routers"), // 3
|
||||||
|
_x("All Routers with Full Stats"), // 4
|
||||||
|
"LeaseSet Debug", // 5
|
||||||
|
_x("LeaseSets") }; // 6
|
||||||
|
|
||||||
|
private static final String links[] =
|
||||||
|
{"", // 0
|
||||||
|
"?r=.", // 1
|
||||||
|
"", // 2
|
||||||
|
"?f=2", // 3
|
||||||
|
"?f=1", // 4
|
||||||
|
"?l=2", // 5
|
||||||
|
"?l=1" }; // 6
|
||||||
|
|
||||||
public void setRouter(String r) {
|
public void setRouter(String r) {
|
||||||
if (r != null)
|
if (r != null)
|
||||||
@@ -30,30 +49,88 @@ public class NetDbHelper extends HelperBase {
|
|||||||
_lease = _debug || "1".equals(l);
|
_lease = _debug || "1".equals(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* call for non-text-mode browsers
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
public void allowGraphical() {
|
||||||
|
_graphical = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* storeWriter() must be called previously
|
||||||
|
*/
|
||||||
public String getNetDbSummary() {
|
public String getNetDbSummary() {
|
||||||
NetDbRenderer renderer = new NetDbRenderer(_context);
|
NetDbRenderer renderer = new NetDbRenderer(_context);
|
||||||
try {
|
try {
|
||||||
if (_out != null) {
|
renderNavBar();
|
||||||
if (_routerPrefix != null)
|
if (_routerPrefix != null)
|
||||||
renderer.renderRouterInfoHTML(_out, _routerPrefix);
|
renderer.renderRouterInfoHTML(_out, _routerPrefix);
|
||||||
else if (_lease)
|
else if (_lease)
|
||||||
renderer.renderLeaseSetHTML(_out, _debug);
|
renderer.renderLeaseSetHTML(_out, _debug);
|
||||||
else
|
else
|
||||||
renderer.renderStatusHTML(_out, _full);
|
renderer.renderStatusHTML(_out, _full);
|
||||||
return "";
|
|
||||||
} else {
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
|
|
||||||
if (_routerPrefix != null)
|
|
||||||
renderer.renderRouterInfoHTML(new OutputStreamWriter(baos), _routerPrefix);
|
|
||||||
else if (_lease)
|
|
||||||
renderer.renderLeaseSetHTML(new OutputStreamWriter(baos), _debug);
|
|
||||||
else
|
|
||||||
renderer.renderStatusHTML(new OutputStreamWriter(baos), _full);
|
|
||||||
return new String(baos.toByteArray());
|
|
||||||
}
|
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
private int getTab() {
|
||||||
|
if (_debug)
|
||||||
|
return 5;
|
||||||
|
if (_lease)
|
||||||
|
return 6;
|
||||||
|
if (".".equals(_routerPrefix))
|
||||||
|
return 1;
|
||||||
|
if (_routerPrefix != null)
|
||||||
|
return 2;
|
||||||
|
if (_full == 2)
|
||||||
|
return 3;
|
||||||
|
if (_full == 1)
|
||||||
|
return 4;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
private void renderNavBar() throws IOException {
|
||||||
|
StringBuilder buf = new StringBuilder(1024);
|
||||||
|
buf.append("<div class=\"confignav\" id=\"confignav\">");
|
||||||
|
// TODO fix up the non-light themes
|
||||||
|
String theme = _context.getProperty(CSSHelper.PROP_THEME_NAME);
|
||||||
|
boolean span = _graphical && (theme == null || theme.equals(CSSHelper.DEFAULT_THEME));
|
||||||
|
if (!span)
|
||||||
|
buf.append("<center>");
|
||||||
|
int tab = getTab();
|
||||||
|
for (int i = 0; i < titles.length; i++) {
|
||||||
|
if (i == 2 && tab != 2)
|
||||||
|
continue; // can't nav to lookup
|
||||||
|
if (i == 5 && !_context.getBooleanProperty(PROP_DEBUG))
|
||||||
|
continue;
|
||||||
|
if (i == tab) {
|
||||||
|
// we are there
|
||||||
|
if (span)
|
||||||
|
buf.append("<span class=\"tab2\">");
|
||||||
|
buf.append(_(titles[i]));
|
||||||
|
} else {
|
||||||
|
// we are not there, make a link
|
||||||
|
if (span)
|
||||||
|
buf.append("<span class=\"tab\">");
|
||||||
|
buf.append("<a href=\"netdb").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
|
||||||
|
}
|
||||||
|
if (span)
|
||||||
|
buf.append(" </span>\n");
|
||||||
|
else if (i != titles.length - 1)
|
||||||
|
buf.append(" |\n");
|
||||||
|
}
|
||||||
|
if (!span)
|
||||||
|
buf.append("</center>");
|
||||||
|
buf.append("</div>");
|
||||||
|
_out.write(buf.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -75,7 +75,6 @@ public class NetDbRenderer {
|
|||||||
|
|
||||||
public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
|
public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
|
||||||
StringBuilder buf = new StringBuilder(4*1024);
|
StringBuilder buf = new StringBuilder(4*1024);
|
||||||
buf.append("<h2>" + _("Network Database RouterInfo Lookup") + "</h2>\n");
|
|
||||||
if (".".equals(routerPrefix)) {
|
if (".".equals(routerPrefix)) {
|
||||||
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
|
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -102,12 +101,8 @@ public class NetDbRenderer {
|
|||||||
*/
|
*/
|
||||||
public void renderLeaseSetHTML(Writer out, boolean debug) throws IOException {
|
public void renderLeaseSetHTML(Writer out, boolean debug) throws IOException {
|
||||||
StringBuilder buf = new StringBuilder(4*1024);
|
StringBuilder buf = new StringBuilder(4*1024);
|
||||||
buf.append("<h2>" + _("Network Database Contents") + "</h2>\n");
|
|
||||||
buf.append("<a href=\"netdb\">" + _("View RouterInfo") + "</a>");
|
|
||||||
buf.append("<h3>").append(_("LeaseSets"));
|
|
||||||
if (debug)
|
if (debug)
|
||||||
buf.append(" - Debug mode - Sorted by hash distance, closest first");
|
buf.append("<p>Debug mode - Sorted by hash distance, closest first</p>\n");
|
||||||
buf.append("</h3>\n");
|
|
||||||
Hash ourRKey;
|
Hash ourRKey;
|
||||||
Set<LeaseSet> leases;
|
Set<LeaseSet> leases;
|
||||||
DecimalFormat fmt;
|
DecimalFormat fmt;
|
||||||
@@ -233,7 +228,6 @@ public class NetDbRenderer {
|
|||||||
* @param mode 0: our info and charts only; 1: full routerinfos and charts; 2: abbreviated routerinfos and charts
|
* @param mode 0: our info and charts only; 1: full routerinfos and charts; 2: abbreviated routerinfos and charts
|
||||||
*/
|
*/
|
||||||
public void renderStatusHTML(Writer out, int mode) throws IOException {
|
public void renderStatusHTML(Writer out, int mode) throws IOException {
|
||||||
out.write("<h2>" + _("Network Database Contents") + " (<a href=\"netdb?l=1\">" + _("View LeaseSets") + "</a>)</h2>\n");
|
|
||||||
if (!_context.netDb().isInitialized()) {
|
if (!_context.netDb().isInitialized()) {
|
||||||
out.write(_("Not initialized"));
|
out.write(_("Not initialized"));
|
||||||
out.flush();
|
out.flush();
|
||||||
@@ -244,12 +238,6 @@ public class NetDbRenderer {
|
|||||||
boolean shortStats = mode == 2;
|
boolean shortStats = mode == 2;
|
||||||
boolean showStats = full || shortStats;
|
boolean showStats = full || shortStats;
|
||||||
Hash us = _context.routerHash();
|
Hash us = _context.routerHash();
|
||||||
out.write("<a name=\"routers\" ></a><h3>" + _("Routers") + " (<a href=\"netdb");
|
|
||||||
if (full || !showStats)
|
|
||||||
out.write("?f=2#routers\" >" + _("Show all routers"));
|
|
||||||
else
|
|
||||||
out.write("?f=1#routers\" >" + _("Show all routers with full stats"));
|
|
||||||
out.write("</a>)</h3>\n");
|
|
||||||
|
|
||||||
StringBuilder buf = new StringBuilder(8192);
|
StringBuilder buf = new StringBuilder(8192);
|
||||||
RouterInfo ourInfo = _context.router().getRouterInfo();
|
RouterInfo ourInfo = _context.router().getRouterInfo();
|
||||||
@@ -365,11 +353,10 @@ public class NetDbRenderer {
|
|||||||
buf.append("<a name=\"our-info\" ></a><b>" + _("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n");
|
buf.append("<a name=\"our-info\" ></a><b>" + _("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n");
|
||||||
} else {
|
} else {
|
||||||
buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n");
|
buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n");
|
||||||
if (full) {
|
if (!full) {
|
||||||
buf.append("[<a href=\"netdb\" >Back</a>]</th></tr><tr><td>\n");
|
buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_("Full entry")).append("</a>]");
|
||||||
} else {
|
|
||||||
buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_("Full entry")).append("</a>]</th></tr><tr><td>\n");
|
|
||||||
}
|
}
|
||||||
|
buf.append("</th></tr><tr><td>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
long age = _context.clock().now() - info.getPublished();
|
long age = _context.clock().now() - info.getPublished();
|
||||||
|
@@ -23,16 +23,21 @@ import net.i2p.stat.RateStat;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class ProfileOrganizerRenderer {
|
class ProfileOrganizerRenderer {
|
||||||
private RouterContext _context;
|
private final RouterContext _context;
|
||||||
private ProfileOrganizer _organizer;
|
private final ProfileOrganizer _organizer;
|
||||||
private ProfileComparator _comparator;
|
private final ProfileComparator _comparator;
|
||||||
|
|
||||||
public ProfileOrganizerRenderer(ProfileOrganizer organizer, RouterContext context) {
|
public ProfileOrganizerRenderer(ProfileOrganizer organizer, RouterContext context) {
|
||||||
_context = context;
|
_context = context;
|
||||||
_organizer = organizer;
|
_organizer = organizer;
|
||||||
_comparator = new ProfileComparator();
|
_comparator = new ProfileComparator();
|
||||||
}
|
}
|
||||||
public void renderStatusHTML(Writer out, boolean full) throws IOException {
|
|
||||||
|
/**
|
||||||
|
* @param mode 0 = high cap; 1 = all; 2 = floodfill
|
||||||
|
*/
|
||||||
|
public void renderStatusHTML(Writer out, int mode) throws IOException {
|
||||||
|
boolean full = mode == 1;
|
||||||
Set<Hash> peers = _organizer.selectAllPeers();
|
Set<Hash> peers = _organizer.selectAllPeers();
|
||||||
|
|
||||||
long now = _context.clock().now();
|
long now = _context.clock().now();
|
||||||
@@ -68,7 +73,13 @@ class ProfileOrganizerRenderer {
|
|||||||
int reliable = 0;
|
int reliable = 0;
|
||||||
int integrated = 0;
|
int integrated = 0;
|
||||||
StringBuilder buf = new StringBuilder(16*1024);
|
StringBuilder buf = new StringBuilder(16*1024);
|
||||||
buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
|
|
||||||
|
////
|
||||||
|
//// don't bother reindenting
|
||||||
|
////
|
||||||
|
if (mode < 2) {
|
||||||
|
|
||||||
|
//buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
|
||||||
buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n');
|
buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n');
|
||||||
if (older > 0)
|
if (older > 0)
|
||||||
buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n');
|
buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n');
|
||||||
@@ -181,8 +192,13 @@ class ProfileOrganizerRenderer {
|
|||||||
}
|
}
|
||||||
buf.append("</table>");
|
buf.append("</table>");
|
||||||
|
|
||||||
buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers"))
|
////
|
||||||
.append(" (").append(integratedPeers.size()).append(")</h2>\n");
|
//// don't bother reindenting
|
||||||
|
////
|
||||||
|
} else {
|
||||||
|
|
||||||
|
//buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers"))
|
||||||
|
// .append(" (").append(integratedPeers.size()).append(")</h2>\n");
|
||||||
buf.append("<table>");
|
buf.append("<table>");
|
||||||
buf.append("<tr>");
|
buf.append("<tr>");
|
||||||
buf.append("<th class=\"smallhead\">").append(_("Peer")).append("</th>");
|
buf.append("<th class=\"smallhead\">").append(_("Peer")).append("</th>");
|
||||||
@@ -247,6 +263,12 @@ class ProfileOrganizerRenderer {
|
|||||||
}
|
}
|
||||||
buf.append("</table>");
|
buf.append("</table>");
|
||||||
|
|
||||||
|
////
|
||||||
|
//// don't bother reindenting
|
||||||
|
////
|
||||||
|
}
|
||||||
|
if (mode < 2) {
|
||||||
|
|
||||||
buf.append("<h3>").append(_("Thresholds")).append("</h3>");
|
buf.append("<h3>").append(_("Thresholds")).append("</h3>");
|
||||||
buf.append("<p><b>").append(_("Speed")).append(":</b> ").append(num(_organizer.getSpeedThreshold()))
|
buf.append("<p><b>").append(_("Speed")).append(":</b> ").append(num(_organizer.getSpeedThreshold()))
|
||||||
.append(" (").append(fast).append(' ').append(_("fast peers")).append(")<br>");
|
.append(" (").append(fast).append(' ').append(_("fast peers")).append(")<br>");
|
||||||
@@ -262,6 +284,12 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<li><b>").append(_("integration")).append("</b>: ").append(_("how many new peers have they told us about lately?")).append("</li>");
|
buf.append("<li><b>").append(_("integration")).append("</b>: ").append(_("how many new peers have they told us about lately?")).append("</li>");
|
||||||
buf.append("<li><b>").append(_("status")).append("</b>: ").append(_("is the peer banned, or unreachable, or failing tunnel tests?")).append("</li>");
|
buf.append("<li><b>").append(_("status")).append("</b>: ").append(_("is the peer banned, or unreachable, or failing tunnel tests?")).append("</li>");
|
||||||
buf.append("</ul>");
|
buf.append("</ul>");
|
||||||
|
|
||||||
|
////
|
||||||
|
//// don't bother reindenting
|
||||||
|
////
|
||||||
|
} // mode < 2
|
||||||
|
|
||||||
out.write(buf.toString());
|
out.write(buf.toString());
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
|
@@ -4,12 +4,52 @@ import java.io.IOException;
|
|||||||
|
|
||||||
|
|
||||||
public class ProfilesHelper extends HelperBase {
|
public class ProfilesHelper extends HelperBase {
|
||||||
private boolean _full;
|
private int _full;
|
||||||
|
private boolean _graphical;
|
||||||
|
|
||||||
public ProfilesHelper() {}
|
private static final String titles[] =
|
||||||
|
{_x("High Capacity"), // 0
|
||||||
|
_x("Floodfill "), // 1
|
||||||
|
_x("Banned"), // 2
|
||||||
|
_x("All"), }; // 3
|
||||||
|
|
||||||
|
private static final String links[] =
|
||||||
|
{"", // 0
|
||||||
|
"?f=2", // 1
|
||||||
|
"?f=3", // 2
|
||||||
|
"?f=1" }; // 3
|
||||||
|
|
||||||
public void setFull(String f) {
|
public void setFull(String f) {
|
||||||
_full = f != null;
|
if (f != null) {
|
||||||
|
try {
|
||||||
|
_full = Integer.parseInt(f);
|
||||||
|
if (_full < 0 || _full > 3)
|
||||||
|
_full = 0;
|
||||||
|
} catch (NumberFormatException nfe) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* call for non-text-mode browsers
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
public void allowGraphical() {
|
||||||
|
_graphical = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return empty string, writes directly to _out
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
public String getSummary() {
|
||||||
|
try {
|
||||||
|
renderNavBar();
|
||||||
|
} catch (IOException ioe) {}
|
||||||
|
if (_full == 3)
|
||||||
|
getShitlistSummary();
|
||||||
|
else
|
||||||
|
getProfileSummary();
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return empty string, writes directly to _out */
|
/** @return empty string, writes directly to _out */
|
||||||
@@ -33,4 +73,52 @@ public class ProfilesHelper extends HelperBase {
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
private int getTab() {
|
||||||
|
if (_full == 2)
|
||||||
|
return 1;
|
||||||
|
if (_full == 3)
|
||||||
|
return 2;
|
||||||
|
if (_full == 1)
|
||||||
|
return 3;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 0.9.1
|
||||||
|
*/
|
||||||
|
private void renderNavBar() throws IOException {
|
||||||
|
StringBuilder buf = new StringBuilder(1024);
|
||||||
|
buf.append("<div class=\"confignav\" id=\"confignav\">");
|
||||||
|
// TODO fix up the non-light themes
|
||||||
|
String theme = _context.getProperty(CSSHelper.PROP_THEME_NAME);
|
||||||
|
boolean span = _graphical && (theme == null || theme.equals(CSSHelper.DEFAULT_THEME));
|
||||||
|
if (!span)
|
||||||
|
buf.append("<center>");
|
||||||
|
int tab = getTab();
|
||||||
|
for (int i = 0; i < titles.length; i++) {
|
||||||
|
if (i == tab) {
|
||||||
|
// we are there
|
||||||
|
if (span)
|
||||||
|
buf.append("<span class=\"tab2\">");
|
||||||
|
buf.append(_(titles[i]));
|
||||||
|
} else {
|
||||||
|
// we are not there, make a link
|
||||||
|
if (span)
|
||||||
|
buf.append("<span class=\"tab\">");
|
||||||
|
buf.append("<a href=\"profiles").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
|
||||||
|
}
|
||||||
|
if (span)
|
||||||
|
buf.append(" </span>\n");
|
||||||
|
else if (i != titles.length - 1)
|
||||||
|
buf.append(" |\n");
|
||||||
|
}
|
||||||
|
if (!span)
|
||||||
|
buf.append("</center>");
|
||||||
|
buf.append("</div>");
|
||||||
|
_out.write(buf.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,15 +5,19 @@
|
|||||||
|
|
||||||
<html><head>
|
<html><head>
|
||||||
<%@include file="css.jsi" %>
|
<%@include file="css.jsi" %>
|
||||||
<%=intl.title("network database summary")%>
|
<%=intl.title("network database")%>
|
||||||
</head><body>
|
</head><body>
|
||||||
<%@include file="summary.jsi" %>
|
<%@include file="summary.jsi" %>
|
||||||
<h1><%=intl._("I2P Network Database Summary")%></h1>
|
<h1><%=intl._("I2P Network Database")%></h1>
|
||||||
<div class="main" id="main">
|
<div class="main" id="main">
|
||||||
<div class="wideload">
|
<div class="wideload">
|
||||||
<jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
|
<jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
|
||||||
<jsp:setProperty name="netdbHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
|
<jsp:setProperty name="netdbHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
|
||||||
<% netdbHelper.storeWriter(out); %>
|
<%
|
||||||
|
netdbHelper.storeWriter(out);
|
||||||
|
if (allowIFrame)
|
||||||
|
netdbHelper.allowGraphical();
|
||||||
|
%>
|
||||||
<jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
|
<jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
|
||||||
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" />
|
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" />
|
||||||
<jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" />
|
<jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" />
|
||||||
|
@@ -11,9 +11,11 @@
|
|||||||
<div class="main" id="main"><div class="wideload">
|
<div class="main" id="main"><div class="wideload">
|
||||||
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
|
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
|
||||||
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
|
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
|
||||||
<% profilesHelper.storeWriter(out); %>
|
<%
|
||||||
|
profilesHelper.storeWriter(out);
|
||||||
|
if (allowIFrame)
|
||||||
|
profilesHelper.allowGraphical();
|
||||||
|
%>
|
||||||
<jsp:setProperty name="profilesHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
|
<jsp:setProperty name="profilesHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
|
||||||
<jsp:getProperty name="profilesHelper" property="profileSummary" />
|
<jsp:getProperty name="profilesHelper" property="summary" />
|
||||||
<a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2>
|
|
||||||
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
|
|
||||||
<hr></div></div></body></html>
|
<hr></div></div></body></html>
|
||||||
|
Reference in New Issue
Block a user