diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java index 18cf7da4f..5ed8e26af 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -139,23 +139,63 @@ public class EditBean extends IndexBean { } } - public int getTunnelCount(int tunnel, int defaultCount) { + public int getTunnelQuantity(int tunnel, int defaultQuantity) { TunnelController tun = getController(tunnel); if (tun != null) { Properties opts = getOptions(tun); if (opts != null) { String len = opts.getProperty("inbound.quantity"); - if (len == null) return defaultCount; + if (len == null) return defaultQuantity; try { return Integer.parseInt(len); } catch (NumberFormatException nfe) { - return defaultCount; + return defaultQuantity; } } else { - return defaultCount; + return defaultQuantity; } } else { - return defaultCount; + return defaultQuantity; + } + } + + public int getTunnelBackupQuantity(int tunnel, int defaultBackupQuantity) { + TunnelController tun = getController(tunnel); + if (tun != null) { + Properties opts = getOptions(tun); + if (opts != null) { + String len = opts.getProperty("inbound.backupQuantity"); + if (len == null) return defaultBackupQuantity; + try { + return Integer.parseInt(len); + } catch (NumberFormatException nfe) { + return defaultBackupQuantity; + } + } else { + return defaultBackupQuantity; + } + } else { + return defaultBackupQuantity; + } + } + + public int getTunnelVariance(int tunnel, int defaultVariance) { + TunnelController tun = getController(tunnel); + if (tun != null) { + Properties opts = getOptions(tun); + if (opts != null) { + String len = opts.getProperty("inbound.lengthVariance"); + if (len == null) return defaultVariance; + try { + return Integer.parseInt(len); + } catch (NumberFormatException nfe) { + return defaultVariance; + } + } else { + return defaultVariance; + } + } else { + return defaultVariance; } } @@ -187,6 +227,10 @@ public class EditBean extends IndexBean { String val = opts.getProperty(key); if ("inbound.length".equals(key)) continue; if ("outbound.length".equals(key)) continue; + if ("inbound.lengthVariance".equals(key)) continue; + if ("outbound.lengthVariance".equals(key)) continue; + if ("inbound.backupQuantity".equals(key)) continue; + if ("outbound.backupQuantity".equals(key)) continue; if ("inbound.quantity".equals(key)) continue; if ("outbound.quantity".equals(key)) continue; if ("inbound.nickname".equals(key)) continue; @@ -224,4 +268,4 @@ public class EditBean extends IndexBean { } return props; } -} +} \ No newline at end of file diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 92b319544..43e85bf49 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -38,7 +38,9 @@ public class IndexBean { private String _i2cpHost; private String _i2cpPort; private String _tunnelDepth; - private String _tunnelCount; + private String _tunnelQuantity; + private String _tunnelVariance; + private String _tunnelBackupQuantity; private boolean _connectDelay; private String _customOptions; private String _proxyList; @@ -64,6 +66,10 @@ public class IndexBean { static final String PROP_NONCE = IndexBean.class.getName() + ".nonce"; static final String CLIENT_NICKNAME = "shared clients"; + public static final String PROP_THEME_NAME = "routerconsole.theme"; + public static final String PROP_CSS_DISABLED = "routerconsole.css.disabled"; + public static final String PROP_JS_DISABLED = "routerconsole.javascript.disabled"; + public IndexBean() { _context = I2PAppContext.getGlobalContext(); _log = _context.logManager().getLog(IndexBean.class); @@ -121,13 +127,13 @@ public class IndexBean { return ""; if ( (_prevNonce != _curNonce) && (!validPassphrase(_passphrase)) ) return "Invalid nonce, are you being spoofed?"; - if ("Stop all tunnels".equals(_action)) + if ("Stop all".equals(_action)) return stopAll(); - else if ("Start all tunnels".equals(_action)) + else if ("Start all".equals(_action)) return startAll(); else if ("Restart all".equals(_action)) return restartAll(); - else if ("Reload config".equals(_action)) + else if ("Reload configuration".equals(_action)) return reloadConfig(); else if ("stop".equals(_action)) return stop(); @@ -213,14 +219,22 @@ public class IndexBean { "client".equals(c.getType()) ) && "true".equalsIgnoreCase(c.getSharedClient())) { Properties cOpt = c.getConfig(""); - if (_tunnelCount != null) { - cOpt.setProperty("option.inbound.quantity", _tunnelCount); - cOpt.setProperty("option.outbound.quantity", _tunnelCount); + if (_tunnelQuantity != null) { + cOpt.setProperty("option.inbound.quantity", _tunnelQuantity); + cOpt.setProperty("option.outbound.quantity", _tunnelQuantity); } if (_tunnelDepth != null) { cOpt.setProperty("option.inbound.length", _tunnelDepth); cOpt.setProperty("option.outbound.length", _tunnelDepth); } + if (_tunnelVariance != null) { + cOpt.setProperty("option.inbound.lengthVariance", _tunnelVariance); + cOpt.setProperty("option.outbound.lengthVariance", _tunnelVariance); + } + if (_tunnelBackupQuantity != null) { + cOpt.setProperty("option.inbound.backupQuantity", _tunnelBackupQuantity); + cOpt.setProperty("option.outbound.backupQuantity", _tunnelBackupQuantity); + } cOpt.setProperty("option.inbound.nickname", CLIENT_NICKNAME); cOpt.setProperty("option.outbound.nickname", CLIENT_NICKNAME); @@ -275,6 +289,24 @@ public class IndexBean { // The remaining methods are simple bean props for the jsp to query //// + public String getTheme() { + String theme = _context.getProperty(PROP_THEME_NAME); + if (theme != null) + return "/themes/console/" + theme + "/"; + else + return "/themes/console/"; + } + + public boolean allowCSS() { + String css = _context.getProperty(PROP_CSS_DISABLED); + return (css == null); + } + + public boolean allowJS() { + String js = _context.getProperty(PROP_JS_DISABLED); + return (js == null); + } + public int getTunnelCount() { if (_group == null) return 0; return _group.getControllers().size(); @@ -313,10 +345,10 @@ public class IndexBean { } public String getTypeName(String internalType) { - if ("client".equals(internalType)) return "Client proxy"; - else if ("httpclient".equals(internalType)) return "HTTP proxy"; - else if ("ircclient".equals(internalType)) return "IRC proxy"; - else if ("server".equals(internalType)) return "Server"; + if ("client".equals(internalType)) return "Standard client"; + else if ("httpclient".equals(internalType)) return "HTTP client"; + else if ("ircclient".equals(internalType)) return "IRC client"; + else if ("server".equals(internalType)) return "Standard server"; else if ("httpserver".equals(internalType)) return "HTTP server"; else return internalType; } @@ -424,8 +456,16 @@ public class IndexBean { _tunnelDepth = (tunnelDepth != null ? tunnelDepth.trim() : null); } /** how many parallel inbound tunnels to use */ - public void setTunnelCount(String tunnelCount) { - _tunnelCount = (tunnelCount != null ? tunnelCount.trim() : null); + public void setTunnelQuantity(String tunnelQuantity) { + _tunnelQuantity = (tunnelQuantity != null ? tunnelQuantity.trim() : null); + } + /** how much randomisation to apply to the depth of tunnels */ + public void setTunnelVariance(String tunnelVariance) { + _tunnelVariance = (tunnelVariance != null ? tunnelVariance.trim() : null); + } + /** how many tunnels to hold in reserve to guard against failures */ + public void setTunnelBackupQuantity(String tunnelBackupQuantity) { + _tunnelBackupQuantity = (tunnelBackupQuantity != null ? tunnelBackupQuantity.trim() : null); } /** what I2P session overrides should be used */ public void setCustomOptions(String customOptions) { @@ -582,6 +622,7 @@ public class IndexBean { } else { return null; } + return config; } @@ -611,6 +652,10 @@ public class IndexBean { if ("outbound.length".equals(key)) continue; if ("inbound.quantity".equals(key)) continue; if ("outbound.quantity".equals(key)) continue; + if ("inbound.lengthVariance".equals(key)) continue; + if ("outbound.lengthVariance".equals(key)) continue; + if ("inbound.backupQuantity".equals(key)) continue; + if ("outbound.backupQuantity".equals(key)) continue; if ("inbound.nickname".equals(key)) continue; if ("outbound.nickname".equals(key)) continue; if ("i2p.streaming.connectDelay".equals(key)) continue; @@ -621,14 +666,22 @@ public class IndexBean { config.setProperty("startOnLoad", _startOnLoad + ""); - if (_tunnelCount != null) { - config.setProperty("option.inbound.quantity", _tunnelCount); - config.setProperty("option.outbound.quantity", _tunnelCount); + if (_tunnelQuantity != null) { + config.setProperty("option.inbound.quantity", _tunnelQuantity); + config.setProperty("option.outbound.quantity", _tunnelQuantity); } if (_tunnelDepth != null) { config.setProperty("option.inbound.length", _tunnelDepth); config.setProperty("option.outbound.length", _tunnelDepth); } + if (_tunnelVariance != null) { + config.setProperty("option.inbound.lengthVariance", _tunnelVariance); + config.setProperty("option.outbound.lengthVariance", _tunnelVariance); + } + if (_tunnelBackupQuantity != null) { + config.setProperty("option.inbound.backupQuantity", _tunnelBackupQuantity); + config.setProperty("option.outbound.backupQuantity", _tunnelBackupQuantity); + } if (_connectDelay) config.setProperty("option.i2p.streaming.connectDelay", "1000"); else @@ -673,4 +726,4 @@ public class IndexBean { buf.append((String)msgs.get(i)).append("\n"); } } -} +} \ No newline at end of file diff --git a/apps/i2ptunnel/jsp/edit.jsp b/apps/i2ptunnel/jsp/edit.jsp index d9c6bc407..931629fb1 100644 --- a/apps/i2ptunnel/jsp/edit.jsp +++ b/apps/i2ptunnel/jsp/edit.jsp @@ -1,26 +1,25 @@ -<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" %> - -<% String tun = request.getParameter("tunnel"); - if (tun != null) { - try { - int curTunnel = Integer.parseInt(tun); - if (EditBean.staticIsClient(curTunnel)) { - %><% - } else { - %><% - } - } catch (NumberFormatException nfe) { - %>Invalid tunnel parameter<% - } - } else { - String type = request.getParameter("type"); - int curTunnel = -1; - if ("client".equals(type) || "httpclient".equals(type) || "ircclient".equals(type)) { - %><% - } else if ("server".equals(type) || "httpserver".equals(type)) { - %><% +<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" %><% +String tun = request.getParameter("tunnel"); + if (tun != null) { + try { + int curTunnel = Integer.parseInt(tun); + if (EditBean.staticIsClient(curTunnel)) { + %><% } else { - %>Invalid tunnel type<% + %><% } + } catch (NumberFormatException nfe) { + %>Invalid tunnel parameter<% } +} else { + String type = request.getParameter("type"); + int curTunnel = -1; + if ("client".equals(type) || "httpclient".equals(type) || "ircclient".equals(type)) { + %><% + } else if ("server".equals(type) || "httpserver".equals(type)) { + %><% + } else { + %>Invalid tunnel type<% + } +} %> \ No newline at end of file diff --git a/apps/i2ptunnel/jsp/editClient.jsp b/apps/i2ptunnel/jsp/editClient.jsp index 5fdef6906..c9378d630 100644 --- a/apps/i2ptunnel/jsp/editClient.jsp +++ b/apps/i2ptunnel/jsp/editClient.jsp @@ -1,4 +1,5 @@ -<%@page contentType="text/html" %> +<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean"%> + <% String tun = request.getParameter("tunnel"); int curTunnel = -1; @@ -10,284 +11,277 @@ } } %> - + -I2PTunnel Webmanager + I2PTunnel Webmanager - Edit + + + + <% if (editBean.allowCSS()) { + %> + + + <% } + %> - -
-" /> - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -<% if ("httpclient".equals(editBean.getInternalType(curTunnel))) { %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-<% if (curTunnel >= 0) { %> -Edit proxy settings -<% } else { %> -New proxy settings -<% } %> -
Name: - - -
Type: -<% -if (curTunnel >= 0) { - %><%=editBean.getTunnelType(curTunnel)%> - -<% -} else { - %><%=editBean.getTypeName(request.getParameter("type"))%> -" /> -<% -} -%>
Description: - - -
Start automatically?: - -<% if (editBean.startAutomatically(curTunnel)) { %> - -<% } else { %> - -<% } %> -(Check the Box for 'YES') -
Listening Port: - - -
Accessable by: - - -   -others: - -<% } else if ("0.0.0.0".equals(clientInterface)) { %> - - - + - -   -others: - -<% } else { %> - - - +
+
+ <% + String tunnelTypeName = ""; + String tunnelType = ""; + if (curTunnel >= 0) { + tunnelTypeName = editBean.getTunnelType(curTunnel); + tunnelType = editBean.getInternalType(curTunnel); + %>

Edit proxy settings

<% + } else { + tunnelTypeName = editBean.getTypeName(request.getParameter("type")); + tunnelType = request.getParameter("type"); + %>

New proxy settings

<% + } %> + " /> + + +
+ +
+
+
- -   -others: - -<% } %> +
+ + +
+
+ + <%=tunnelTypeName%> +
+
+ + +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ + <% if ("httpclient".equals(editBean.getInternalType(curTunnel))) { + %>
+ + +
+ <% } else { + %>
+ + + (name or destination) +
+ <% } + %>
+ + +
+
+ + class="tickbox" /> + (for request/response connections) +
+
+ + class="tickbox" /> + (Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy) +
+
+ + class="tickbox" /> + (Check the Box for 'YES') +
+ + +
-
Outproxies: -<% } else { %> -Target: -<% } %> - -<% if ("httpclient".equals(editBean.getInternalType(curTunnel))) { %> - -<% } else { %> - -<% } %> -(name or destination) -
-Delayed connect? - -<% if (editBean.shouldDelay(curTunnel)) { %> - -<% } else { %> - -<% } %> -(for request/response connections) -
Profile: - - -
-Shared Client - -<% if (editBean.isSharedClient(curTunnel)) { %> - -<% } else { %> - -<% } %> -(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy) -
-
-Advanced networking options
-(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)
-
-Tunnel depth: - -
Tunnel count: - - -
I2CP host: - - -
I2CP port: - -
-
Custom options: - - -
-
-
-Save: - - -
Delete? - -    -confirm delete: - -
-
-
- - +
+
+

Advanced networking options

+ (NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!) +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ + +
+ + +
+
+
+ +
+ + + + \ No newline at end of file diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp index 60959dd5f..943357f61 100644 --- a/apps/i2ptunnel/jsp/editServer.jsp +++ b/apps/i2ptunnel/jsp/editServer.jsp @@ -1,4 +1,5 @@ -<%@page contentType="text/html" %> +<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean"%> + <% String tun = request.getParameter("tunnel"); int curTunnel = -1; @@ -10,224 +11,249 @@ } } %> - + -I2PTunnel Webmanager + I2PTunnel Webmanager - Edit + + + + <% if (editBean.allowCSS()) { + %> + + + <% } + %> - -
-" /> - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - -<% String curType = editBean.getInternalType(curTunnel); - if ( (curType == null) || (curType.trim().length() <= 0) ) - curType = request.getParameter("type"); - if ("httpserver".equals(curType)) { %> - - - -<% } %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-<% if (curTunnel >= 0) { %> -Edit server settings -<% } else { %> -New server settings -<% } %> -
Name: - - -
Type: -<% -if (curTunnel >= 0) { - %><%=editBean.getTunnelType(curTunnel)%> - -<% -} else { - %><%=editBean.getTypeName(request.getParameter("type"))%> -" /> -<% -} -%>
Description: - - -
Start automatically?: - -<% if (editBean.startAutomatically(curTunnel)) { %> - -<% } else { %> - -<% } %> -(Check the Box for 'YES') -
Target: - -Host: -Port: -
Website name: -
Private key file: -
Profile: - - -
Local destination:
(if known)
-
-Advanced networking options
-
-
-Tunnel depth: - -
Tunnel count: - - -
I2CP host: - - -
I2CP port: - -
-
Custom options: - - -
-
-
-Save: - - -
Delete? - -    -confirm delete: - -
-
-
+ + + +
+ +
+
+ <% + String tunnelTypeName = ""; + String tunnelType = ""; + if (curTunnel >= 0) { + tunnelTypeName = editBean.getTunnelType(curTunnel); + tunnelType = editBean.getInternalType(curTunnel); + %>

Edit server settings

<% + } else { + tunnelTypeName = editBean.getTypeName(request.getParameter("type")); + tunnelType = request.getParameter("type"); + %>

New server settings

<% + } %> + " /> + + +
+ +
+
+
+ +
+ + +
+
+ + <%=tunnelTypeName%> +
+
+ + +
+
+ + class="tickbox" /> + (Check the Box for 'YES') +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+ +
+
+
+ + <% if ("httpserver".equals(tunnelType)) { + %>
+ + +
+ <% } + %>
+ + +
+
+ + +
+
+ + + (if known) +
+ + +
+ +
+
+

Advanced networking options

+
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ + +
+ + +
+
+
+ +
+
+ - + \ No newline at end of file diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index b66c18d50..50c71aec7 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -1,185 +1,258 @@ -<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean" %> - +<%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean"%> + - - + -I2PTunnel Webmanager + I2PTunnel Webmanager - List + + + + + <% if (indexBean.allowCSS()) { + %> + + + <% } + %> - - - - - -
-
- - - - - -
New Messages:
-refresh -
- -
-
-
- - - - -
-
+ + + +
+
+

Status Messages

+
- - - - - - - - - - - -<% for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) { - if (!indexBean.isClient(curClient)) continue; %> - - - - - - - - - - - - - -<% } %> -
-Your Client Tunnels:
-
-
Name:Port:Type:Interface:Status:
-<%=indexBean.getTunnelName(curClient) %><%=indexBean.getClientPort(curClient) %><%=indexBean.getTunnelType(curClient) %><%=indexBean.getClientInterface(curClient) %><% - switch (indexBean.getTunnelStatus(curClient)) { - case IndexBean.STARTING: -%>Starting... -[STOP]<% - break; - case IndexBean.RUNNING: -%>Running -[STOP]<% - break; - case IndexBean.NOT_RUNNING: -%>Not Running -[START]<% - break; - } -%>
Destination:
Description:<%=indexBean.getTunnelDescription(curClient) %>
-
-
+
+
+
- - - - -
-
- - - - - - - - - + -<% for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) { - if (indexBean.isClient(curServer)) continue; %> +
+
+
- - - - - - - -<% } %> + + -
-Your Server Tunnels:
-
-
Name: - -Points at: - -Status: -
-<%=indexBean.getTunnelName(curServer)%> -<%=indexBean.getServerTarget(curServer)%><% - switch (indexBean.getTunnelStatus(curServer)) { - case IndexBean.RUNNING: -%>Running -[STOP]<% - if ("httpserver".equals(indexBean.getInternalType(curServer))) { -%> (preview)<% - } - break; - case IndexBean.NOT_RUNNING: -%>Not Running -[START]<% - break; - case IndexBean.STARTING: -%> -Starting... -[STOP]<% - break; - } -%> -
Description:<%=indexBean.getTunnelDescription(curServer)%>
-
-
- - - - -
-
- - - - - - - - - - - - -
-Operations Menu - Please chose from below!

-
- - - - - -
-Add new: - -
-
+
+
+

Local Client Tunnels

+
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ <% + for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) { + if (!indexBean.isClient(curClient)) continue; + %> + +
+ + <%=indexBean.getClientPort(curClient)%> +
+
+ + <%=indexBean.getTunnelType(curClient)%> +
+
+ + <%=indexBean.getClientInterface(curClient)%> +
+
+ + <% + switch (indexBean.getTunnelStatus(curClient)) { + case IndexBean.STARTING: + %>
Starting...
+ Stop + <% + break; + case IndexBean.RUNNING: + %>
Running
+ Stop + <% + break; + case IndexBean.NOT_RUNNING: + %>
Stopped
+ Start + <% + break; + } + %>
+ +
+ + +
+ +
+ +
<%=indexBean.getTunnelDescription(curClient)%>
+
+ +
+
+
+ <% + } + %> +
+
+
+ + +
+ +
+
+

Local Server Tunnels

+
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+ + <% + for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) { + if (indexBean.isClient(curServer)) continue; + + %> + +
+ + <%=indexBean.getServerTarget(curServer)%> +
+
+ <% + if ("httpserver".equals(indexBean.getInternalType(curServer)) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) { + %> + Preview + <% + } else { + %>No Preview + <% + } + %>
+
+ + <% + switch (indexBean.getTunnelStatus(curServer)) { + case IndexBean.STARTING: + %>
Starting...
+ Stop + <% + break; + case IndexBean.RUNNING: + %>
Running
+ Stop + <% + break; + case IndexBean.NOT_RUNNING: + %>
Stopped
+ Start + <% + break; + } + %>
+ +
+ +
<%=indexBean.getTunnelDescription(curServer)%>
+
+ +
+
+
+ <% + } + %> +
+
+
+ + +
+ + + + diff --git a/history.txt b/history.txt index 3fbe1489e..083e6e331 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,25 @@ -$Id: history.txt,v 1.317 2005/11/10 22:46:36 jrandom Exp $ +$Id: history.txt,v 1.318 2005/11/11 06:29:16 jrandom Exp $ + +2005-11-11 cervantes + * Initial pass of the routerconsole revamp, starting with I2PTunnel and + being progressively rolled out to other sections at later dates. + Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing + layout and styling. + * Implemented console themes. Users can create their own themes by + creating css files in: {i2pdir}/docs/themes/console/{themename}/ + and activating it using the routerconsole.theme={themename} advanced + config property. Look at the example incomplete "defCon1" theme. + Note: This is very much a work in progress. Folks might want to hold-off + creating their own skins until the markup has solidified. + * Added "routerconsole.javascript.disabled=true" to disable console + client-side scripting and "routerconsole.css.disabled=true" to remove + css styling (only rolled out in the i2ptunnel interface currently) + * Fixed long standing bug with i2ptunnel client and server edit screens + where tunnel count and depth properties would fail to save. Added + backup quantity and variance configuration options. + * Added basic accessibility support (key shortcuts, linear markup, alt and + title information and form labels). + * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx. 2005-11-11 jrandom * Default Syndie to single user mode, and automatically log into a default diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fba01c6d2..7a1196067 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.285 $ $Date: 2005/11/06 17:25:18 $"; + public final static String ID = "$Revision: 1.286 $ $Date: 2005/11/10 22:46:36 $"; public final static String VERSION = "0.6.1.4"; - public final static long BUILD = 6; + public final static long BUILD = 7; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID);