* Console:

- Split up config network page
    - CSS tweaks and cleanups
    - Change some form notices to errors
    - Spiff up the buttons

    new silk icons: See licenses/LICENSE-SilkIcons.txt
    new toopie icon: Shrunk from existing one
This commit is contained in:
zzz
2011-11-30 23:23:41 +00:00
parent b3fcdb8e46
commit 080cc962fb
41 changed files with 464 additions and 335 deletions

View File

@ -68,7 +68,7 @@ public class ConfigAdvancedHandler extends FormHandler {
if (saved)
addFormNotice(_("Configuration saved successfully"));
else
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs"));
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
//if (_forceRestart) {
// addFormNotice("Performing a soft restart");

View File

@ -257,18 +257,18 @@ public class ConfigClientsHelper extends HelperBase {
}
buf.append("></td><td align=\"center\" width=\"15%\">");
if (showStartButton && (!ro) && !edit) {
buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"accept\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
}
if (showEditButton && (!edit) && !ro)
buf.append("<button type=\"submit\" name=\"edit\" value=\"Edit ").append(index).append("\" >" + _("Edit") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"add\" name=\"edit\" value=\"Edit ").append(index).append("\" >" + _("Edit") + "<span class=hide> ").append(index).append("</span></button>");
if (showStopButton && (!edit))
buf.append("<button type=\"submit\" name=\"action\" value=\"Stop ").append(index).append("\" >" + _("Stop") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"stop\" name=\"action\" value=\"Stop ").append(index).append("\" >" + _("Stop") + "<span class=hide> ").append(index).append("</span></button>");
if (showUpdateButton && (!edit) && !ro) {
buf.append("<button type=\"submit\" name=\"action\" value=\"Check ").append(index).append("\" >" + _("Check for updates") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" name=\"action\" value=\"Update ").append(index).append("\" >" + _("Update") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"check\" name=\"action\" value=\"Check ").append(index).append("\" >" + _("Check for updates") + "<span class=hide> ").append(index).append("</span></button>");
buf.append("<button type=\"submit\" class=\"download\" name=\"action\" value=\"Update ").append(index).append("\" >" + _("Update") + "<span class=hide> ").append(index).append("</span></button>");
}
if (showDeleteButton && (!edit) && !ro) {
buf.append("<button type=\"submit\" name=\"action\" value=\"Delete ").append(index)
buf.append("<button type=\"submit\" class=\"delete\" name=\"action\" value=\"Delete ").append(index)
.append("\" onclick=\"if (!confirm('")
.append(_("Are you sure you want to delete {0}?", _(name)))
.append("')) { return false; }\">")

View File

@ -159,7 +159,7 @@ public class ConfigLoggingHandler extends FormHandler {
if (saved)
addFormNotice(_("Log configuration saved"));
else
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
addFormError("Error saving the configuration (applied but not saved) - please see the error logs");
}
}
}

View File

@ -10,12 +10,12 @@ public class ConfigNavHelper extends HelperBase {
/** configX.jsp */
private static final String pages[] =
{"", "ui", "service", "update", "tunnels",
{"", "net", "ui", "service", "update", "tunnels",
"clients", "peer", "keyring", "logging", "stats",
"reseed", "advanced" };
private static final String titles[] =
{_x("Network"), _x("UI"), _x("Service"), _x("Update"), _x("Tunnels"),
{_x("Bandwidth"), _x("Network"), _x("UI"), _x("Service"), _x("Update"), _x("Tunnels"),
_x("Clients"), _x("Peers"), _x("Keyring"), _x("Logging"), _x("Stats"),
_x("Reseeding"), _x("Advanced") };

View File

@ -44,7 +44,7 @@ public class ConfigNetHandler extends FormHandler {
private String _reseedFrom;
private boolean _enableLoadTesting;
private String _sharePct;
private static final boolean _ratesOnly = false; // always false - delete me
private boolean _ratesOnly;
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
@Override
@ -120,6 +120,11 @@ public class ConfigNetHandler extends FormHandler {
_sharePct = (pct != null ? pct.trim() : null);
}
/** @since 0.8.12 */
public void setRatesOnly(String foo) {
_ratesOnly = true;
}
private void recheckReachability() {
_context.commSystem().recheckReachability();
addFormNotice(_("Rechecking router reachability..."));
@ -274,12 +279,10 @@ public class ConfigNetHandler extends FormHandler {
}
boolean saved = _context.router().saveConfig();
if ( (_action != null) && (_("Save changes").equals(_action)) ) {
if (saved)
addFormNotice(_("Configuration saved successfully"));
else
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs"));
}
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
if (switchRequired) {
hiddenSwitch();
@ -341,6 +344,7 @@ public class ConfigNetHandler extends FormHandler {
private void updateRates() {
boolean updated = false;
boolean bwUpdated = false;
if (_sharePct != null) {
String old = _context.router().getConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE);
@ -361,7 +365,7 @@ public class ConfigNetHandler extends FormHandler {
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BURST_BANDWIDTH, "" + rate);
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BANDWIDTH_PEAK, "" + kb);
} catch (NumberFormatException nfe) {}
updated = true;
bwUpdated = true;
}
if ( (_outboundRate != null) && (_outboundRate.length() > 0) &&
!_outboundRate.equals(_context.getProperty(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH, "" + FIFOBandwidthRefiller.DEFAULT_OUTBOUND_BANDWIDTH))) {
@ -372,6 +376,11 @@ public class ConfigNetHandler extends FormHandler {
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BURST_BANDWIDTH, "" + rate);
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH_PEAK, "" + kb);
} catch (NumberFormatException nfe) {}
bwUpdated = true;
}
if (bwUpdated) {
addFormNotice(_("Updated bandwidth limits"));
updated = true;
}
@ -427,9 +436,7 @@ public class ConfigNetHandler extends FormHandler {
***********/
if (updated && !_ratesOnly) {
if (updated)
_context.bandwidthLimiter().reinitialize();
addFormNotice(_("Updated bandwidth limits"));
}
}
}

View File

@ -228,7 +228,7 @@ public class ConfigNetHelper extends HelperBase {
public String getSharePercentageBox() {
int pct = (int) (100 * _context.router().getSharePercentage());
StringBuilder buf = new StringBuilder(256);
buf.append("<select style=\"text-align: right;\" name=\"sharePercentage\">\n");
buf.append("<select style=\"text-align: right !important;\" name=\"sharePercentage\">\n");
boolean found = false;
for (int i = 30; i <= 110; i += 10) {
int val = i;

View File

@ -9,11 +9,13 @@ import net.i2p.router.RouterContext;
*
*/
public class ConfigRestartBean {
/** all these are tagged below so no need to _x them here */
static final String[] SET1 = {"shutdownImmediate", "Shutdown immediately", "cancelShutdown", "Cancel shutdown"};
static final String[] SET2 = {"restartImmediate", "Restart immediately", "cancelShutdown", "Cancel restart"};
static final String[] SET3 = {"restart", "Restart", "shutdown", "Shutdown"};
static final String[] SET4 = {"shutdown", "Shutdown"};
/** all these are tagged below so no need to _x them here.
* order is: form value, form class, display text.
*/
static final String[] SET1 = {"shutdownImmediate", "stop", "Shutdown immediately", "cancelShutdown", "cancel", "Cancel shutdown"};
static final String[] SET2 = {"restartImmediate", "reload", "Restart immediately", "cancelShutdown", "cancel", "Cancel restart"};
static final String[] SET3 = {"restart", "reload", "Restart", "shutdown", "stop", "Shutdown"};
static final String[] SET4 = {"shutdown", "stop", "Shutdown"};
public static String getNonce() {
RouterContext ctx = ContextHelper.getContext(null);
@ -58,21 +60,21 @@ public class ConfigRestartBean {
long timeRemaining = ctx.router().getShutdownTimeRemaining();
StringBuilder buf = new StringBuilder(128);
if ((shuttingDown || restarting) && timeRemaining <= 0) {
buf.append("<center><b>");
buf.append("<h4>");
if (restarting)
buf.append(_("Restart imminent", ctx));
else
buf.append(_("Shutdown imminent", ctx));
buf.append("</b></center>");
buf.append("</h4>");
} else if (shuttingDown) {
buf.append("<center><b>");
buf.append("<h4>");
buf.append(_("Shutdown in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
buf.append("</b></center><br>");
buf.append("</h4><hr>");
buttons(ctx, buf, urlBase, systemNonce, SET1);
} else if (restarting) {
buf.append("<center><b>");
buf.append("<h4>");
buf.append(_("Restart in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
buf.append("</b></center><br>");
buf.append("</h4><hr>");
buttons(ctx, buf, urlBase, systemNonce, SET2);
} else {
if (ctx.hasWrapper())
@ -83,12 +85,16 @@ public class ConfigRestartBean {
return buf.toString();
}
/** @param s value,label,... pairs */
/** @param s value,class,label,... triplets */
private static void buttons(RouterContext ctx, StringBuilder buf, String url, String nonce, String[] s) {
buf.append("<form action=\"").append(url).append("\" method=\"POST\">\n");
buf.append("<input type=\"hidden\" name=\"consoleNonce\" value=\"").append(nonce).append("\" >\n");
for (int i = 0; i < s.length; i+= 2)
buf.append("<button type=\"submit\" name=\"action\" value=\"").append(s[i]).append("\" >").append(_(s[i+1], ctx)).append("</button>\n");
for (int i = 0; i < s.length; i+= 3) {
buf.append("<button type=\"submit\" name=\"action\" value=\"")
.append(s[i]).append("\" class=\"")
.append(s[i+1]).append("\" >")
.append(_(s[i+2], ctx)).append("</button>\n");
}
buf.append("</form>\n");
}

View File

@ -139,7 +139,7 @@ public class ConfigTunnelsHandler extends FormHandler {
if (saved)
addFormNotice(_("Exploratory tunnel configuration saved successfully."));
else
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs."));
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
}
}
private static final int getInt(Object val) {

View File

@ -33,7 +33,7 @@ public class ConfigUIHandler extends FormHandler {
_("Refresh the page to view.") +
"</a>");
} else {
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs."));
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
}
}
}

View File

@ -195,7 +195,7 @@ public class GraphHelper extends FormHandler {
if (persistent)
_out.write(" checked=\"true\"");
_out.write(">" +
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
"<hr><div class=\"formaction\"><input type=\"submit\" class=\"acceot\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
} catch (IOException ioe) {
ioe.printStackTrace();
}

View File

@ -204,7 +204,7 @@ public class SummaryBarRenderer {
.append(_helper.getUptime())
.append("</td></tr></table>\n" +
"<hr><h4><a href=\"/config#help\" target=\"_top\" title=\"")
"<hr><h4><a href=\"/confignet#help\" target=\"_top\" title=\"")
.append(_("Help with configuring your firewall and router for optimal I2P performance"))
.append("\">")
.append(_("Network"))
@ -214,7 +214,10 @@ public class SummaryBarRenderer {
// display all the time so we display the final failure message, and plugin update messages too
buf.append(UpdateHandler.getStatus());
String status = UpdateHandler.getStatus();
if (status.length() > 0) {
buf.append("<h4>").append(status).append("</h4><hr>\n");
}
if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) {
if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) {
// nothing
@ -233,13 +236,13 @@ public class SummaryBarRenderer {
buf.append("<form action=\"").append(uri).append("\" method=\"POST\">\n");
buf.append("<input type=\"hidden\" name=\"updateNonce\" value=\"").append(nonce).append("\" >\n");
if (_helper.updateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >")
buf.append("<button type=\"submit\" class=\"download\" name=\"updateAction\" value=\"signed\" >")
// Note to translators: parameter is a version, e.g. "0.8.4"
.append(_("Download {0} Update", _helper.getUpdateVersion()))
.append("</button><br>\n");
}
if (_helper.unsignedUpdateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >")
buf.append("<button type=\"submit\" class=\"download\" name=\"updateAction\" value=\"Unsigned\" >")
// Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
// <br> is optional, to help the browser make the lines even in the button
// If the translation is shorter than the English, you should probably not include <br>
@ -305,7 +308,7 @@ public class SummaryBarRenderer {
boolean anotherLine = false;
if (_helper.showFirewallWarning()) {
buf.append("<h4><a href=\"/config\" target=\"_top\" title=\"")
buf.append("<h4><a href=\"/confignet\" target=\"_top\" title=\"")
.append(_("Help with firewall configuration"))
.append("\">")
.append(_("Check NAT/firewall"))
@ -328,7 +331,7 @@ public class SummaryBarRenderer {
String uri = _helper.getRequestURI();
buf.append("<p><form action=\"").append(uri).append("\" method=\"POST\">\n");
buf.append("<input type=\"hidden\" name=\"reseedNonce\" value=\"").append(nonce).append("\" >\n");
buf.append("<button type=\"submit\" value=\"Reseed\" >").append(_("Reseed")).append("</button></form></p>\n");
buf.append("<button type=\"submit\" class=\"reload\" value=\"Reseed\" >").append(_("Reseed")).append("</button></form></p>\n");
}
anotherLine = true;
}

View File

@ -4,14 +4,14 @@
<html><head>
<%@include file="css.jsi" %>
<%=intl.title("config networking")%>
<%=intl.title("configure bandwidth")%>
</head><body>
<%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<h1><%=intl._("I2P Network Configuration")%></h1>
<h1><%=intl._("I2P Bandwidth Configuration")%></h1>
<div class="main" id="main">
<%@include file="confignav.jsi" %>
@ -24,7 +24,9 @@
<form action="" method="POST">
<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
<input type="hidden" name="action" value="blah" >
<input type="hidden" name="ratesOnly" value="1" >
<h3><%=intl._("Bandwidth limiter")%></h3><p>
<img src="/themes/console/images/itoopie_xsm.png" alt="">
<b><%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b>
</p>
<div class="wideload"><p><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" >
@ -53,10 +55,10 @@
</tr><tr>
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td>
<td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
</td></tr></table></p></div></p>
</td></tr></table></p></div></p><p>
<% int share = nethelper.getShareBandwidth();
if (share < 12) {
out.print("<p><b>");
out.print("<b>");
out.print(intl._("NOTE"));
out.print("</b>: ");
out.print(intl._("You have configured I2P to share only {0} KBps.", share));
@ -64,218 +66,18 @@
out.print(intl._("I2P requires at least 12KBps to enable sharing. "));
out.print(intl._("Please enable sharing (participating in tunnels) by configuring more bandwidth. "));
out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network.")+"</p>");
out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network."));
} else {
out.print("<p>");
out.print(intl._("You have configured I2P to share {0} KBps.", share));
out.print("\n");
out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")+"</p><hr>");
out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network."));
}
%>
<p><a href="confignet"><%=intl._("Advanced network configuration page")%></a></p><hr>
<div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
</div>
<% /********
<!--
<b>Enable load testing: </b>
<input type="checkbox" class="optbox" name="enableloadtesting" value="true" <jsp:getProperty name="nethelper" property="enableLoadTesting" /> />
<p>If enabled, your router will periodically anonymously probe some of your peers
to see what sort of throughput they can handle. This improves your router's ability
to pick faster peers, but can cost substantial bandwidth. Relevant data from the
load testing is fed into the profiles as well as the
<a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p>
<br>
-->
*********/ %>
<h3><%=intl._("IP and Transport Configuration")%></h3><p>
<b><%=intl._("The default settings will work for most people.")%>
<a href="#chelp"><%=intl._("There is help below.")%></a></b>
</p><p><b><%=intl._("UPnP Configuration")%>:</b><br>
<input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> >
<%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._("UPnP status")%></a>
</p><p><b><%=intl._("IP Configuration")%>:</b><br>
<%=intl._("Externally reachable hostname or IP address")%>:<br>
<input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> >
<%=intl._("Use all auto-detect methods")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> >
<%=intl._("Disable UPnP IP address detection")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> >
<%=intl._("Ignore local interface IP address")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> >
<%=intl._("Use SSU IP address detection only")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> >
<%=intl._("Specify hostname or IP")%>:
<input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" >
<% String[] ips = nethelper.getAddresses();
if (ips.length > 0) {
out.print(intl._("or") + " <select name=\"udpHost2\"><option value=\"\" selected=\"true\">"+intl._("Select Interface")+"</option>\n");
for (int i = 0; i < ips.length; i++) {
out.print("<option value=\"");
out.print(ips[i]);
out.print("\">");
out.print(ips[i]);
out.print("</option>\n");
}
out.print("</select>\n");
}
%>
<br>
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> >
<%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
</p><p>
<%=intl._("Action when IP changes")%>:<br>
<input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
<%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
(<i><%=intl._("Experimental")%></i>)
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
<%=intl._("UDP port:")%>
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>
<% /********
<!-- let's keep this simple...
<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
Require SSU introductions
<i>(Enable if you cannot open your firewall)</i>
</p><p>
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
-->
*********/ %>
</p><p>
<b><%=intl._("TCP Configuration")%>:</b><br>
<%=intl._("Externally reachable hostname or IP address")%>:<br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> >
<%=intl._("Use auto-detected IP address")%>
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
<%=intl._("if we are not firewalled")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> >
<%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> >
<%=intl._("Specify hostname or IP")%>:
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" ><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> >
<%=intl._("Disable inbound (Firewalled)")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> >
<%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
</p><p>
<%=intl._("Externally reachable TCP port")%>:<br>
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> >
<%=intl._("Use the same port configured for UDP")%>
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
<%=intl._("Specify Port")%>:
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
<hr><div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >
</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p>
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
</p><p>
<%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
<%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
<%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%>
<%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
</p>
<% /********
<!-- let's keep this simple...
<input type="submit" name="recheckReachability" value="Check network reachability..." />
</p>
-->
*********/ %>
<p>
<%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
<%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:
<ul>
<li class="tidylist"><%=intl._("No UPnP-compatible device present")%>
<li class="tidylist"><%=intl._("UPnP disabled on the device")%>
<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%>
<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%>
<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%>
<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%>
</ul></p><p>
<a href="peers#upnp"><%=intl._("Review the UPnP status here.")%></a>
<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
<p><%=intl._("Hostnames entered above will be published in the network database.")%>
<%=intl._("They are <b>not private</b>.")%>
<%=intl._("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
<%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
<%=intl._("When in doubt, leave the settings at the defaults.")%>
</p>
<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p>
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
<%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
<%=intl._("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
<ul>
<li class="tidylist"><b><%=intl._("OK")%></b> -
<%=intl._("Your UDP port does not appear to be firewalled.")%>
<li class="tidylist"><b><%=intl._("Firewalled")%></b> -
<%=intl._("Your UDP port appears to be firewalled.")%>
<%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
<%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%>
<%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
<%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
<%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
<%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
<li class="tidylist"><b><%=intl._("Testing")%></b> -
<%=intl._("The router is currently testing whether your UDP port is firewalled.")%>
<li class="tidylist"><b><%=intl._("Hidden")%></b> -
<%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> -
<%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
<%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> -
<%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%>
<%=intl._("For best participation as a floodfill router, you should open your firewall.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> -
<%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
<%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%>
<%=intl._("Please open your firewall or disable inbound TCP above.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> -
<%=intl._("You have configured inbound TCP, however you have disabled UDP.")%>
<%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
<%=intl._("Please open your firewall or enable UDP.")%>
<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> -
<%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%>
<%=intl._("Correct your clock setting if this error persists.")%>
<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> -
<%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%>
<%=intl._("Correct the address or disable inbound TCP above.")%>
<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> -
<%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%>
<%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
<%=intl._("I2P was unable to bind to port 8887 or other configured port.")%>
<%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%>
<%=intl._("This may be a transient error, if the other program is no longer using the port.")%>
<%=intl._("However, a restart is always required after this error.")%>
<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
<%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%>
<%=intl._("Therefore your router cannot accept inbound connections.")%>
<%=intl._("Please configure a TCP host and port above or enable UDP.")%>
<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> -
<%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%>
<%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
</ul></p><hr>
<% /********
<!--
<b>Dynamic Router Keys: </b>
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
<p>
This setting causes your router identity to be regenerated every time your IP address
changes. If you have a dynamic IP this option can speed up your reintegration into
the network (since people will have shitlisted your old router identity), and, for
very weak adversaries, help frustrate trivial
<a href="http://www.i2p.net/how_threatmodel#intersection">intersection
attacks</a> against the NetDB. Your different router identities would only be
'hidden' among other I2P users at your ISP, and further analysis would link
the router identities further.</p>
<p>Note that when I2P detects an IP address change, it will automatically
initiate a restart in order to rekey and to disconnect from peers before they
update their profiles - any long lasting client connections will be disconnected,
though such would likely already be the case anyway, since the IP address changed.
</p>
<br>
-->
*********/ %>
</div></form></div></div></body></html>
</div></form>
</div></div></body></html>

View File

@ -30,7 +30,7 @@
<h3><%=intl._("Advanced I2P Configuration")%></h3>
<textarea rows="32" cols="60" name="config" wrap="off" spellcheck="false"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
<div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
<br><b><%=intl._("NOTE")%>:</b> <%=intl._("Some changes may require a restart to take effect.")%>
</div></form></div></div></div></body></html>

View File

@ -41,11 +41,11 @@ button span.hide{
<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
<%=intl._("All changes require restart to take effect.")%></i>
</p><hr><div class="formaction">
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
<% if (request.getParameter("edit") == null) { %>
<input type="submit" name="edit" value="<%=intl._("Add Client")%>" />
<input type="submit" name="edit" class="add" value="<%=intl._("Add Client")%>" />
<% } %>
<input type="submit" name="action" value="<%=intl._("Save Client Configuration")%>" />
<input type="submit" class="accept" name="action" value="<%=intl._("Save Client Configuration")%>" />
</div></form></div>
<h3><a name="i2cp"></a><%=intl._("Advanced Client Interface Configuration")%></h3>
@ -89,8 +89,8 @@ button span.hide{
<%=intl._("Many clients do not support SSL or authorization.")%>
<i><%=intl._("All changes require restart to take effect.")%></i>
</p><hr><div class="formaction">
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
<input type="submit" name="action" value="<%=intl._("Save Interface Configuration")%>" />
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
<input type="submit" class="accept" name="action" value="<%=intl._("Save Interface Configuration")%>" />
</div></form>
<h3><a name="webapp"></a><%=intl._("WebApp Configuration")%></h3><p>
@ -103,7 +103,7 @@ button span.hide{
<jsp:getProperty name="clientshelper" property="form2" />
<p><i><%=intl._("All changes require restart to take effect.")%></i>
</p><hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Save WebApp Configuration")%>" />
<input type="submit" name="action" class="accept" value="<%=intl._("Save WebApp Configuration")%>" />
</div></form></div>
<% if (clientshelper.showPlugins()) { %>
@ -114,7 +114,7 @@ button span.hide{
<input type="hidden" name="nonce" value="<%=pageNonce%>" >
<jsp:getProperty name="clientshelper" property="form3" />
<hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Save Plugin Configuration")%>" />
<input type="submit" name="action" class="accept" value="<%=intl._("Save Plugin Configuration")%>" />
</div></form></div>
<h3><a name="plugin"></a><%=intl._("Plugin Installation")%></h3><p>
@ -125,7 +125,7 @@ button span.hide{
<p>
<input type="text" size="60" name="pluginURL" >
</p><hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Install Plugin")%>" />
<input type="submit" name="action" class="download" value="<%=intl._("Install Plugin")%>" />
</div></form></div>
<% } %>
</div></div></body></html>

View File

@ -41,7 +41,7 @@
<td><input type="text" size="55" name="key" ></td>
</tr><tr>
<td align="right" colspan="2">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="action" value="<%=intl._("Delete key")%>" >
<input type="submit" name="action" value="<%=intl._("Add key")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="action" class="delete" value="<%=intl._("Delete key")%>" >
<input type="submit" name="action" class="add" value="<%=intl._("Add key")%>" >
</td></tr></table></p></div></form></div></div></body></html>

View File

@ -48,6 +48,6 @@
<td><jsp:getProperty name="logginghelper" property="newClassBox" /></td>
</tr><tr><td colspan="2"><hr></td>
</tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
</div></td></tr></table></div></form></div></div></body></html>

View File

@ -0,0 +1,217 @@
<%@page contentType="text/html" %>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<%@include file="css.jsi" %>
<%=intl.title("config networking")%>
</head><body>
<%@include file="summary.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<h1><%=intl._("I2P Network Configuration")%></h1>
<div class="main" id="main">
<%@include file="confignav.jsi" %>
<jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" />
<% formhandler.storeMethod(request.getMethod()); %>
<jsp:setProperty name="formhandler" property="*" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:getProperty name="formhandler" property="allMessages" />
<div class="configure">
<form action="" method="POST">
<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
<input type="hidden" name="action" value="blah" >
<h3><%=intl._("IP and Transport Configuration")%></h3><p>
<img src="/themes/console/images/itoopie_xsm.png" alt="">
<b><%=intl._("The default settings will work for most people.")%>
<a href="#chelp"><%=intl._("There is help below.")%></a></b>
</p><p><b><%=intl._("UPnP Configuration")%>:</b><br>
<input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> >
<%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._("UPnP status")%></a>
</p><p><b><%=intl._("IP Configuration")%>:</b><br>
<%=intl._("Externally reachable hostname or IP address")%>:<br>
<input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> >
<%=intl._("Use all auto-detect methods")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> >
<%=intl._("Disable UPnP IP address detection")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> >
<%=intl._("Ignore local interface IP address")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> >
<%=intl._("Use SSU IP address detection only")%><br>
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> >
<%=intl._("Specify hostname or IP")%>:
<input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" >
<% String[] ips = nethelper.getAddresses();
if (ips.length > 0) {
out.print(intl._("or") + " <select name=\"udpHost2\"><option value=\"\" selected=\"true\">"+intl._("Select Interface")+"</option>\n");
for (int i = 0; i < ips.length; i++) {
out.print("<option value=\"");
out.print(ips[i]);
out.print("\">");
out.print(ips[i]);
out.print("</option>\n");
}
out.print("</select>\n");
}
%>
<br>
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> >
<%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
</p><p>
<%=intl._("Action when IP changes")%>:<br>
<input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
<%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
(<i><%=intl._("Experimental")%></i>)
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
<%=intl._("UDP port:")%>
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>
<% /********
<!-- let's keep this simple...
<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
Require SSU introductions
<i>(Enable if you cannot open your firewall)</i>
</p><p>
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
-->
*********/ %>
</p><p>
<b><%=intl._("TCP Configuration")%>:</b><br>
<%=intl._("Externally reachable hostname or IP address")%>:<br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> >
<%=intl._("Use auto-detected IP address")%>
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
<%=intl._("if we are not firewalled")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> >
<%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> >
<%=intl._("Specify hostname or IP")%>:
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" ><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> >
<%=intl._("Disable inbound (Firewalled)")%><br>
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> >
<%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
</p><p>
<%=intl._("Externally reachable TCP port")%>:<br>
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> >
<%=intl._("Use the same port configured for UDP")%>
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
<%=intl._("Specify Port")%>:
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
<hr><div class="formaction">
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p>
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
</p><p>
<%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
<%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
<%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%>
<%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
</p>
<% /********
<!-- let's keep this simple...
<input type="submit" name="recheckReachability" value="Check network reachability..." />
</p>
-->
*********/ %>
<p>
<%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
<%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:
<ul>
<li class="tidylist"><%=intl._("No UPnP-compatible device present")%>
<li class="tidylist"><%=intl._("UPnP disabled on the device")%>
<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%>
<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%>
<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%>
<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%>
</ul></p><p>
<a href="peers#upnp"><%=intl._("Review the UPnP status here.")%></a>
<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
<p><%=intl._("Hostnames entered above will be published in the network database.")%>
<%=intl._("They are <b>not private</b>.")%>
<%=intl._("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
<%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
<%=intl._("When in doubt, leave the settings at the defaults.")%>
</p>
<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p>
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
<%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
<%=intl._("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
<ul>
<li class="tidylist"><b><%=intl._("OK")%></b> -
<%=intl._("Your UDP port does not appear to be firewalled.")%>
<li class="tidylist"><b><%=intl._("Firewalled")%></b> -
<%=intl._("Your UDP port appears to be firewalled.")%>
<%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
<%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%>
<%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
<%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
<%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
<%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
<li class="tidylist"><b><%=intl._("Testing")%></b> -
<%=intl._("The router is currently testing whether your UDP port is firewalled.")%>
<li class="tidylist"><b><%=intl._("Hidden")%></b> -
<%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> -
<%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
<%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> -
<%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%>
<%=intl._("For best participation as a floodfill router, you should open your firewall.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> -
<%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
<%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%>
<%=intl._("Please open your firewall or disable inbound TCP above.")%>
<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> -
<%=intl._("You have configured inbound TCP, however you have disabled UDP.")%>
<%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
<%=intl._("Please open your firewall or enable UDP.")%>
<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> -
<%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%>
<%=intl._("Correct your clock setting if this error persists.")%>
<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> -
<%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%>
<%=intl._("Correct the address or disable inbound TCP above.")%>
<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> -
<%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%>
<%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
<%=intl._("I2P was unable to bind to port 8887 or other configured port.")%>
<%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%>
<%=intl._("This may be a transient error, if the other program is no longer using the port.")%>
<%=intl._("However, a restart is always required after this error.")%>
<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
<%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%>
<%=intl._("Therefore your router cannot accept inbound connections.")%>
<%=intl._("Please configure a TCP host and port above or enable UDP.")%>
<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> -
<%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%>
<%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
</ul></p><hr>
<% /********
<!--
<b>Dynamic Router Keys: </b>
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
<p>
This setting causes your router identity to be regenerated every time your IP address
changes. If you have a dynamic IP this option can speed up your reintegration into
the network (since people will have shitlisted your old router identity), and, for
very weak adversaries, help frustrate trivial
<a href="http://www.i2p.net/how_threatmodel#intersection">intersection
attacks</a> against the NetDB. Your different router identities would only be
'hidden' among other I2P users at your ISP, and further analysis would link
the router identities further.</p>
<p>Note that when I2P detects an IP address change, it will automatically
initiate a restart in order to rekey and to disconnect from peers before they
update their profiles - any long lasting client connections will be disconnected,
though such would likely already be the case anyway, since the IP address changed.
</p>
<br>
-->
*********/ %>
</div></form></div></div></body></html>

View File

@ -39,8 +39,8 @@
<h3><%=intl._("Manually Ban / Unban a Peer")%></h3>
<p><%=intl._("Banning will prevent the participation of this peer in tunnels you create.")%></p>
<div class="formaction">
<input type="submit" name="action" value="<%=intl._("Ban peer until restart")%>" />
<input type="submit" name="action" value="<%=intl._("Unban peer")%>" />
<input type="submit" name="action" class="delete" value="<%=intl._("Ban peer until restart")%>" />
<input type="submit" name="action" class="accept" value="<%=intl._("Unban peer")%>" />
<% if (! "".equals(peer)) { %>
<!-- <font color="blue">&lt;---- click to verify action</font> -->
<% } %>
@ -57,7 +57,7 @@
<input type="text" size="8" name="speed" value="<%=speed%>" />
<%=intl._("Capacity")%>:
<input type="text" size="8" name="capacity" value="<%=capacity%>" />
<input type="submit" name="action" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
<input type="submit" name="action" class="add" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
</form>
<a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2>
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />

View File

@ -75,7 +75,7 @@
</table></div>
<hr><div class="formaction">
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
<input type="submit" name="action" value="<%=intl._("Save changes and reseed now")%>" />
<input type="submit" name="action" value="<%=intl._("Save changes")%>" />
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
<input type="submit" name="action" class="download" value="<%=intl._("Save changes and reseed now")%>" />
<input type="submit" name="action" class="accept" value="<%=intl._("Save changes")%>" />
</div></form></div></div></body></html>

View File

@ -24,9 +24,9 @@
<p><%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%>
<%=intl._("If you need to kill the router immediately, that option is available as well.")%></p>
<hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Shutdown gracefully")%>" >
<input type="submit" name="action" value="<%=intl._("Shutdown immediately")%>" >
<input type="submit" name="action" value="<%=intl._("Cancel graceful shutdown")%>" >
<input type="submit" class="stop" name="action" value="<%=intl._("Shutdown gracefully")%>" >
<input type="submit" class="stop" name="action" value="<%=intl._("Shutdown immediately")%>" >
<input type="submit" class="cancel" name="action" value="<%=intl._("Cancel graceful shutdown")%>" >
</div>
<% if (System.getProperty("wrapper.version") != null) { %>
<p><%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%>
@ -34,8 +34,8 @@
<%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%>
<%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%></p>
<hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Graceful restart")%>" >
<input type="submit" name="action" value="<%=intl._("Hard restart")%>" >
<input type="submit" class="reload" name="action" value="<%=intl._("Graceful restart")%>" >
<input type="submit" class="reload" name="action" value="<%=intl._("Hard restart")%>" >
<% } %></div>
<% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>

View File

@ -111,7 +111,7 @@ function toggleAll(category)
<td colspan="2"><%=intl._("Advanced filter")%>:
<input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" ></td></tr>
<tr class="tablefooter"><td colspan="3" align="right">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
</td></tr>
</table></div></form></div></div></body></html>

View File

@ -38,7 +38,7 @@
<%=intl._("Client tunnel changes are temporary and are not saved.")%>
<%=intl._("To make permanent client tunnel changes see the")%> <a href="i2ptunnel/index.jsp"><%=intl._("i2ptunnel page")%></a>.
<hr><div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
</div>
</form></div></div></div></body></html>

View File

@ -49,7 +49,7 @@
<jsp:getProperty name="uihelper" property="langSettings" />
<p><%=uihelper._("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>
</p><hr><div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Apply")%>" >
</div></form></div>
</div></body></html>

View File

@ -37,7 +37,7 @@
<tr><td colspan="2"></tr>
<tr><td class= "mediumtags" align="right"><b><%=intl._("News Updates")%>:</b></td>
<% } // if canInstall %>
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" value="<%=intl._("Check for updates")%>" />
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" class="check" value="<%=intl._("Check for updates")%>" />
<% } %></td></tr>
<tr><td colspan="2"><br></td></tr>
<tr><td class= "mediumtags" align="right"><b><%=intl._("News URL")%>:</b></td>
@ -68,6 +68,6 @@
<% } // if canInstall %>
<tr class="tablefooter"><td colspan="2">
<div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="action" value="<%=intl._("Save")%>" >
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
<input type="submit" name="action" class="accept" value="<%=intl._("Save")%>" >
</div></td></tr></table></div></form></div></div></body></html>

View File

@ -41,7 +41,7 @@ your computer's time.</li> */
%>
<li class="tidylist"><b>Reachability:</b>
The router's view of whether it can be contacted by other routers.
Further information is on the <a href="config.jsp#help">configuration page</a>.
Further information is on the <a href="confignet#help">configuration page</a>.
</li></ul><h3>Peers</h3><ul>
<li class="tidylist"><b>Active:</b>
The first number is the number of peers you've sent or received a message from in the last few minutes.
@ -73,7 +73,7 @@ shared bandwidth, and locally-generated traffic.
I2P does not require a router to know every other router.</li>
</ul><h3>Bandwidth in/out</h3><div align="justify">
Should be self-explanatory. All values are in bytes per second, not bits per second.
Change your bandwidth limits on the <a href="config.jsp#help">configuration page</a>.
Change your bandwidth limits on the <a href="confignet#help">configuration page</a>.
Bandwidth is <a href="graphs.jsp">graphed</a> by default.</div>
<h3>Local destinations</h3><div align="justify">
@ -92,7 +92,7 @@ Tunnels built by other routers through your router.
This may vary widely depending on network demand, your
shared bandwidth, and amount of locally-generated traffic.
The recommended method for limiting participating tunnels is
to change your share percentage on the <a href="config.jsp#help">configuration page</a>.
to change your share percentage on the <a href="confignet#help">configuration page</a>.
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</li>
<li class="tidylist"><b>Share ratio:</b>

View File

@ -36,7 +36,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.</li>
<li class="tidylist"><b>إمكانية الوصول</b>
امكانية الاتصال الخارجي بالموجه
المزيد من التفاصيل في <a href="config.jsp#help">صفحة الاعدادات</a>.</li>
المزيد من التفاصيل في <a href="confignet#help">صفحة الاعدادات</a>.</li>
</ul><h3>النظائر</h3><ul>
<li class="tidylist"><b>مفعل</b>
هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية.
@ -65,7 +65,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
</li>
</ul><h3>سرعة الاتصال الداخلي/خارجي</h3><div align="justify">
السرعة ب بايت في الثانية
غير السرعة في <a href="config.jsp#help">صفحة الاعدادات</a>.
غير السرعة في <a href="confignet#help">صفحة الاعدادات</a>.
السرعة <a href="graphs.jsp">مرسومة</a> </div>
<h3>الوجهات الداخلية</h3><div align="justify">
الاتصالات الداخلية
@ -82,7 +82,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
<li class="tidylist"><b>المشاركة</b>
الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك.
هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة...
يمكنك تغيير درجة المشاركة بـ <a href="config.jsp#help">صفحة الاعدادات</a>.
يمكنك تغيير درجة المشاركة بـ <a href="confignet#help">صفحة الاعدادات</a>.
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
the <a href="configadvanced.jsp">صفحة الاعدادات المتقدمة</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[تفعيل الرسم البياني]</a>.</li>
<li class="tidylist"><b>نسبة المشاركة</b>

View File

@ -37,7 +37,7 @@ La version d'I2P qui vous affiche actuellement cette page.</li>
Indique depuis combien de temps le routeur tourne.</li>
<li class="tidylist"><b>Réseau:</b>
Statut de joignabilité du routeur par les autres routeurs.
Plus d'infos sur la page de <a href="config.jsp#help">configuration</a>.
Plus d'infos sur la page de <a href="confignet#help">configuration</a>.
</li></ul><h3>Pairs</h3><ul>
<li class="tidylist"><b>Actifs:</b>
le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de
@ -65,7 +65,7 @@ taille totale du réseau; il varie en fonction de votre bande passante totale et
local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.
</li></ul><h3>Bande passante entrée/sortie</h3><div align="justify">
Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos
limites de bande passante sur la page de <a href="config.jsp#help">configuration</a>.
limites de bande passante sur la page de <a href="confignet#help">configuration</a>.
Le <a href="graphs.jsp">graphique de bande passante</a> est activé par défaut.</div>
<h3>Destinations locales</h3><div align="justify">
@ -80,7 +80,7 @@ pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels e
<li class="tidylist"><b>Participants:</b> les tunnels créés par d'autres routeurs et qui passent par le votre. Leur
nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local.
La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la
<a href="config.jsp#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
<a href="confignet#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
<tt>router.maxParticipatingTunnels=nnn</tt> dans la <a href="configadvanced.jsp">configuration avancée</a>.
<a href="configstats.jsp#tunnel.participatingTunnels">[Activer le graphique]</a>.</li>
<li class="tidylist"><b>Rapport de partage:</b> le nombre de tunnels participants que vous routez pour les autres,

View File

@ -39,7 +39,7 @@ De versie van de I2P software die je nu gebruikt.</li>
Hoe lang je I2P router al draait.</li>
<li class="tidylist"><b>Netwerk Bereikbaarheid:</b>
De bereikbaarheid van je router door andere routers.
Meer informatie is te vinden op de <a href="config.jsp#help">configuratie pagina</a>.</li>
Meer informatie is te vinden op de <a href="confignet#help">configuratie pagina</a>.</li>
</ul>
<h3>Peers</h3><ul>
@ -78,7 +78,7 @@ Voor I2P is het niet nodig dat een router alle andere routers kent.
<h3>Bandbreedte in/out</h3><div align="justify">
Dit zou zichzelf moeten verklaren. Alle waarden zijn in bytes per seconde, niet in bits per seconde.
Wijzig je bandbreedte limieten op de <a href="config.jsp#help">configuratie pagina</a>.
Wijzig je bandbreedte limieten op de <a href="confignet#help">configuratie pagina</a>.
Bandbreedte wordt standaard <a href="graphs.jsp">geplot</a>.</div>
<h3>Tunnels</h3><div align="justify">
@ -93,7 +93,7 @@ Tunnels gebouwd door andere routers die door je eigen router heen lopen.
Dit kan erg vari&euml;ren afhankelijk van de vraag vanuit het netwerk,
je gedeelde bandbreedte en hoeveelheid lokaal gegenereerd verkeer.
De aanbevolen methode om het aantal deelnemende tunnels te beperken
is door het share percentage te wijzigen op de <a href="config.jsp#help">configuratie pagina</a>.
is door het share percentage te wijzigen op de <a href="confignet#help">configuratie pagina</a>.
Je kan het totale aantal ook beperken met de instelling <tt>router.maxParticipatingTunnels=nnn</tt> op
de <a href="configadvanced.jsp">geavanceerde configuratie pagina</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Grafieken inschakelen]</a>.</li>
<li class="tidylist"><b>Share rato:</b>

View File

@ -45,7 +45,7 @@
</li>
<li class="tidylist"><b>Доступность:</b>
Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на <a href="config.jsp#help">странице сетевых настроек</a>.
Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на <a href="confignet#help">странице сетевых настроек</a>.
</li>
</ul>
@ -100,7 +100,7 @@
</li>
<li class="tidylist"><b>Транзитные:</b>
Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице <a href="config.jsp#help">сетевых настроек</a>. Также можно задать точный ограничитель количества через параметр <tt>router.maxParticipatingTunnels=nnn</tt> на странице <a href="configadvanced.jsp">дополнительных настроек</a>.
Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице <a href="confignet#help">сетевых настроек</a>. Также можно задать точный ограничитель количества через параметр <tt>router.maxParticipatingTunnels=nnn</tt> на странице <a href="configadvanced.jsp">дополнительных настроек</a>.
<a href="configstats.jsp#tunnel.participatingTunnels">[Включить построение графика]</a>.
</li>

View File

@ -1,3 +1,17 @@
2011-12-01 zzz
* Console:
- Split up config network page
- CSS tweaks in summary bar
- Spiff up the buttons
* i2psnark:
- Retry link on torrent download fail
- Clear URL after clicking 'add torrent'
- Message tweaks
- CSS tweaks
* IRC Server: Fix IOOBE (ticket #559)
* Throttle: Update throttle status immediately on shutdown request;
clear starting-up message after 20 minutes
2011-11-29 zzz
* Random: Use new nextBytes(buf, off, len) for efficiency
* Router: Refactor periodic tasks to their own files

Binary file not shown.

After

Width:  |  Height:  |  Size: 781 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

View File

@ -160,15 +160,15 @@ div.routersummary h4 {
font-size: 8.5pt;
letter-spacing: 0.02em;
margin: -6px -6px -7px !important;
padding: 3px 3px 5px 3px;
background: #dbdbf5;
text-transform: capitalize;
padding: 6px 3px 6px 27px;
background: #e0e0f5 url('../images/itoopie_xsm.png') no-repeat left center;
min-height: 26px;
text-decoration: none !important;
color: #2b2;
color: #359;
line-height: 105%;
-moz-box-shadow: inset 0px 0px 1px 30px #dfd;
-khtml-box-shadow: 0px 0px 1px 1px #dfd;
box-shadow: 0px 0px 1px 1px #fdf;
-moz-box-shadow: inset 0px 0px 1px 30px #bdf;
-khtml-box-shadow: 0px 0px 1px 1px #bdf;
box-shadow: 0px 0px 1px 1px #bdf;
}
div.routersummary table {
@ -558,7 +558,7 @@ tr {
}
tr:nth-child(even) {
background: #eef url(images/magic.png);
background: #f7f7ff url(images/magic.png);
}
tr:nth-child(odd) {
@ -579,15 +579,6 @@ tt {
padding: 1px 5px;
}
div.main li {
text-align: left;
list-style: square;
margin: 2px 5px 0px 20px;
padding: 1px 10px 1px 10px;
line-height: 150%;
word-wrap: break-word;
}
div.main li {
text-align: left;
list-style: square;
@ -640,12 +631,6 @@ ul {
padding: 0;
}
code {
text-align: left;
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
}
code {
text-align: left;
font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
@ -796,22 +781,70 @@ button, button:visited {
font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
border: 1px outset #66a;
padding: 1px 3px;
background: #ffe !important;
background: #ffe;
text-decoration: none;
border-radius: 4px;
-moz-border-radius: 4px;
-khtml-border-radius: 4px;
font-size: 8pt;
font-weight: bold;
margin: 0 1px;
margin: 2px;
text-align: center;
min-width: 80px;
min-width: 60px;
-moz-box-shadow: inset 0px 0px 2px 1px #fff;
-khtml-box-shadow: inset 0px 2px 8px 0px #fff;
box-shadow: inset 0px 2px 8px 0px #fff;
color: #316;
}
button.accept {
background: #ffe url('../images/accept.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.add {
background: #ffe url('../images/add.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.cancel {
background: #ffe url('../images/cancel.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.check {
background: #ffe url('../images/tick.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.delete {
background: #ffe url('../images/delete.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.download {
background: #ffe url('../images/arrow_down.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.reload {
background: #ffe url('../images/arrow_refresh.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button.stop {
background: #ffe url('../images/stop.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
button:hover {
border: 1px solid #f60;
background: #f60 !important;
@ -862,7 +895,7 @@ input, input:visited {
color: #316;
margin: 5px;
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
padding: 1px 2px;
padding: 1px 3px;
text-decoration: none;
border-radius: 4px;
-moz-border-radius: 4px;
@ -872,6 +905,53 @@ input, input:visited {
opacity: 1;
}
input.accept {
background: #ffe url('../images/accept.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.add {
background: #ffe url('../images/add.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.cancel {
background: #ffe url('../images/cancel.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.check {
background: #ffe url('../images/tick.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.delete {
background: #ffe url('../images/delete.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.download {
background: #ffe url('../images/arrow_down.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.reload {
background: #ffe url('../images/arrow_refresh.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input.stop {
background: #ffe url('../images/stop.png') no-repeat left center;
padding: 1px 3px 1px 18px;
min-height: 22px;
}
input:hover {
background: #f60;
@ -896,7 +976,7 @@ input[type=text], input[type=password] {
background: #ffe;
color: #001;
margin: 5px 10px 5px 10px;
padding: 4px 2px;
padding: 4px;
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
border: 1px solid #447;
text-decoration: none;
@ -923,7 +1003,7 @@ select {
margin: 5px 10px 5px 10px;
padding: 4px;
border: 1px solid #447;
min-width: 110px;
min-width: 80px;
font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
border-radius: 4px;
-moz-border-radius: 4px;

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 12;
public final static long BUILD = 13;
/** for example "-test" */
public final static String EXTRA = "";