propagate from branch 'i2p.i2p.zzz.test' (head 16046dc1b2fd2a8b10de465cf238233f5d6954af)
to branch 'i2p.i2p' (head f222777c65da9e465bbf717582b4384d31848e07)
This commit is contained in:
@ -27,8 +27,8 @@ do
|
||||
# translate calls must be one of the forms:
|
||||
# _("foo")
|
||||
# _x("foo")
|
||||
# cssHelper._("foo")
|
||||
# cssHelper.title("foo")
|
||||
# intl._("foo")
|
||||
# intl.title("foo")
|
||||
# handler._("foo")
|
||||
# formhandler._("foo")
|
||||
# In a jsp, you must use a helper or handler that has the context set.
|
||||
@ -36,7 +36,7 @@ do
|
||||
# then ant distclean updater.
|
||||
find src ../jsp/WEB-INF -name *.java > $TMPFILE
|
||||
xgettext -f $TMPFILE -F -L java \
|
||||
--keyword=_ --keyword=_x --keyword=cssHelper._ --keyword=cssHelper.title \
|
||||
--keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
|
||||
--keyword=handler._ --keyword=formhandler._ \
|
||||
-o ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
|
@ -29,9 +29,9 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action.startsWith("Save Client")) {
|
||||
if (_action.equals(_("Save Client Configuration"))) {
|
||||
saveClientChanges();
|
||||
} else if (_action.startsWith("Save WebApp")) {
|
||||
} else if (_action.equals(_("Save WebApp Configuration"))) {
|
||||
saveWebAppChanges();
|
||||
} else if (_action.startsWith("Start ")) {
|
||||
String app = _action.substring(6);
|
||||
@ -43,7 +43,7 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
startClient(appnum);
|
||||
else
|
||||
startWebApp(app);
|
||||
} else if (_action.toLowerCase().startsWith("start<span class=hide> ") &&
|
||||
} else if (_action.toLowerCase().startsWith("Start<span class=hide> ") &&
|
||||
_action.toLowerCase().endsWith("</span>")) {
|
||||
// IE sucks
|
||||
String app = _action.substring(23, _action.length() - 7);
|
||||
@ -56,7 +56,7 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
else
|
||||
startWebApp(app);
|
||||
} else {
|
||||
addFormError("Unsupported " + _action + ".");
|
||||
addFormError(_("Unsupported") + " " + _action + ".");
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,18 +71,18 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
ca.disabled = val == null;
|
||||
}
|
||||
ClientAppConfig.writeClientAppConfig(_context, clients);
|
||||
addFormNotice("Client configuration saved successfully - restart required to take effect.");
|
||||
addFormNotice(_("Client configuration saved successfully - restart required to take effect."));
|
||||
}
|
||||
|
||||
private void startClient(int i) {
|
||||
List clients = ClientAppConfig.getClientApps(_context);
|
||||
if (i >= clients.size()) {
|
||||
addFormError("Bad client index.");
|
||||
addFormError(_("Bad client index."));
|
||||
return;
|
||||
}
|
||||
ClientAppConfig ca = (ClientAppConfig) clients.get(i);
|
||||
LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), configClient_log);
|
||||
addFormNotice("Client " + ca.clientName + " started.");
|
||||
addFormNotice(_("Client") + " " + ca.clientName + " " + _("started") + ".");
|
||||
}
|
||||
|
||||
private void saveWebAppChanges() {
|
||||
@ -99,7 +99,7 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
props.setProperty(name, "" + (val != null));
|
||||
}
|
||||
RouterConsoleRunner.storeWebAppProperties(props);
|
||||
addFormNotice("WebApp configuration saved successfully - restart required to take effect.");
|
||||
addFormNotice(_("WebApp configuration saved successfully - restart required to take effect."));
|
||||
}
|
||||
|
||||
// Big hack for the moment, not using properties for directory and port
|
||||
@ -117,14 +117,14 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
path = new File(path, app + ".war");
|
||||
s.addWebApplication("/"+ app, path.getAbsolutePath()).start();
|
||||
// no passwords... initialize(wac);
|
||||
addFormNotice("WebApp <a href=\"/" + app + "/\">" + app + "</a> started.");
|
||||
addFormNotice("WebApp <a href=\"/" + app + "/\">" + app + "</a> " + _("started") + ".");
|
||||
} catch (Exception ioe) {
|
||||
addFormError("Failed to start " + app + " " + ioe + ".");
|
||||
addFormError(_("Failed to start") + " " + app + " " + ioe + ".");
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
addFormError("Failed to find server.");
|
||||
addFormError(_("Failed to find server."));
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
public String getForm1() {
|
||||
StringBuilder buf = new StringBuilder(1024);
|
||||
buf.append("<table>\n");
|
||||
buf.append("<tr><th align=\"right\">Client</th><th>Run at Startup?</th><th>Start Now</th><th align=\"left\">Class and arguments</th></tr>\n");
|
||||
buf.append("<tr><th align=\"right\">" + _("Client") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Start Now") + "</th><th align=\"left\">" + _("Class and arguments") + "</th></tr>\n");
|
||||
|
||||
List clients = ClientAppConfig.getClientApps(_context);
|
||||
for (int cur = 0; cur < clients.size(); cur++) {
|
||||
@ -30,7 +30,7 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
public String getForm2() {
|
||||
StringBuilder buf = new StringBuilder(1024);
|
||||
buf.append("<table>\n");
|
||||
buf.append("<tr><th align=\"right\">WebApp</th><th>Run at Startup?</th><th>Start Now</th><th align=\"left\">Description</th></tr>\n");
|
||||
buf.append("<tr><th align=\"right\">" + _("WebApp") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Start Now") + "</th><th align=\"left\">" + _("Description") + "</th></tr>\n");
|
||||
Properties props = RouterConsoleRunner.webAppProperties();
|
||||
Set keys = new TreeSet(props.keySet());
|
||||
for (Iterator iter = keys.iterator(); iter.hasNext(); ) {
|
||||
@ -63,7 +63,7 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
}
|
||||
buf.append("/></td><td align=\"center\" width=\"15%\">");
|
||||
if (!enabled) {
|
||||
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\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
}
|
||||
buf.append("</td><td align=\"left\" width=\"50%\">").append(desc).append("</td></tr>\n");
|
||||
}
|
||||
|
@ -15,12 +15,12 @@ public class ConfigKeyringHandler extends FormHandler {
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action == null) return;
|
||||
boolean adding = _action.startsWith("Add");
|
||||
if (adding || _action.startsWith("Delete")) {
|
||||
boolean adding = _action.equals(_("Add key"));
|
||||
if (adding || _action.equals(_("Delete key"))) {
|
||||
if (_peer == null)
|
||||
addFormError("You must enter a destination");
|
||||
addFormError(_("You must enter a destination"));
|
||||
if (_key == null && adding)
|
||||
addFormError("You must enter a key");
|
||||
addFormError(_("You must enter a key"));
|
||||
if (_peer == null || (_key == null && adding))
|
||||
return;
|
||||
Hash h = ConvertToHash.getHash(_peer);
|
||||
@ -33,7 +33,7 @@ public class ConfigKeyringHandler extends FormHandler {
|
||||
_context.keyRing().put(h, sk);
|
||||
addFormNotice("Key for " + h.toBase64() + " added to keyring");
|
||||
} else {
|
||||
addFormError("Invalid destination or key");
|
||||
addFormError(_("Invalid destination or key"));
|
||||
}
|
||||
} else { // Delete
|
||||
if (h != null && h.getData() != null) {
|
||||
@ -42,11 +42,11 @@ public class ConfigKeyringHandler extends FormHandler {
|
||||
else
|
||||
addFormNotice("Key for " + h.toBase64() + " not found in keyring");
|
||||
} else {
|
||||
addFormError("Invalid destination");
|
||||
addFormError(_("Invalid destination"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
addFormError("Unsupported");
|
||||
addFormError(_("Unsupported"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_saveRequested || ( (_action != null) && ("Save changes".equals(_action)) )) {
|
||||
if (_saveRequested || ( (_action != null) && (_("Save changes").equals(_action)) )) {
|
||||
saveChanges();
|
||||
} else if (_recheckReachabilityRequested) {
|
||||
recheckReachability();
|
||||
@ -116,7 +116,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
|
||||
private void recheckReachability() {
|
||||
_context.commSystem().recheckReachability();
|
||||
addFormNotice("Rechecking router reachability...");
|
||||
addFormNotice(_("Rechecking router reachability..."));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -145,7 +145,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
// Todo: Catch local IPs right here rather than complaining later
|
||||
_context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_HOST, uhost);
|
||||
if ((!oldUdp.equals(_udpAutoIP)) || (!oldUHost.equals(uhost))) {
|
||||
addFormNotice("Updating IP address");
|
||||
addFormNotice(_("Updating IP address"));
|
||||
restartRequired = true;
|
||||
}
|
||||
}
|
||||
@ -163,17 +163,17 @@ public class ConfigNetHandler extends FormHandler {
|
||||
|
||||
if ((!oldAutoHost.equals(_ntcpAutoIP)) || ! oldNHost.equalsIgnoreCase(_ntcpHostname)) {
|
||||
if ("disabled".equals(_ntcpAutoIP)) {
|
||||
addFormNotice("Disabling TCP completely");
|
||||
addFormNotice(_("Disabling TCP completely"));
|
||||
} else if ("false".equals(_ntcpAutoIP) && _ntcpHostname.length() > 0) {
|
||||
// Todo: Catch local IPs right here rather than complaining later
|
||||
_context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME, _ntcpHostname);
|
||||
addFormNotice("Updating inbound TCP address to " + _ntcpHostname);
|
||||
addFormNotice(_("Updating inbound TCP address to") + " " + _ntcpHostname);
|
||||
} else {
|
||||
_context.router().removeConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME);
|
||||
if ("false".equals(_ntcpAutoIP))
|
||||
addFormNotice("Disabling inbound TCP");
|
||||
addFormNotice(_("Disabling inbound TCP"));
|
||||
else
|
||||
addFormNotice("Updating inbound TCP address to auto"); // true or always
|
||||
addFormNotice(_("Updating inbound TCP address to auto")); // true or always
|
||||
}
|
||||
_context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_IP, _ntcpAutoIP);
|
||||
_context.router().setConfigSetting(TransportManager.PROP_ENABLE_NTCP, "" + !"disabled".equals(_ntcpAutoIP));
|
||||
@ -182,10 +182,10 @@ public class ConfigNetHandler extends FormHandler {
|
||||
if (oldAutoPort != _ntcpAutoPort || ! oldNPort.equals(_ntcpPort)) {
|
||||
if (_ntcpPort.length() > 0 && !_ntcpAutoPort) {
|
||||
_context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_PORT, _ntcpPort);
|
||||
addFormNotice("Updating inbound TCP port to " + _ntcpPort);
|
||||
addFormNotice(_("Updating inbound TCP port to") + " " + _ntcpPort);
|
||||
} else {
|
||||
_context.router().removeConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_PORT);
|
||||
addFormNotice("Updating inbound TCP port to auto");
|
||||
addFormNotice(_("Updating inbound TCP port to auto"));
|
||||
}
|
||||
_context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_PORT, "" + _ntcpAutoPort);
|
||||
restartRequired = true;
|
||||
@ -197,7 +197,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
if (!oldPort.equals(_udpPort)) {
|
||||
_context.router().setConfigSetting(UDPTransport.PROP_INTERNAL_PORT, _udpPort);
|
||||
_context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_PORT, _udpPort);
|
||||
addFormNotice("Updating UDP port from " + oldPort + " to " + _udpPort);
|
||||
addFormNotice(_("Updating UDP port from") + " " + oldPort + " " + _("to") + " " + _udpPort);
|
||||
restartRequired = true;
|
||||
}
|
||||
}
|
||||
@ -213,9 +213,9 @@ public class ConfigNetHandler extends FormHandler {
|
||||
if (switchRequired) {
|
||||
_context.router().setConfigSetting(PROP_HIDDEN, "" + _hiddenMode);
|
||||
if (_hiddenMode)
|
||||
addFormError("Gracefully restarting into Hidden Router Mode");
|
||||
addFormError(_("Gracefully restarting into Hidden Router Mode"));
|
||||
else
|
||||
addFormError("Gracefully restarting to exit Hidden Router Mode");
|
||||
addFormError(_("Gracefully restarting to exit Hidden Router Mode"));
|
||||
}
|
||||
|
||||
_context.router().setConfigSetting(Router.PROP_DYNAMIC_KEYS, "" + _dynamicKeys);
|
||||
@ -224,15 +224,15 @@ public class ConfigNetHandler extends FormHandler {
|
||||
_upnp) {
|
||||
// This is minor, don't set restartRequired
|
||||
if (_upnp)
|
||||
addFormNotice("Enabling UPnP, restart required to take effect");
|
||||
addFormNotice(_("Enabling UPnP, restart required to take effect"));
|
||||
else
|
||||
addFormNotice("Disabling UPnP, restart required to take effect");
|
||||
addFormNotice(_("Disabling UPnP, restart required to take effect"));
|
||||
}
|
||||
_context.router().setConfigSetting(TransportManager.PROP_ENABLE_UPNP, "" + _upnp);
|
||||
|
||||
if (_requireIntroductions) {
|
||||
_context.router().setConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS, "true");
|
||||
addFormNotice("Requiring SSU introduers");
|
||||
addFormNotice(_("Requiring SSU introduers"));
|
||||
} else {
|
||||
_context.router().removeConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS);
|
||||
}
|
||||
@ -246,11 +246,11 @@ public class ConfigNetHandler extends FormHandler {
|
||||
}
|
||||
|
||||
boolean saved = _context.router().saveConfig();
|
||||
if ( (_action != null) && ("Save changes".equals(_action)) ) {
|
||||
if ( (_action != null) && (_("Save changes").equals(_action)) ) {
|
||||
if (saved)
|
||||
addFormNotice("Configuration saved successfully");
|
||||
addFormNotice(_("Configuration saved successfully"));
|
||||
else
|
||||
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs"));
|
||||
}
|
||||
|
||||
if (switchRequired) {
|
||||
@ -290,7 +290,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
String old = _context.router().getConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE);
|
||||
if ( (old == null) || (!old.equalsIgnoreCase(_sharePct)) ) {
|
||||
_context.router().setConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE, _sharePct);
|
||||
addFormNotice("Updating bandwidth share percentage");
|
||||
addFormNotice(_("Updating bandwidth share percentage"));
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
@ -360,7 +360,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
|
||||
if (updated && !_ratesOnly) {
|
||||
_context.bandwidthLimiter().reinitialize();
|
||||
addFormNotice("Updated bandwidth limits");
|
||||
addFormNotice(_("Updated bandwidth limits"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,26 +17,26 @@ public class ConfigPeerHandler extends FormHandler {
|
||||
if ("Save Configuration".equals(_action)) {
|
||||
_context.router().saveConfig();
|
||||
addFormNotice("Settings saved - not really!!!!!");
|
||||
} else if (_action.startsWith("Ban")) {
|
||||
} else if (_action.equals(_("Ban peer until restart"))) {
|
||||
Hash h = getHash();
|
||||
if (h != null) {
|
||||
_context.shitlist().shitlistRouterForever(h, "Manually banned via <a href=\"configpeer.jsp\">configpeer.jsp</a>");
|
||||
addFormNotice("Peer " + _peer + " banned until restart");
|
||||
addFormNotice(_("Peer") + " " + _peer + " " + _("banned until restart") );
|
||||
return;
|
||||
}
|
||||
addFormError("Invalid peer");
|
||||
} else if (_action.startsWith("Unban")) {
|
||||
addFormError(_("Invalid peer"));
|
||||
} else if (_action.equals(_("Unban peer"))) {
|
||||
Hash h = getHash();
|
||||
if (h != null) {
|
||||
if (_context.shitlist().isShitlisted(h)) {
|
||||
_context.shitlist().unshitlistRouter(h);
|
||||
addFormNotice("Peer " + _peer + " unbanned");
|
||||
addFormNotice(_("Peer") + " " + _peer + " " + _("unbanned") );
|
||||
} else
|
||||
addFormNotice("Peer " + _peer + " is not currently banned");
|
||||
addFormNotice(_("Peer") + " " + _peer + " " + _("is not currently banned") );
|
||||
return;
|
||||
}
|
||||
addFormError("Invalid peer");
|
||||
} else if (_action.startsWith("Adjust")) {
|
||||
addFormError(_("Invalid peer"));
|
||||
} else if (_action.equals(_("Adjust Profile Bonuses"))) {
|
||||
Hash h = getHash();
|
||||
if (h != null) {
|
||||
PeerProfile prof = _context.profileOrganizer().getProfile(h);
|
||||
@ -44,19 +44,19 @@ public class ConfigPeerHandler extends FormHandler {
|
||||
try {
|
||||
prof.setSpeedBonus(Long.parseLong(_speed));
|
||||
} catch (NumberFormatException nfe) {
|
||||
addFormError("Bad speed value");
|
||||
addFormError(_("Bad speed value"));
|
||||
}
|
||||
try {
|
||||
prof.setCapacityBonus(Long.parseLong(_capacity));
|
||||
} catch (NumberFormatException nfe) {
|
||||
addFormError("Bad capacity value");
|
||||
addFormError(_("Bad capacity value"));
|
||||
}
|
||||
addFormNotice("Bonuses adjusted for " + _peer);
|
||||
} else
|
||||
addFormError("No profile exists for " + _peer);
|
||||
return;
|
||||
}
|
||||
addFormError("Invalid peer");
|
||||
addFormError(_("Invalid peer"));
|
||||
} else if (_action.startsWith("Check")) {
|
||||
addFormError("Unsupported");
|
||||
}
|
||||
|
@ -50,36 +50,36 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
protected void processForm() {
|
||||
if (_action == null) return;
|
||||
|
||||
if ("Shutdown gracefully".equals(_action)) {
|
||||
if (_("Shutdown gracefully").equals(_action)) {
|
||||
_context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_GRACEFUL));
|
||||
_context.router().shutdownGracefully();
|
||||
addFormNotice("Graceful shutdown initiated");
|
||||
} else if ("Shutdown immediately".equals(_action)) {
|
||||
addFormNotice(_("Graceful shutdown initiated"));
|
||||
} else if (_("Shutdown immediately").equals(_action)) {
|
||||
_context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_HARD));
|
||||
_context.router().shutdown(Router.EXIT_HARD);
|
||||
addFormNotice("Shutdown immediately! boom bye bye bad bwoy");
|
||||
} else if ("Cancel graceful shutdown".equals(_action)) {
|
||||
addFormNotice(_("Shutdown immediately! boom bye bye bad bwoy"));
|
||||
} else if (_("Cancel graceful shutdown").equals(_action)) {
|
||||
_context.router().cancelGracefulShutdown();
|
||||
addFormNotice("Graceful shutdown cancelled");
|
||||
} else if ("Graceful restart".equals(_action)) {
|
||||
addFormNotice(_("Graceful shutdown cancelled"));
|
||||
} else if (_("Graceful restart").equals(_action)) {
|
||||
_context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_GRACEFUL_RESTART));
|
||||
_context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
|
||||
addFormNotice("Graceful restart requested");
|
||||
} else if ("Hard restart".equals(_action)) {
|
||||
addFormNotice(_("Graceful restart requested"));
|
||||
} else if (_("Hard restart").equals(_action)) {
|
||||
_context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_HARD_RESTART));
|
||||
_context.router().shutdown(Router.EXIT_HARD_RESTART);
|
||||
addFormNotice("Hard restart requested");
|
||||
} else if ("Rekey and Restart".equals(_action)) {
|
||||
addFormNotice("Rekeying after graceful restart");
|
||||
addFormNotice(_("Hard restart requested"));
|
||||
} else if (_("Rekey and Restart").equals(_action)) {
|
||||
addFormNotice(_("Rekeying after graceful restart"));
|
||||
_context.addShutdownTask(new UpdateWrapperManagerAndRekeyTask(Router.EXIT_GRACEFUL_RESTART));
|
||||
_context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
|
||||
} else if ("Rekey and Shutdown".equals(_action)) {
|
||||
addFormNotice("Rekeying after graceful shutdown");
|
||||
} else if (_("Rekey and Shutdown").equals(_action)) {
|
||||
addFormNotice(_("Rekeying after graceful shutdown"));
|
||||
_context.addShutdownTask(new UpdateWrapperManagerAndRekeyTask(Router.EXIT_GRACEFUL));
|
||||
_context.router().shutdownGracefully(Router.EXIT_GRACEFUL);
|
||||
} else if ("Run I2P on startup".equals(_action)) {
|
||||
} else if (_("Run I2P on startup").equals(_action)) {
|
||||
installService();
|
||||
} else if ("Don't run I2P on startup".equals(_action)) {
|
||||
} else if (_("Don't run I2P on startup").equals(_action)) {
|
||||
uninstallService();
|
||||
} else if ("Dump threads".equals(_action)) {
|
||||
try {
|
||||
@ -88,36 +88,36 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
addFormError("Warning: unable to contact the service manager - " + t.getMessage());
|
||||
}
|
||||
addFormNotice("Threads dumped to wrapper.log");
|
||||
} else if ("Show systray icon".equals(_action)) {
|
||||
} else if (_("Show systray icon").equals(_action)) {
|
||||
try {
|
||||
SysTray tray = SysTray.getInstance();
|
||||
if (tray != null) {
|
||||
tray.show();
|
||||
addFormNotice("System tray icon enabled.");
|
||||
addFormNotice(_("System tray icon enabled."));
|
||||
} else {
|
||||
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
|
||||
addFormNotice(_("System tray icon feature not supported on this platform. Sorry!"));
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());
|
||||
addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage());
|
||||
}
|
||||
} else if ("Hide systray icon".equals(_action)) {
|
||||
} else if (_("Hide systray icon").equals(_action)) {
|
||||
try {
|
||||
SysTray tray = SysTray.getInstance();
|
||||
if (tray != null) {
|
||||
tray.hide();
|
||||
addFormNotice("System tray icon disabled.");
|
||||
addFormNotice(_("System tray icon disabled."));
|
||||
} else {
|
||||
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
|
||||
addFormNotice(_("System tray icon feature not supported on this platform. Sorry!"));
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());
|
||||
addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage());
|
||||
}
|
||||
} else if ("View console on startup".equals(_action)) {
|
||||
} else if (_("View console on startup").equals(_action)) {
|
||||
browseOnStartup(true);
|
||||
addFormNotice("Console is to be shown on startup");
|
||||
} else if ("Do not view console on startup".equals(_action)) {
|
||||
addFormNotice(_("Console is to be shown on startup"));
|
||||
} else if (_("Do not view console on startup").equals(_action)) {
|
||||
browseOnStartup(false);
|
||||
addFormNotice("Console is not to be shown on startup");
|
||||
addFormNotice(_("Console is not to be shown on startup"));
|
||||
} else {
|
||||
//addFormNotice("Blah blah blah. whatever. I'm not going to " + _action);
|
||||
}
|
||||
@ -126,17 +126,17 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
private void installService() {
|
||||
try {
|
||||
Runtime.getRuntime().exec("install_i2p_service_winnt.bat");
|
||||
addFormNotice("Service installed");
|
||||
addFormNotice(_("Service installed"));
|
||||
} catch (IOException ioe) {
|
||||
addFormError("Warning: unable to install the service - " + ioe.getMessage());
|
||||
addFormError(_("Warning: unable to install the service") + " - " + ioe.getMessage());
|
||||
}
|
||||
}
|
||||
private void uninstallService() {
|
||||
try {
|
||||
Runtime.getRuntime().exec("uninstall_i2p_service_winnt.bat");
|
||||
addFormNotice("Service removed");
|
||||
addFormNotice(_("Service removed"));
|
||||
} catch (IOException ioe) {
|
||||
addFormError("Warning: unable to remove the service - " + ioe.getMessage());
|
||||
addFormError(_("Warning: unable to remove the service") + " - " + ioe.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,9 +137,9 @@ public class ConfigTunnelsHandler extends FormHandler {
|
||||
if (saveRequired) {
|
||||
boolean saved = _context.router().saveConfig();
|
||||
if (saved)
|
||||
addFormNotice("Exploratory tunnel configuration saved successfully.");
|
||||
addFormNotice(_("Exploratory tunnel configuration saved successfully."));
|
||||
else
|
||||
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs.");
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs."));
|
||||
}
|
||||
}
|
||||
private static final int getInt(Object val) {
|
||||
|
@ -18,7 +18,7 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
TunnelPoolSettings exploratoryOut = _context.tunnelManager().getOutboundSettings();
|
||||
|
||||
buf.append("<input type=\"hidden\" name=\"pool.0\" value=\"exploratory\" >");
|
||||
renderForm(buf, 0, "exploratory", "Exploratory tunnels", exploratoryIn, exploratoryOut);
|
||||
renderForm(buf, 0, "exploratory", _("Exploratory tunnels"), exploratoryIn, exploratoryOut);
|
||||
|
||||
int cur = 1;
|
||||
Set clients = _context.clientManager().listClients();
|
||||
@ -38,7 +38,7 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
String prefix = dest.calculateHash().toBase64().substring(0,4);
|
||||
buf.append("<input type=\"hidden\" name=\"pool.").append(cur).append("\" value=\"");
|
||||
buf.append(dest.calculateHash().toBase64()).append("\" >");
|
||||
renderForm(buf, cur, prefix, "Client tunnels for " + name, in, out);
|
||||
renderForm(buf, cur, prefix, _("Client tunnels for") + " " + name, in, out);
|
||||
cur++;
|
||||
}
|
||||
|
||||
@ -61,95 +61,95 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
in.getLength() + in.getLengthVariance() <= 0 ||
|
||||
out.getLength() <= 0 ||
|
||||
out.getLength() + out.getLengthVariance() <= 0)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels.</font></th></tr>");
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 0-hop tunnels.") + "</font></th></tr>");
|
||||
else if (in.getLength() <= 1 ||
|
||||
in.getLength() + in.getLengthVariance() <= 1 ||
|
||||
out.getLength() <= 1 ||
|
||||
out.getLength() + out.getLengthVariance() <= 1)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels.</font></th></tr>");
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 1-hop tunnels.") + "</font></th></tr>");
|
||||
if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH ||
|
||||
out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels.</font></th></tr>");
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include very long tunnels.") + "</font></th></tr>");
|
||||
if (in.getQuantity() + in.getBackupQuantity() >= WARN_QUANTITY ||
|
||||
out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities.</font></th></tr>");
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include high tunnel quantities.") + "</font></th></tr>");
|
||||
|
||||
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> Outbound</th></tr>\n");
|
||||
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> " + _("Inbound") + "</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> " + _("Outbound") + "</th></tr>\n");
|
||||
|
||||
// buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
|
||||
|
||||
// tunnel depth
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Depth:</td>\n");
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Depth") + ":</td>\n");
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthInbound\">\n");
|
||||
int now = in.getLength();
|
||||
renderOptions(buf, 0, MAX_LENGTH, now, "", "hop");
|
||||
renderOptions(buf, 0, MAX_LENGTH, now, "", _("hop"));
|
||||
if (now > MAX_LENGTH)
|
||||
renderOptions(buf, now, now, now, "", "hop");
|
||||
renderOptions(buf, now, now, now, "", _("hop"));
|
||||
buf.append("</select></td>\n");
|
||||
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthOutbound\">\n");
|
||||
now = out.getLength();
|
||||
renderOptions(buf, 0, MAX_LENGTH, now, "", "hop");
|
||||
renderOptions(buf, 0, MAX_LENGTH, now, "", _("hop"));
|
||||
if (now > MAX_LENGTH)
|
||||
renderOptions(buf, now, now, now, "", "hop");
|
||||
renderOptions(buf, now, now, now, "", _("hop"));
|
||||
buf.append("</select></td>\n");
|
||||
buf.append("</tr>\n");
|
||||
|
||||
// tunnel depth variance
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Randomization:</td>\n");
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Randomization") + ":</td>\n");
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceInbound\">\n");
|
||||
now = in.getLengthVariance();
|
||||
renderOptions(buf, 0, 0, now, "", "hop");
|
||||
renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop");
|
||||
renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", "hop");
|
||||
renderOptions(buf, 0, 0, now, "", _("hop"));
|
||||
renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", _("hop"));
|
||||
renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", _("hop"));
|
||||
if (now > MAX_VARIANCE)
|
||||
renderOptions(buf, now, now, now, "+ 0-", "hop");
|
||||
renderOptions(buf, now, now, now, "+ 0-", _("hop"));
|
||||
else if (now < MIN_NEG_VARIANCE)
|
||||
renderOptions(buf, now, now, now, "+/- 0", "hop");
|
||||
renderOptions(buf, now, now, now, "+/- 0", _("hop"));
|
||||
buf.append("</select></td>\n");
|
||||
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceOutbound\">\n");
|
||||
now = out.getLengthVariance();
|
||||
renderOptions(buf, 0, 0, now, "", "hop");
|
||||
renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop");
|
||||
renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", "hop");
|
||||
renderOptions(buf, 0, 0, now, "", _("hop"));
|
||||
renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", _("hop"));
|
||||
renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", _("hop"));
|
||||
if (now > MAX_VARIANCE)
|
||||
renderOptions(buf, now, now, now, "+ 0-", "hop");
|
||||
renderOptions(buf, now, now, now, "+ 0-", _("hop"));
|
||||
else if (now < MIN_NEG_VARIANCE)
|
||||
renderOptions(buf, now, now, now, "+/- 0", "hop");
|
||||
renderOptions(buf, now, now, now, "+/- 0", _("hop"));
|
||||
buf.append("</select></td>\n");
|
||||
|
||||
// tunnel quantity
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Quantity:</td>\n");
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Quantity") + ":</td>\n");
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityInbound\">\n");
|
||||
now = in.getQuantity();
|
||||
renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel");
|
||||
renderOptions(buf, 1, MAX_QUANTITY, now, "", _("tunnel"));
|
||||
if (now > MAX_QUANTITY)
|
||||
renderOptions(buf, now, now, now, "", "tunnel");
|
||||
renderOptions(buf, now, now, now, "", _("tunnel"));
|
||||
buf.append("</select></td>\n");
|
||||
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityOutbound\">\n");
|
||||
now = out.getQuantity();
|
||||
renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel");
|
||||
renderOptions(buf, 1, MAX_QUANTITY, now, "", _("tunnel"));
|
||||
if (now > MAX_QUANTITY)
|
||||
renderOptions(buf, now, now, now, "", "tunnel");
|
||||
renderOptions(buf, now, now, now, "", _("tunnel"));
|
||||
buf.append("</select></td>\n");
|
||||
buf.append("</tr>\n");
|
||||
|
||||
// tunnel backup quantity
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Backup quantity:</td>\n");
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Backup quantity") + ":</td>\n");
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupInbound\">\n");
|
||||
now = in.getBackupQuantity();
|
||||
renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel");
|
||||
renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", _("tunnel"));
|
||||
if (now > MAX_BACKUP_QUANTITY)
|
||||
renderOptions(buf, now, now, now, "", "tunnel");
|
||||
renderOptions(buf, now, now, now, "", _("tunnel"));
|
||||
buf.append("</select></td>\n");
|
||||
|
||||
buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupOutbound\">\n");
|
||||
now = out.getBackupQuantity();
|
||||
renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel");
|
||||
renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", _("tunnel"));
|
||||
if (now > MAX_BACKUP_QUANTITY)
|
||||
renderOptions(buf, now, now, now, "", "tunnel");
|
||||
renderOptions(buf, now, now, now, "", _("tunnel"));
|
||||
buf.append("</select></td>\n");
|
||||
buf.append("</tr>\n");
|
||||
|
||||
@ -159,7 +159,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt
|
||||
// And let's not display them at all unless they have contents, which should be rare.
|
||||
Properties props = in.getUnknownOptions();
|
||||
if (props.size() > 0) {
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Inbound options:</td>\n" +
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Inbound options") + ":</td>\n" +
|
||||
"<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
|
||||
buf.append(".inboundOptions\" type=\"text\" size=\"32\" disabled=\"true\" " +
|
||||
"value=\"");
|
||||
@ -172,7 +172,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt
|
||||
}
|
||||
props = out.getUnknownOptions();
|
||||
if (props.size() > 0) {
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">Outbound options:</td>\n" +
|
||||
buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Outbound options") + ":</td>\n" +
|
||||
"<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
|
||||
buf.append(".outboundOptions\" type=\"text\" size=\"32\" disabled=\"true\" " +
|
||||
"value=\"");
|
||||
|
@ -51,25 +51,25 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action != null && _action.startsWith("Check")) {
|
||||
if (_action != null && _action.equals(_("Check for updates"))) {
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());
|
||||
fetcher.fetchNews();
|
||||
if (fetcher.shouldFetchUnsigned())
|
||||
fetcher.fetchUnsignedHead();
|
||||
if (fetcher.updateAvailable() || fetcher.unsignedUpdateAvailable()) {
|
||||
if ( (_updatePolicy == null) || (!_updatePolicy.equals("notify")) )
|
||||
addFormNotice("Update available, attempting to download now");
|
||||
addFormNotice(_("Update available, attempting to download now"));
|
||||
else
|
||||
addFormNotice("Update available, click button on left to download");
|
||||
addFormNotice(_("Update available, click button on left to download"));
|
||||
} else
|
||||
addFormNotice("No update available");
|
||||
addFormNotice(_("No update available"));
|
||||
}
|
||||
|
||||
if ( (_newsURL != null) && (_newsURL.length() > 0) ) {
|
||||
String oldURL = ConfigUpdateHelper.getNewsURL(_context);
|
||||
if ( (oldURL == null) || (!_newsURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_NEWS_URL, _newsURL);
|
||||
addFormNotice("Updating news URL to " + _newsURL);
|
||||
addFormNotice(_("Updating news URL to") + " " + _newsURL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldHost = _context.router().getConfigSetting(PROP_PROXY_HOST);
|
||||
if ( (oldHost == null) || (!_proxyHost.equals(oldHost)) ) {
|
||||
_context.router().setConfigSetting(PROP_PROXY_HOST, _proxyHost);
|
||||
addFormNotice("Updating proxy host to " + _proxyHost);
|
||||
addFormNotice(_("Updating proxy host to") + " " + _proxyHost);
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldPort = _context.router().getConfigSetting(PROP_PROXY_PORT);
|
||||
if ( (oldPort == null) || (!_proxyPort.equals(oldPort)) ) {
|
||||
_context.router().setConfigSetting(PROP_PROXY_PORT, _proxyPort);
|
||||
addFormNotice("Updating proxy port to " + _proxyPort);
|
||||
addFormNotice(_("Updating proxy port to") + " " + _proxyPort);
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,14 +98,14 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
try { oldFreq = Long.parseLong(oldFreqStr); } catch (NumberFormatException nfe) {}
|
||||
if (_refreshFrequency != oldFreq) {
|
||||
_context.router().setConfigSetting(PROP_REFRESH_FREQUENCY, ""+_refreshFrequency);
|
||||
addFormNotice("Updating refresh frequency to " + DataHelper.formatDuration(_refreshFrequency));
|
||||
addFormNotice(_("Updating refresh frequency to") + " " + DataHelper.formatDuration(_refreshFrequency));
|
||||
}
|
||||
|
||||
if ( (_updatePolicy != null) && (_updatePolicy.length() > 0) ) {
|
||||
String oldPolicy = _context.router().getConfigSetting(PROP_UPDATE_POLICY);
|
||||
if ( (oldPolicy == null) || (!_updatePolicy.equals(oldPolicy)) ) {
|
||||
_context.router().setConfigSetting(PROP_UPDATE_POLICY, _updatePolicy);
|
||||
addFormNotice("Updating update policy to " + _updatePolicy);
|
||||
addFormNotice(_("Updating update policy to") + " " + _updatePolicy);
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldURL = _context.router().getConfigSetting(PROP_UPDATE_URL);
|
||||
if ( (oldURL == null) || (!_updateURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_UPDATE_URL, _updateURL);
|
||||
addFormNotice("Updating update URLs.");
|
||||
addFormNotice(_("Updating update URLs."));
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldKeys = new TrustedUpdate(_context).getTrustedKeysString();
|
||||
if ( (oldKeys == null) || (!_trustedKeys.equals(oldKeys)) ) {
|
||||
_context.router().setConfigSetting(PROP_TRUSTED_KEYS, _trustedKeys);
|
||||
addFormNotice("Updating trusted keys.");
|
||||
addFormNotice(_("Updating trusted keys."));
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,7 +130,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldURL = _context.router().getConfigSetting(PROP_ZIP_URL);
|
||||
if ( (oldURL == null) || (!_zipURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_ZIP_URL, _zipURL);
|
||||
addFormNotice("Updating unsigned update URL to " + _zipURL);
|
||||
addFormNotice(_("Updating unsigned update URL to") + " " + _zipURL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -72,9 +72,9 @@ public class ConfigUpdateHelper extends HelperBase {
|
||||
buf.append("\" selected=\"true\"");
|
||||
|
||||
if (PERIODS[i] == -1)
|
||||
buf.append("\">Never</option>\n");
|
||||
buf.append("\">" + _("Never") + "</option>\n");
|
||||
else
|
||||
buf.append("\">Every ").append(DataHelper.formatDuration(PERIODS[i])).append("</option>\n");
|
||||
buf.append("\">" + _("Every") + " ").append(DataHelper.formatDuration(PERIODS[i])).append("</option>\n");
|
||||
}
|
||||
buf.append("</select>\n");
|
||||
return buf.toString();
|
||||
@ -89,18 +89,18 @@ public class ConfigUpdateHelper extends HelperBase {
|
||||
if ("notify".equals(policy))
|
||||
buf.append("<option value=\"notify\" selected=\"true\">").append(_("Notify only")).append("</option>");
|
||||
else
|
||||
buf.append("<option value=\"notify\">Notify only</option>");
|
||||
buf.append("<option value=\"notify\">" + _("Notify only") + "</option>");
|
||||
|
||||
if ("download".equals(policy))
|
||||
buf.append("<option value=\"download\" selected=\"true\">Download and verify only</option>");
|
||||
buf.append("<option value=\"download\" selected=\"true\">" + _("Download and verify only") + "</option>");
|
||||
else
|
||||
buf.append("<option value=\"download\">Download and verify only</option>");
|
||||
buf.append("<option value=\"download\">" + _("Download and verify only") + "</option>");
|
||||
|
||||
if (System.getProperty("wrapper.version") != null) {
|
||||
if ("install".equals(policy))
|
||||
buf.append("<option value=\"install\" selected=\"true\">Download, verify, and restart</option>");
|
||||
buf.append("<option value=\"install\" selected=\"true\">" + _("Download, verify, and restart") + "</option>");
|
||||
else
|
||||
buf.append("<option value=\"install\">Download, verify, and restart</option>");
|
||||
buf.append("<option value=\"install\">" + _("Download, verify, and restart") + "</option>");
|
||||
}
|
||||
|
||||
buf.append("</select>\n");
|
||||
|
@ -10,7 +10,7 @@ public class LogsHelper extends HelperBase {
|
||||
|
||||
public String getLogs() {
|
||||
String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
|
||||
return "Location: <code>" + _context.logManager().currentFile() + "</code><br><br>" + str;
|
||||
return "Location: <b><code>" + _context.logManager().currentFile() + "</code></b><br><br>" + str;
|
||||
}
|
||||
|
||||
public String getCriticalLogs() {
|
||||
@ -34,7 +34,7 @@ public class LogsHelper extends HelperBase {
|
||||
return "";
|
||||
else {
|
||||
str = str.replaceAll("<", "<").replaceAll(">", ">");
|
||||
return "Location:<code> " + f.getAbsolutePath() + "</code> <pre>" + str + "</pre>";
|
||||
return "Location:<b><code> " + f.getAbsolutePath() + "</code></b> <pre>" + str + "</pre>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ public class NetDbRenderer {
|
||||
|
||||
public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
|
||||
StringBuilder buf = new StringBuilder(4*1024);
|
||||
buf.append("<h2>Network Database RouterInfo Lookup</h2>\n");
|
||||
buf.append("<h2>" + _("Network Database RouterInfo Lookup") + "</h2>\n");
|
||||
if (".".equals(routerPrefix)) {
|
||||
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
|
||||
} else {
|
||||
@ -70,7 +70,7 @@ public class NetDbRenderer {
|
||||
}
|
||||
}
|
||||
if (notFound)
|
||||
buf.append("Router ").append(routerPrefix).append(" not found in network database");
|
||||
buf.append(_("Router") + " ").append(routerPrefix).append(" " + _("not found in network database") );
|
||||
}
|
||||
out.write(buf.toString());
|
||||
out.flush();
|
||||
@ -82,8 +82,8 @@ public class NetDbRenderer {
|
||||
|
||||
public void renderLeaseSetHTML(Writer out) throws IOException {
|
||||
StringBuilder buf = new StringBuilder(4*1024);
|
||||
buf.append("<h2>Network Database Contents</h2>\n");
|
||||
buf.append("<a href=\"netdb.jsp\">View RouterInfo</a>");
|
||||
buf.append("<h2>" + _("Network Database Contents") + "</h2>\n");
|
||||
buf.append("<a href=\"netdb.jsp\">" + _("View") + " RouterInfo</a>");
|
||||
buf.append("<h3>LeaseSets</h3>\n");
|
||||
Set leases = new TreeSet(new LeaseSetComparator());
|
||||
leases.addAll(_context.netDb().getLeases());
|
||||
@ -94,17 +94,17 @@ public class NetDbRenderer {
|
||||
Hash key = dest.calculateHash();
|
||||
buf.append("<b>LeaseSet: ").append(key.toBase64());
|
||||
if (_context.clientManager().isLocal(dest)) {
|
||||
buf.append(" (<a href=\"tunnels.jsp#" + key.toBase64().substring(0,4) + "\">Local</a> ");
|
||||
buf.append(" (<a href=\"tunnels.jsp#" + key.toBase64().substring(0,4) + "\">" + _("Local") + "</a> ");
|
||||
if (! _context.clientManager().shouldPublishLeaseSet(key))
|
||||
buf.append("Unpublished ");
|
||||
buf.append("Destination ");
|
||||
buf.append(_("Unpublished") + " ");
|
||||
buf.append(_("Destination") + " ");
|
||||
TunnelPoolSettings in = _context.tunnelManager().getInboundSettings(key);
|
||||
if (in != null && in.getDestinationNickname() != null)
|
||||
buf.append(in.getDestinationNickname());
|
||||
else
|
||||
buf.append(dest.toBase64().substring(0, 6));
|
||||
} else {
|
||||
buf.append(" (Destination ");
|
||||
buf.append(" (" + _("Destination") + " ");
|
||||
String host = _context.namingService().reverseLookup(dest);
|
||||
if (host != null)
|
||||
buf.append(host);
|
||||
@ -118,9 +118,9 @@ public class NetDbRenderer {
|
||||
else
|
||||
buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br>\n");
|
||||
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
||||
buf.append("Lease ").append(i + 1).append(": Gateway ");
|
||||
buf.append("Lease ").append(i + 1).append(": " + _("Gateway") + " ");
|
||||
buf.append(_context.commSystem().renderPeerHTML(ls.getLease(i).getGateway()));
|
||||
buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n");
|
||||
buf.append(" " + _("Tunnel") + " ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n");
|
||||
}
|
||||
buf.append("<hr>\n");
|
||||
out.write(buf.toString());
|
||||
@ -135,21 +135,21 @@ public class NetDbRenderer {
|
||||
if (full)
|
||||
size *= 4;
|
||||
StringBuilder buf = new StringBuilder(size);
|
||||
out.write("<h2>Network Database Contents (<a href=\"netdb.jsp?l=1\">View LeaseSets</a>)</h2>\n");
|
||||
out.write("<h2>" + _("Network Database Contents") + " (<a href=\"netdb.jsp?l=1\">" + _("View") + " LeaseSets</a>)</h2>\n");
|
||||
if (!_context.netDb().isInitialized()) {
|
||||
buf.append("Not initialized\n");
|
||||
buf.append("" + _("Not initialized") + "\n");
|
||||
out.write(buf.toString());
|
||||
out.flush();
|
||||
return;
|
||||
}
|
||||
|
||||
Hash us = _context.routerHash();
|
||||
out.write("<a name=\"routers\" ></a><h3>Routers (<a href=\"netdb.jsp");
|
||||
out.write("<a name=\"routers\" ></a><h3>" + _("Routers") + " (<a href=\"netdb.jsp");
|
||||
if (full)
|
||||
out.write("#routers\" >view without");
|
||||
out.write("#routers\" >" + _("view without") + "");
|
||||
else
|
||||
out.write("?f=1#routers\" >view with");
|
||||
out.write(" stats</a>)</h3>\n");
|
||||
out.write("?f=1#routers\" >" + _("view with") + "");
|
||||
out.write(" " + _("stats") + "</a>)</h3>\n");
|
||||
|
||||
RouterInfo ourInfo = _context.router().getRouterInfo();
|
||||
renderRouterInfo(buf, ourInfo, true, true);
|
||||
@ -183,7 +183,7 @@ public class NetDbRenderer {
|
||||
if (versionList.size() > 0) {
|
||||
Collections.sort(versionList, Collections.reverseOrder());
|
||||
buf.append("<table>\n");
|
||||
buf.append("<tr><th>Version</th><th>Count</th></tr>\n");
|
||||
buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n");
|
||||
for (String routerVersion : versionList) {
|
||||
int num = versions.count(routerVersion);
|
||||
buf.append("<tr><td align=\"center\">").append(DataHelper.stripHTML(routerVersion));
|
||||
@ -199,7 +199,7 @@ public class NetDbRenderer {
|
||||
if (countryList.size() > 0) {
|
||||
Collections.sort(countryList);
|
||||
buf.append("<table>\n");
|
||||
buf.append("<tr><th align=\"left\">Country</th><th>Count</th></tr>\n");
|
||||
buf.append("<tr><th align=\"left\">" + _("Country") + "</th><th>" + _("Count") + "</th></tr>\n");
|
||||
for (String country : countryList) {
|
||||
int num = countries.count(country);
|
||||
buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append("\"");
|
||||
@ -222,9 +222,9 @@ public class NetDbRenderer {
|
||||
String hash = info.getIdentity().getHash().toBase64();
|
||||
buf.append("<table><tr><th><a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
|
||||
if (isUs) {
|
||||
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 {
|
||||
buf.append("<b>Peer info for:</b> ").append(hash).append("\n");
|
||||
buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n");
|
||||
if (full) {
|
||||
buf.append("[<a href=\"netdb.jsp\" >Back</a>]</th></tr><td>\n");
|
||||
} else {
|
||||
@ -234,12 +234,12 @@ public class NetDbRenderer {
|
||||
|
||||
long age = _context.clock().now() - info.getPublished();
|
||||
if (isUs && _context.router().isHidden())
|
||||
buf.append("<b>Hidden, Updated:</b> ").append(DataHelper.formatDuration(age)).append(" ago<br>\n");
|
||||
buf.append("<b>" + _("Hidden") + ", " + _("Updated") + ":</b> ").append(DataHelper.formatDuration(age)).append(" " + _("ago") + "<br>\n");
|
||||
else if (age > 0)
|
||||
buf.append("<b>Published:</b> ").append(DataHelper.formatDuration(age)).append(" ago<br>\n");
|
||||
buf.append("<b>" + _("Published") + ":</b> ").append(DataHelper.formatDuration(age)).append(" " + _("ago") + "<br>\n");
|
||||
else
|
||||
buf.append("<b>Published:</b> in ").append(DataHelper.formatDuration(0-age)).append("???<br>\n");
|
||||
buf.append("<b>Address(es):</b> ");
|
||||
buf.append("<b>" + _("Published") + ":</b> in ").append(DataHelper.formatDuration(0-age)).append("???<br>\n");
|
||||
buf.append("<b>" + _("Address(es)") + ":</b> ");
|
||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||
if(country != null) {
|
||||
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append("\"");
|
||||
@ -256,7 +256,7 @@ public class NetDbRenderer {
|
||||
}
|
||||
buf.append("</td></tr>\n");
|
||||
if (full) {
|
||||
buf.append("<tr><td>Stats: <br><code>\n");
|
||||
buf.append("<tr><td>" + _("Stats") + ": <br><code>\n");
|
||||
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
|
||||
String key = (String)iter.next();
|
||||
String val = info.getOption(key);
|
||||
|
@ -77,7 +77,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
long now = _context.clock().now();
|
||||
return
|
||||
(_lastUpdated > 0 ? "News last updated " + DataHelper.formatDuration(now - _lastUpdated) + " ago" : "") +
|
||||
(_lastFetch > _lastUpdated ? ", last checked " + DataHelper.formatDuration(now - _lastFetch) + " ago" : "");
|
||||
(_lastFetch > _lastUpdated ? "; last checked " + DataHelper.formatDuration(now - _lastFetch) + " ago." : "");
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
@ -228,9 +228,9 @@ class ProfileOrganizerRenderer {
|
||||
buf.append("</table>");
|
||||
|
||||
buf.append("<h3>Thresholds:</h3>");
|
||||
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>");
|
||||
buf.append("<p><b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>");
|
||||
buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br>");
|
||||
buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)");
|
||||
buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)</p>");
|
||||
buf.append("<h3>Definitions:</h3><ul>" +
|
||||
"<li><b>groups</b>: as determined by the profile organizer</li>" +
|
||||
"<li><b>caps</b>: capabilities in the netDb, not used to determine profiles</li>" +
|
||||
|
@ -58,7 +58,7 @@ public class StatsGenerator {
|
||||
buf.append("Statistics gathered during this router's uptime (");
|
||||
long uptime = _context.router().getUptime();
|
||||
buf.append(DataHelper.formatDuration(uptime));
|
||||
buf.append("). The data gathered is quantized over a 1 minute period, so should just be used as an estimate<p />");
|
||||
buf.append("). The data gathered is quantized over a 1 minute period, so should just be used as an estimate.");
|
||||
|
||||
out.write(buf.toString());
|
||||
buf.setLength(0);
|
||||
@ -138,7 +138,7 @@ public class StatsGenerator {
|
||||
buf.append("</i><br>");
|
||||
}
|
||||
if (rate.getLifetimeEventCount() <= 0) {
|
||||
buf.append("No lifetime events<br> <br>");
|
||||
buf.append("No lifetime events<br>");
|
||||
return;
|
||||
}
|
||||
long now = _context.clock().now();
|
||||
|
@ -357,7 +357,7 @@ public class SummaryHelper extends HelperBase {
|
||||
Collections.sort(clients, new AlphaComparator());
|
||||
|
||||
StringBuilder buf = new StringBuilder(512);
|
||||
buf.append("<h3><a href=\"i2ptunnel/index.jsp\" target=\"_blank\" title=\"Add/remove/edit & control your client and server tunnels (local destinations).\" title=\"View existing tunnels and tunnel build status.\">Local destinations</a></h3><hr><table>");
|
||||
buf.append("<h3><a href=\"i2ptunnel/index.jsp\" target=\"_blank\" title=\"Add/remove/edit & control your client and server tunnels\">Local Destinations</a></h3><hr><div class=\"tunnels\"><table>");
|
||||
|
||||
for (Iterator iter = clients.iterator(); iter.hasNext(); ) {
|
||||
Destination client = (Destination)iter.next();
|
||||
@ -389,10 +389,10 @@ public class SummaryHelper extends HelperBase {
|
||||
}
|
||||
} else {
|
||||
// yellow light
|
||||
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Tunnel building in progress…\"></td></tr>\n");
|
||||
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Building tunnels…\"></td></tr>\n");
|
||||
}
|
||||
}
|
||||
buf.append("</table><hr>\n");
|
||||
buf.append("</table></div><hr>\n");
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ public class TunnelRenderer {
|
||||
}
|
||||
|
||||
public void renderStatusHTML(Writer out) throws IOException {
|
||||
out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>Exploratory tunnels (<a href=\"/configtunnels.jsp#exploratory\">config</a>):</h2>\n");
|
||||
out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>" + _("Exploratory tunnels") + " (<a href=\"/configtunnels.jsp#exploratory\">" + _("config") + "</a>):</h2>\n");
|
||||
renderPool(out, _context.tunnelManager().getInboundExploratoryPool(), _context.tunnelManager().getOutboundExploratoryPool());
|
||||
|
||||
List<Hash> destinations = null;
|
||||
@ -56,9 +56,9 @@ public class TunnelRenderer {
|
||||
if (name == null)
|
||||
name = client.toBase64().substring(0,4);
|
||||
out.write("<h2><a name=\"" + client.toBase64().substring(0,4)
|
||||
+ "\" ></a>Client tunnels for " + name);
|
||||
+ "\" ></a>" + _("Client tunnels for") + " " + name);
|
||||
if (_context.clientManager().isLocal(client))
|
||||
out.write(" (<a href=\"/configtunnels.jsp#" + client.toBase64().substring(0,4) +"\">config</a>):</h2>\n");
|
||||
out.write(" (<a href=\"/configtunnels.jsp#" + client.toBase64().substring(0,4) +"\">" + _("config") + "</a>):</h2>\n");
|
||||
else
|
||||
out.write(" (dead):</h2>\n");
|
||||
renderPool(out, in, outPool);
|
||||
@ -66,10 +66,10 @@ public class TunnelRenderer {
|
||||
|
||||
List participating = _context.tunnelDispatcher().listParticipatingTunnels();
|
||||
Collections.sort(participating, new TunnelComparator());
|
||||
out.write("<h2><a name=\"participating\"></a>Participating tunnels:</h2><table>\n");
|
||||
out.write("<tr><th>Receive on</th><th>From</th><th>"
|
||||
+ "Send on</th><th>To</th><th>Expiration</th>"
|
||||
+ "<th>Usage</th><th>Rate</th><th>Role</th></tr>\n");
|
||||
out.write("<h2><a name=\"participating\"></a>" + _("Participating tunnels") + ":</h2><table>\n");
|
||||
out.write("<tr><th>" + _("Receive on") + "</th><th>" + _("From") + "</th><th>"
|
||||
+ "" + _("Send on") + "</th><th>" + _("To") + "</th><th>" + _("Expiration") + "</th>"
|
||||
+ "<th>" + _("Usage") + "</th><th>" + _("Rate") + "</th><th>" + _("Role") + "</th></tr>\n");
|
||||
long processed = 0;
|
||||
RateStat rs = _context.statManager().getRate("tunnel.participatingMessageCount");
|
||||
if (rs != null)
|
||||
@ -113,17 +113,17 @@ public class TunnelRenderer {
|
||||
int bps = 1024 * (int) cfg.getProcessedMessagesCount() / lifetime;
|
||||
out.write(" <td class=\"cells\" align=\"center\">" + bps + "Bps</td>");
|
||||
if (cfg.getSendTo() == null)
|
||||
out.write(" <td class=\"cells\" align=\"center\">Outbound Endpoint</td>");
|
||||
out.write(" <td class=\"cells\" align=\"center\">" + _("Outbound Endpoint") + "</td>");
|
||||
else if (cfg.getReceiveFrom() == null)
|
||||
out.write(" <td class=\"cells\" align=\"center\">Inbound Gateway</td>");
|
||||
out.write(" <td class=\"cells\" align=\"center\">" + _("Inbound Gateway") + "</td>");
|
||||
else
|
||||
out.write(" <td class=\"cells\" align=\"center\">Participant</td>");
|
||||
out.write(" <td class=\"cells\" align=\"center\">" + _("Participant") + "</td>");
|
||||
out.write("</tr>\n");
|
||||
processed += cfg.getProcessedMessagesCount();
|
||||
}
|
||||
out.write("</table>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>Inactive participating tunnels: " + inactive + "</b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>" + _("Inactive participating tunnels") + ": " + inactive + "</b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>" + _("Lifetime bandwidth usage") + ": " + DataHelper.formatSize(processed*1024) + "B</b></div>\n");
|
||||
renderPeers(out);
|
||||
}
|
||||
|
||||
@ -152,16 +152,16 @@ public class TunnelRenderer {
|
||||
if (info.getLength() > maxLength)
|
||||
maxLength = info.getLength();
|
||||
}
|
||||
out.write("<table><tr><th>In/Out</th><th>Expiry</th><th>Usage</th><th>Gateway</th>");
|
||||
out.write("<table><tr><th>" + _("In/Out") + "</th><th>" + _("Expiry") + "</th><th>" + _("Usage") + "</th><th>" + _("Gateway") + "</th>");
|
||||
if (maxLength > 3) {
|
||||
out.write("<th align=\"center\" colspan=\"" + (maxLength - 2));
|
||||
out.write("\">Participants</th>");
|
||||
out.write("\">" + _("Participants") + "</th>");
|
||||
}
|
||||
else if (maxLength == 3) {
|
||||
out.write("<th>Participant</th>");
|
||||
out.write("<th>" + _("Participant") + "</th>");
|
||||
}
|
||||
if (maxLength > 1) {
|
||||
out.write("<th>Endpoint</th>");
|
||||
out.write("<th>" + _("Endpoint") + "</th>");
|
||||
}
|
||||
out.write("</tr>\n");
|
||||
for (int i = 0; i < tunnels.size(); i++) {
|
||||
@ -201,17 +201,17 @@ public class TunnelRenderer {
|
||||
if (in != null) {
|
||||
List pending = in.listPending();
|
||||
if (pending.size() > 0)
|
||||
out.write("<div class=\"statusnotes\"><center><b>Build in progress: " + pending.size() + " inbound</b></center></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("inbound") + "</b></center></div>\n");
|
||||
live += pending.size();
|
||||
}
|
||||
if (outPool != null) {
|
||||
List pending = outPool.listPending();
|
||||
if (pending.size() > 0)
|
||||
out.write("<div class=\"statusnotes\"><center><b>Build in progress: " + pending.size() + " outbound</b></center></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("outbound") + "</b></center></div>\n");
|
||||
live += pending.size();
|
||||
}
|
||||
if (live <= 0)
|
||||
out.write("<div class=\"statusnotes\"><center><b>No tunnels; waiting for the grace period to end.</center></b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><center><b>" + _("No tunnels; waiting for the grace period to end.") + "</center></b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><center><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "B in, " +
|
||||
DataHelper.formatSize(processedOut*1024) + "B out</b></center></div>");
|
||||
}
|
||||
@ -230,7 +230,7 @@ public class TunnelRenderer {
|
||||
List<Hash> peerList = new ArrayList(peers);
|
||||
Collections.sort(peerList, new HashComparator());
|
||||
|
||||
out.write("<h2><a name=\"peers\"></a>Tunnel Counts By Peer:</h2>\n");
|
||||
out.write("<h2><a name=\"peers\"></a>" + _("Tunnel Counts By Peer") + ":</h2>\n");
|
||||
out.write("<table><tr><th>Peer</th><th>Expl. + Client</th><th>% of total</th><th>Part. from + to</th><th>% of total</th></tr>\n");
|
||||
for (Hash h : peerList) {
|
||||
out.write("<tr> <td class=\"cells\" align=\"center\">");
|
||||
@ -249,7 +249,7 @@ public class TunnelRenderer {
|
||||
out.write('0');
|
||||
out.write('\n');
|
||||
}
|
||||
out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>Tunnels</b> <td align=\"center\"><b>" + tunnelCount);
|
||||
out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>" + _("Tunnels") + "</b> <td align=\"center\"><b>" + tunnelCount);
|
||||
out.write("</b> <td> </td> <td align=\"center\"><b>" + partCount);
|
||||
out.write("</b> <td> </td></tr></table></div>\n");
|
||||
}
|
||||
|
@ -1,16 +1,17 @@
|
||||
<%@page contentType="text/html" %>
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config networking</title>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config networking")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
<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>I2P Network Configuration</h1>
|
||||
<h1><%=intl._("I2P Network Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -25,10 +26,11 @@
|
||||
System.setProperty("net.i2p.router.web.ConfigNetHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigNetHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<h3>Bandwidth limiter</h3><p>
|
||||
<b>I2P will work best if you configure your rates to match the speed of your internet connection.</b>
|
||||
<h3><%=intl._("Bandwidth limiter")%></h3><p>
|
||||
<b><%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b>
|
||||
</p>
|
||||
<div class="wideload"><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" />" /> KBps In
|
||||
<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" />" />
|
||||
<%=intl._("KBps In")%>
|
||||
</td><td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)</td>
|
||||
<!-- let's keep this simple...
|
||||
bursting up to
|
||||
@ -36,7 +38,8 @@
|
||||
<jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br>
|
||||
-->
|
||||
</tr><tr>
|
||||
<td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" /> KBps Out
|
||||
<td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" />
|
||||
<%=intl._("KBps Out")%>
|
||||
</td><td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)</td>
|
||||
<!-- let's keep this simple...
|
||||
bursting up to
|
||||
@ -46,22 +49,22 @@
|
||||
A negative rate sets the default.</i><br>
|
||||
-->
|
||||
</tr><tr>
|
||||
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> Share</td>
|
||||
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td>
|
||||
<td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
|
||||
</td></tr></table></div></p>
|
||||
</td></tr></table></p></div></p>
|
||||
<% int share = nethelper.getShareBandwidth();
|
||||
if (share < 12) {
|
||||
out.print("<b>NOTE</b>: You have configured I2P to share only " + share + "KBps. ");
|
||||
out.print("I2P requires at least 12KBps to enable sharing. ");
|
||||
out.print("Please enable sharing (participating in tunnels) by configuring more bandwidth. ");
|
||||
out.print("It improves your anonymity by creating cover traffic, and helps the network.<br>");
|
||||
out.print("<p><b>"+intl._("NOTE")+"</b>: You have configured I2P to share only " + share + "KBps. ");
|
||||
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>");
|
||||
} else {
|
||||
out.print("You have configured I2P to share<b> " + share + "KBps</b>. ");
|
||||
out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr>");
|
||||
out.print("<p>" + intl._("You have configured I2P to share") + "<b> " + share + "KBps</b>. ");
|
||||
out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")+"</p><hr>");
|
||||
}
|
||||
%>
|
||||
<div class="formaction">
|
||||
<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" /></div>
|
||||
<input type="submit" name="save" value="<%=intl._("Save changes")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" /></div>
|
||||
<!--
|
||||
<b>Enable load testing: </b>
|
||||
<input type="checkbox" class="optbox" name="enableloadtesting" value="true" <jsp:getProperty name="nethelper" property="enableLoadTesting" /> />
|
||||
@ -72,27 +75,27 @@
|
||||
<a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p>
|
||||
<br>
|
||||
-->
|
||||
<h3>IP and Transport Configuration</h3><p>
|
||||
<b>The default settings will work for most people. There is <a href="#chelp">help below</a>.</b>
|
||||
</p><p><b>UPnP Configuration:</b><br>
|
||||
<h3><%=intl._("IP and Transport Configuration")%></h3><p>
|
||||
<b><%=intl._("The default settings will work for most people.")%> There is <a href="#chelp">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" /> />
|
||||
Enable UPnP to open firewall ports - <a href="peers.jsp#upnp">UPnP status</a>
|
||||
</p><p><b>IP Configuration:</b><br>
|
||||
Externally reachable hostname or IP address:<br>
|
||||
<%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers.jsp#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) %> />
|
||||
Use all auto-detect methods<br>
|
||||
<%=intl._("Use all auto-detect methods")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> />
|
||||
Disable UPnP IP address detection<br>
|
||||
<%=intl._("Disable UPnP IP address detection")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> />
|
||||
Ignore local interface IP address<br>
|
||||
<%=intl._("Ignore local interface IP address")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> />
|
||||
Use SSU IP address detection only<br>
|
||||
<%=intl._("Use SSU IP address detection only")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> />
|
||||
Specify hostname or IP:
|
||||
<%=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(" or <select name=\"udpHost2\"><option value=\"\" selected=\"true\">Select Interface</option>\n");
|
||||
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]);
|
||||
@ -105,9 +108,9 @@
|
||||
%>
|
||||
<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> />
|
||||
Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br>
|
||||
</p><p><b>UDP Configuration:</b><br>
|
||||
UDP port:
|
||||
<%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
|
||||
</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" /> />
|
||||
@ -117,123 +120,118 @@
|
||||
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
|
||||
-->
|
||||
</p><p>
|
||||
<b>TCP Configuration:</b><br>
|
||||
Externally reachable hostname or IP address:<br>
|
||||
<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) %> />
|
||||
Use auto-detected IP address
|
||||
<i>(currently <jsp:getProperty name="nethelper" property="udpIP" />)</i>
|
||||
if we are not firewalled<br>
|
||||
<%=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) %> />
|
||||
Always use auto-detected IP address (Not firewalled)<br>
|
||||
<%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> />
|
||||
Specify hostname or IP:
|
||||
<%=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) %> />
|
||||
Disable inbound (Firewalled)<br>
|
||||
<%=intl._("Disable inbound (Firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> />
|
||||
Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br>
|
||||
<%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
|
||||
</p><p>
|
||||
Externally reachable TCP port:<br>
|
||||
<%=intl._("Externally reachable TCP port")%>:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> />
|
||||
Use the same port configured for UDP
|
||||
<i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
|
||||
<%=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) %> />
|
||||
Specify Port:
|
||||
<%=intl._("Specify Port")%>:
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br>
|
||||
</p><p><b>Note: Changing these settings will restart your router.</b></p>
|
||||
</p><p><b><%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%></b></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" />
|
||||
</div><h3><a name="chelp">Configuration Help:</a></h3><div align="justify"><p>
|
||||
While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
|
||||
if the I2P port (generally 8887) is forwarded for both UDP and TCP.
|
||||
<input type="submit" name="save" value="<%=intl._("Save changes")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" />
|
||||
</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 (generally 8887) is forwarded for both UDP and TCP.")%>
|
||||
</p><p>
|
||||
If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach
|
||||
you. If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching
|
||||
with "SSU introductions" to relay traffic. 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. Certain firewalls such as symmetric NATs may not work well with I2P.
|
||||
<%=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>
|
||||
UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address
|
||||
and forward ports.
|
||||
UPnP support is beta, and may not work for any number of reasons:
|
||||
<%=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">No UPnP-compatible device present
|
||||
<li class="tidylist">UPnP disabled on the device
|
||||
<li class="tidylist">Software firewall interference with UPnP
|
||||
<li class="tidylist">Bugs in the device's UPnP implementation
|
||||
<li class="tidylist">Multiple firewall/routers in the internet connection path
|
||||
<li class="tidylist">UPnP device change, reset, or address change
|
||||
</ul><br>
|
||||
<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>
|
||||
Reviewing the <a href="peers.jsp#upnp">UPnP status</a> may help.
|
||||
UPnP may be enabled or disabled above, but a change requires a router restart to take effect.
|
||||
<p>Hostnames entered above will be published in the network database.
|
||||
<%=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.")%>
|
||||
They are <b>not private</b>.
|
||||
Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.
|
||||
If you specify the wrong IP address or
|
||||
hostname, or do not properly configure your NAT or firewall, your network performance will degrade
|
||||
substantially. When in doubt, leave the settings at the defaults.
|
||||
<%=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">Reachability Help:</a></h3><p>
|
||||
While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
|
||||
if the I2P port (generally 8887) to both UDP and TCP.
|
||||
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.
|
||||
<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 (generally 8887) 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.")%>
|
||||
If there is an error, the <a href="logs.jsp">logs</a> may also help diagnose the problem.
|
||||
<ul>
|
||||
<li class="tidylist"><b>OK</b> - Your UDP port does not appear to be firewalled.
|
||||
<li class="tidylist"><b>Firewalled</b> - Your UDP port appears to be firewalled.
|
||||
As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.
|
||||
However, if it appears consistently, you should check whether both your external and internal
|
||||
firewalls are open on port 8887. I2P will work fine when firewalled, there is no reason for concern.
|
||||
When firewalled, the router uses "introducers" to relay inbound connections.
|
||||
However, you will get more participating traffic and help the network more if you can open your
|
||||
firewall(s). 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.
|
||||
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>Testing</b> - The router is currently testing whether your UDP port is firewalled.
|
||||
<li class="tidylist"><b>Hidden</b> - The router is not configured to publish its address,
|
||||
therefore it does not expect incoming connections.
|
||||
<li class="tidylist"><b>WARN - Firewalled and Fast</b> - You have configured I2P to share more than 128KBps of bandwidth,
|
||||
but you are firewalled. 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>WARN - Firewalled and Floodfill</b> - You have configured I2P to be a floodfill router, but
|
||||
you are firewalled. For best participation as a floodfill router, you should open your firewall.
|
||||
<li class="tidylist"><b>WARN - Firewalled with Inbound TCP Enabled</b> - You have configured inbound TCP, however
|
||||
your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.
|
||||
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. Please open your firewall or disable inbound TCP above.
|
||||
<li class="tidylist"><b>WARN - Firewalled with UDP Disabled</b> -
|
||||
You have configured inbound TCP, however
|
||||
you have disabled UDP. You appear to be firewalled on TCP, therefore your router cannot
|
||||
accept inbound connections.
|
||||
Please open your firewall or enable UDP.
|
||||
<li class="tidylist"><b>ERR - Clock Skew</b> - Your system's clock is skewed, which will make it difficult
|
||||
to participate in the network. Correct your clock setting if this error persists.
|
||||
<li class="tidylist"><b>ERR - Private TCP Address</b> - You must never advertise an unroutable IP address such as
|
||||
127.0.0.1 or 192.168.1.1 as your external address. Correct the address or disable inbound TCP above.
|
||||
<li class="tidylist"><b>ERR - SymmetricNAT</b> - I2P detected that you are firewalled by a Symmetric NAT.
|
||||
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>ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart</b> -
|
||||
I2P was unable to bind to port 8887 or other configured port.
|
||||
Check to see if another program is using port 8887. If so, stop that program or configure
|
||||
I2P to use a different port. This may be a transient error, if the other program is no longer
|
||||
using the port. However, a restart is always required after this error.
|
||||
<li class="tidylist"><b>ERR - UDP Disabled and Inbound TCP host/port not set</b> -
|
||||
You have not configured inbound TCP with a hostname and port above, however
|
||||
you have disabled UDP. Therefore your router cannot accept inbound connections.
|
||||
Please configure a TCP host and port above or enable UDP.
|
||||
<li class="tidylist"><b>ERR - Client Manager I2CP Error - check logs</b> -
|
||||
This is usually due to a port 7654 conflict. Check the logs to verify. Do you have another I2P instance running?
|
||||
Stop the conflicting program and restart I2P.
|
||||
</ul><hr>
|
||||
<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 on port 8887.")%>
|
||||
<%=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 port 8887. 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>
|
||||
|
@ -2,8 +2,9 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config advanced</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config advanced")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
@ -11,7 +12,7 @@
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" />
|
||||
<jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
|
||||
<h1>I2P Advanced Configuration</h1>
|
||||
<h1><%=intl._("I2P Advanced Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
|
||||
<%@include file="confignav.jsp" %>
|
||||
@ -28,10 +29,10 @@
|
||||
System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<h3>Advanced I2P Configuration</h3>
|
||||
<h3><%=intl._("Advanced I2P Configuration")%></h3>
|
||||
<textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
|
||||
<div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Apply" />
|
||||
<input type="reset" value="Cancel" /><br>
|
||||
<b>NOTE:</b> Some changes may require a restart to take effect.
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" />
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" /><br>
|
||||
<b><%=intl._("NOTE")%>:</b> <%=intl._("Some changes may require a restart to take effect.")%>
|
||||
</div></form></div></div></div></body></html>
|
||||
|
@ -2,8 +2,9 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config clients</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config clients")%>
|
||||
<style type='text/css'>
|
||||
button span.hide{
|
||||
display:none;
|
||||
@ -14,7 +15,7 @@ button span.hide{
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" />
|
||||
<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h1>I2P Client Configuration</h1>
|
||||
<h1><%=intl._("I2P Client Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -29,29 +30,23 @@ button span.hide{
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" />
|
||||
<h3>Client Configuration</h3><p>
|
||||
The Java clients listed below are started by the router and run in the same JVM.
|
||||
<h3><%=intl._("Client Configuration")%></h3><p>
|
||||
<%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%>
|
||||
</p><div class="wideload">
|
||||
<p><jsp:getProperty name="clientshelper" property="form1" />
|
||||
</p><p><i>To change other client options, edit the file
|
||||
<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
|
||||
All changes require restart to take effect.</i>
|
||||
</p><p><i><%=intl._("To change other client options, edit the file")%>
|
||||
<%=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="action" value="Save Client Configuration" />
|
||||
</div></div><h3>WebApp Configuration</h3><p>
|
||||
The Java web applications listed below are started by the webConsole client and run in the same JVM as the router.
|
||||
They are usually web applications accessible through the router console.
|
||||
They may be complete applications (e.g. i2psnark),
|
||||
front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel),
|
||||
or have no web interface at all (e.g. addressbook).
|
||||
<input type="submit" name="action" value="<%=intl._("Save Client Configuration")%>" />
|
||||
</div></div><h3><%=intl._("WebApp Configuration")%></h3><p>
|
||||
<%=intl._("The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook).")%>
|
||||
</p><p>
|
||||
A web app may also be disabled by removing the .war file from the webapps directory;
|
||||
however the .war file and web app will reappear when you update your router to a newer version,
|
||||
so disabling the web app here is the preferred method.
|
||||
<%=intl._("A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method.")%>
|
||||
</p><div class="wideload"><p>
|
||||
<jsp:getProperty name="clientshelper" property="form2" />
|
||||
</p><p>
|
||||
<i>All changes require restart to take effect.</i>
|
||||
<i><%=intl._("All changes require restart to take effect.")%></i>
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Save WebApp Configuration" />
|
||||
<input type="submit" name="action" value="<%=intl._("Save WebApp Configuration")%>" />
|
||||
</div></div></form></div></div></body></html>
|
||||
|
@ -2,12 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config keyring</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config keyring")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Keyring Configuration</h1>
|
||||
<h1><%=intl._("I2P Keyring Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -17,32 +18,30 @@
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" />
|
||||
<jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<div class="configure"><p><h3>Keyring</h3>
|
||||
The router keyring is used to decrypt encrypted leaseSets.
|
||||
The keyring may contain keys for local or remote encrypted destinations.
|
||||
<div class="configure"><h2><%=intl._("Keyring")%></h2><p>
|
||||
<%=intl._("The router keyring is used to decrypt encrypted leaseSets.")%>
|
||||
<%=intl._("The keyring may contain keys for local or remote encrypted destinations.")%></p>
|
||||
<div class="wideload"><p>
|
||||
<jsp:getProperty name="keyringhelper" property="summary" />
|
||||
</p></div>
|
||||
|
||||
<br>
|
||||
|
||||
<form action="configkeyring.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigKeyringHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigKeyringHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce")%>" />
|
||||
<h3>Manual Keyring Addition</h3>
|
||||
Enter keys for encrypted remote destinations here.
|
||||
<h3><%=intl._("Manual Keyring Addition")%></h3><p>
|
||||
<%=intl._("Enter keys for encrypted remote destinations here.")%>
|
||||
Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>.
|
||||
<p>
|
||||
</p>
|
||||
<div class="wideload">
|
||||
<table><tr>
|
||||
<td class="mediumtags" align="right">Dest. name, hash, or full key:</td>
|
||||
<p><table><tr>
|
||||
<td class="mediumtags" align="right"><%=intl._("Dest. name, hash, or full key")%>:</td>
|
||||
<td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea></td>
|
||||
</tr><tr>
|
||||
<td class="mediumtags" align="right">Encryption Key:</td>
|
||||
<td class="mediumtags" align="right"><%=intl._("Encryption Key")%>:</td>
|
||||
<td><input type="text" size="55" name="key" /></td>
|
||||
</tr><tr>
|
||||
<td align="right" colspan="2"><input type="submit" name="action" value="Add key" />
|
||||
<input type="submit" name="action" value="Delete key" /> <input type="reset" value="Cancel" /></td>
|
||||
</tr></table></div></form></div></div></body></html>
|
||||
<td align="right" colspan="2"><input type="submit" name="action" value="<%=intl._("Add key")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Delete key")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" /></td>
|
||||
</tr></table></p></div></form></div></div></body></html>
|
||||
|
@ -3,14 +3,14 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config logging</title>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config logging")%>
|
||||
</head><body>
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigLoggingHelper" id="logginghelper" scope="request" />
|
||||
<jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Logging Configuration</h1>
|
||||
<h1><%=intl._("I2P Logging Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -25,29 +25,29 @@
|
||||
System.setProperty("net.i2p.router.web.ConfigLoggingHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<h3>Configure I2P Logging Options</h3>
|
||||
<h3><%=intl._("Configure I2P Logging Options")%></h3>
|
||||
<div class="wideload">
|
||||
<table border="0" cellspacing="5">
|
||||
<tr><td class="mediumtags" align="right"><b>Logging filename:</b></td>
|
||||
<tr><td class="mediumtags" align="right"><b><%=intl._("Logging filename")%>:</b></td>
|
||||
<td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" />
|
||||
<br><i>(the symbol '@' will be replaced during log rotation)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log record format:</b></td>
|
||||
<br> <i><%=intl._("(the symbol '@' will be replaced during log rotation)")%></i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log record format")%>:</b></td>
|
||||
<td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" />
|
||||
<br> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority,
|
||||
'm' = message)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log date format:</b></td>
|
||||
<br> <i><%=intl._("(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)")%>
|
||||
</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log date format")%>:</b></td>
|
||||
<td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" />
|
||||
<br> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss'
|
||||
= second, 'SSS' = millisecond)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Max log file size:</b></td>
|
||||
<br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>
|
||||
</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Max log file size")%>:</b></td>
|
||||
<td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /><br></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Default log level:</b></td>
|
||||
<td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i>(DEBUG and INFO are not recommended defaults,
|
||||
as they will drastically slow down your router)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log level overrides:</b></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Default log level")%>:</b></td>
|
||||
<td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i><%=intl._("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%>
|
||||
</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log level overrides")%>:</b></td>
|
||||
<td><jsp:getProperty name="logginghelper" property="logLevelTable" /></td>
|
||||
</tr><tr><td colspan="2"><hr></td>
|
||||
</tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Save changes" />
|
||||
<input type="reset" value="Cancel" />
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" />
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" />
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@ -2,12 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config peers</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config peers")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Peer Configuration</h1>
|
||||
<h1><%=intl._("I2P Peer Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -31,50 +32,41 @@
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigPeerHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigPeerHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce")%>" />
|
||||
<p>
|
||||
<a name="sh"> </a>
|
||||
<a name="unsh"> </a>
|
||||
<a name="bonus"> </a>
|
||||
<h2>Manual Peer Controls</h2>
|
||||
<div class="mediumtags">Router Hash:
|
||||
<input type="text" size="55" name="peer" value="<%=peer%>" /></div>
|
||||
<h3>Manually Ban / Unban a Peer</h3>
|
||||
Banning will prevent the participation of this peer in tunnels you create.
|
||||
<hr>
|
||||
<h2><%=intl._("Manual Peer Controls")%></h2>
|
||||
<div class="mediumtags"><p><%=intl._("Router Hash")%>:
|
||||
<input type="text" size="55" name="peer" value="<%=peer%>" /></p></div>
|
||||
<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="Ban peer until restart" />
|
||||
<input type="submit" name="action" value="Unban peer" />
|
||||
<input type="submit" name="action" value="<%=intl._("Ban peer until restart")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Unban peer")%>" />
|
||||
<% if (! "".equals(peer)) { %>
|
||||
<!-- <font color="blue"><---- click to verify action</font> -->
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
<h3>Adjust Profile Bonuses</h3>
|
||||
Bonuses may be positive or negative, and affect the peer's inclusion in Fast
|
||||
and High Capacity tiers. Fast peers are used for client tunnels, and High
|
||||
Capacity peers are used for some exploratory tunnels. Current bonuses are
|
||||
displayed on the <a href="profiles.jsp">profiles page</a>.
|
||||
<p>
|
||||
<h3><%=intl._("Adjust Profile Bonuses")%></h3>
|
||||
<p><%=intl._("Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the")%> <a href="profiles.jsp"><%=intl._("profiles page")%></a>.</p>
|
||||
<% long speed = 0; long capacity = 0;
|
||||
if (! "".equals(peer)) {
|
||||
// get existing bonus values?
|
||||
}
|
||||
%>
|
||||
<hr>
|
||||
<div class="mediumtags">Speed:
|
||||
<div class="mediumtags"><p><%=intl._("Speed")%>:
|
||||
<input type="text" size="8" name="speed" value="<%=speed%>" />
|
||||
Capacity:
|
||||
<%=intl._("Capacity")%>:
|
||||
<input type="text" size="8" name="capacity" value="<%=capacity%>" />
|
||||
<input type="submit" name="action" value="Adjust peer bonuses" /></div>
|
||||
</p>
|
||||
<input type="submit" name="action" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
|
||||
</form>
|
||||
<a name="shitlist"> </a>
|
||||
<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="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
|
||||
<hr>
|
||||
<div class="wideload">
|
||||
<jsp:getProperty name="peerhelper" property="blocklistSummary" />
|
||||
|
||||
</div></div></div></body></html>
|
||||
</div><hr></div></div></body></html>
|
||||
|
@ -2,12 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config service</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config service")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Service Configuration</h1>
|
||||
<h1><%=intl._("I2P Service Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -21,64 +22,58 @@
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigServiceHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigServiceHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce")%>" />
|
||||
<h3>Shutdown the router</h3>
|
||||
<p>Graceful shutdown lets the router satisfy the agreements it has already made
|
||||
before shutting down, but may take a few minutes. If you need to kill the
|
||||
router immediately, that option is available as well.</p>
|
||||
<h3><%=intl._("Shutdown the router")%></h3>
|
||||
<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="Shutdown gracefully" />
|
||||
<input type="submit" name="action" value="Shutdown immediately" />
|
||||
<input type="submit" name="action" value="Cancel graceful shutdown" />
|
||||
<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")%>" />
|
||||
</div>
|
||||
<% if (System.getProperty("wrapper.version") != null) { %>
|
||||
<p>If you want the router to restart itself after shutting down, you can choose one of
|
||||
the following. This is useful in some situations - for example, if you changed
|
||||
some settings that client applications only read at startup, such as the routerconsole password
|
||||
or the interface it listens on. A graceful restart will take a few minutes (but your peers
|
||||
will appreciate your patience), while a hard restart does so immediately. After tearing down
|
||||
the router, it will wait 1 minute before starting back up again.</p>
|
||||
<p><%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%>
|
||||
<%=intl._("This is useful in some situations")%> -
|
||||
<%=intl._("for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on.")%>
|
||||
<%=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="Graceful restart" />
|
||||
<input type="submit" name="action" value="Hard restart" />
|
||||
<input type="submit" name="action" value="<%=intl._("Graceful restart")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Hard restart")%>" />
|
||||
<% } %></div>
|
||||
|
||||
<% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>
|
||||
<h3>Systray integration</h3>
|
||||
<p>On the windows platform, there is a small application to sit in the system
|
||||
tray, allowing you to view the router's status (later on, I2P client applications
|
||||
will be able to integrate their own functionality into the system tray as well).
|
||||
If you are on windows, you can either enable or disable that icon here.</p>
|
||||
<h3><%=intl._("Systray integration")%></h3>
|
||||
<p><%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%>
|
||||
<%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%>
|
||||
<%=intl._("If you are on windows, you can either enable or disable that icon here.")%></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Show systray icon" />
|
||||
<input type="submit" name="action" value="Hide systray icon" />
|
||||
</div><h3>Run on startup</h3>
|
||||
<p>You can control whether I2P is run on startup or not by selecting one of the
|
||||
following options - I2P will install (or remove) a service accordingly. You can
|
||||
also run the <code>install_i2p_service_winnt.bat</code> (or
|
||||
<code>uninstall_i2p_service_winnt.bat</code>) from the command line, if you prefer.</p>
|
||||
<input type="submit" name="action" value="<%=intl._("Show systray icon")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Hide systray icon")%>" />
|
||||
</div><h3><%=intl._("Run on startup")%></h3>
|
||||
<p><%=intl._("You can control whether I2P is run on startup or not by selecting one of the following options")%> -
|
||||
<%=intl._("I2P will install (or remove) a service accordingly.")%>
|
||||
<%=intl._("If you prefer the command line, you can also run the ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._("or")%>
|
||||
<code>uninstall_i2p_service_winnt.bat</code>).</p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Run I2P on startup" />
|
||||
<input type="submit" name="action" value="Don't run I2P on startup" /></div>
|
||||
<p><b>Note:</b> If you are running I2P as service right now, removing it will shut
|
||||
down your router immediately. You may want to consider shutting down gracefully, as
|
||||
above, then running uninstall_i2p_service_winnt.bat.</p>
|
||||
<input type="submit" name="action" value="<%=intl._("Run I2P on startup")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Don't run I2P on startup")%>" /></div>
|
||||
<p><b><%=intl._("Note")%>:</b> <%=intl._("If you are running I2P as service right now, removing it will shut down your router immediately.")%>
|
||||
<%=intl._("You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat.")%></p>
|
||||
<% } %>
|
||||
|
||||
<% if (System.getProperty("wrapper.version") != null) { %>
|
||||
<h3>Debugging</h3>
|
||||
<p>At times, it may be helpful to debug I2P by getting a thread dump. To do so,
|
||||
please select the following option and review the thread dumped to
|
||||
<h3><%=intl._("Debugging")%></h3>
|
||||
<p> At times, it may be helpful to debug I2P by getting a thread dump.
|
||||
To do so, please select the following option and review the thread dumped to
|
||||
<a href="logs.jsp#servicelogs">wrapper.log</a>.</p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Dump threads" />
|
||||
<% } %></div>
|
||||
|
||||
<h3>Launch browser on router startup?</h3>
|
||||
<p>I2P's main configuration interface is this web console, so for your convenience
|
||||
I2P can launch a web browser pointing at
|
||||
<a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> whenever
|
||||
the router starts up.</p>
|
||||
<h3><%=intl._("Launch browser on router startup?")%></h3>
|
||||
<p><%=intl._("I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at")%>
|
||||
<a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> .</p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="View console on startup" />
|
||||
<input type="submit" name="action" value="Do not view console on startup" />
|
||||
<input type="submit" name="action" value="<%=intl._("View console on startup")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Do not view console on startup")%>" />
|
||||
</div></form></div></div></body></html>
|
||||
|
@ -2,8 +2,9 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config stats</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config stats")%>
|
||||
<script type="text/javascript">
|
||||
function init()
|
||||
{
|
||||
@ -52,7 +53,7 @@ function toggleAll(category)
|
||||
</script>
|
||||
</head><body onLoad="init();">
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Stats Configuration</h1>
|
||||
<h1><%=intl._("I2P Stats Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -70,25 +71,25 @@ function toggleAll(category)
|
||||
System.setProperty("net.i2p.router.web.ConfigStatsHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="action" value="foo" />
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigStatsHandler.nonce")%>" />
|
||||
<h3>Configure I2P Stat Collection</h3>
|
||||
Enable full stats?
|
||||
<h3><%=intl._("Configure I2P Stat Collection")%></h3>
|
||||
<p><%=intl._("Enable full stats?")%>
|
||||
<input type="checkbox" class="optbox" name="isFull" value="true" <%
|
||||
if (statshelper.getIsFull()) { %>checked="true" <% } %>/>
|
||||
(change requires restart to take effect)<br>
|
||||
Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br>
|
||||
Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<br>
|
||||
(<%=intl._("change requires restart to take effect")%>)<br>
|
||||
<%=intl._("Stat file")%>: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br>
|
||||
<%=intl._("Filter")%>: (<a href="javascript: void(null);" onclick="toggleAll('*')"><%=intl._("toggle all")%></a>)<br></p>
|
||||
<div class="wideload">
|
||||
<table>
|
||||
<p><table>
|
||||
<% while (statshelper.hasMoreStats()) {
|
||||
while (statshelper.groupRequired()) { %>
|
||||
<tr class="tablefooter">
|
||||
<td align="left" colspan="3">
|
||||
<b><%=statshelper.getCurrentGroupName()%></b>
|
||||
(<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')">toggle all</a>)
|
||||
(<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._("toggle all")%></a>)
|
||||
</td></tr>
|
||||
<tr class="tablefooter">
|
||||
<td align="center"><b>Log</b></td>
|
||||
<td align="center"><b>Graph</b></td>
|
||||
<td align="center"><b><%=intl._("Log")%></b></td>
|
||||
<td align="center"><b><%=intl._("Graph")%></b></td>
|
||||
<td></td></tr>
|
||||
<%
|
||||
} // end iterating over required groups for the current stat %>
|
||||
@ -105,7 +106,7 @@ function toggleAll(category)
|
||||
} // end iterating over all stats %>
|
||||
<tr><td colspan="3"></td></tr>
|
||||
<tr><td align="center"><input type="checkbox" class="optbox" name="explicitFilter" /></td>
|
||||
<td colspan="2">Advanced filter:
|
||||
<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="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr>
|
||||
</table></div></form></div></div></body></html>
|
||||
</table></p></div></form></div></div></body></html>
|
||||
|
@ -2,15 +2,16 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - config tunnels</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("config tunnels")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigTunnelsHelper" id="tunnelshelper" scope="request" />
|
||||
<jsp:setProperty name="tunnelshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h1>I2P Tunnel Configuration</h1>
|
||||
<h1><%=intl._("I2P Tunnel Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" />
|
||||
@ -20,23 +21,23 @@
|
||||
<jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" />
|
||||
<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
<div class="configure"><p><i>
|
||||
NOTE: The default settings work for most people.
|
||||
There is a fundamental tradeoff between anonymity and performance.
|
||||
Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops),
|
||||
or a high quantity + backup quantity, may severely reduce performance or reliability.
|
||||
High CPU and/or high outbound bandwidth usage may result.
|
||||
Change these settings with care, and adjust them if you have problems.
|
||||
</i></p><div class="wideload">
|
||||
<form action="configtunnels.jsp" method="POST">
|
||||
<div class="configure"><p>
|
||||
<%=intl._("NOTE")%>:
|
||||
<%=intl._("The default settings work for most people.")%>
|
||||
<%=intl._("There is a fundamental tradeoff between anonymity and performance.")%>
|
||||
<%=intl._("Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability.")%>
|
||||
<%=intl._("High CPU and/or high outbound bandwidth usage may result.")%>
|
||||
<%=intl._("Change these settings with care, and adjust them if you have problems.")%>
|
||||
<div class="wideload">
|
||||
<form action="configtunnels.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<jsp:getProperty name="tunnelshelper" property="form" />
|
||||
<i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i><br>
|
||||
<i>Client tunnel changes are temporary and are not saved.</i><br>
|
||||
<i>To make permanent client tunnel changes see the </i><a href="i2ptunnel/index.jsp">i2ptunnel page</a>.<br>
|
||||
<%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%>
|
||||
<%=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="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div>
|
||||
</form></div></div></div></body></html>
|
||||
</form></p></div></div></div></body></html>
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=cssHelper.title("config UI")%>
|
||||
<%=intl.title("config UI")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
@ -21,7 +21,7 @@
|
||||
<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"><h3><%=uihelper._("Router Console Theme")%></h3>
|
||||
<div class="configure"><div class="topshimten"><h3><%=uihelper._("Router Console Theme")%></h3></div>
|
||||
<form action="configui.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigUIHandler.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigUIHandler.noncePrev", prev);
|
||||
@ -42,6 +42,6 @@
|
||||
<jsp:getProperty name="uihelper" property="langSettings" />
|
||||
<%=uihelper._("Please contribute to the router console translation project! Contact the developers on IRC #i2p to help.")%>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Apply" > <input type="reset" value="Cancel" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" > <input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
</div></form></div>
|
||||
</div></body></html>
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=cssHelper.title("config update")%>
|
||||
<%=intl.title("config update")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Update Configuration</h1>
|
||||
<h1><%=intl._("I2P Update Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsp" %>
|
||||
|
||||
@ -26,35 +26,35 @@
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" />
|
||||
<h3>Check for I2P and news updates</h3>
|
||||
<h3><%=intl._("Check for I2P and news updates")%></h3>
|
||||
<div class="wideload"><table border="0" cellspacing="5">
|
||||
<tr><td colspan="2"></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b>News & I2P Updates:</b></td>
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i>Update In Progress</i><br> <% } else { %> <input type="submit" name="action" value="Check for updates" />
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News & I2P Updates")%>:</b></td>
|
||||
<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></tr>
|
||||
<tr><td colspan="2"><br></td></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b>News URL:</b></td>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News URL")%>:</b></td>
|
||||
<td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Refresh frequency:</b>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Refresh frequency")%>:</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td><tr>
|
||||
<td class= "mediumtags" align="right"><b><%=formhandler._("Update policy")%>:</b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td>
|
||||
<tr><td class= "mediumtags" align="right"><b>Update through the eepProxy?</b></td>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("Update through the eepProxy?")%></b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>eepProxy host:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy host")%>:</b></td>
|
||||
<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>eepProxy port:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy port")%>:</b></td>
|
||||
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Update URLs:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Update URLs")%>:</b></td>
|
||||
<td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Trusted keys:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Trusted keys")%>:</b></td>
|
||||
<td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Update with unsigned development builds?")%></b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateUnsigned" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Unsigned Build URL")%>:</b></td>
|
||||
<td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td>
|
||||
</tr><tr class="tablefooter"><td colspan="2">
|
||||
<div class="formaction">
|
||||
<input type="submit" name="action" value="Save" />
|
||||
<input type="reset" value="Cancel" />
|
||||
<input type="submit" name="action" value="<%=intl._("Save")%>" />
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" />
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@ -23,17 +23,17 @@
|
||||
%>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="shortcut icon" href="/themes/console/images/favicon.ico">
|
||||
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="cssHelper" scope="request" />
|
||||
<jsp:setProperty name="cssHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="intl" scope="request" />
|
||||
<jsp:setProperty name="intl" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<%
|
||||
cssHelper.setLang(request.getParameter("lang"));
|
||||
intl.setLang(request.getParameter("lang"));
|
||||
%>
|
||||
<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
|
||||
<%
|
||||
// make the fonts bigger for chinese
|
||||
if (cssHelper.getLang().equals("zh")) {
|
||||
if (intl.getLang().equals("zh")) {
|
||||
%>
|
||||
<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css">
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css">
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
@ -12,8 +12,9 @@
|
||||
}
|
||||
// If it can't find the iframe or viewtheme.jsp I wonder if the whole thing blows up...
|
||||
%>
|
||||
<html><head><title>I2P Router Console - Page Not Found</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("Page Not Found")%>
|
||||
</head><body>
|
||||
<%
|
||||
if (System.getProperty("router.consoleNonce") == null) {
|
||||
@ -23,6 +24,6 @@ if (System.getProperty("router.consoleNonce") == null) {
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1><%=ERROR_CODE%> <%=ERROR_MESSAGE%></h1>
|
||||
<div class="sorry" id="warning">
|
||||
Sorry! You appear to be requesting a non-existent Router Console page or resource.<hr>
|
||||
Error 404: <%=ERROR_URI%> not found.
|
||||
<%=intl._("Sorry! You appear to be requesting a non-existent Router Console page or resource.")%><hr>
|
||||
<%=intl._("Error 404")%>: <%=ERROR_URI%> <%=intl._("not found")%>.
|
||||
</div></body></html>
|
||||
|
@ -2,12 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - graphs</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("graphs")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Performance Graphs</h1>
|
||||
<h1><%=intl._("I2P Performance Graphs")%></h1>
|
||||
<div class="main" id="main">
|
||||
<div class="graphspanel">
|
||||
<div class="widepanel">
|
||||
|
@ -7,22 +7,22 @@
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Router Help & Support</h1>
|
||||
<div class="main" id="main"><div align="justify">
|
||||
<div class="main" id="main"><p>
|
||||
If you'd like to help improve or translate the documentation, or
|
||||
help with other aspects of the project, please see the documentation for
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a>
|
||||
<br><br>Further assistance is available here:<br></div>
|
||||
</p><p>Further assistance is available here:
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul><br>
|
||||
You may also try the <a href="http://forum.i2p/">I2P forum</a>
|
||||
or IRC.<br>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul>
|
||||
</p><p>You may also try the <a href="http://forum.i2p/">I2P forum</a>
|
||||
or IRC.</p>
|
||||
|
||||
<h2>Summary Bar Information</h2><div align="justify">
|
||||
<h2>Summary Bar Information</h2><p>
|
||||
Many of the stats on the summary bar may be
|
||||
<a href="configstats.jsp">configured</a> to be
|
||||
<a href="graphs.jsp">graphed</a> for further analysis.
|
||||
</div><h3>General</h3><ul>
|
||||
</p><h3>General</h3><ul>
|
||||
<li class="tidylist"><b>Ident:</b>
|
||||
The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash.
|
||||
The full hash is shown on your <a href="netdb.jsp?r=.">router info page</a>.
|
||||
@ -75,7 +75,7 @@ The local applications connecting through your router.
|
||||
These may be clients started through <a href="i2ptunnel/index.jsp">I2PTunnel</a>
|
||||
or external programs connecting through SAM, BOB, or directly to I2CP.
|
||||
</div><h3>Tunnels in/out</h3><div align="justify">
|
||||
The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br><ul>
|
||||
The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><ul>
|
||||
<li class="tidylist"><div align="justify"><b>Exploratory:</b>
|
||||
Tunnels built by your router and used for communication with the floodfill peers,
|
||||
building new tunnels, and testing existing tunnels.</div>
|
||||
@ -91,7 +91,7 @@ You may also limit the total number by setting <tt>router.maxParticipatingTunnel
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</ul>
|
||||
|
||||
<h3>Congestion</h3><div align="justify">
|
||||
Some basic indications of router overload:</div><br><ul>
|
||||
Some basic indications of router overload:</div><ul>
|
||||
<li class="tidylist"><b>Job lag:</b>
|
||||
How long jobs are waiting before execution. The job queue is listed on the <a href="jobs.jsp">jobs page</a>.
|
||||
Unfortunately, there are several other job queues in the router that may be congested,
|
||||
@ -129,9 +129,8 @@ or reject all requests for a number of reasons, to control
|
||||
the bandwidth and CPU demands and maintain capacity for
|
||||
local clients.</ul>
|
||||
|
||||
<h2>Legal stuff</h2><div align="justify">
|
||||
The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
|
||||
a few notable exceptions:</div><br><ul>
|
||||
<h2>Legal stuff</h2><p>The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
|
||||
a few notable exceptions:</p><ul>
|
||||
<li class="tidylist">ElGamal and DSA code, under the BSD license, written by TheCrypto</li>
|
||||
<li class="tidylist">SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle</li>
|
||||
<li class="tidylist">AES code, under the Cryptix (MIT) license, written by the Cryptix team</li>
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<title>I2P Router Console - home</title>
|
||||
<%=intl.title("home")%>
|
||||
</head><body>
|
||||
<%
|
||||
if (System.getProperty("router.consoleNonce") == null) {
|
||||
@ -12,7 +12,7 @@ if (System.getProperty("router.consoleNonce") == null) {
|
||||
}
|
||||
%>
|
||||
|
||||
<%@include file="summary.jsp" %><h1>I2P Router Console</h1>
|
||||
<%@include file="summary.jsp" %><h1><%=intl._("I2P Router Console")%></h1>
|
||||
<div class="news" id="news">
|
||||
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="newshelper" scope="request" />
|
||||
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml"); %>
|
||||
|
@ -2,13 +2,14 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - job queue</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("job queue")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %><h1>I2P Router Job Queue</h1>
|
||||
<%@include file="summary.jsp" %><h1><%=intl._("I2P Router Job Queue")%></h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.JobQueueHelper" id="jobQueueHelper" scope="request" />
|
||||
<jsp:setProperty name="jobQueueHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="jobQueueHelper" property="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="jobQueueHelper" property="jobQueueSummary" />
|
||||
</div></body></html>
|
||||
<hr></div></body></html>
|
||||
|
@ -2,27 +2,28 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - logs</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("logs")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Router Logs</h1>
|
||||
<h1><%=intl._("I2P Router Logs")%></h1>
|
||||
<div class="main" id="main">
|
||||
<div class="joblog"><h3>Version:</h3><a name="version"> </a>
|
||||
Please include this information in bug reports.
|
||||
<div class="joblog"><h3><%=intl._("I2P Version & Running Environment")%></h3><a name="version"> </a>
|
||||
<i><%=intl._("Please include this information in bug reports")%>:</i>
|
||||
<p>
|
||||
I2P <jsp:getProperty name="helper" property="version" /><br>
|
||||
<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br>
|
||||
<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
|
||||
CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
|
||||
jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
|
||||
Encoding <%=System.getProperty("file.encoding")%><br></p><br>
|
||||
<b>I2P version:</b> <jsp:getProperty name="helper" property="version" /><br>
|
||||
<b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br>
|
||||
<b>Platform:</b> <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
|
||||
<b>Processor:</b> <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
|
||||
<b>Jbigi:</b> <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
|
||||
<b>Encoding:</b> <%=System.getProperty("file.encoding")%></p>
|
||||
<jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" />
|
||||
<jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h3>Critical logs:</h3><a name="criticallogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="criticalLogs" /><br>
|
||||
<h3>Router logs (<a href="configlogging.jsp">configure</a>):</h3>
|
||||
<jsp:getProperty name="logsHelper" property="logs" /><br>
|
||||
<h3>Service (Wrapper) logs:</h3><a name="servicelogs"> </a>
|
||||
<h3>Critical Logs</h3><a name="criticallogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="criticalLogs" />
|
||||
<h3>Router Logs [<a href="configlogging.jsp">configure</a>]</h3>
|
||||
<jsp:getProperty name="logsHelper" property="logs" />
|
||||
<h3>Service (Wrapper) Logs</h3><a name="servicelogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="serviceLogs" />
|
||||
</div></div></body></html>
|
||||
</div><hr></div></body></html>
|
||||
|
@ -3,11 +3,11 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - network database summary</title>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("network database summary")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Database Summary</h1>
|
||||
<h1><%=intl._("I2P Network Database Summary")%></h1>
|
||||
<div class="main" id="main">
|
||||
<div class="wideload">
|
||||
<jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
|
||||
|
@ -2,14 +2,15 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - statistics</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("statistics")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %>
|
||||
<jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="oldhelper" scope="request" />
|
||||
<jsp:setProperty name="oldhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="oldhelper" property="writer" value="<%=out%>" />
|
||||
<h1>I2P Router Statistics</h1>
|
||||
<h1><%=intl._("I2P Router Statistics")%></h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:getProperty name="oldhelper" property="stats" />
|
||||
</div></body></html>
|
||||
<hr></div></body></html>
|
||||
|
@ -2,11 +2,12 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - peer connections</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("peer connections")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Peers</h1>
|
||||
<h1><%=intl._("I2P Network Peers")%></h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.PeerHelper" id="peerHelper" scope="request" />
|
||||
<jsp:setProperty name="peerHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
|
@ -2,16 +2,16 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - peer profiles</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("peer profiles")%>
|
||||
</head><body><%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Peer Profiles</h1>
|
||||
<h1><%=intl._("I2P Network Peer Profiles")%></h1>
|
||||
<div class="main" id="main"><div class="wideload">
|
||||
<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="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="profilesHelper" property="profileSummary" />
|
||||
<br>
|
||||
<a name="shitlist"> </a>
|
||||
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
|
||||
</div></div></body></html>
|
||||
<hr></div></div></body></html>
|
||||
|
@ -22,10 +22,10 @@
|
||||
} else {
|
||||
// since we don't have an iframe this will reload the base page, and
|
||||
// the new delay will be passed to the iframe above
|
||||
out.print("<form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
|
||||
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
|
||||
out.print("<b>Refresh (s):</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n");
|
||||
out.print("<button type=\"submit\">Enable</button>\n");
|
||||
out.print("</form></div>\n");
|
||||
out.print("</form></div></div>\n");
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
|
@ -53,14 +53,14 @@
|
||||
<%
|
||||
// d and shutdownSoon defined above
|
||||
if (!shutdownSoon) {
|
||||
out.print("<hr><form action=\"summaryframe.jsp\" method=\"GET\">\n");
|
||||
out.print("<hr><div class=\"refresh\"><form action=\"summaryframe.jsp\" method=\"GET\">\n");
|
||||
if ("0".equals(d)) {
|
||||
out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" align=\"right\" />\n");
|
||||
out.print("<button type=\"submit\">Enable</button>\n");
|
||||
out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n");
|
||||
out.print("<button type=\"submit\">Enable</button></div>\n");
|
||||
} else {
|
||||
// this will load in the iframe but subsequent pages will not have the iframe
|
||||
out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" />\n");
|
||||
out.print("<button type=\"submit\">Disable " + d + "s Refresh</button>\n");
|
||||
out.print("<button type=\"submit\">Disable " + d + "s Refresh</button></div>\n");
|
||||
}
|
||||
out.print("</form><hr>\n");
|
||||
}
|
||||
|
@ -2,10 +2,11 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head><title>I2P Router Console - tunnel summary</title>
|
||||
<html><head>
|
||||
<%@include file="css.jsp" %>
|
||||
<%=intl.title("tunnel summary")%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsp" %><h1>I2P Tunnel Summary</h1>
|
||||
<%@include file="summary.jsp" %><h1><%=intl._("I2P Tunnel Summary")%></h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.TunnelHelper" id="tunnelHelper" scope="request" />
|
||||
<jsp:setProperty name="tunnelHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user