* Console:

- Parameterize download button tags (ticket #425)
      - Clean up summary bar HTML warnings
      - Just display a summary bar link for text browsers
      - Move welcome div from the readme files to index.jsp
      - Require a nonce to change language
This commit is contained in:
zzz
2011-03-08 03:07:02 +00:00
parent f9b2c0bc63
commit b02fe536bc
24 changed files with 114 additions and 263 deletions

View File

@ -28,11 +28,13 @@ public class CSSHelper extends HelperBase {
return url; return url;
} }
/** change default language for the router but don't save it */ /** change default language for the router AND save it */
public void setLang(String lang) { public void setLang(String lang) {
// TODO: Protect with nonce or require POST // Protected with nonce in css.jsi
if (lang != null && lang.length() == 2) if (lang != null && lang.length() == 2 && !lang.equals(_context.getProperty(Messages.PROP_LANG))) {
_context.router().setConfigSetting(Messages.PROP_LANG, lang); _context.router().setConfigSetting(Messages.PROP_LANG, lang);
_context.router().saveConfig();
}
} }
/** needed for conditional css loads for zh */ /** needed for conditional css loads for zh */
@ -61,4 +63,13 @@ public class CSSHelper extends HelperBase {
.append("</title>"); .append("</title>");
return buf.toString(); return buf.toString();
} }
/**
* Should we allow a refreshing IFrame?
* @since 0.8.5
*/
public boolean allowIFrame(String ua) {
return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
ua.startsWith("ELinks") || ua.startsWith("Dillo"));
}
} }

View File

@ -19,15 +19,14 @@ public class ContentHelper extends HelperBase {
_startAtBeginning = Boolean.valueOf(""+moo).booleanValue(); _startAtBeginning = Boolean.valueOf(""+moo).booleanValue();
} }
public void setLang(String l) { public void setLang(String l) {
/*****
if((_lang == null || !_lang.equals(l)) && (l != null)) { if((_lang == null || !_lang.equals(l)) && (l != null)) {
//Set language for router console //Set language for router console
_lang = l; _lang = l;
/*****
TODO - Temporary for 0.8.4 TODO - Temporary for 0.8.4
Needed for desktopgui. But there's no nonce protection. Needed for desktopgui. But there's no nonce protection.
Move the following to CSSHelper setLang(), or disable completely, Move the following to CSSHelper setLang(), or disable completely,
See comments in CSSHelper See comments in CSSHelper
*****/
if(_context == null) { if(_context == null) {
setContextId(null); setContextId(null);
} }
@ -39,6 +38,7 @@ public class ContentHelper extends HelperBase {
_context.setProperty(Messages.PROP_LANG, _lang); _context.setProperty(Messages.PROP_LANG, _lang);
} }
} }
*****/
} }
public void setMaxLines(String lines) { public void setMaxLines(String lines) {

View File

@ -224,25 +224,21 @@ public class SummaryBarRenderer {
System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev);
System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+""); System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+"");
String uri = _helper.getRequestURI(); String uri = _helper.getRequestURI();
buf.append("<p><form action=\"").append(uri).append("\" method=\"POST\">\n"); buf.append("<form action=\"").append(uri).append("\" method=\"POST\">\n");
buf.append("<input type=\"hidden\" name=\"updateNonce\" value=\"").append(nonce).append("\" >\n"); buf.append("<input type=\"hidden\" name=\"updateNonce\" value=\"").append(nonce).append("\" >\n");
if (_helper.updateAvailable()) { if (_helper.updateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >") buf.append("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >")
.append(_("Download")) // Note to translators: parameter is a version, e.g. "0.8.4"
.append(' ') .append(_("Download {0} Update", _helper.getUpdateVersion()))
.append(_helper.getUpdateVersion()) .append("</button><br>\n");
.append(' ')
.append(_("Update"))
.append("</button>\n");
} }
if (_helper.unsignedUpdateAvailable()) { if (_helper.unsignedUpdateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >") buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >")
.append(_("Download Unsigned")) // Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
.append("<br>") // <br> is optional, to help the browser make the lines even in the button
.append(_("Update")) // If the translation is shorter than the English, you should probably not include <br>
.append(' ') .append(_("Download Unsigned<br>Update {0}", _helper.getUnsignedUpdateVersion()))
.append(_helper.getUnsignedUpdateVersion()) .append("</button><br>\n");
.append("</button>\n");
} }
buf.append("</form>\n"); buf.append("</form>\n");
} }
@ -251,10 +247,9 @@ public class SummaryBarRenderer {
buf.append("<p>") buf.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce()))
.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce()))
.append("</p><hr><h3><a href=\"/peers\" target=\"_top\" title=\"") .append("<hr><h3><a href=\"/peers\" target=\"_top\" title=\"")
.append(_("Show all current peer connections")) .append(_("Show all current peer connections"))
.append("\">") .append("\">")
.append(_("Peers")) .append(_("Peers"))
@ -456,4 +451,9 @@ public class SummaryBarRenderer {
private String _(String s) { private String _(String s) {
return Messages.getString(s, _context); return Messages.getString(s, _context);
} }
/** translate a string with a parameter */
private String _(String s, Object o) {
return Messages.getString(s, o, _context);
}
} }

View File

@ -41,7 +41,7 @@
<br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%> <br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>
</i></td> </i></td>
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Max log file size")%>:</b></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> <td><input type="text" name="logfilesize" size="10" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" ><br></td>
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Default log level")%>:</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)")%> <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> </i></td>

View File

@ -26,7 +26,10 @@
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="intl" scope="request" /> <jsp:useBean class="net.i2p.router.web.CSSHelper" id="intl" scope="request" />
<jsp:setProperty name="intl" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="intl" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<% <%
intl.setLang(request.getParameter("lang")); String conNonceParam = request.getParameter("consoleNonce");
if (conNonceParam != null && conNonceParam.equals(System.getProperty("router.consoleNonce"))) {
intl.setLang(request.getParameter("lang"));
}
%> %>
<link href="<%=intl.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">
<% <%

View File

@ -7,9 +7,11 @@
<%=intl.title("home")%> <%=intl.title("home")%>
</head><body> </head><body>
<% <%
if (System.getProperty("router.consoleNonce") == null) { String consoleNonce = System.getProperty("router.consoleNonce");
System.setProperty("router.consoleNonce", new java.util.Random().nextLong() + ""); if (consoleNonce == null) {
} consoleNonce = Long.toString(new java.util.Random().nextLong());
System.setProperty("router.consoleNonce", consoleNonce);
}
%> %>
<%@include file="summary.jsi" %><h1><%=intl._("I2P Router Console")%></h1> <%@include file="summary.jsi" %><h1><%=intl._("I2P Router Console")%></h1>
@ -26,10 +28,25 @@ if (System.getProperty("router.consoleNonce") == null) {
<hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br> <hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br>
</div><div class="main" id="main"> </div><div class="main" id="main">
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" /> <jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
<div class="welcome">
<div class="langbox">
<a href="/?lang=en&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2><%=intl._("Welcome to I2P")%></h2>
</div>
<% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %> <% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" /> <jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="contenthelper" property="maxLines" value="300" /> <jsp:setProperty name="contenthelper" property="maxLines" value="300" />
<jsp:setProperty name="contenthelper" property="lang" value="<%=request.getParameter("lang")%>" />
<jsp:setProperty name="contenthelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="contenthelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:getProperty name="contenthelper" property="content" /> <jsp:getProperty name="contenthelper" property="content" />
</div></body></html> </div></body></html>

View File

@ -1,27 +1,41 @@
<% // put width here too to prevent bad layout at startup %>
<% // let's remove that for now since we're no longer using percentage width here %>
<div class="routersummaryouter"> <div class="routersummaryouter">
<% <%
// skip the iframe if refresh disabled // The refresh delay, 0 to disable
String d = request.getParameter("refresh"); String d = "0";
String newDelay = ""; boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent"));
if (d == null || "".equals(d)) if (allowIFrame) {
d = intl.getRefresh(); // skip the iframe if refresh disabled
else { d = request.getParameter("refresh");
d = net.i2p.data.DataHelper.stripHTML(d); // XSS String newDelay = "";
// pass the new delay parameter to the iframe if (d == null || "".equals(d))
newDelay = "?refresh=" + d; d = intl.getRefresh();
else {
d = net.i2p.data.DataHelper.stripHTML(d); // XSS
// pass the new delay parameter to the iframe
newDelay = "?refresh=" + d;
}
if (!"0".equals(d))
out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
} }
if (!"0".equals(d))
out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
%> %>
<div class="routersummary"> <div class="routersummary">
<%
if (allowIFrame) {
// Display the whole summary bar
%>
<%@include file="summarynoframe.jsi" %> <%@include file="summarynoframe.jsi" %>
<% <%
// d defined above } else {
// Text browsers don't render the two divs side-by-side, so just provide a link
out.print("<a href=\"/summaryframe\">");
out.print(intl._("Summary Bar"));
out.print("</a>");
}
// d and allowIFrame defined above
if (!"0".equals(d)) { if (!"0".equals(d)) {
out.print("</div></iframe>\n"); out.print("</div></iframe>\n");
} else { } else if (allowIFrame) {
// since we don't have an iframe this will reload the base page, and // since we don't have an iframe this will reload the base page, and
// the new delay will be passed to the iframe above // the new delay will be passed to the iframe above
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n"); out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n");
@ -34,6 +48,8 @@
out.print(intl._("Enable")); out.print(intl._("Enable"));
out.print("</button>\n"); out.print("</button>\n");
out.print("</form></div></div>\n"); out.print("</form></div></div>\n");
} else {
out.print("</div>\n");
} }
%> %>
</div> </div>

View File

@ -15,7 +15,9 @@
String action = request.getParameter("action"); String action = request.getParameter("action");
String d = request.getParameter("refresh"); String d = request.getParameter("refresh");
// Normal browsers send value, IE sends button label // Normal browsers send value, IE sends button label
boolean shutdownSoon = "shutdownImmediate".equals(action) || "restartImmediate".equals(action) || boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent"));
boolean shutdownSoon = (!allowIFrame) ||
"shutdownImmediate".equals(action) || "restartImmediate".equals(action) ||
"Shutdown immediately".equals(action) || "Restart immediately".equals(action); "Shutdown immediately".equals(action) || "Restart immediately".equals(action);
if (!shutdownSoon) { if (!shutdownSoon) {
if (d == null || "".equals(d)) { if (d == null || "".equals(d)) {

View File

@ -1,8 +1,23 @@
2011-03-08 zzz
* Console:
- Parameterize download button tags (ticket #425)
- Clean up summary bar HTML warnings
- Just display a summary bar link for text browsers
- Move welcome div from the readme files to index.jsp
- Require a nonce to change language
* i2psnark:
- More efficient metainfo handling, reduce instantiations
- Improved handling of storage errors
- Improved handling of duplicate file names
- More metainfo sanity checks
- Metadata transfer error handling improvements
- Code cleanup, remove dead and duplicated code
2011-03-02 zzz 2011-03-02 zzz
* BuildHandler: * BuildHandler:
- Limit request queue size - Limit request queue size
- Concurrent request queue - Concurrent request queue
- Remove dead code for queued rely handling - Remove dead code for queued reply handling
* OutNetMessage: Remove dead code * OutNetMessage: Remove dead code
* Tunnel cleanups, final, javadoc * Tunnel cleanups, final, javadoc

View File

@ -1,20 +1,4 @@
<div lang="en"> <div lang="en">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Welcome to the Invisible Internet</h2>
</div>
<ul class="links"><li class="tidylist"><b>Starting Up&hellip;</b><br>If you've just started I2P, the number of <i>Active Peers</i> indicated under the <i>Peers</i> section in the side panel on the left should start to grow over the next few minutes and you'll also see a <i>Local Destination</i> named <i>Shared Clients</i> listed there, and possibly other clients and servers depending on how I2P is configured (if not, see the troubleshooting section <a href="#trouble">below</a>). These <i>Local Destinations</i> provide connections on different ports (and sometimes protocols) to the I2P network, enabling your bittorrent, e-mail, web proxy and other services to function. Your <a href="/netdb">Network Database</a> indicates all known peers on the network. Additionally, you can monitor existing <a href="/peers">Peer Connections</a>, and view existing <a href="/tunnels">Tunnels</a> and their status. More information is available on the <a href="/help">help page</a>.</li> <ul class="links"><li class="tidylist"><b>Starting Up&hellip;</b><br>If you've just started I2P, the number of <i>Active Peers</i> indicated under the <i>Peers</i> section in the side panel on the left should start to grow over the next few minutes and you'll also see a <i>Local Destination</i> named <i>Shared Clients</i> listed there, and possibly other clients and servers depending on how I2P is configured (if not, see the troubleshooting section <a href="#trouble">below</a>). These <i>Local Destinations</i> provide connections on different ports (and sometimes protocols) to the I2P network, enabling your bittorrent, e-mail, web proxy and other services to function. Your <a href="/netdb">Network Database</a> indicates all known peers on the network. Additionally, you can monitor existing <a href="/peers">Peer Connections</a>, and view existing <a href="/tunnels">Tunnels</a> and their status. More information is available on the <a href="/help">help page</a>.</li>

View File

@ -1,20 +1,4 @@
<div dir="rtl" lang="ar"> <div dir="rtl" lang="ar">
<div class="welcome">
<div class="langbox" dir="ltr">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>مرحبا بكم في الانترنت الغير مرئية</h2>
</div>
<p>عندما تقوم بتشغيل I2P ستبدأ الأرقام على يسار الشاشة في الازدياد خلال الدقائق التالية وستظهر عبارة <i>Shared Clients</i> (ان <a href=#trouble>لم تظهر، انظر التعليمات اسفله</a>). عندها يمكنك الحصول على عدة خدمات مثل تورنت، البريد الإلكتروني السري، وخدمات أخرى:</p> <p>عندما تقوم بتشغيل I2P ستبدأ الأرقام على يسار الشاشة في الازدياد خلال الدقائق التالية وستظهر عبارة <i>Shared Clients</i> (ان <a href=#trouble>لم تظهر، انظر التعليمات اسفله</a>). عندها يمكنك الحصول على عدة خدمات مثل تورنت، البريد الإلكتروني السري، وخدمات أخرى:</p>
<ul> <ul>

View File

@ -1,20 +1,4 @@
<div lang="de"> <div lang="de">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Willkommen im I2P!</h2>
</div>
<p>Wenn Du I2P gerade gestartet hast, sollten die "Aktiv:"-Zahlen links in den n&auml;chsten Minuten anwachsen. Du siehst dann dort ein als "versch. Klienten" bezeichnetes lokales Ziel gelistet (falls nicht, <a href="#trouble">siehe unten</a>). Sobald dieses erscheint, kannst Du:</p> <p>Wenn Du I2P gerade gestartet hast, sollten die "Aktiv:"-Zahlen links in den n&auml;chsten Minuten anwachsen. Du siehst dann dort ein als "versch. Klienten" bezeichnetes lokales Ziel gelistet (falls nicht, <a href="#trouble">siehe unten</a>). Sobald dieses erscheint, kannst Du:</p>
<ul> <ul>

View File

@ -1,20 +1,4 @@
<div lang="es"> <div lang="es">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>&iexcl;Bienvenido a I2P!</h2>
</div>
<p>Si acabas de iniciar I2P, al observar el menú de la izquierda, deberías notar que los n&uacute;meros al lado de "Activos:" subirán en los próximos minutos y luego verás allí un Destino llamado "clientes diferentes" (si no, <a href="#trouble">&iexcl;mira abajo!</a>) <br>Apenas aparezca esto, puedes:</p> <p>Si acabas de iniciar I2P, al observar el menú de la izquierda, deberías notar que los n&uacute;meros al lado de "Activos:" subirán en los próximos minutos y luego verás allí un Destino llamado "clientes diferentes" (si no, <a href="#trouble">&iexcl;mira abajo!</a>) <br>Apenas aparezca esto, puedes:</p>
<ul> <ul>

View File

@ -1,20 +1,4 @@
<div lang="fr"> <div lang="fr">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Bienvenu sur I2P!</h2>
</div>
<p>Si vous venez juste de lancer I2P, les chiffres sur la gauche &agrave; cot&eacute; de Active devraient commencer &agrave; augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale list&eacute;s sur la gauche (si non, <a href=#trouble>voir plus bas</a>). Une fois qu'ils apparaissent, vous pouvez:</p> <p>Si vous venez juste de lancer I2P, les chiffres sur la gauche &agrave; cot&eacute; de Active devraient commencer &agrave; augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale list&eacute;s sur la gauche (si non, <a href=#trouble>voir plus bas</a>). Une fois qu'ils apparaissent, vous pouvez:</p>
<ul> <ul>

View File

@ -1,20 +1,4 @@
<div lang="nl"> <div lang="nl">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Welkom op het Invisible Internet</h2>
</div>
<ul class="links"><li class="tidylist"><b>Opstarten&hellip;</b><br>Als je zojuist I2P gestart hebt zal het nummer van <i>Actieve Peers</i> onder de <i>Peers</i> sectie in het linker zijpaneel toenemen binnen de komende minuten, tevens zal je een <i>Lokale bestemming</i> genaamd <i>Gedeelde Clients</i> zien, en mogelijk andere clients en servers, afhankelijk van de I2P configuratie (als dit niet het geval is, zie 'problemen oplossen' <a href="#trouble">hier onder</a>). Deze <i>Lokale bestemmingen</i> bieden verbindingen aan op verschillende poorten (en soms protocollen) naar het I2P netwerk waardoor diensten als BitTorrent, email, webproxy en andere diensten zullen werken. De <a href="/netdb">Netwerk Database</a> geeft een indicatie van alle bekende peers op het netwerk. Daarnaast kunnen bestaande <a href="/peers">Peer Connecties</a> gemonitord worden en bestaande <a href="/tunnels">Tunnels</a> en hun status worden bekeken. Meer informatie is beschikbaar op de <a href="/help">hulp pagina</a>.</li> <ul class="links"><li class="tidylist"><b>Opstarten&hellip;</b><br>Als je zojuist I2P gestart hebt zal het nummer van <i>Actieve Peers</i> onder de <i>Peers</i> sectie in het linker zijpaneel toenemen binnen de komende minuten, tevens zal je een <i>Lokale bestemming</i> genaamd <i>Gedeelde Clients</i> zien, en mogelijk andere clients en servers, afhankelijk van de I2P configuratie (als dit niet het geval is, zie 'problemen oplossen' <a href="#trouble">hier onder</a>). Deze <i>Lokale bestemmingen</i> bieden verbindingen aan op verschillende poorten (en soms protocollen) naar het I2P netwerk waardoor diensten als BitTorrent, email, webproxy en andere diensten zullen werken. De <a href="/netdb">Netwerk Database</a> geeft een indicatie van alle bekende peers op het netwerk. Daarnaast kunnen bestaande <a href="/peers">Peer Connecties</a> gemonitord worden en bestaande <a href="/tunnels">Tunnels</a> en hun status worden bekeken. Meer informatie is beschikbaar op de <a href="/help">hulp pagina</a>.</li>

View File

@ -1,20 +1,4 @@
<div lang="pt"> <div lang="pt">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Bem-vindo a I2P!</h2>
</div>
<p>Se você acaba de iniciar I2P, os n&uacute;meros à esquerda ao lado de "Active:" deberiam subir nos seguintes minutos e logo lá ver&aacute; uma Destinação chamada "shared clients". (se não, <a href="#trouble">veija embaixo!</a>) <br>Assim que apareça isto, você pode:</p> <p>Se você acaba de iniciar I2P, os n&uacute;meros à esquerda ao lado de "Active:" deberiam subir nos seguintes minutos e logo lá ver&aacute; uma Destinação chamada "shared clients". (se não, <a href="#trouble">veija embaixo!</a>) <br>Assim que apareça isto, você pode:</p>
<ul> <ul>

View File

@ -1,20 +1,4 @@
<div lang="ru"> <div lang="ru">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Добро пожаловать в Невидимый Интернет</h2>
</div>
<ul class="links"><li class="tidylist"><b>Начало&hellip;</b><br>Если вы только что запустили I2P, число <i>Активных пиров</i>, отображаемых под секцией <i>Пиры</i> на боковой панели должно начать увеличиваться через несколько минут, и вы так же увидите <i>Локальный туннель</i> с именем <i>Коллективные Клиенты</i>, и, возможно, другие клиентские и серверные туннели в зависимости от того, как настроен I2P (если нет, смотрите секцию по разрешению проблем <a href="#trouble">ниже</a>). Эти <i>Локальные туннели</i> предоставляют соединения на разных портах (и иногда разные протоколы) для сети I2P, позволяя функционировать вашим torrent, e-mail, прокси и другим сервисам. Ваша <a href="/netdb">База данных сети I2P</a> показывает всех известных роутеру пиров в сети. Больше информации доступно на <a href="/help">странице помощи</a>.</li> <ul class="links"><li class="tidylist"><b>Начало&hellip;</b><br>Если вы только что запустили I2P, число <i>Активных пиров</i>, отображаемых под секцией <i>Пиры</i> на боковой панели должно начать увеличиваться через несколько минут, и вы так же увидите <i>Локальный туннель</i> с именем <i>Коллективные Клиенты</i>, и, возможно, другие клиентские и серверные туннели в зависимости от того, как настроен I2P (если нет, смотрите секцию по разрешению проблем <a href="#trouble">ниже</a>). Эти <i>Локальные туннели</i> предоставляют соединения на разных портах (и иногда разные протоколы) для сети I2P, позволяя функционировать вашим torrent, e-mail, прокси и другим сервисам. Ваша <a href="/netdb">База данных сети I2P</a> показывает всех известных роутеру пиров в сети. Больше информации доступно на <a href="/help">странице помощи</a>.</li>
<li class="tidylist"><b>Сетевая интеграция</b><br> Когда вы впервые запускаете I2P, это может занять несколько минут, т.к. роутер выполняет процедуру начальной загрузки (bootstrap) для интеграции в сеть и поиска пиров для оптимизации интегрированности. Будте терпеливы. Когда I2P запускается, и во время нормальной работы, индикатор готовности к построению туннелей (прямо над секцией <i>Локальные туннели</i> на боковой панели) может показывать "Не принимаем туннели"; это нормальное поведение и не стоит слишком беспокоиться. Когда возле ваших <i>Локальных туннелей</i> загорятся зелёные звёздочки, вы сможете делать с I2P разнообразные вещи, и ниже мы представим вам некоторые из них. </li></ul> <li class="tidylist"><b>Сетевая интеграция</b><br> Когда вы впервые запускаете I2P, это может занять несколько минут, т.к. роутер выполняет процедуру начальной загрузки (bootstrap) для интеграции в сеть и поиска пиров для оптимизации интегрированности. Будте терпеливы. Когда I2P запускается, и во время нормальной работы, индикатор готовности к построению туннелей (прямо над секцией <i>Локальные туннели</i> на боковой панели) может показывать "Не принимаем туннели"; это нормальное поведение и не стоит слишком беспокоиться. Когда возле ваших <i>Локальных туннелей</i> загорятся зелёные звёздочки, вы сможете делать с I2P разнообразные вещи, и ниже мы представим вам некоторые из них. </li></ul>

View File

@ -1,20 +1,4 @@
<div lang="sv"> <div lang="sv">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=pt"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>Welcome to I2P!</h2>
</div>
<p>Om du just har startat I2P kommer de "Aktiva: #/#" b&ouml;rja &ouml;ka inom <p>Om du just har startat I2P kommer de "Aktiva: #/#" b&ouml;rja &ouml;ka inom
n&aring;gra f&aring; minuter och du kommer se en destination kallad "delade n&aring;gra f&aring; minuter och du kommer se en destination kallad "delade

View File

@ -1,19 +1,4 @@
<div lang="zh"> <div lang="zh">
<div class="welcome">
<div class="langbox">
<a href="/?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/?lang=es"><img src="/flags.jsp?c=es" title="Espa&ntilde;ol" alt="Espa&ntilde;ol"></a>
<a href="/?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2>欢迎使用 I2P!</h2>
</div>
<p>I2P 运行后的几分钟里控制台左侧的【活动节点】数量会逐渐增加, <p>I2P 运行后的几分钟里控制台左侧的【活动节点】数量会逐渐增加,
<b>在【本地目标】中出现【共享客户端】后表示I2P已建立连接</b>(没有出现?见 <a href="#trouble">疑难解答</a>)。 <b>在【本地目标】中出现【共享客户端】后表示I2P已建立连接</b>(没有出现?见 <a href="#trouble">疑难解答</a>)。

View File

@ -258,16 +258,6 @@ div.tunnels table{
margin-right: -2px; margin-right: -2px;
} }
div.routersummary form {
margin-top: -6px !important;
margin-bottom: -4px !important;
}
div.routersummary form:last-child {
padding-top: 3px !important;
margin-bottom: -10px !important;
}
div.refresh { div.refresh {
margin-top: 10px !important; margin-top: 10px !important;
margin-bottom: 10px !important; margin-bottom: 10px !important;

View File

@ -182,22 +182,14 @@ div.routersummary tr {
border: 0 !important; border: 0 !important;
} }
div.routersummary form {
margin: -6px 0 -7px;
}
div.routersummary form:first-child {
margin: 6px 0 -4px 0 !important;
}
div.routersummary p { div.routersummary p {
padding: 0; padding: 0;
} }
div.refresh { div.refresh {
margin-top: -10px !important; margin-top: 10px !important;
margin-bottom: -4px !important; margin-bottom: 10px !important;
padding: 2px 0 0px 0 !important; padding: 2px 0 !important;
} }
div.routersummary a:link, div.routersummary a:visited { div.routersummary a:link, div.routersummary a:visited {
@ -838,7 +830,6 @@ input {
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
padding: 1px 2px; padding: 1px 2px;
text-decoration: none; text-decoration: none;
min-width: 110px;
border-radius: 4px; border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
-khtml-border-radius: 4px; -khtml-border-radius: 4px;
@ -918,8 +909,6 @@ textarea {
border: 1px solid #494; border: 1px solid #494;
} }
form {}
.proxyfooter { .proxyfooter {
margin: 0 20px 10px 240px; margin: 0 20px 10px 240px;
padding: 20px 25px 20px 75px; padding: 20px 25px 20px 75px;

View File

@ -250,22 +250,13 @@ div.tunnels td, div.tunnels img:first-child {
padding: 4px 0 !important; padding: 4px 0 !important;
} }
div.routersummary form {
margin: -6px 0 -5px 0;
}
div.routersummary form:last-child {
margin: 6px 0 0 0 !important;
padding: 0;
}
div.routersummary p { div.routersummary p {
padding: 0; padding: 0;
} }
div.refresh { div.refresh {
margin-top: -6px !important; margin-top: 10px !important;
margin-bottom: 0px !important; margin-bottom: 10px !important;
padding: 2px 0 0px 0 !important; padding: 2px 0 0px 0 !important;
} }
@ -870,17 +861,6 @@ button:active{
opacity: 1 !important; opacity: 1 !important;
} }
input {
background: #ffe;
color: #316;
margin: 5px 10px 5px 10px;
padding: 4px 2px;
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
border: 1px solid #447;
text-decoration: none;
min-width: 110px;
}
input, input:visited { input, input:visited {
border: 1px outset #999; border: 1px outset #999;
background: #ffe; background: #ffe;
@ -889,7 +869,6 @@ input, input:visited {
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
padding: 1px 2px; padding: 1px 2px;
text-decoration: none; text-decoration: none;
min-width: 110px;
border-radius: 4px; border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
-khtml-border-radius: 4px; -khtml-border-radius: 4px;
@ -983,8 +962,6 @@ textarea:active {
box-shadow: inset 0px 0px 0px 1px #f60; box-shadow: inset 0px 0px 0px 1px #f60;
} }
form {}
.proxyfooter { .proxyfooter {
margin: 0 20px 10px 240px; margin: 0 20px 10px 240px;
padding: 20px 25px 20px 75px; padding: 20px 25px 20px 75px;

View File

@ -280,16 +280,6 @@ div.tunnels table{
padding-right: 0; padding-right: 0;
} }
div.routersummary form {
margin-top: -8px !important;
margin-bottom: -8px !important;
}
div.routersummary form:last-child {
padding-top: 3px !important;
margin-bottom: -10px !important;
}
div.refresh { div.refresh {
margin-top: 10px !important; margin-top: 10px !important;
margin-bottom: 10px !important; margin-bottom: 10px !important;

View File

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