From 080cc962fbb1523c3518f17e82fda5ace1f84cc4 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 30 Nov 2011 23:23:41 +0000 Subject: [PATCH] * Console: - Split up config network page - CSS tweaks and cleanups - Change some form notices to errors - Spiff up the buttons new silk icons: See licenses/LICENSE-SilkIcons.txt new toopie icon: Shrunk from existing one --- .../i2p/router/web/ConfigAdvancedHandler.java | 2 +- .../i2p/router/web/ConfigClientsHelper.java | 12 +- .../i2p/router/web/ConfigLoggingHandler.java | 2 +- .../net/i2p/router/web/ConfigNavHelper.java | 4 +- .../net/i2p/router/web/ConfigNetHandler.java | 29 ++- .../net/i2p/router/web/ConfigNetHelper.java | 2 +- .../net/i2p/router/web/ConfigRestartBean.java | 34 +-- .../i2p/router/web/ConfigTunnelsHandler.java | 2 +- .../net/i2p/router/web/ConfigUIHandler.java | 2 +- .../src/net/i2p/router/web/GraphHelper.java | 2 +- .../i2p/router/web/SummaryBarRenderer.java | 15 +- apps/routerconsole/jsp/config.jsp | 224 +----------------- apps/routerconsole/jsp/configadvanced.jsp | 4 +- apps/routerconsole/jsp/configclients.jsp | 16 +- apps/routerconsole/jsp/configkeyring.jsp | 6 +- apps/routerconsole/jsp/configlogging.jsp | 4 +- apps/routerconsole/jsp/confignet.jsp | 217 +++++++++++++++++ apps/routerconsole/jsp/configpeer.jsp | 6 +- apps/routerconsole/jsp/configreseed.jsp | 6 +- apps/routerconsole/jsp/configservice.jsp | 10 +- apps/routerconsole/jsp/configstats.jsp | 4 +- apps/routerconsole/jsp/configtunnels.jsp | 4 +- apps/routerconsole/jsp/configui.jsp | 4 +- apps/routerconsole/jsp/configupdate.jsp | 6 +- apps/routerconsole/jsp/help.jsp | 6 +- apps/routerconsole/jsp/help_ar.jsp | 6 +- apps/routerconsole/jsp/help_fr.jsp | 6 +- apps/routerconsole/jsp/help_nl.jsp | 6 +- apps/routerconsole/jsp/help_ru.jsp | 4 +- history.txt | 14 ++ .../themes/console/images/accept.png | Bin 0 -> 781 bytes .../resources/themes/console/images/add.png | Bin 0 -> 733 bytes .../themes/console/images/arrow_down.png | Bin 0 -> 379 bytes .../themes/console/images/arrow_refresh.png | Bin 0 -> 685 bytes .../themes/console/images/cancel.png | Bin 0 -> 587 bytes .../themes/console/images/delete.png | Bin 0 -> 715 bytes .../themes/console/images/itoopie_xsm.png | Bin 0 -> 1091 bytes .../resources/themes/console/images/stop.png | Bin 0 -> 700 bytes .../resources/themes/console/images/tick.png | Bin 0 -> 537 bytes .../themes/console/light/console.css | 138 ++++++++--- .../src/net/i2p/router/RouterVersion.java | 2 +- 41 files changed, 464 insertions(+), 335 deletions(-) create mode 100644 apps/routerconsole/jsp/confignet.jsp create mode 100644 installer/resources/themes/console/images/accept.png create mode 100644 installer/resources/themes/console/images/add.png create mode 100644 installer/resources/themes/console/images/arrow_down.png create mode 100644 installer/resources/themes/console/images/arrow_refresh.png create mode 100644 installer/resources/themes/console/images/cancel.png create mode 100644 installer/resources/themes/console/images/delete.png create mode 100644 installer/resources/themes/console/images/itoopie_xsm.png create mode 100644 installer/resources/themes/console/images/stop.png create mode 100644 installer/resources/themes/console/images/tick.png diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java index 2ec1420e0..6b13e0d11 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java @@ -68,7 +68,7 @@ public class ConfigAdvancedHandler extends FormHandler { if (saved) addFormNotice(_("Configuration saved successfully")); else - addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs")); + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs")); //if (_forceRestart) { // addFormNotice("Performing a soft restart"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index a6fe4ee87..bbd38806d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -257,18 +257,18 @@ public class ConfigClientsHelper extends HelperBase { } buf.append(">"); if (showStartButton && (!ro) && !edit) { - buf.append(""); + buf.append(""); } if (showEditButton && (!edit) && !ro) - buf.append(""); + buf.append(""); if (showStopButton && (!edit)) - buf.append(""); + buf.append(""); if (showUpdateButton && (!edit) && !ro) { - buf.append(""); - buf.append(""); + buf.append(""); + buf.append(""); } if (showDeleteButton && (!edit) && !ro) { - buf.append("\n"); + for (int i = 0; i < s.length; i+= 3) { + buf.append("\n"); + } buf.append("\n"); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java index c43cb1eb5..fa2737c8e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java @@ -139,7 +139,7 @@ public class ConfigTunnelsHandler extends FormHandler { if (saved) addFormNotice(_("Exploratory tunnel configuration saved successfully.")); else - addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs.")); + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs.")); } } private static final int getInt(Object val) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java index 8c0925e4b..417fbaf24 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java @@ -33,7 +33,7 @@ public class ConfigUIHandler extends FormHandler { _("Refresh the page to view.") + ""); } else { - addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs.")); + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs.")); } } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java index b0014fdf8..31b9433ac 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java @@ -195,7 +195,7 @@ public class GraphHelper extends FormHandler { if (persistent) _out.write(" checked=\"true\""); _out.write(">" + - "
"); + "
"); } catch (IOException ioe) { ioe.printStackTrace(); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 5b0f926da..0867b3781 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -204,7 +204,7 @@ public class SummaryBarRenderer { .append(_helper.getUptime()) .append("\n" + - "

") .append(_("Network")) @@ -214,7 +214,10 @@ public class SummaryBarRenderer { // display all the time so we display the final failure message, and plugin update messages too - buf.append(UpdateHandler.getStatus()); + String status = UpdateHandler.getStatus(); + if (status.length() > 0) { + buf.append("

").append(status).append("


\n"); + } if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) { if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) { // nothing @@ -233,13 +236,13 @@ public class SummaryBarRenderer { buf.append("
\n"); buf.append("\n"); if (_helper.updateAvailable()) { - buf.append("
\n"); } if (_helper.unsignedUpdateAvailable()) { - buf.append("

\n"); + buf.append("

\n"); } anotherLine = true; } diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index df605ba1d..ba783d37d 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -4,14 +4,14 @@ <%@include file="css.jsi" %> -<%=intl.title("config networking")%> +<%=intl.title("configure bandwidth")%> <%@include file="summary.jsi" %> " /> -

<%=intl._("I2P Network Configuration")%>

+

<%=intl._("I2P Bandwidth Configuration")%>

<%@include file="confignav.jsi" %> @@ -24,7 +24,9 @@
" > +

<%=intl._("Bandwidth limiter")%>

+ <%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%>

" > @@ -53,10 +55,10 @@
<%=intl._("Share")%> () -

+

<% int share = nethelper.getShareBandwidth(); if (share < 12) { - out.print("

"); + out.print(""); out.print(intl._("NOTE")); out.print(": "); out.print(intl._("You have configured I2P to share only {0} KBps.", share)); @@ -64,218 +66,18 @@ out.print(intl._("I2P requires at least 12KBps to enable sharing. ")); out.print(intl._("Please enable sharing (participating in tunnels) by configuring more bandwidth. ")); - out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network.")+"

"); + out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network.")); } else { - out.print("

"); out.print(intl._("You have configured I2P to share {0} KBps.", share)); out.print("\n"); - out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")+"


"); + out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")); } %> +

<%=intl._("Advanced network configuration page")%>


-" > -" > +" > +" >
-<% /******** - -*********/ %> -

<%=intl._("IP and Transport Configuration")%>

- <%=intl._("The default settings will work for most people.")%> - <%=intl._("There is help below.")%> -

<%=intl._("UPnP Configuration")%>:
- > - <%=intl._("Enable UPnP to open firewall ports")%> - <%=intl._("UPnP status")%> -

<%=intl._("IP Configuration")%>:
- <%=intl._("Externally reachable hostname or IP address")%>:
- > - <%=intl._("Use all auto-detect methods")%>
- > - <%=intl._("Disable UPnP IP address detection")%>
- > - <%=intl._("Ignore local interface IP address")%>
- > - <%=intl._("Use SSU IP address detection only")%>
- > - <%=intl._("Specify hostname or IP")%>: - " > - <% String[] ips = nethelper.getAddresses(); - if (ips.length > 0) { - out.print(intl._("or") + " \n"); - } - %> -
- > - <%=intl._("Hidden mode - do not publish IP")%> <%=intl._("(prevents participating traffic)")%>
-

- <%=intl._("Action when IP changes")%>:
- > - <%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%> - (<%=intl._("Experimental")%>) -

<%=intl._("UDP Configuration:")%>
- <%=intl._("UDP port:")%> - " >
-<% /******** - -*********/ %> -

- <%=intl._("TCP Configuration")%>:
- <%=intl._("Externally reachable hostname or IP address")%>:
- > - <%=intl._("Use auto-detected IP address")%> - (<%=intl._("currently")%> ) - <%=intl._("if we are not firewalled")%>
- > - <%=intl._("Always use auto-detected IP address (Not firewalled)")%>
- > - <%=intl._("Specify hostname or IP")%>: - " >
- > - <%=intl._("Disable inbound (Firewalled)")%>
- > - <%=intl._("Completely disable")%> <%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%>
-

- <%=intl._("Externally reachable TCP port")%>:
- > - <%=intl._("Use the same port configured for UDP")%> - (<%=intl._("currently")%> )
- > - <%=intl._("Specify Port")%>: - " >
-

<%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%>

-
-" > -" > -

<%=intl._("Configuration Help")%>:

- <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%> -

- <%=intl._("If you 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.")%> -

-<% /******** - -*********/ %> -

- <%=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")%>: -

    -
  • <%=intl._("No UPnP-compatible device present")%> -
  • <%=intl._("UPnP disabled on the device")%> -
  • <%=intl._("Software firewall interference with UPnP")%> -
  • <%=intl._("Bugs in the device's UPnP implementation")%> -
  • <%=intl._("Multiple firewall/routers in the internet connection path")%> -
  • <%=intl._("UPnP device change, reset, or address change")%> -

-<%=intl._("Review the UPnP status here.")%> -<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%>

-

<%=intl._("Hostnames entered above will be published in the network database.")%> - <%=intl._("They are not private.")%> - <%=intl._("Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1.")%> - <%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%> - <%=intl._("When in doubt, leave the settings at the defaults.")%> -

-

<%=intl._("Reachability Help")%>:

- <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%> - <%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%> - <%=intl._("If there is an error, the logs may also help diagnose the problem.")%> -

    -
  • <%=intl._("OK")%> - - <%=intl._("Your UDP port does not appear to be firewalled.")%> -
  • <%=intl._("Firewalled")%> - - <%=intl._("Your UDP port appears to be firewalled.")%> - <%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%> - <%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%> - <%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%> - <%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%> - <%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%> - <%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%> -
  • <%=intl._("Testing")%> - - <%=intl._("The router is currently testing whether your UDP port is firewalled.")%> -
  • <%=intl._("Hidden")%> - - <%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%> -
  • <%=intl._("WARN - Firewalled and Fast")%> - - <%=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.")%> -
  • <%=intl._("WARN - Firewalled and Floodfill")%> - - <%=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.")%> -
  • <%=intl._("WARN - Firewalled with Inbound TCP Enabled")%> - - <%=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.")%> -
  • <%=intl._("WARN - Firewalled with UDP Disabled")%> - - <%=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.")%> -
  • <%=intl._("ERR - Clock Skew")%> - - <%=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.")%> -
  • <%=intl._("ERR - Private TCP Address")%> - - <%=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.")%> -
  • <%=intl._("ERR - SymmetricNAT")%> - - <%=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.")%> -
  • <%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%> - - <%=intl._("I2P was unable to bind to port 8887 or other configured port.")%> - <%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%> - <%=intl._("This may be a transient error, if the other program is no longer using the port.")%> - <%=intl._("However, a restart is always required after this error.")%> -
  • <%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%> - - <%=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.")%> -
  • <%=intl._("ERR - Client Manager I2CP Error - check logs")%> - - <%=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.")%> -


-<% /******** - -*********/ %> -
+ + diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index 9acfd65ec..85300a483 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -30,7 +30,7 @@

<%=intl._("Advanced I2P Configuration")%>



- " > - " > + " > + " >
<%=intl._("NOTE")%>: <%=intl._("Some changes may require a restart to take effect.")%>
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index 9d74d4990..4c70beafe 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -41,11 +41,11 @@ button span.hide{ <%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>. <%=intl._("All changes require restart to take effect.")%>


- " /> + " /> <% if (request.getParameter("edit") == null) { %> - " /> + " /> <% } %> - " /> + " />

<%=intl._("Advanced Client Interface Configuration")%>

@@ -89,8 +89,8 @@ button span.hide{ <%=intl._("Many clients do not support SSL or authorization.")%> <%=intl._("All changes require restart to take effect.")%>


-" /> -" /> +" /> +" />

<%=intl._("WebApp Configuration")%>

@@ -103,7 +103,7 @@ button span.hide{

<%=intl._("All changes require restart to take effect.")%>


- " /> + " />
<% if (clientshelper.showPlugins()) { %> @@ -114,7 +114,7 @@ button span.hide{
- " /> + " />

<%=intl._("Plugin Installation")%>

@@ -125,7 +125,7 @@ button span.hide{


- " /> + " />
<% } %> diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index 9188f56df..df49cfb08 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -41,7 +41,7 @@ -" > -" > -" > +" > +" > +" >

diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index 4c5904a90..4e3b52352 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -48,6 +48,6 @@
- " > - " > + " > + " >
diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp new file mode 100644 index 000000000..78dd68fda --- /dev/null +++ b/apps/routerconsole/jsp/confignet.jsp @@ -0,0 +1,217 @@ +<%@page contentType="text/html" %> +<%@page pageEncoding="UTF-8"%> + + + +<%@include file="css.jsi" %> +<%=intl.title("config networking")%> + + +<%@include file="summary.jsi" %> + + +" /> +

<%=intl._("I2P Network Configuration")%>

+
+ <%@include file="confignav.jsi" %> + + + <% formhandler.storeMethod(request.getMethod()); %> + + " /> + +
+
+ " > + +

<%=intl._("IP and Transport Configuration")%>

+ + <%=intl._("The default settings will work for most people.")%> + <%=intl._("There is help below.")%> +

<%=intl._("UPnP Configuration")%>:
+ > + <%=intl._("Enable UPnP to open firewall ports")%> - <%=intl._("UPnP status")%> +

<%=intl._("IP Configuration")%>:
+ <%=intl._("Externally reachable hostname or IP address")%>:
+ > + <%=intl._("Use all auto-detect methods")%>
+ > + <%=intl._("Disable UPnP IP address detection")%>
+ > + <%=intl._("Ignore local interface IP address")%>
+ > + <%=intl._("Use SSU IP address detection only")%>
+ > + <%=intl._("Specify hostname or IP")%>: + " > + <% String[] ips = nethelper.getAddresses(); + if (ips.length > 0) { + out.print(intl._("or") + " \n"); + } + %> +
+ > + <%=intl._("Hidden mode - do not publish IP")%> <%=intl._("(prevents participating traffic)")%>
+

+ <%=intl._("Action when IP changes")%>:
+ > + <%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%> + (<%=intl._("Experimental")%>) +

<%=intl._("UDP Configuration:")%>
+ <%=intl._("UDP port:")%> + " >
+<% /******** + +*********/ %> +

+ <%=intl._("TCP Configuration")%>:
+ <%=intl._("Externally reachable hostname or IP address")%>:
+ > + <%=intl._("Use auto-detected IP address")%> + (<%=intl._("currently")%> ) + <%=intl._("if we are not firewalled")%>
+ > + <%=intl._("Always use auto-detected IP address (Not firewalled)")%>
+ > + <%=intl._("Specify hostname or IP")%>: + " >
+ > + <%=intl._("Disable inbound (Firewalled)")%>
+ > + <%=intl._("Completely disable")%> <%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%>
+

+ <%=intl._("Externally reachable TCP port")%>:
+ > + <%=intl._("Use the same port configured for UDP")%> + (<%=intl._("currently")%> )
+ > + <%=intl._("Specify Port")%>: + " >
+

<%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%>

+
+" > +" > +

<%=intl._("Configuration Help")%>:

+ <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%> +

+ <%=intl._("If you 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.")%> +

+<% /******** + +*********/ %> +

+ <%=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")%>: +

    +
  • <%=intl._("No UPnP-compatible device present")%> +
  • <%=intl._("UPnP disabled on the device")%> +
  • <%=intl._("Software firewall interference with UPnP")%> +
  • <%=intl._("Bugs in the device's UPnP implementation")%> +
  • <%=intl._("Multiple firewall/routers in the internet connection path")%> +
  • <%=intl._("UPnP device change, reset, or address change")%> +

+<%=intl._("Review the UPnP status here.")%> +<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%>

+

<%=intl._("Hostnames entered above will be published in the network database.")%> + <%=intl._("They are not private.")%> + <%=intl._("Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1.")%> + <%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%> + <%=intl._("When in doubt, leave the settings at the defaults.")%> +

+

<%=intl._("Reachability Help")%>:

+ <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%> + <%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%> + <%=intl._("If there is an error, the logs may also help diagnose the problem.")%> +

    +
  • <%=intl._("OK")%> - + <%=intl._("Your UDP port does not appear to be firewalled.")%> +
  • <%=intl._("Firewalled")%> - + <%=intl._("Your UDP port appears to be firewalled.")%> + <%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%> + <%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%> + <%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%> + <%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%> + <%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%> + <%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%> +
  • <%=intl._("Testing")%> - + <%=intl._("The router is currently testing whether your UDP port is firewalled.")%> +
  • <%=intl._("Hidden")%> - + <%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%> +
  • <%=intl._("WARN - Firewalled and Fast")%> - + <%=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.")%> +
  • <%=intl._("WARN - Firewalled and Floodfill")%> - + <%=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.")%> +
  • <%=intl._("WARN - Firewalled with Inbound TCP Enabled")%> - + <%=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.")%> +
  • <%=intl._("WARN - Firewalled with UDP Disabled")%> - + <%=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.")%> +
  • <%=intl._("ERR - Clock Skew")%> - + <%=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.")%> +
  • <%=intl._("ERR - Private TCP Address")%> - + <%=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.")%> +
  • <%=intl._("ERR - SymmetricNAT")%> - + <%=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.")%> +
  • <%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%> - + <%=intl._("I2P was unable to bind to port 8887 or other configured port.")%> + <%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%> + <%=intl._("This may be a transient error, if the other program is no longer using the port.")%> + <%=intl._("However, a restart is always required after this error.")%> +
  • <%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%> - + <%=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.")%> +
  • <%=intl._("ERR - Client Manager I2CP Error - check logs")%> - + <%=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.")%> +


+<% /******** + +*********/ %> +
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index f3a7097e6..04873ff54 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -39,8 +39,8 @@

<%=intl._("Manually Ban / Unban a Peer")%>

<%=intl._("Banning will prevent the participation of this peer in tunnels you create.")%>

- " /> - " /> + " /> + " /> <% if (! "".equals(peer)) { %> <% } %> @@ -57,7 +57,7 @@ <%=intl._("Capacity")%>: - " />

+ " />

<%=intl._("Banned Peers")%>

diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp index 6c94b78a2..648a14ee9 100644 --- a/apps/routerconsole/jsp/configreseed.jsp +++ b/apps/routerconsole/jsp/configreseed.jsp @@ -75,7 +75,7 @@
-" /> -" /> -" /> +" /> +" /> +" />
diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index 21990fc0f..3a2f7af86 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -24,9 +24,9 @@

<%=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.")%>


- " > - " > - " > + " > + " > + " >
<% if (System.getProperty("wrapper.version") != null) { %>

<%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%> @@ -34,8 +34,8 @@ <%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%> <%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%>


- " > - " > + " > + " > <% } %>
<% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index d522f56d8..7e548a113 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -111,7 +111,7 @@ function toggleAll(category) <%=intl._("Advanced filter")%>: -" > -" > +" > +" > diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp index 15c266d8c..fb3fab1c3 100644 --- a/apps/routerconsole/jsp/configtunnels.jsp +++ b/apps/routerconsole/jsp/configtunnels.jsp @@ -38,7 +38,7 @@ <%=intl._("Client tunnel changes are temporary and are not saved.")%> <%=intl._("To make permanent client tunnel changes see the")%> <%=intl._("i2ptunnel page")%>.
-" > -" > +" > +" >
diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index 896c72774..bde01f40b 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.jsp @@ -49,7 +49,7 @@

<%=uihelper._("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>


-" > -" > +" > +" >
diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index 481a3b7ae..f57e995a5 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -37,7 +37,7 @@ <%=intl._("News Updates")%>: <% } // if canInstall %> - <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <%=intl._("Update In Progress")%>
<% } else { %> " /> + <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <%=intl._("Update In Progress")%>
<% } else { %> " /> <% } %>
<%=intl._("News URL")%>: @@ -68,6 +68,6 @@ <% } // if canInstall %>
- " > - " > + " > + " >
diff --git a/apps/routerconsole/jsp/help.jsp b/apps/routerconsole/jsp/help.jsp index 9f864eda7..f6f74a25d 100644 --- a/apps/routerconsole/jsp/help.jsp +++ b/apps/routerconsole/jsp/help.jsp @@ -41,7 +41,7 @@ your computer's time. */ %>
  • Reachability: The router's view of whether it can be contacted by other routers. -Further information is on the configuration page. +Further information is on the configuration page.
  • Peers

    • Active: The first number is the number of peers you've sent or received a message from in the last few minutes. @@ -73,7 +73,7 @@ shared bandwidth, and locally-generated traffic. I2P does not require a router to know every other router.

    Bandwidth in/out

    Should be self-explanatory. All values are in bytes per second, not bits per second. -Change your bandwidth limits on the configuration page. +Change your bandwidth limits on the configuration page. Bandwidth is graphed by default.

    Local destinations

    @@ -92,7 +92,7 @@ Tunnels built by other routers through your router. This may vary widely depending on network demand, your shared bandwidth, and amount of locally-generated traffic. The recommended method for limiting participating tunnels is -to change your share percentage on the configuration page. +to change your share percentage on the configuration page. You may also limit the total number by setting router.maxParticipatingTunnels=nnn on the advanced configuration page. [Enable graphing].
  • Share ratio: diff --git a/apps/routerconsole/jsp/help_ar.jsp b/apps/routerconsole/jsp/help_ar.jsp index 0a329d5cd..3672aef97 100644 --- a/apps/routerconsole/jsp/help_ar.jsp +++ b/apps/routerconsole/jsp/help_ar.jsp @@ -36,7 +36,7 @@ The full hash is shown on your صفحة معلومات الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.
  • إمكانية الوصول امكانية الاتصال الخارجي بالموجه -المزيد من التفاصيل في صفحة الاعدادات.
  • +المزيد من التفاصيل في صفحة الاعدادات.

    النظائر

    • مفعل هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية. @@ -65,7 +65,7 @@ The full hash is shown on your صفحة معلومات

    سرعة الاتصال الداخلي/خارجي

    الوجهات الداخلية

    الاتصالات الداخلية @@ -82,7 +82,7 @@ The full hash is shown on your صفحة معلومات
  • المشاركة الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك. هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة... -يمكنك تغيير درجة المشاركة بـ صفحة الاعدادات. +يمكنك تغيير درجة المشاركة بـ صفحة الاعدادات. You may also limit the total number by setting router.maxParticipatingTunnels=nnn on the صفحة الاعدادات المتقدمة. [تفعيل الرسم البياني].
  • نسبة المشاركة diff --git a/apps/routerconsole/jsp/help_fr.jsp b/apps/routerconsole/jsp/help_fr.jsp index 97b576cc6..3f9c8fc5b 100644 --- a/apps/routerconsole/jsp/help_fr.jsp +++ b/apps/routerconsole/jsp/help_fr.jsp @@ -37,7 +37,7 @@ La version d'I2P qui vous affiche actuellement cette page.
  • Indique depuis combien de temps le routeur tourne.
  • Réseau: Statut de joignabilité du routeur par les autres routeurs. -Plus d'infos sur la page de configuration. +Plus d'infos sur la page de configuration.
  • Pairs

    • Actifs: le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de @@ -65,7 +65,7 @@ taille totale du réseau; il varie en fonction de votre bande passante totale et local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.

    Bande passante entrée/sortie

    Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos -limites de bande passante sur la page de configuration. +limites de bande passante sur la page de configuration. Le graphique de bande passante est activé par défaut.

    Destinations locales

    @@ -80,7 +80,7 @@ pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels e
  • Participants: les tunnels créés par d'autres routeurs et qui passent par le votre. Leur nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local. La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la -configuration. Vous pouvez également limiter ce nombre en définissant la variable +configuration. Vous pouvez également limiter ce nombre en définissant la variable router.maxParticipatingTunnels=nnn dans la configuration avancée. [Activer le graphique].
  • Rapport de partage: le nombre de tunnels participants que vous routez pour les autres, diff --git a/apps/routerconsole/jsp/help_nl.jsp b/apps/routerconsole/jsp/help_nl.jsp index d79e67a59..57b0d73fa 100644 --- a/apps/routerconsole/jsp/help_nl.jsp +++ b/apps/routerconsole/jsp/help_nl.jsp @@ -39,7 +39,7 @@ De versie van de I2P software die je nu gebruikt.
  • Hoe lang je I2P router al draait.
  • Netwerk Bereikbaarheid: De bereikbaarheid van je router door andere routers. -Meer informatie is te vinden op de configuratie pagina.
  • +Meer informatie is te vinden op de configuratie pagina.

    Peers

      @@ -78,7 +78,7 @@ Voor I2P is het niet nodig dat een router alle andere routers kent.

      Bandbreedte in/out

      Dit zou zichzelf moeten verklaren. Alle waarden zijn in bytes per seconde, niet in bits per seconde. -Wijzig je bandbreedte limieten op de configuratie pagina. +Wijzig je bandbreedte limieten op de configuratie pagina. Bandbreedte wordt standaard geplot.

      Tunnels

      @@ -93,7 +93,7 @@ Tunnels gebouwd door andere routers die door je eigen router heen lopen. Dit kan erg variëren afhankelijk van de vraag vanuit het netwerk, je gedeelde bandbreedte en hoeveelheid lokaal gegenereerd verkeer. De aanbevolen methode om het aantal deelnemende tunnels te beperken -is door het share percentage te wijzigen op de configuratie pagina. +is door het share percentage te wijzigen op de configuratie pagina. Je kan het totale aantal ook beperken met de instelling router.maxParticipatingTunnels=nnn op de geavanceerde configuratie pagina. [Grafieken inschakelen].
    • Share rato: diff --git a/apps/routerconsole/jsp/help_ru.jsp b/apps/routerconsole/jsp/help_ru.jsp index 712f1ee5c..1b5d9e84c 100644 --- a/apps/routerconsole/jsp/help_ru.jsp +++ b/apps/routerconsole/jsp/help_ru.jsp @@ -45,7 +45,7 @@
    • Доступность: -Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на странице сетевых настроек. +Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на странице сетевых настроек.
    @@ -100,7 +100,7 @@
  • Транзитные: -Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице сетевых настроек. Также можно задать точный ограничитель количества через параметр router.maxParticipatingTunnels=nnn на странице дополнительных настроек. +Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице сетевых настроек. Также можно задать точный ограничитель количества через параметр router.maxParticipatingTunnels=nnn на странице дополнительных настроек. [Включить построение графика].
  • diff --git a/history.txt b/history.txt index 7623370da..6d2c8b767 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,17 @@ +2011-12-01 zzz + * Console: + - Split up config network page + - CSS tweaks in summary bar + - Spiff up the buttons + * i2psnark: + - Retry link on torrent download fail + - Clear URL after clicking 'add torrent' + - Message tweaks + - CSS tweaks + * IRC Server: Fix IOOBE (ticket #559) + * Throttle: Update throttle status immediately on shutdown request; + clear starting-up message after 20 minutes + 2011-11-29 zzz * Random: Use new nextBytes(buf, off, len) for efficiency * Router: Refactor periodic tasks to their own files diff --git a/installer/resources/themes/console/images/accept.png b/installer/resources/themes/console/images/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..89c8129a490b329f3165f32fa0781701aab417ea GIT binary patch literal 781 zcmV+o1M>WdP)4-QibtN)VXQDpczE`xXAkUjh%RI>;okxb7K@0kpyQ1k_Y(|Oe7$m(^ zNYX>mI||sUbmn+c3<&FnE=4u#()KBS^SH8e)Qs5i!#lY=$-1gbH6VluzU=m=EP78&5vQ z-?+fFP-G2l&l_QzYealK$;1Rl?FkzXR&Jv@fBPNjCr#AYRyJ7UJQ0v#?)7Ott=>3`#-pV!7>9}>Q1jL)H6h&gkP@3nI=+F3nA~M>u#(n* z8T!#8oEw&-mED4!h4s!N@Jo3S7N&Q6%6l3}nlcd~X@>;uelvPsSkXIgg~e+^T1zSf z3SNj(5%jK~i8@b;C9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/installer/resources/themes/console/images/arrow_down.png b/installer/resources/themes/console/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e279377bf348f9cf53894e76bb673ccf067bd GIT binary patch literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF`!iy8(2_#ButL^3%VaH2WCpD^U)OZxp@C)2#hU)y+@T%ZNzJigNk%37 zz-WYJwT%teVfiEI+B*@v4ey@58(ld4VY_&5-ox`e@AKg+0U-I`y79bmuw_~y6+4rZ zBG5EdFDS+@M0OSE`>d7SUDOzKZ&h*4eB1iX7tOd9RiYtW2mQ--bUahxr1`i{RG@dM zL#}_X=DDO1{;UI$pFu=dLYT_=5d8WC-sLfjr7UO-HKMAwa=!>)kEhvuwre zuW3yF@ZxFCkI*+ad|5kOX%5zu8IQjhan)UqgSrFGA_0nQFn@Z08DSEUToCSz4Z1ls z&fDbq$T&7|6iq$_uDI$@q1_kQ@dfqk*0>{SDL6V)94@)ete)j++*>bIc9sj}Y;R1o z#OpH+Yt-^4wfv{nern^iVag8FS^-G}e*;M)Q6>s#cP zI`Y#S($G6W`W@NI5g|L-MKl0Zmu$m^(0~^Lwo5OO~d#(vPfzC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/installer/resources/themes/console/images/itoopie_xsm.png b/installer/resources/themes/console/images/itoopie_xsm.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc1c3cfde8376c6226c4e1e2b9fa02661e4d32a GIT binary patch literal 1091 zcmV-J1ibr+P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2iprC z5imOdl0jhr00YBGL_t(Y$HkR>NZfTC$6w#y@4P$p^h|GVKAf6f_=wP{%>FQEn@eXF zu|=5HSV?0<(Eb@T1}!KWh}Z)bdxS)B7AmoD`* z_V%7XSX|6#O$|dpQ@Fa*d;7ekd#~{YFYzDW!a_u&}ge zXozNDIb4Ynl9KQg7vrw4e`7~`d;2>MN5RLXrMQK-o-BkIa5{_LlyW2^Kc6Ka>XAyU zLlDw540Uz5Iy=v0?%Ktbs;Z^mDk`{JUG1GddX&}p_-m$P$LPCv594OK=p~DVw()VA zJswQ|rZH!M<|!)yEc$iVCs>)18yVOso)66@)Y*^eT z=7m<~Gdo$zdwwUEKWd`%2(hlvL!Bo;cCcu_hJQ;Arg`A(MrzO>gpzt@D{rF32t;Ud zlH@yA)U-Gh?P1581fm9Qs&OtlLhEHI8|dC>k$(z+V;H~v>qGlLs7@*yn)K=0K4(5_ zm5_)<37Q~ufyMOFwA6_Y_ttc*uHk0G+eU)V43Wk~#T?;H%t#zhcV-SLAgx=iuH2_` zFV-G;@zcbtZKDRG!3+Ev?y3NIp?J5mzo5KeDi{c=00UlsbV_#0?`ipIvr3OLmXB?LM#1GUqGOusS8=rc!}7qx&E zX^Ju}`Mv%)o89JGSy+klE&Hs#MIS)oW{&-dwVB$`JH-ECe*!=#bXj$HEd&4n002ov JPDHLkV1jB`0g?a! literal 0 HcmV?d00001 diff --git a/installer/resources/themes/console/images/stop.png b/installer/resources/themes/console/images/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..0cfd585963d255190b8855a7689e8da1c4d7cf6b GIT binary patch literal 700 zcmV;t0z>_YP)*?Fk0YVb%?UEFajs1S?+YtYiPrjx0+ z+4YbyJXwz!SX#yqTlhtNQ%Ku9=RNm$j)&+(}lZ!UGGp|@|O z09YA#-dR#rIaGe;MBLe!ht*}!c?U}6YT!dfHDO%~>xtx&Klk-^WB==sC_vP4ddg4L z#GN10u$+QGf$!(i3&8VpF6O6+ef~&gQ#>AVqCJH_utvKMAuOeG%3%mn<<%9)yb~#4 zHc70e5sYyQ03$?zFUko7D1Bg1=6jXvg#bUm1b(pVKuC*}koEKGdj<=zdM#RWsl+kfRf;OU^G_BQh+Fc$z&F_AHuQYu(b)aq=H_Fx idDl8IBmWBc*Z2i=4uSP&;Q8VJ0000pHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p