forked from I2P_Developers/i2p.i2p
propagate from branch 'i2p.i2p' (head b7ee04ecc7a594239e977b25a52ebdabadce558e)
to branch 'i2p.i2p.zzz.jetty6' (head 2cd4a4dae8b87b9ed2128d83aff1b39e3a818556)
This commit is contained in:
@ -20,6 +20,7 @@ source_lang = en
|
||||
trans.ar = apps/routerconsole/locale/messages_ar.po
|
||||
trans.da = apps/routerconsole/locale/messages_da.po
|
||||
trans.de = apps/routerconsole/locale/messages_de.po
|
||||
trans.et_EE = apps/routerconsole/locale/messages_ee.po
|
||||
trans.es = apps/routerconsole/locale/messages_es.po
|
||||
trans.fi = apps/routerconsole/locale/messages_fi.po
|
||||
trans.fr = apps/routerconsole/locale/messages_fr.po
|
||||
|
@ -127,7 +127,7 @@ Installer:
|
||||
|
||||
|
||||
|
||||
Java Service Wrapper Community Edition 32-bit 3.5.9:
|
||||
Java Service Wrapper Community Edition 32-bit 3.5.13:
|
||||
Copyright (C) 1999-2011 Tanuki Software, Ltd. All Rights Reserved.
|
||||
See licenses/LICENSE-Wrapper.txt
|
||||
|
||||
@ -135,10 +135,6 @@ Java Service Wrapper Community Edition 32-bit 3.5.9:
|
||||
Jbigi Libraries (jbigi.jar):
|
||||
JNI code public domain.
|
||||
|
||||
GMP 4.1.3 / 4.1.4:
|
||||
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
GMP 4.3.2 / 5.0.2:
|
||||
Copyright 1991, 1996, 1999, 2000, 2007 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv3.txt
|
||||
@ -198,7 +194,7 @@ Applications:
|
||||
Flag icons:
|
||||
- Jersey and EU flag icons: public domain, courtesy Xrmap flag
|
||||
collection http://www.arvernes.com/wiki/index.php/Xrmap
|
||||
- Guernsey flag from the Open Clip Art Library, released into the public domain
|
||||
- Guernsey and Isle of Man flags from the Open Clip Art Library, released into the public domain
|
||||
- All other flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
|
||||
Silk icons: See licenses/LICENSE-SilkIcons.txt
|
||||
|
||||
|
@ -614,7 +614,8 @@ public class Storage
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} }
|
||||
}
|
||||
}
|
||||
_filterNameCache.put(name, rv);
|
||||
return rv;
|
||||
}
|
||||
|
@ -2073,9 +2073,11 @@ private static class FetchAndAdd implements Runnable {
|
||||
// buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
buf.append(_("Torrent was not retrieved from {0}", urlify(_url)));
|
||||
String link = _url.replace("&", "&").replace(" ", "%20").replace(":", "%3A").replace("/", "%2F");
|
||||
/**** FIXME ticket #575
|
||||
buf.append(" - [<a href=\"/i2psnark/?newURL=").append(link).append("#add\" >");
|
||||
buf.append(_("Retry"));
|
||||
buf.append("</a>]");
|
||||
****/
|
||||
_manager.addMessage(buf.toString());
|
||||
}
|
||||
} finally {
|
||||
|
@ -14,9 +14,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-12 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:47+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 10:52+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
@ -171,7 +171,7 @@ msgstr "No se puede abrir \"{0}\""
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:737
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:792
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2036
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Ya hay un Torrent con este hash: {0}."
|
||||
@ -202,7 +202,7 @@ msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "El archivo .torrent en \"{0}\" no es válido."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:699
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2057
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2058
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}."
|
||||
@ -357,10 +357,10 @@ msgstr "Foro"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:251
|
||||
msgid "Click \"Add torrent\" button to fetch torrent"
|
||||
msgstr ""
|
||||
msgstr "Click en el botón \"Añadir torrent\" para cargar un torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@ -462,9 +462,8 @@ msgstr[0] "1 par conectado"
|
||||
msgstr[1] "{0} pares conectados"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:498
|
||||
#, fuzzy
|
||||
msgid "Opening the I2P tunnel"
|
||||
msgstr "Detener todos los torrents y el túnel I2P"
|
||||
msgstr "Abriendo el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
|
||||
#, java-format
|
||||
@ -573,7 +572,7 @@ msgstr "sembrando"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1829
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830
|
||||
msgid "Complete"
|
||||
msgstr "completo"
|
||||
|
||||
@ -911,7 +910,7 @@ msgstr "Finalización"
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
@ -931,71 +930,79 @@ msgstr "Tamaño de las partes"
|
||||
msgid "Magnet link"
|
||||
msgstr "Enlace de magnet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1773
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812
|
||||
#. We don't have the hash of the torrent file
|
||||
#. buf.append("<br>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
|
||||
#. .append(MAGGOT).append(hex).append(':').append(hex).append("</a>");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762
|
||||
#, fuzzy
|
||||
msgid "Torrent file"
|
||||
msgstr "Detalles del torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1813
|
||||
msgid "Directory"
|
||||
msgstr "Carpeta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1783
|
||||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1787
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1788
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Subir una herarquía"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1817
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1818
|
||||
msgid "Torrent not found?"
|
||||
msgstr "¿No se encotró el archivo torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1827
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "¿Archivo no encontrado en el torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1840
|
||||
msgid "complete"
|
||||
msgstr "completo"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1840
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1841
|
||||
msgid "bytes remaining"
|
||||
msgstr "Bytes faltando"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866
|
||||
msgid "Open"
|
||||
msgstr "abrir"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892
|
||||
msgid "High"
|
||||
msgstr "alta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1896
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897
|
||||
msgid "Normal"
|
||||
msgstr "normal"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1901
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902
|
||||
msgid "Skip"
|
||||
msgstr "dejar de lado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1910
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1911
|
||||
msgid "Save priorities"
|
||||
msgstr "Guardar prioridades"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2026
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent obtenido desde {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2048
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent ya en marcha: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent ya encolado: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent en {0} no era válido"
|
||||
@ -1004,11 +1011,11 @@ msgstr "Torrent en {0} no era válido"
|
||||
#. String peerParam = req.getParameter("p");
|
||||
#. if (peerParam != null)
|
||||
#. buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2069
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2070
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "El torrent no se ha podido obtener de {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2073
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
msgstr "Reintentar"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8,8 +8,12 @@ import net.i2p.apps.systray.UrlLauncher;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.startup.ClientAppConfig;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
import org.tanukisoftware.wrapper.WrapperManager;
|
||||
import org.tanukisoftware.wrapper.event.WrapperControlEvent;
|
||||
import org.tanukisoftware.wrapper.event.WrapperEvent;
|
||||
import org.tanukisoftware.wrapper.event.WrapperEventListener;
|
||||
|
||||
/**
|
||||
* Handler to deal with form submissions from the service config form and act
|
||||
@ -18,6 +22,10 @@ import org.tanukisoftware.wrapper.WrapperManager;
|
||||
*/
|
||||
public class ConfigServiceHandler extends FormHandler {
|
||||
|
||||
private static WrapperEventListener _signalHandler;
|
||||
|
||||
private static final String PROP_GRACEFUL_HUP = "router.gracefulHUP";
|
||||
|
||||
/**
|
||||
* Register two shutdown hooks, one to rekey and/or tell the wrapper we are stopping,
|
||||
* and a final one to tell the wrapper we are stopped.
|
||||
@ -127,6 +135,79 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a handler for signals,
|
||||
* so we can handle HUP from the wrapper (non-Windows only)
|
||||
*
|
||||
* @since 0.8.13
|
||||
*/
|
||||
synchronized static void registerSignalHandler(RouterContext ctx) {
|
||||
if (ctx.hasWrapper() && _signalHandler == null &&
|
||||
!System.getProperty("os.name").startsWith("Win")) {
|
||||
_signalHandler = new SignalHandler(ctx);
|
||||
long mask = WrapperEventListener.EVENT_FLAG_CONTROL;
|
||||
WrapperManager.addWrapperEventListener(_signalHandler, mask);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister the handler for signals
|
||||
*
|
||||
* @since 0.8.13
|
||||
*/
|
||||
public synchronized static void unregisterSignalHandler() {
|
||||
if (_signalHandler != null) {
|
||||
WrapperManager.removeWrapperEventListener(_signalHandler);
|
||||
_signalHandler = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Catch signals.
|
||||
* The wrapper will potentially forward HUP, USR1, and USR2.
|
||||
* But USR1 and USR2 are used by the JVM GC and cannot be trapped.
|
||||
* So we will only get HUP.
|
||||
*
|
||||
* @since 0.8.13
|
||||
*/
|
||||
private static class SignalHandler implements WrapperEventListener {
|
||||
private final RouterContext _ctxt;
|
||||
|
||||
public SignalHandler(RouterContext ctx) {
|
||||
_ctxt = ctx;
|
||||
}
|
||||
|
||||
public void fired(WrapperEvent event) {
|
||||
if (!(event instanceof WrapperControlEvent))
|
||||
return;
|
||||
WrapperControlEvent wce = (WrapperControlEvent) event;
|
||||
Log log = _ctxt.logManager().getLog(ConfigServiceHandler.class);
|
||||
if (log.shouldLog(Log.WARN))
|
||||
log.warn("Got signal: " + wce.getControlEventName());
|
||||
int sig = wce.getControlEvent();
|
||||
switch (sig) {
|
||||
case WrapperManager.WRAPPER_CTRL_HUP_EVENT:
|
||||
if (_ctxt.getBooleanProperty(PROP_GRACEFUL_HUP)) {
|
||||
wce.consume();
|
||||
if (!(_ctxt.router().gracefulShutdownInProgress() ||
|
||||
_ctxt.router().isFinalShutdownInProgress())) {
|
||||
System.err.println("WARN: Graceful shutdown initiated by SIGHUP");
|
||||
log.logAlways(Log.WARN, "Graceful shutdown initiated by SIGHUP");
|
||||
registerWrapperNotifier(_ctxt, Router.EXIT_GRACEFUL, false);
|
||||
_ctxt.router().shutdownGracefully();
|
||||
}
|
||||
} else {
|
||||
log.log(Log.CRIT, "Hard shutdown initiated by SIGHUP");
|
||||
// JVM will call ShutdownHook if we don't do it ourselves
|
||||
//wce.consume();
|
||||
//registerWrapperNotifier(_ctxt, Router.EXIT_HARD, false);
|
||||
//_ctxt.router().shutdown(Router.EXIT_HARD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action == null) return;
|
||||
@ -194,6 +275,7 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
addFormError(_("Warning: unable to install the service") + " - " + ioe.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void uninstallService() {
|
||||
try {
|
||||
Runtime.getRuntime().exec("uninstall_i2p_service_winnt.bat");
|
||||
|
@ -53,14 +53,14 @@ public class ConfigUIHelper extends HelperBase {
|
||||
* Any language-specific flag added to the icon set must be
|
||||
* added to the top-level build.xml for the updater.
|
||||
*/
|
||||
private static final String langs[] = {"ar", "da", "de", "en", "es", "fi",
|
||||
private static final String langs[] = {"ar", "da", "de", "ee", "en", "es", "fi",
|
||||
"fr", "it", "nl", "pl", "pt", "ru",
|
||||
"sv", "uk", "vi", "zh"};
|
||||
private static final String flags[] = {"lang_ar", "dk", "de", "us", "es", "fi",
|
||||
private static final String flags[] = {"lang_ar", "dk", "de", "ee", "us", "es", "fi",
|
||||
"fr", "it", "nl", "pl", "pt", "ru",
|
||||
"se", "ua", "vn", "cn"};
|
||||
private static final String xlangs[] = {_x("Arabic"), _x("Danish"),
|
||||
_x("German"), _x("English"), _x("Spanish"),_x("Finnish"),
|
||||
_x("German"), _x("Estonian"), _x("English"), _x("Spanish"), _x("Finnish"),
|
||||
_x("French"), _x("Italian"), _x("Dutch"), _x("Polish"),
|
||||
_x("Portuguese"), _x("Russian"), _x("Swedish"),
|
||||
_x("Ukrainian"), _x("Vietnamese"), _x("Chinese")};
|
||||
|
@ -10,7 +10,7 @@ import org.mortbay.jetty.Server;
|
||||
public class LogsHelper extends HelperBase {
|
||||
public LogsHelper() {}
|
||||
|
||||
/** @since 0.8.11 */
|
||||
/** @since 0.8.12 */
|
||||
public String getJettyVersion() {
|
||||
return Server.getVersion();
|
||||
}
|
||||
|
@ -376,9 +376,8 @@ public class NetDbRenderer {
|
||||
int cost = addr.getCost();
|
||||
if (!((style.equals("SSU") && cost == 5) || (style.equals("NTCP") && cost == 10)))
|
||||
buf.append('[').append(_("cost")).append('=').append("" + cost).append("] ");
|
||||
Properties p = new OrderedProperties();
|
||||
p.putAll(addr.getOptions());
|
||||
for (Map.Entry e : p.entrySet()) {
|
||||
Map p = addr.getOptionsMap();
|
||||
for (Map.Entry e : (Set<Map.Entry>) p.entrySet()) {
|
||||
String name = (String) e.getKey();
|
||||
String val = (String) e.getValue();
|
||||
buf.append('[').append(_(DataHelper.stripHTML(name))).append('=').append(DataHelper.stripHTML(val)).append("] ");
|
||||
@ -387,9 +386,10 @@ public class NetDbRenderer {
|
||||
buf.append("</td></tr>\n");
|
||||
if (full) {
|
||||
buf.append("<tr><td>" + _("Stats") + ": <br><code>");
|
||||
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
|
||||
String key = (String)iter.next();
|
||||
String val = info.getOption(key);
|
||||
Map p = info.getOptionsMap();
|
||||
for (Map.Entry e : (Set<Map.Entry>) p.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
String val = (String) e.getValue();
|
||||
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br>\n");
|
||||
}
|
||||
buf.append("</code></td></tr>\n");
|
||||
@ -412,7 +412,7 @@ public class NetDbRenderer {
|
||||
if (style.equals("NTCP")) {
|
||||
rv |= NTCP;
|
||||
} else if (style.equals("SSU")) {
|
||||
if (addr.getOptions().getProperty("iport0") != null)
|
||||
if (addr.getOption("iport0") != null)
|
||||
rv |= SSUI;
|
||||
else
|
||||
rv |= SSU;
|
||||
|
@ -17,6 +17,7 @@ import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.CoreVersion;
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.Job;
|
||||
@ -27,6 +28,7 @@ import net.i2p.util.ConcurrentHashSet;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.Translate;
|
||||
import net.i2p.util.VersionComparator;
|
||||
|
||||
import org.mortbay.jetty.handler.ContextHandlerCollection;
|
||||
|
||||
@ -95,6 +97,41 @@ public class PluginStarter implements Runnable {
|
||||
log.error("Cannot start nonexistent plugin: " + appName);
|
||||
return false;
|
||||
}
|
||||
|
||||
Properties props = pluginProperties(ctx, appName);
|
||||
String minVersion = ConfigClientsHelper.stripHTML(props, "min-i2p-version");
|
||||
if (minVersion != null &&
|
||||
(new VersionComparator()).compare(CoreVersion.VERSION, minVersion) < 0) {
|
||||
String foo = "Plugin " + appName + " requires I2P version " + minVersion + " or higher";
|
||||
log.error(foo);
|
||||
throw new Exception(foo);
|
||||
}
|
||||
|
||||
minVersion = ConfigClientsHelper.stripHTML(props, "min-java-version");
|
||||
if (minVersion != null &&
|
||||
(new VersionComparator()).compare(System.getProperty("java.version"), minVersion) < 0) {
|
||||
String foo = "Plugin " + appName + " requires Java version " + minVersion + " or higher";
|
||||
log.error(foo);
|
||||
throw new Exception(foo);
|
||||
}
|
||||
|
||||
String jVersion = LogsHelper.jettyVersion();
|
||||
minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version");
|
||||
if (minVersion != null &&
|
||||
(new VersionComparator()).compare(minVersion, jVersion) > 0) {
|
||||
String foo = "Plugin " + appName + " requires Jetty version " + minVersion + " or higher";
|
||||
log.error(foo);
|
||||
throw new Exception(foo);
|
||||
}
|
||||
|
||||
String maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version");
|
||||
if (maxVersion != null &&
|
||||
(new VersionComparator()).compare(maxVersion, jVersion) < 0) {
|
||||
String foo = "Plugin " + appName + " requires Jetty version " + maxVersion + " or lower";
|
||||
log.error(foo);
|
||||
throw new Exception(foo);
|
||||
}
|
||||
|
||||
if (log.shouldLog(Log.INFO))
|
||||
log.info("Starting plugin: " + appName);
|
||||
|
||||
@ -113,8 +150,8 @@ public class PluginStarter implements Runnable {
|
||||
// load and start things in clients.config
|
||||
File clientConfig = new File(pluginDir, "clients.config");
|
||||
if (clientConfig.exists()) {
|
||||
Properties props = new Properties();
|
||||
DataHelper.loadProps(props, clientConfig);
|
||||
Properties cprops = new Properties();
|
||||
DataHelper.loadProps(cprops, clientConfig);
|
||||
List<ClientAppConfig> clients = ClientAppConfig.getClientApps(clientConfig);
|
||||
runClientApps(ctx, pluginDir, clients, "start");
|
||||
}
|
||||
@ -123,7 +160,7 @@ public class PluginStarter implements Runnable {
|
||||
ContextHandlerCollection server = WebAppStarter.getConsoleServer();
|
||||
if (server != null) {
|
||||
File consoleDir = new File(pluginDir, "console");
|
||||
Properties props = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath());
|
||||
Properties wprops = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath());
|
||||
File webappDir = new File(consoleDir, "webapps");
|
||||
String fileNames[] = webappDir.list(RouterConsoleRunner.WarFilenameFilter.instance());
|
||||
if (fileNames != null) {
|
||||
@ -138,7 +175,7 @@ public class PluginStarter implements Runnable {
|
||||
log.error("Skipping duplicate webapp " + warName + " in plugin " + appName);
|
||||
continue;
|
||||
}
|
||||
String enabled = props.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
|
||||
String enabled = wprops.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
|
||||
if (! "false".equals(enabled)) {
|
||||
if (log.shouldLog(Log.INFO))
|
||||
log.info("Starting webapp: " + warName);
|
||||
@ -181,7 +218,6 @@ public class PluginStarter implements Runnable {
|
||||
}
|
||||
|
||||
// add summary bar link
|
||||
Properties props = pluginProperties(ctx, appName);
|
||||
String name = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(ctx));
|
||||
if (name == null)
|
||||
name = ConfigClientsHelper.stripHTML(props, "consoleLinkName");
|
||||
|
@ -334,6 +334,21 @@ public class PluginUpdateHandler extends UpdateHandler {
|
||||
statusDone("<b>" + _("Plugin update requires installed plugin version {0} or lower", maxVersion) + "</b>");
|
||||
return;
|
||||
}
|
||||
oldVersion = LogsHelper.jettyVersion();
|
||||
minVersion = ConfigClientsHelper.stripHTML(props, "min-jetty-version");
|
||||
if (minVersion != null &&
|
||||
(new VersionComparator()).compare(minVersion, oldVersion) > 0) {
|
||||
to.delete();
|
||||
statusDone("<b>" + _("Plugin requires Jetty version {0} or higher", minVersion) + "</b>");
|
||||
return;
|
||||
}
|
||||
maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version");
|
||||
if (maxVersion != null &&
|
||||
(new VersionComparator()).compare(maxVersion, oldVersion) < 0) {
|
||||
to.delete();
|
||||
statusDone("<b>" + _("Plugin requires Jetty version {0} or lower", maxVersion) + "</b>");
|
||||
return;
|
||||
}
|
||||
|
||||
// check if it is running first?
|
||||
try {
|
||||
|
@ -477,6 +477,7 @@ public class RouterConsoleRunner {
|
||||
ctx.addShutdownTask(new NewsShutdown(fetcher, newsThread));
|
||||
// stat summarizer registers its own hook
|
||||
ctx.addShutdownTask(new ServerShutdown());
|
||||
ConfigServiceHandler.registerSignalHandler(ctx);
|
||||
} // else log CRIT ?
|
||||
}
|
||||
|
||||
|
@ -41,6 +41,7 @@
|
||||
<a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
|
||||
<a href="/?lang=da&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a>
|
||||
<a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
|
||||
<a href="/?lang=ee&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ee" title="Eesti" alt="Eesti"></a>
|
||||
<a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a>
|
||||
<a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a>
|
||||
<a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br>
|
||||
|
6100
apps/routerconsole/locale/messages_ee.po
Normal file
6100
apps/routerconsole/locale/messages_ee.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,9 +15,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-12 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-12-02 01:53+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:37+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 10:51+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
@ -34,7 +34,7 @@ msgstr ""
|
||||
#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale.
|
||||
#. If you want the digit separator in your locale, translate as {0}.
|
||||
#. alternates: msec, msecs
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1261
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1348
|
||||
#, java-format
|
||||
msgid "1 ms"
|
||||
msgid_plural "{0,number,####} ms"
|
||||
@ -43,7 +43,7 @@ msgstr[1] "{0,number,####} ms"
|
||||
|
||||
#. seconds
|
||||
#. alternates: secs, sec. 'seconds' is probably too long.
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1265
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1352
|
||||
#, java-format
|
||||
msgid "1 sec"
|
||||
msgid_plural "{0} sec"
|
||||
@ -52,7 +52,7 @@ msgstr[1] "{0} s"
|
||||
|
||||
#. minutes
|
||||
#. alternates: mins, min. 'minutes' is probably too long.
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1269
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1356
|
||||
#, java-format
|
||||
msgid "1 min"
|
||||
msgid_plural "{0} min"
|
||||
@ -61,61 +61,61 @@ msgstr[1] "{0} min"
|
||||
|
||||
#. hours
|
||||
#. alternates: hrs, hr., hrs.
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1273
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1360
|
||||
#, java-format
|
||||
msgid "1 hour"
|
||||
msgid_plural "{0} hours"
|
||||
msgstr[0] "1 hora"
|
||||
msgstr[1] "{0} horas"
|
||||
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1275
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1362
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:315
|
||||
msgid "n/a"
|
||||
msgstr "n/d"
|
||||
|
||||
#. days
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1278
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1365
|
||||
#, java-format
|
||||
msgid "1 day"
|
||||
msgid_plural "{0} days"
|
||||
msgstr[0] "1 día"
|
||||
msgstr[1] "{0} días"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:124
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:128
|
||||
#, java-format
|
||||
msgid "Banned by router hash: {0}"
|
||||
msgstr "Baneado por el hash del router: {0}"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:126
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:130
|
||||
msgid "Banned by router hash"
|
||||
msgstr "baneado por hash del router"
|
||||
|
||||
#. Temporary reason, until the job finishes
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:683
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:756
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:681
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:754
|
||||
#, java-format
|
||||
msgid "IP banned by blocklist.txt entry {0}"
|
||||
msgstr "IP baneada por la blocklist.txt: {0}"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:794
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:793
|
||||
msgid "IPs Banned Until Restart"
|
||||
msgstr "IPs prohibidas hasta el reinicio"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:818
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:817
|
||||
msgid "IPs Permanently Banned"
|
||||
msgstr "IPs permanentemente prohibidas"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:820
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:819
|
||||
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
|
||||
msgid "From"
|
||||
msgstr "De"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:822
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:821
|
||||
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:75
|
||||
msgid "To"
|
||||
msgstr "A"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:858
|
||||
#: ../../../router/java/src/net/i2p/router/Blocklist.java:857
|
||||
#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:410
|
||||
msgid "none"
|
||||
@ -128,9 +128,8 @@ msgstr "ninguno"
|
||||
#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:82
|
||||
#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:124
|
||||
#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:524
|
||||
#, fuzzy
|
||||
msgid "Rejecting tunnels: Starting up"
|
||||
msgstr "rechazando túneles: apagando"
|
||||
msgstr "Rechazando túneles: Iniciando"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:177
|
||||
msgid "Rejecting tunnels: High message delay"
|
||||
@ -250,25 +249,25 @@ msgstr "Entrada de la NetDb"
|
||||
msgid "No transports (hidden or starting up?)"
|
||||
msgstr "No hay transportes (oculto o iniciando?)"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:448
|
||||
msgid "Unreachable on any transport"
|
||||
msgstr "Inalcanzable en cualquier transporte"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:497
|
||||
msgid "Router Transport Addresses"
|
||||
msgstr "Direcciones de transporte del router "
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:502
|
||||
#, java-format
|
||||
msgid "{0} is used for outbound connections only"
|
||||
msgstr "{0} se utiliza sólo para conexiones salientes"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:516
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:137
|
||||
msgid "Help"
|
||||
msgstr "Ayuda"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:517
|
||||
msgid ""
|
||||
"Your transport connection limits are automatically set based on your "
|
||||
"configured bandwidth."
|
||||
@ -276,7 +275,7 @@ msgstr ""
|
||||
"Los límites de conexiones de transporte se ajustan automáticamente basándose "
|
||||
"en el ancho de banda configurado."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519
|
||||
msgid ""
|
||||
"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and "
|
||||
"i2np.udp.maxConnections=nnn on the advanced configuration page."
|
||||
@ -285,12 +284,12 @@ msgstr ""
|
||||
"maxConnections = nnn y i2np.udp.maxConnections = nnn en la página de "
|
||||
"configuración avanzada."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
|
||||
msgid "Definitions"
|
||||
msgstr "Definiciones"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:729
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953
|
||||
#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
|
||||
@ -301,78 +300,78 @@ msgstr "Definiciones"
|
||||
msgid "Peer"
|
||||
msgstr "Par"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522
|
||||
msgid "The remote peer, identified by router hash"
|
||||
msgstr "El par remoto, identificado por el hash del router"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957
|
||||
msgid "Dir"
|
||||
msgstr "Dir"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
|
||||
msgid "Inbound connection"
|
||||
msgstr "Conexión entrante"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526
|
||||
msgid "Outbound connection"
|
||||
msgstr "Conexión saliente"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528
|
||||
msgid "They offered to introduce us (help other peers traverse our firewall)"
|
||||
msgstr ""
|
||||
"Se han ofrecido a introducirnos (a ayudar a otros pares a atravesar nuestro "
|
||||
"cortafuegos)"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530
|
||||
msgid "We offered to introduce them (help other peers traverse their firewall)"
|
||||
msgstr ""
|
||||
"Nos hemos ofrecido a introducirlos (a ayudar a otros compañeros a atravesar "
|
||||
"su cortafuegos)"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531
|
||||
msgid "How long since a packet has been received / sent"
|
||||
msgstr "Cuánto tiempo hace que un paquete ha sido recibido / enviado"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1958
|
||||
msgid "Idle"
|
||||
msgstr "inactivo"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1963
|
||||
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:164
|
||||
msgid "In/Out"
|
||||
msgstr "Entrante/Saliente"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532
|
||||
msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
|
||||
msgstr "Tasa de transferencia de entrada / salida (KBytes por segundo)"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
|
||||
msgid "How long ago this connection was established"
|
||||
msgstr "Cuánto tiempo hace que se estableció esta conexión"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:733
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1968
|
||||
msgid "Up"
|
||||
msgstr "Subida"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970
|
||||
msgid "Skew"
|
||||
msgstr "Desincronización"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
|
||||
msgid "The difference between the peer's clock and your own"
|
||||
msgstr "La diferencia entre el reloj del par y el tuyo"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
|
||||
msgid ""
|
||||
"The congestion window, which is how many bytes can be sent without an "
|
||||
"acknowledgement"
|
||||
@ -380,40 +379,40 @@ msgstr ""
|
||||
"El rango de congestión, que es la cantidad de bytes que se pueden enviar sin "
|
||||
"recibir confirmación"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
|
||||
msgid "The number of sent messages awaiting acknowledgement"
|
||||
msgstr "El número de mensajes enviados a la espera de confirmación"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
|
||||
msgid "The maximum number of concurrent messages to send"
|
||||
msgstr "El número máximo de mensajes simultáneos para enviar"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
|
||||
msgid "The number of pending sends which exceed congestion window"
|
||||
msgstr "El número de envíos pendientes que superen el rango de congestión"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
|
||||
msgid "The slow start threshold"
|
||||
msgstr "El umbral de incicio lento"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
|
||||
msgid "The round trip time in milliseconds"
|
||||
msgstr "El tiempo de ida y vuelta en milisegundos"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1980
|
||||
msgid "Dev"
|
||||
msgstr "Desv"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
|
||||
msgid "The standard deviation of the round trip time in milliseconds"
|
||||
msgstr "La desviación estándar del tiempo de ida y vuelta en milisegundos"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
|
||||
msgid "The retransmit timeout in milliseconds"
|
||||
msgstr "El tiempo de vencimiento de la retransmisión en milisegundos"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
|
||||
msgid ""
|
||||
"Current maximum send packet size / estimated maximum receive packet size "
|
||||
"(bytes)"
|
||||
@ -421,115 +420,115 @@ msgstr ""
|
||||
"Tamaño máximo actual de envío de paquetes / tamaño máximo estimado de "
|
||||
"paquetes entrantes (bytes)"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1987
|
||||
msgid "TX"
|
||||
msgstr "TX"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
|
||||
msgid "The total number of packets sent to the peer"
|
||||
msgstr "El número total de paquetes enviados al par"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1989
|
||||
msgid "RX"
|
||||
msgstr "RX"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
|
||||
msgid "The total number of packets received from the peer"
|
||||
msgstr "El número total de paquetes recibidos del par"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1992
|
||||
msgid "Dup TX"
|
||||
msgstr "TX dup"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
|
||||
msgid "The total number of packets retransmitted to the peer"
|
||||
msgstr "El número total de paquetes retransmitidos al par"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1994
|
||||
msgid "Dup RX"
|
||||
msgstr "RX dup"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
|
||||
msgid "The total number of duplicate packets received from the peer"
|
||||
msgstr "El número total de paquetes duplicados recibidos de los pares"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:423
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:437
|
||||
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
|
||||
msgid "Service"
|
||||
msgstr "Servicio"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:425
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:439
|
||||
msgid "WAN Common Interface Configuration"
|
||||
msgstr "Configuración de la interfaz común WAN"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:426
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:432
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:442
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:447
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:440
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:446
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:427
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:433
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:443
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:441
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:447
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:428
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:434
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:442
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:448
|
||||
msgid "Upstream"
|
||||
msgstr "Corriente de subida"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:429
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:435
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:443
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:449
|
||||
msgid "Downstream"
|
||||
msgstr "Corriente de descarga"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:431
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:445
|
||||
msgid "WAN PPP Connection"
|
||||
msgstr "Conexión WAN PPP"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:436
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:444
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:450
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458
|
||||
msgid "External IP"
|
||||
msgstr "IP externa"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:438
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452
|
||||
msgid "Layer 3 Forwarding"
|
||||
msgstr "Transmisión en capa 3"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:439
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:453
|
||||
msgid "Default Connection Service"
|
||||
msgstr "Servicio de conexión por defecto"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:441
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:455
|
||||
msgid "WAN IP Connection"
|
||||
msgstr "Conexión IP WAN"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:446
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460
|
||||
msgid "WAN Ethernet Link Configuration"
|
||||
msgstr "Configuración del link Ethernet WAN"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:459
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473
|
||||
msgid "Found Device"
|
||||
msgstr "Dispositivo encontrado"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475
|
||||
msgid "Subdevice"
|
||||
msgstr "Subdispositivo"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:482
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:496
|
||||
msgid "UPnP Status"
|
||||
msgstr "Estado UPnP"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:485
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:499
|
||||
msgid ""
|
||||
"UPnP has been disabled; Do you have more than one UPnP Internet Gateway "
|
||||
"Device on your LAN ?"
|
||||
@ -537,26 +536,26 @@ msgstr ""
|
||||
"UPnP se ha deshabilitado; ¿Tienes más de un dispositivo pasarela UPnP en tu "
|
||||
"red local?"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:488
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:502
|
||||
msgid "UPnP has not found any UPnP-aware, compatible device on your LAN."
|
||||
msgstr ""
|
||||
"UPnP no ha encontrado ningún dispositivo UPnP compatible en tu red local."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:496
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:510
|
||||
#, java-format
|
||||
msgid "The current external IP address reported by UPnP is {0}"
|
||||
msgstr "La dirección IP externa reportada por UPnP es {0}."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:498
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:512
|
||||
msgid "The current external IP address is not available."
|
||||
msgstr "La dirección IP externa no está disponible."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:502
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:516
|
||||
#, java-format
|
||||
msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec"
|
||||
msgstr "UPnP informa que la tasa máxima de bits entrantes es {0}bits/seg."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:504
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:518
|
||||
#, java-format
|
||||
msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec"
|
||||
msgstr "UPnP informa que la tasa máxima de bits salientes es {0}bits/seg."
|
||||
@ -564,12 +563,12 @@ msgstr "UPnP informa que la tasa máxima de bits salientes es {0}bits/seg."
|
||||
#. {0} is TCP or UDP
|
||||
#. {1,number,#####} prevents 12345 from being output as 12,345 in the English locale.
|
||||
#. If you want the digit separator in your locale, translate as {1}.
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:513
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527
|
||||
#, java-format
|
||||
msgid "{0} port {1,number,#####} was successfully forwarded by UPnP."
|
||||
msgstr "{0} puerto {1,number,#####} fue enviado con éxito por UPnP."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:515
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:529
|
||||
#, java-format
|
||||
msgid "{0} port {1,number,#####} was not forwarded by UPnP."
|
||||
msgstr "{0} puerto {1,number,#####} no fue transmitido por UPnP."
|
||||
@ -3063,12 +3062,11 @@ msgstr "Noticias chequeadas hace {0}."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/NewsFetcher.java:149
|
||||
msgid "Hide news"
|
||||
msgstr ""
|
||||
msgstr "Esconder noticias"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/NewsFetcher.java:152
|
||||
#, fuzzy
|
||||
msgid "Show news"
|
||||
msgstr "Mostrar túneles"
|
||||
msgstr "Mostrar noticias"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77
|
||||
#, java-format
|
||||
@ -3648,9 +3646,8 @@ msgid "Anonymous webmail client"
|
||||
msgstr "Cliente webmail anónimo"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:69
|
||||
#, fuzzy
|
||||
msgid "Email"
|
||||
msgstr "Webmail"
|
||||
msgstr "Email"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:73
|
||||
msgid "Built-in anonymous BitTorrent Client"
|
||||
@ -3661,9 +3658,8 @@ msgid "Torrents"
|
||||
msgstr "Torrents"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:79
|
||||
#, fuzzy
|
||||
msgid "Local web server"
|
||||
msgstr "Servidor web I2P"
|
||||
msgstr "Servidor web local"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:89
|
||||
msgid "Configure I2P Router"
|
||||
@ -3813,9 +3809,8 @@ msgid "Help with firewall configuration"
|
||||
msgstr "Ayuda con la configuración del cortafuegos"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
|
||||
#, fuzzy
|
||||
msgid "Check network connection and NAT/firewall"
|
||||
msgstr "ERR-No hay pares activos, Compruebe la conexión de red y cortafuegos"
|
||||
msgstr "Comprobar conexión de red y NAT/cortafuegos"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
|
||||
msgid "Reseed"
|
||||
@ -4010,7 +4005,7 @@ msgstr "ahora"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:43
|
||||
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:321
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:323
|
||||
msgid "configure"
|
||||
msgstr "configurar"
|
||||
|
||||
@ -4411,9 +4406,8 @@ msgid "itag2"
|
||||
msgstr "itag2"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:120
|
||||
#, fuzzy
|
||||
msgid "configure bandwidth"
|
||||
msgstr "Configurar ancho de banda del enrutador I2P"
|
||||
msgstr "Configurar ancho de banda"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:231
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:232
|
||||
@ -4525,9 +4519,8 @@ msgid "Enable"
|
||||
msgstr "Activar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:270
|
||||
#, fuzzy
|
||||
msgid "I2P Bandwidth Configuration"
|
||||
msgstr "Ajustes de Estadísticas I2P"
|
||||
msgstr "Configuración de ancho de banda I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:325
|
||||
msgid "Bandwidth limiter"
|
||||
@ -4596,9 +4589,8 @@ msgstr ""
|
||||
"ayudas a la red."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384
|
||||
#, fuzzy
|
||||
msgid "Advanced network configuration page"
|
||||
msgstr "Configuración I2P avanzada"
|
||||
msgstr "Página de configuración de red avanzada"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:332
|
||||
@ -4830,9 +4822,8 @@ msgid "Configure I2P Logging Options"
|
||||
msgstr "Configurar las opciones de registro I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:330
|
||||
#, fuzzy
|
||||
msgid "Log file"
|
||||
msgstr "Nombre de archivo del registro"
|
||||
msgstr "Archivo de registro"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:334
|
||||
msgid "(the symbol '@' will be replaced during log rotation)"
|
||||
@ -6081,7 +6072,7 @@ msgid "I2P Version and Running Environment"
|
||||
msgstr "Versión I2P y entorno de ejecución"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:205
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:313
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:315
|
||||
msgid ""
|
||||
"Note that system information, log timestamps, and log messages may provide "
|
||||
"clues to your location; please review everything you include in a bug report."
|
||||
@ -6143,15 +6134,15 @@ msgstr "registros"
|
||||
msgid "I2P Router Logs"
|
||||
msgstr "Registros del Router I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:315
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:317
|
||||
msgid "Critical Logs"
|
||||
msgstr "Registros críticos"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:319
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:321
|
||||
msgid "Router Logs"
|
||||
msgstr "Registros del router"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:327
|
||||
msgid "Service (Wrapper) Logs"
|
||||
msgstr "Registros de servicio (Wrapper)"
|
||||
|
||||
@ -6229,27 +6220,3 @@ msgstr "Perfil del par"
|
||||
#, java-format
|
||||
msgid "Profile for peer {0}"
|
||||
msgstr "Perfil del par {0}"
|
||||
|
||||
#~ msgid "Anonymous resident webserver"
|
||||
#~ msgstr "Servidor web residente anónimo "
|
||||
|
||||
#~ msgid "Webserver"
|
||||
#~ msgstr "ServidorWeb"
|
||||
|
||||
#~ msgid "Check NAT/firewall"
|
||||
#~ msgstr "Comprobar NAT/cortafuegos"
|
||||
|
||||
#~ msgid "Tunnel Counts By Peer"
|
||||
#~ msgstr "Cantidad de túneles por par"
|
||||
|
||||
#~ msgid "% of total"
|
||||
#~ msgstr "% de todos"
|
||||
|
||||
#~ msgid "Our Tunnels"
|
||||
#~ msgstr "nuestros túneles"
|
||||
|
||||
#~ msgid "Participating Tunnels"
|
||||
#~ msgstr "participando en"
|
||||
|
||||
#~ msgid "Totals"
|
||||
#~ msgstr "Totales"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -14,9 +14,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-12 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:38+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 10:54+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
@ -653,13 +653,12 @@ msgstr ""
|
||||
"suscrita a www.i2p2.i2p."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Subscribing to additional sites is easy, just add them to your <a href="
|
||||
"\"subscriptions\">subscriptions</a> file."
|
||||
msgstr ""
|
||||
"Suscribirse a otros sitios es fácil, sólo tienes que añadirlos a tu archivo "
|
||||
"de <a href=\"subscriptions.jsp\">suscripciones</a>."
|
||||
"Suscribirse a otras páginas es fácil, sólo añádelas a tu archivo de <a href="
|
||||
"\"subscriptions\">subscripciones</a>."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
|
||||
msgid ""
|
||||
|
@ -7,41 +7,42 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:23+0000\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-06-05 16:26+0000\n"
|
||||
"Last-Translator: PolishAnon <b790979@klzlk.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.net/projects/p/I2P/team/pl/)\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:130
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:131
|
||||
#, java-format
|
||||
msgid "Host name \"{0}\" contains illegal character {1}"
|
||||
msgstr "Nazwa hosta \"{0}\" zawiera niedozwolony znak {1}"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:144
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:146
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:153
|
||||
#, java-format
|
||||
msgid "Host name cannot start with \"{0}\""
|
||||
msgstr "Nazwa hosta nie może zaczynać się od \"{0}\""
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:148
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:150
|
||||
#, java-format
|
||||
msgid "Host name cannot end with \"{0}\""
|
||||
msgstr "Nazwa hosta nie może kończyć się na \"{0}\""
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:155
|
||||
#, java-format
|
||||
msgid "Host name cannot contain \"{0}\""
|
||||
msgstr "Nazwa hosta nie może zawierać \"{0}\""
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:158
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Host name \"{0}\" requires conversion to ASCII but the conversion library is "
|
||||
@ -50,28 +51,28 @@ msgstr ""
|
||||
"Nazwa hosta \"{0}\" wymaga konwersji na ASCII, ale ta biblioteka konwersji "
|
||||
"jest niedostępna w tym JVM"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:209
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:210
|
||||
msgid "None"
|
||||
msgstr "Brak"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:217
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:218
|
||||
msgid "Hashcash"
|
||||
msgstr "Hashcash"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:220
|
||||
msgid "Hidden"
|
||||
msgstr "Ukryty"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:221
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:222
|
||||
msgid "Signed"
|
||||
msgstr "Podpisano"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:223
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:224
|
||||
#, java-format
|
||||
msgid "Type {0}"
|
||||
msgstr "Typ {0}"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:233
|
||||
#, java-format
|
||||
msgid "One result for search within filtered list."
|
||||
msgid_plural "{0} results for search within filtered list."
|
||||
@ -79,7 +80,7 @@ msgstr[0] "Jeden wynik wyszukiwania w filtrowanej liście."
|
||||
msgstr[1] "{0} wyniki wyszukiwania w filtrowanej listy."
|
||||
msgstr[2] "{0} wyników wyszukiwania w filtrowanej listy."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:237
|
||||
#, java-format
|
||||
msgid "Filtered list contains 1 entry."
|
||||
msgid_plural "Fltered list contains {0} entries."
|
||||
@ -87,7 +88,7 @@ msgstr[0] "Filtrowana lista zawiera 1 wpis."
|
||||
msgstr[1] "Filtrowana lista zawiera {0} wpisy."
|
||||
msgstr[2] "Filtrowana lista zawiera {0} wpisów."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:242
|
||||
#, java-format
|
||||
msgid "One result for search."
|
||||
msgid_plural "{0} results for search."
|
||||
@ -95,7 +96,7 @@ msgstr[0] "Jeden wynik wyszukiwania."
|
||||
msgstr[1] "{0} wyniki wyszukiwania."
|
||||
msgstr[2] "{0} wyników wyszukiwania."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:251
|
||||
#, java-format
|
||||
msgid "Address book contains 1 entry."
|
||||
msgid_plural "Address book contains {0} entries."
|
||||
@ -103,32 +104,32 @@ msgstr[0] "Książka adresowa zawiera 1 wpis."
|
||||
msgstr[1] "Książka adresowa zawiera {0} wpisy."
|
||||
msgstr[2] "Książka adresowa zawiera {0} wpisów."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
|
||||
#, java-format
|
||||
msgid "Showing {0} of {1}"
|
||||
msgstr "Wyświetlono {0} z {1}"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
|
||||
msgid "Add"
|
||||
msgstr "Dodaj"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:390
|
||||
msgid "Replace"
|
||||
msgstr "Zastąp"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
|
||||
#, java-format
|
||||
msgid "Host name {0} is already in address book, unchanged."
|
||||
msgstr "Nazwa hosta {0} jest już w książce adresowej, bez zmian."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
|
||||
#, java-format
|
||||
msgid ""
|
||||
@ -138,63 +139,63 @@ msgstr ""
|
||||
"Nazwa hosta {0} jest już w książce adresowej z innym miejscem przeznaczenia. "
|
||||
"Kliknij przycisk \"Zmień\", aby nadpisać."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
|
||||
#, java-format
|
||||
msgid "Destination added for {0}."
|
||||
msgstr "Miejsce przeznaczenia dodane dla {0}."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
|
||||
#, java-format
|
||||
msgid "Destination changed for {0}."
|
||||
msgstr "Miejsce przeznaczenia zmienione dla {0}."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:317
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
|
||||
msgid "Warning - host name does not end with \".i2p\""
|
||||
msgstr "Uwaga - nazwa hosta nie kończy się na \".i2p\""
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:320
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
|
||||
msgid "Invalid Base 64 destination."
|
||||
msgstr "Nieprawidłowy miejsca przeznaczenia formatu Base 64."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
|
||||
#, java-format
|
||||
msgid "Invalid host name \"{0}\"."
|
||||
msgstr "Nieprawidłowa nazwa hosta \"{0}\"."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:329
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
|
||||
msgid "Please enter a host name and destination"
|
||||
msgstr "Wpisz nazwę hosta i miejsca przeznaczenia"
|
||||
|
||||
#. clear search when deleting
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:356
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:261
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:258
|
||||
msgid "Delete Entry"
|
||||
msgstr "Usuń wpis"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:334
|
||||
msgid "Delete Selected"
|
||||
msgstr "Usuń zaznaczone"
|
||||
|
||||
#. parameter is a host name
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:347
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:349
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
|
||||
#, java-format
|
||||
msgid "Destination {0} deleted."
|
||||
msgstr "Miejsce przeznaczenia {0} usunięte."
|
||||
|
||||
#. parameter will always be >= 2
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:350
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
|
||||
#, java-format
|
||||
msgid "1 destination deleted."
|
||||
@ -203,30 +204,30 @@ msgstr[0] "1 miejsce przeznaczenia usunięte."
|
||||
msgstr[1] "{0} miejsca przeznaczenia usunięte."
|
||||
msgstr[2] "{0} miejsc przeznaczenia usunięte."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
|
||||
msgid "No entries selected to delete."
|
||||
msgstr "Brak wpisów wybranych do usunięcia."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:360
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:362
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
|
||||
msgid "Address book saved."
|
||||
msgstr "Książka adresowa zapisana."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:363
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:365
|
||||
msgid "ERROR: Could not write addressbook file."
|
||||
msgstr "BŁĄD: Nie można zapisać pliku książki adresowej."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:368
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:370
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the \"back\" or "
|
||||
"\"reload\" button on your browser. Please resubmit."
|
||||
"Invalid form submission, probably because you used the \"back\" or \"reload"
|
||||
"\" button on your browser. Please resubmit."
|
||||
msgstr ""
|
||||
"Nieprawidłowy formularz, prawdopodobnie dlatego, że użyto przycisku "
|
||||
"\"wstecz\" lub \"przeładuj\" w przeglądarce. Proszę prześlij ponownie."
|
||||
"Nieprawidłowy formularz, prawdopodobnie dlatego, że użyto przycisku \"wstecz"
|
||||
"\" lub \"przeładuj\" w przeglądarce. Proszę prześlij ponownie."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
|
||||
@ -294,8 +295,8 @@ msgstr "książka adresowa"
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:120
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:105
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:121
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:120
|
||||
@ -304,7 +305,7 @@ msgstr "Przegląd"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:107
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
|
||||
msgid "Address books"
|
||||
@ -312,7 +313,7 @@ msgstr "Książki adresowe"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:109
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
|
||||
msgid "private"
|
||||
@ -320,7 +321,7 @@ msgstr "prywatne"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:111
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
|
||||
msgid "master"
|
||||
@ -328,7 +329,7 @@ msgstr "głowne"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:113
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
|
||||
msgid "router"
|
||||
@ -336,7 +337,7 @@ msgstr "router"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:115
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
|
||||
msgid "published"
|
||||
@ -344,7 +345,7 @@ msgstr "opublikowane"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:117
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
|
||||
msgid "Subscriptions"
|
||||
@ -352,19 +353,19 @@ msgstr "Subskrypcje"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:119
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguracja"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:123
|
||||
msgid "Address book"
|
||||
msgstr "Książka adresowa"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:131
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
|
||||
msgid "Storage"
|
||||
msgstr "Pamięć"
|
||||
|
||||
@ -403,7 +404,7 @@ msgstr "Linki"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:384
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:253
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
|
||||
msgid "Destination"
|
||||
msgstr "Miejsce przeznaczenia"
|
||||
|
||||
@ -437,7 +438,7 @@ msgid "Add new destination"
|
||||
msgstr "Dodaj nowe miejsce przeznaczenia"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:380
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:158
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:155
|
||||
msgid "Host Name"
|
||||
msgstr "Nazwa hosta"
|
||||
|
||||
@ -452,8 +453,8 @@ msgstr "Wskazówki"
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
|
||||
msgid ""
|
||||
"File and directory paths here are relative to the addressbook's working "
|
||||
"directory, which is normally ~/.i2p/addressbook/ (Linux) or "
|
||||
"%APPDATA%\\I2P\\addressbook\\ (Windows)."
|
||||
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
|
||||
"\\addressbook\\ (Windows)."
|
||||
msgstr ""
|
||||
"Ścieżki do plików i katalogów są podane w stosunku do roboczego katalogu "
|
||||
"książki adresowej, którym jest zwykle ~/.i2p/addressbook/ (Linux) lub "
|
||||
@ -557,59 +558,59 @@ msgstr ""
|
||||
msgid "File to log activity to (change to /dev/null if you like)"
|
||||
msgstr "Plik do logowania działalności (zmień na /dev/null, jeśli chcesz)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:106
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:103
|
||||
msgid "addressbook"
|
||||
msgstr "Ksiazka adresowa"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:174
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:171
|
||||
msgid "Encoded Name"
|
||||
msgstr "Zakodowana Nazwa"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:190
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:187
|
||||
msgid "Base 32 Address"
|
||||
msgstr "Adress Base 32"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:200
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197
|
||||
msgid "Address Helper"
|
||||
msgstr "Pomoc Adresowa"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:204
|
||||
msgid "link"
|
||||
msgstr "link"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:211
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:208
|
||||
msgid "Public Key"
|
||||
msgstr "Klucz publiczny"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:210
|
||||
msgid "ElGamal 2048 bit"
|
||||
msgstr "ElGamal 2048 bitów"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:217
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:214
|
||||
msgid "Signing Key"
|
||||
msgstr "Klucz Podpisywania"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:219
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
|
||||
msgid "DSA 1024 bit"
|
||||
msgstr "DSA 1024 bity"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:223
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
|
||||
msgid "Certificate"
|
||||
msgstr "Certyfikat"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:229
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
|
||||
msgid "Added Date"
|
||||
msgstr "Data dodania"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:235
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
|
||||
msgid "Source"
|
||||
msgstr "Źródło"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:241
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
|
||||
msgid "Last Modified"
|
||||
msgstr "Ostatnio modyfikowano"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:247
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
|
||||
msgid "Notes"
|
||||
msgstr "Notatki"
|
||||
|
||||
@ -635,27 +636,28 @@ msgstr ""
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
|
||||
msgid ""
|
||||
"In the default configuration, the address book is only subscribed to "
|
||||
"www.i2p2.i2p."
|
||||
"In the default configuration, the address book is only subscribed to www."
|
||||
"i2p2.i2p."
|
||||
msgstr ""
|
||||
"W domyślnej konfiguracji, książka adresowa jest zapisana tylko do "
|
||||
"www.i2p2.i2p."
|
||||
"W domyślnej konfiguracji, książka adresowa jest zapisana tylko do www.i2p2."
|
||||
"i2p."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Subscribing to additional sites is easy, just add them to your <a "
|
||||
"href=\"subscriptions.jsp\">subscriptions</a> file."
|
||||
"Subscribing to additional sites is easy, just add them to your <a href="
|
||||
"\"subscriptions\">subscriptions</a> file."
|
||||
msgstr ""
|
||||
"Zapisywanie się do innych witryn jest proste, wystarczy dodać je do pliku <a "
|
||||
"href=\"subscriptions.jsp\">subskrypcje</a>."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
|
||||
msgid ""
|
||||
"For more information on naming in I2P, see <a "
|
||||
"href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
|
||||
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
|
||||
"naming.html\">the overview on www.i2p2.i2p</a>."
|
||||
msgstr ""
|
||||
"Aby uzyskać więcej informacji na temat nazewnictwa w I2P, zobacz <a "
|
||||
"href=\"http://www.i2p2.i2p/naming.html\">przegląd www.i2p2.i2p</a> ."
|
||||
"Aby uzyskać więcej informacji na temat nazewnictwa w I2P, zobacz <a href="
|
||||
"\"http://www.i2p2.i2p/naming.html\">przegląd www.i2p2.i2p</a> ."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
|
||||
msgid "How does the addressbook application work?"
|
||||
@ -680,8 +682,7 @@ msgstr ""
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
|
||||
msgid ""
|
||||
"If configured, the router address book is now written to the \"published\" "
|
||||
"address book, which will be publicly available if you are running an "
|
||||
"eepsite."
|
||||
"address book, which will be publicly available if you are running an eepsite."
|
||||
msgstr ""
|
||||
"Jeżeli skonfigurowana, ksiażka adresowa routera jest teraz zapisana do "
|
||||
"\"opublikowanej\" książki adresowej, która będzie publicznie dostępna jeżeli "
|
||||
@ -723,8 +724,7 @@ msgstr "Plik subskrypcji zawiera listę URLów i2p."
|
||||
msgid ""
|
||||
"The addressbook application regularly checks this list for new eepsites."
|
||||
msgstr ""
|
||||
"Aplikacja książki adresowej regularnie sprawdza te listę dla nowych "
|
||||
"eepsites."
|
||||
"Aplikacja książki adresowej regularnie sprawdza te listę dla nowych eepsites."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
|
||||
msgid "Those URLs refer to published hosts.txt files."
|
||||
@ -749,5 +749,3 @@ msgstr ""
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
|
||||
msgid "See the FAQ for a list of subscription URLs."
|
||||
msgstr "Więcej w FAQ dla listy subskrypcji adresów URL."
|
||||
|
||||
|
||||
|
@ -8,14 +8,15 @@
|
||||
# ducki2p <ducki2p@gmail.com>, 2011.
|
||||
# foo <foo@bar>, 2009.
|
||||
# mixy, 2011.
|
||||
# <punkibastardo@gmail.com>, 2011.
|
||||
# punkibastardo <punkibastardo@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-12 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:33+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 10:48+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
@ -321,7 +322,7 @@ msgstr "Cancelar"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1605
|
||||
msgid "Learn about I2P mail"
|
||||
msgstr ""
|
||||
msgstr "Aprende sobre I2P mail"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1606
|
||||
msgid "Create Account"
|
||||
|
@ -3,166 +3,169 @@
|
||||
# This file is distributed under the same license as the susimail package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# <b790979@klzlk.com>, 2011.
|
||||
# <businesshehe@yahoo.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:24+0000\n"
|
||||
"PO-Revision-Date: 2011-06-01 14:13+0000\n"
|
||||
"Last-Translator: PolishAnon <b790979@klzlk.com>\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 12:27+0000\n"
|
||||
"Last-Translator: Warton <businesshehe@yahoo.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.net/projects/p/I2P/team/pl/)\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:454
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:455
|
||||
msgid "unknown"
|
||||
msgstr "nieznany"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:473
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:474
|
||||
msgid "Warning: no transfer encoding found, fallback to 7bit."
|
||||
msgstr "Uwaga: nie znaleziono kodowania transferu, powrót do 7 bitów"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:478
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:479
|
||||
#, java-format
|
||||
msgid "No encoder found for encoding \\''{0}\\''."
|
||||
msgstr "Nr kodeka dla kodowania \\''{0} \\''."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:484
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:485
|
||||
msgid "Warning: no charset found, fallback to US-ASCII."
|
||||
msgstr "Uwaga: nie znaleziono zestawu znaków, powrót do US-ASCII."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:498
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:499
|
||||
#, java-format
|
||||
msgid "Charset \\''{0}\\'' not supported."
|
||||
msgstr "Zestaw znaków \\''{0} \\' 'nie obsługiwany."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:502
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:503
|
||||
#, java-format
|
||||
msgid "Part ({0}) not shown, because of {1}"
|
||||
msgstr "Część ({0}) nie pokazana ze względu na {1}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:525
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:526
|
||||
msgid "Download"
|
||||
msgstr "Pobierz"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:525
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:526
|
||||
msgid "File is packed into a zipfile for security reasons."
|
||||
msgstr "Plik zapakowany w format ZIP ze względów bezpieczeństwa."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:525
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:526
|
||||
#, java-format
|
||||
msgid "attachment ({0})."
|
||||
msgstr "załącznik ({0})."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:529
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:530
|
||||
#, java-format
|
||||
msgid "Attachment ({0})."
|
||||
msgstr "Załącznik ({0})."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:579
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:580
|
||||
msgid "Need username for authentication."
|
||||
msgstr "Potrzebna nazwę użytkownika do uwierzytelnienia."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:583
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:584
|
||||
msgid "Need password for authentication."
|
||||
msgstr "Potrzebne hasło do uwierzytelniania."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:587
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:588
|
||||
msgid "Need hostname for connect."
|
||||
msgstr "Potrzebuna nazwa host do połączenia."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:592
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:593
|
||||
msgid "Need port number for pop3 connect."
|
||||
msgstr "Potrzeba numer portu pop3 do połączenia."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:599
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:600
|
||||
msgid "POP3 port number is not in range 0..65535."
|
||||
msgstr "Numeru portu POP3 poza zakresem 0..65535."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:605
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:606
|
||||
msgid "POP3 port number is invalid."
|
||||
msgstr "Numeru portu POP3 jest nieprawidłowy."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:611
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:612
|
||||
msgid "Need port number for smtp connect."
|
||||
msgstr "Potrzebny numer portu smtp do połączenia."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:618
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:619
|
||||
msgid "SMTP port number is not in range 0..65535."
|
||||
msgstr "Numeru portu SMTP poza zakresem 0..65535."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:624
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:625
|
||||
msgid "SMTP port number is invalid."
|
||||
msgstr "Numer portu SMTP jest nieprawidłowy."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:671
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:672
|
||||
msgid "User logged out."
|
||||
msgstr "Użytkownik wylogowany."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:675
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:676
|
||||
msgid "Internal error, lost connection."
|
||||
msgstr "Błąd wewnętrzny, połączenie utracone."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:771
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:772
|
||||
#, java-format
|
||||
msgid "On {0} {1} wrote:"
|
||||
msgstr "Dnia {0} {1} napisał:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:818
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:819
|
||||
msgid "begin forwarded mail"
|
||||
msgstr "Rozpocznij przekazywanie poczty"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:840
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:841
|
||||
msgid "end forwarded mail"
|
||||
msgstr "Zakończ przekazywanie poczty"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:847
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1701
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:848
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1720
|
||||
msgid "Could not fetch mail body."
|
||||
msgstr "Nie można pobrać głównej cześci maila"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:875
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:876
|
||||
msgid "Message id not valid."
|
||||
msgstr "ID wiadomości niepoprawne."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:958
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:959
|
||||
#, java-format
|
||||
msgid "No Encoding found for {0}"
|
||||
msgstr "Nie znaleziono kodowania dla {0}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:962
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:963
|
||||
#, java-format
|
||||
msgid "Could not encode data: {0}"
|
||||
msgstr "Nie można zakodować danych: {0}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:967
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:968
|
||||
#, java-format
|
||||
msgid "Error reading uploaded file: {0}"
|
||||
msgstr "Błąd w odczycie wysłanego pliku: {0}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1045
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1046
|
||||
msgid "Error parsing download parameter."
|
||||
msgstr "Błąd pobrania parametru analizy."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1089
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1090
|
||||
msgid "Invalid pagesize number, resetting to default value."
|
||||
msgstr ""
|
||||
"Nieprawidłowy numer rozmiaru strony, resetowanie do wartości domyślnej."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1113
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1114
|
||||
msgid "No messages marked for deletion."
|
||||
msgstr "Brak wiadomości zaznaczonych do usunięcia."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1133
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1134
|
||||
#, java-format
|
||||
msgid "Error deleting message: {0}"
|
||||
msgstr "Błąd podczas usuwania wiadomości: {0}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1144
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1145
|
||||
#, java-format
|
||||
msgid "1 message deleted."
|
||||
msgid_plural "{0} messages deleted."
|
||||
@ -170,12 +173,12 @@ msgstr[0] "1 wiadomość usunięta."
|
||||
msgstr[1] "{0} wiadomości usuniętych."
|
||||
msgstr[2] "{0} wiadomości usunięte."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1264
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1587
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1267
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1604
|
||||
msgid "Login"
|
||||
msgstr "Zaloguj się"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1266
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1269
|
||||
#, java-format
|
||||
msgid "1 Message"
|
||||
msgid_plural "{0} Messages"
|
||||
@ -183,192 +186,197 @@ msgstr[0] "1 wiadomość"
|
||||
msgstr[1] "{0} wiadomości"
|
||||
msgstr[2] "{0} wiadomości"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1268
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1271
|
||||
msgid "Show Message"
|
||||
msgstr "Pokaż wiadomość"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1325
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1333
|
||||
#, java-format
|
||||
msgid "Error decoding content: {0}"
|
||||
msgstr "Błąd dekodowania treści: {0}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1330
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1338
|
||||
msgid "Error decoding content: No encoder found."
|
||||
msgstr "Błąd dekodowania treści: Nie znaleziono enkodera."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1377
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1385
|
||||
msgid "no subject"
|
||||
msgstr "bez tematu"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1394
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1402
|
||||
msgid "Found no valid sender address."
|
||||
msgstr "Nie znaleziono poprawnego adresu nadawcy."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1400
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1408
|
||||
#, java-format
|
||||
msgid "Found no valid address in \\''{0}\\''."
|
||||
msgstr "Nie znaleziono prawidłowego adresu w \\''{0} \\''."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1419
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1427
|
||||
msgid "No recipients found."
|
||||
msgstr "Nie znaleziono odbiorców."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1426
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1434
|
||||
msgid "Quoted printable encoder not available."
|
||||
msgstr "Cytowany drukowalny enkoder nie dostepny."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1431
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1439
|
||||
msgid "Header line encoder not available."
|
||||
msgstr "Enkoder linii nagłówka nie dostępny."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1482
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1490
|
||||
msgid "Mail sent."
|
||||
msgstr "Mail wysłany."
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1519
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1529
|
||||
msgid "Send"
|
||||
msgstr "Wyślij"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1520
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1530
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1521
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1531
|
||||
msgid "Delete Attachment"
|
||||
msgstr "Usuń załącznik"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1522
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1607
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1688
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1532
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1626
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1707
|
||||
msgid "Reload Config"
|
||||
msgstr "Przeładuj Konfiguracje"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1523
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1608
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1689
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1533
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1627
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1708
|
||||
msgid "Logout"
|
||||
msgstr "Wyloguj się"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1546
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1693
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1556
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1712
|
||||
msgid "From:"
|
||||
msgstr "Od:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1547
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1557
|
||||
msgid "To:"
|
||||
msgstr "To:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1548
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1558
|
||||
msgid "Cc:"
|
||||
msgstr "Cc:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1549
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1559
|
||||
msgid "Bcc:"
|
||||
msgstr "Bcc:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1550
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1695
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1560
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1714
|
||||
msgid "Subject:"
|
||||
msgstr "Temat:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1551
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1561
|
||||
msgid "Bcc to self"
|
||||
msgstr "Bcc do siebie"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1554
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1564
|
||||
msgid "New Attachment:"
|
||||
msgstr "Nowy załącznik:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1554
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1564
|
||||
msgid "Upload File"
|
||||
msgstr "Prześlij plik"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1560
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1570
|
||||
msgid "Attachments:"
|
||||
msgstr "Załączniki:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1582
|
||||
#. current postman hq length limits 16/12, new postman version 32/32
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1593
|
||||
msgid "User"
|
||||
msgstr "Użytkownik"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1583
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1594
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
msgstr "Hasło"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1584
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1599
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1585
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1600
|
||||
msgid "POP3-Port"
|
||||
msgstr "POP3-Port"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1586
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1601
|
||||
msgid "SMTP-Port"
|
||||
msgstr "SMTP-Port"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1587
|
||||
msgid "Create Account"
|
||||
msgstr "Załóż konto"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1587
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1604
|
||||
msgid "Reset"
|
||||
msgstr "Zresetuj"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1599
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1605
|
||||
msgid "Learn about I2P mail"
|
||||
msgstr "Dowiedz się więcej o poczcie I2P"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1606
|
||||
msgid "Create Account"
|
||||
msgstr "Załóż konto"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1618
|
||||
msgid "Really delete the marked messages?"
|
||||
msgstr "Czy na pewno usunąć zaznaczone wiadomości?"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1599
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1618
|
||||
msgid "Yes, really delete them!"
|
||||
msgstr "Tak, naprawdę je usuń!"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1601
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1680
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1620
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1699
|
||||
msgid "New"
|
||||
msgstr "Nowe"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1602
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1681
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1621
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1700
|
||||
msgid "Reply"
|
||||
msgstr "Odpowiedz"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1603
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1682
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1622
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1701
|
||||
msgid "Reply All"
|
||||
msgstr "Odpowiedz wszystkim"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1604
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1683
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1623
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1702
|
||||
msgid "Forward"
|
||||
msgstr "Przekaż"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1605
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1684
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1624
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1703
|
||||
msgid "Delete"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1606
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1625
|
||||
msgid "Check Mail"
|
||||
msgstr "Sprawdź pocztę"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1610
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1629
|
||||
msgid "Sender"
|
||||
msgstr "Nadawca"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1611
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1630
|
||||
msgid "Subject"
|
||||
msgstr "Temat"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1612
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1631
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1613
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1632
|
||||
msgid "Size"
|
||||
msgstr "Rozmiar"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1639
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1658
|
||||
#, java-format
|
||||
msgid "1 Byte"
|
||||
msgid_plural "{0} Bytes"
|
||||
@ -376,71 +384,69 @@ msgstr[0] "1 bajt"
|
||||
msgstr[1] "{0} bajtów"
|
||||
msgstr[2] "{0} bajty"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1644
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1663
|
||||
msgid "Mark All"
|
||||
msgstr "Zaznacz wszystkie"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1645
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1664
|
||||
msgid "Invert Selection"
|
||||
msgstr "Odwróć zaznaczenie"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1646
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1665
|
||||
msgid "Clear"
|
||||
msgstr "Wyczyść"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1649
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1650
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1668
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1669
|
||||
msgid "First"
|
||||
msgstr "Pierwsze"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1649
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1650
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1685
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1668
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1669
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1704
|
||||
msgid "Previous"
|
||||
msgstr "Poprzedni"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1651
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1670
|
||||
#, java-format
|
||||
msgid "Page {0} of {1}"
|
||||
msgstr "Strona {0} z {1}"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1653
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1654
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1672
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1673
|
||||
msgid "Last"
|
||||
msgstr "Ostatnie"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1653
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1654
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1686
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1672
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1673
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1705
|
||||
msgid "Next"
|
||||
msgstr "Następne"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1657
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1676
|
||||
msgid "Pagesize:"
|
||||
msgstr "Rozmiar strony:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1658
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1677
|
||||
msgid "Set"
|
||||
msgstr "Ustaw"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1668
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1687
|
||||
msgid "Really delete this message?"
|
||||
msgstr "Czy na pewno usunąć tę wiadomość?"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1668
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1687
|
||||
msgid "Yes, really delete it!"
|
||||
msgstr "Tak, naprawdę to usuń!"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1687
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1706
|
||||
msgid "Back to Folder"
|
||||
msgstr "Powrót do folderu"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1694
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1713
|
||||
msgid "Date:"
|
||||
msgstr "Data:"
|
||||
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1705
|
||||
#: src/src/i2p/susi/webmail/WebMail.java:1724
|
||||
msgid "Could not fetch mail."
|
||||
msgstr "Nie można pobrać poczty."
|
||||
|
||||
|
||||
|
38
build.xml
38
build.xml
@ -34,6 +34,7 @@
|
||||
<echo message=" updater: Package the built files in i2pupdate.zip (extracts safely over existing installs)" />
|
||||
<echo message=" updater200: Updater compressed with pack200 (creates i2pupdate200.zip, 60% smaller)" />
|
||||
<echo message=" updaterWithJavadoc: updater including the javadocs, for display in the console" />
|
||||
<echo message=" updater200WithJavadoc: updater including the javadocs, for display in the console (creates i2pupdate200.zip)" />
|
||||
<echo message=" updaterWithJetty: Updater including Jetty" />
|
||||
<echo message=" updater200withJetty: Updater including Jetty" />
|
||||
<echo message=" updaterWithJettyFixes: updater including local jetty patches" />
|
||||
@ -379,7 +380,7 @@
|
||||
packagenames="*"
|
||||
use="true"
|
||||
splitindex="true"
|
||||
doctitle="I2P Javadocs for Release ${release.number} Build ${build.number}"
|
||||
doctitle="I2P Javadocs for Release ${release.number} Build ${build.number}${build.extra}"
|
||||
windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
|
||||
<group title="Core SDK (i2p.jar)" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:org.xlattice.crypto.filters:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
|
||||
<group title="Streaming Library" packages="net.i2p.client.streaming" />
|
||||
@ -388,7 +389,7 @@
|
||||
<!-- apps and bridges starting here, alphabetical please -->
|
||||
<group title="Addressbook Application" packages="net.i2p.addressbook" />
|
||||
<group title="BOB Bridge" packages="net.i2p.BOB" />
|
||||
<group title="Desktopgui Application" packages="net.i2p.desktopgui.*" />
|
||||
<group title="Desktopgui Application" packages="net.i2p.desktopgui:net.i2p.desktopgui.*" />
|
||||
<group title="I2PSnark Application" packages="org.klomp.snark:org.klomp.snark.*" />
|
||||
<group title="I2PTunnel Application" packages="net.i2p.i2ptunnel:net.i2p.i2ptunnel.*" />
|
||||
<group title="Jetty Logging" packages="org.mortbay.http" />
|
||||
@ -475,7 +476,12 @@
|
||||
<arg value="-f1" />
|
||||
<arg value="-d;" />
|
||||
</exec>
|
||||
<echo message="Build number is ${build.number}" />
|
||||
<exec executable="awk" outputproperty="build.extra" failonerror="false">
|
||||
<arg value="-F"" />
|
||||
<arg value="/public final static String EXTRA/{print $2}" />
|
||||
<arg value="router/java/src/net/i2p/router/RouterVersion.java" />
|
||||
</exec>
|
||||
<echo message="Build number is ${build.number}${build.extra}" />
|
||||
</target>
|
||||
|
||||
<target name="clean" depends="pkgclean" >
|
||||
@ -484,6 +490,9 @@
|
||||
<delete file="i2pinstall.exe" failonerror="false" quiet="true" />
|
||||
<delete file="i2p.exe" failonerror="false" quiet="true" />
|
||||
<delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
|
||||
<delete>
|
||||
<fileset dir="." includes="i2pinstall*jar i2pinstall*bz2" />
|
||||
</delete>
|
||||
<delete file="i2psnark-standalone.zip" failonerror="false" quiet="true" />
|
||||
<delete file="BOB-one.jar" failonerror="false" quiet="true" />
|
||||
<delete dir="core/c/jbigi/bin" />
|
||||
@ -792,8 +801,8 @@
|
||||
<copy todir="pkg-temp/docs/" >
|
||||
<fileset dir="installer/resources/readme/" includes="readme*.html" />
|
||||
<fileset dir="installer/resources/proxy/" includes="*.ht" />
|
||||
<!-- lang_ar.png added in 0.8.4; a1,a2,je, and eu.png added in 0.8.9; gg.png added in 0.8.10 -->
|
||||
<fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/a1.png icons/flags/a2.png" />
|
||||
<!-- lang_ar.png added in 0.8.4; a1,a2,je, and eu.png added in 0.8.9; gg.png added in 0.8.10; im.png added in 0.8.12 -->
|
||||
<fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/im.png icons/flags/a1.png icons/flags/a2.png" />
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
@ -812,6 +821,7 @@
|
||||
<target name="updater200WithJettyFixesAndJbigi" depends="prepjupdatefixes, prepjbigiupdate, preplicenses, pack200, zipit200" />
|
||||
<target name="updater" depends="prepupdate, preplicenses, zipit" />
|
||||
<target name="updaterWithJavadoc" depends="prepupdate, preplicenses, copyJavadoc, zipit" />
|
||||
<target name="updater200WithJavadoc" depends="prepupdate, preplicenses, copyJavadoc, pack200, zipit200" />
|
||||
<target name="updaterWithGeoIP" depends="prepupdate, prepgeoupdate, preplicenses, zipit" />
|
||||
<target name="updaterWithJetty" depends="prepjupdate, preplicenses, zipit" />
|
||||
<target name="updater200WithJetty" depends="prepjupdate, preplicenses, pack200, zipit200" />
|
||||
@ -1048,14 +1058,14 @@
|
||||
<mkdir dir="pkg-temp/installer" />
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.util.tr" value="" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-freebsd-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_freebsd-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
</target>
|
||||
|
||||
<target name="installer-linux" depends="clean, preppkg-linux-only, getReleaseNumber, getBuildNumber, buildProperties, util-list-changes, izpack-patches" >
|
||||
<mkdir dir="pkg-temp/installer" />
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.util.tr" value="" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-linux-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_linux-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
</target>
|
||||
|
||||
|
||||
@ -1064,7 +1074,7 @@
|
||||
<mkdir dir="pkg-temp/osx" />
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.util.tr" value="" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-osx-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_osx-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<ant target="installer2app" />
|
||||
<delete dir="pkg-temp/osx" />
|
||||
</target>
|
||||
@ -1077,21 +1087,21 @@
|
||||
<mkdir dir="pkg-temp/osx" />
|
||||
<exec executable="python" failonerror="true">
|
||||
<arg value="${user.home}/IzPack/utils/wrappers/izpack2app/izpack2app.py" />
|
||||
<arg value="${basedir}/i2pinstall_${release.number}-osx-only.jar" />
|
||||
<arg value="${basedir}/pkg-temp/osx/i2p-${release.number}-osx-install.app" />
|
||||
<arg value="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_osx-only.jar" />
|
||||
<arg value="${basedir}/pkg-temp/osx/i2p-${release.number}-${build.number}${build.extra}_osx-install.app" />
|
||||
</exec>
|
||||
<exec executable="chmod" failonerror="true" osfamily="unix">
|
||||
<arg value="755" />
|
||||
<arg value="${basedir}/pkg-temp/osx/i2p-${release.number}-osx-install.app/Contents/MacOS/JavaApplicationStub" />
|
||||
<arg value="${basedir}/pkg-temp/osx/i2p-${release.number}-${build.number}${build.extra}_osx-install.app/Contents/MacOS/JavaApplicationStub" />
|
||||
</exec>
|
||||
<exec executable="tar" osfamily="unix" failonerror="true">
|
||||
<arg value="--owner=root" />
|
||||
<arg value="--group=root" />
|
||||
<arg value="-cjvf" />
|
||||
<arg value="${basedir}/i2pinstall_${release.number}-osx.tar.bz2" />
|
||||
<arg value="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_osx.tar.bz2" />
|
||||
<arg value="-C" />
|
||||
<arg value="${basedir}/pkg-temp/osx" />
|
||||
<arg value="i2p-${release.number}-osx-install.app" />
|
||||
<arg value="i2p-${release.number}-${build.number}${build.extra}_osx-install.app" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
@ -1126,7 +1136,7 @@
|
||||
<attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-windows-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<izpack input="${basedir}/installer/install.xml" output="${basedir}/i2pinstall_${release.number}-${build.number}${build.extra}_windows-only.jar" installerType="standard" basedir="${basedir}" />
|
||||
<delete dir="pkg-temp/win" />
|
||||
</target>
|
||||
|
||||
|
@ -67,6 +67,6 @@ fi
|
||||
echo "Compiling C code..."
|
||||
rm -f jbigi.o $LIBFILE
|
||||
$CC -c $COMPILEFLAGS $INCLUDES ../../jbigi/src/jbigi.c || exit 1
|
||||
$CC $LINKFLAGS $INCLUDES $INCLUDELIBS -o $LIBFILE jbigi.o $STATICLIBS || exit 1
|
||||
$CC $LINKFLAGS $INCLUDES -o $LIBFILE jbigi.o $INCLUDELIBS $STATICLIBS || exit 1
|
||||
|
||||
exit 0
|
||||
|
@ -16,7 +16,7 @@ package net.i2p;
|
||||
public class CoreVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = "0.8.11";
|
||||
public final static String VERSION = "0.8.12";
|
||||
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Core version: " + VERSION);
|
||||
|
@ -118,6 +118,17 @@ public class DataHelper {
|
||||
public static Properties readProperties(InputStream rawStream)
|
||||
throws DataFormatException, IOException {
|
||||
Properties props = new OrderedProperties();
|
||||
readProperties(rawStream, props);
|
||||
return props;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ditto, load into an existing properties
|
||||
* @param props the Properties to load into
|
||||
* @since 0.8.13
|
||||
*/
|
||||
public static Properties readProperties(InputStream rawStream, Properties props)
|
||||
throws DataFormatException, IOException {
|
||||
long size = readLong(rawStream, 2);
|
||||
byte data[] = new byte[(int) size];
|
||||
int read = read(rawStream, data);
|
||||
@ -1268,6 +1279,8 @@ public class DataHelper {
|
||||
* Why? Just because it has to be consistent so signing will work.
|
||||
* How to spec as returning the same type as the param?
|
||||
* DEPRECATED - Only used by RouterInfo.
|
||||
*
|
||||
* @return a new list
|
||||
*/
|
||||
public static List<? extends DataStructure> sortStructures(Collection<? extends DataStructure> dataStructures) {
|
||||
if (dataStructures == null) return Collections.EMPTY_LIST;
|
||||
|
@ -124,16 +124,22 @@ public abstract class DatabaseEntry extends DataStructureImpl {
|
||||
/**
|
||||
* Configure the proof that the entity stands behind the info here
|
||||
*
|
||||
* @throws IllegalStateException if already signed
|
||||
*/
|
||||
public void setSignature(Signature signature) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
_signature = signature;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sign the structure using the supplied signing key
|
||||
*
|
||||
* @throws IllegalStateException if already signed
|
||||
*/
|
||||
public void sign(SigningPrivateKey key) throws DataFormatException {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
byte[] bytes = getBytes();
|
||||
if (bytes == null) throw new DataFormatException("Not enough data to sign");
|
||||
// now sign with the key
|
||||
|
@ -12,6 +12,7 @@ package net.i2p.data;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
@ -22,16 +23,24 @@ import net.i2p.util.OrderedProperties;
|
||||
/**
|
||||
* Defines a method of communicating with a router
|
||||
*
|
||||
* For efficiency, the options methods and structures here are unsynchronized.
|
||||
* Initialize the structure with readBytes(), or call the setOptions().
|
||||
* Don't change it after that.
|
||||
*
|
||||
* To ensure integrity of the RouterInfo, methods that change an element of the
|
||||
* RouterInfo will throw an IllegalStateException after the RouterInfo is signed.
|
||||
*
|
||||
* @author jrandom
|
||||
*/
|
||||
public class RouterAddress extends DataStructureImpl {
|
||||
private int _cost;
|
||||
private Date _expiration;
|
||||
private String _transportStyle;
|
||||
private Properties _options;
|
||||
private final Properties _options;
|
||||
|
||||
public RouterAddress() {
|
||||
_cost = -1;
|
||||
_options = new OrderedProperties();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,28 +94,59 @@ public class RouterAddress extends DataStructureImpl {
|
||||
/**
|
||||
* Configure the type of transport that must be used to communicate on this address
|
||||
*
|
||||
* @throws IllegalStateException if was already set
|
||||
*/
|
||||
public void setTransportStyle(String transportStyle) {
|
||||
if (_transportStyle != null)
|
||||
throw new IllegalStateException();
|
||||
_transportStyle = transportStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the transport specific options necessary for communication
|
||||
*
|
||||
* @deprecated use getOptionsMap()
|
||||
* @return sorted, non-null, NOT a copy, do not modify
|
||||
*/
|
||||
public Properties getOptions() {
|
||||
return _options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the transport specific options necessary for communication
|
||||
* Retrieve the transport specific options necessary for communication
|
||||
*
|
||||
* @return an unmodifiable view, non-null, sorted
|
||||
* @since 0.8.13
|
||||
*/
|
||||
public void setOptions(Properties options) {
|
||||
_options = options;
|
||||
public Map getOptionsMap() {
|
||||
return Collections.unmodifiableMap(_options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 0.8.13
|
||||
*/
|
||||
public String getOption(String opt) {
|
||||
return _options.getProperty(opt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the transport specific options necessary for communication.
|
||||
* Makes a copy.
|
||||
* @param options non-null
|
||||
* @throws IllegalStateException if was already set
|
||||
*/
|
||||
public void setOptions(Properties options) {
|
||||
if (!_options.isEmpty())
|
||||
throw new IllegalStateException();
|
||||
_options.putAll(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IllegalStateException if was already read in
|
||||
*/
|
||||
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||
if (_transportStyle != null)
|
||||
throw new IllegalStateException();
|
||||
_cost = (int) DataHelper.readLong(in, 1);
|
||||
_expiration = DataHelper.readDate(in);
|
||||
_transportStyle = DataHelper.readString(in);
|
||||
@ -115,11 +155,11 @@ public class RouterAddress extends DataStructureImpl {
|
||||
_transportStyle = "SSU";
|
||||
else if (_transportStyle.equals("NTCP"))
|
||||
_transportStyle = "NTCP";
|
||||
_options = DataHelper.readProperties(in);
|
||||
DataHelper.readProperties(in, _options);
|
||||
}
|
||||
|
||||
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
||||
if ((_cost < 0) || (_transportStyle == null) || (_options == null))
|
||||
if ((_cost < 0) || (_transportStyle == null))
|
||||
throw new DataFormatException("Not enough data to write a router address");
|
||||
DataHelper.writeLong(out, 1, _cost);
|
||||
DataHelper.writeDate(out, _expiration);
|
||||
@ -131,11 +171,12 @@ public class RouterAddress extends DataStructureImpl {
|
||||
public boolean equals(Object object) {
|
||||
if ((object == null) || !(object instanceof RouterAddress)) return false;
|
||||
RouterAddress addr = (RouterAddress) object;
|
||||
// let's keep this fast as we are putting an address into the RouterInfo set frequently
|
||||
return
|
||||
_cost == addr._cost &&
|
||||
DataHelper.eq(_transportStyle, addr._transportStyle) &&
|
||||
DataHelper.eq(_options, addr._options) &&
|
||||
DataHelper.eq(_expiration, addr._expiration);
|
||||
DataHelper.eq(_transportStyle, addr._transportStyle);
|
||||
//DataHelper.eq(_options, addr._options) &&
|
||||
//DataHelper.eq(_expiration, addr._expiration);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -161,9 +202,7 @@ public class RouterAddress extends DataStructureImpl {
|
||||
buf.append("\n\tExpiration: ").append(_expiration);
|
||||
if (_options != null) {
|
||||
buf.append("\n\tOptions: #: ").append(_options.size());
|
||||
Properties p = new OrderedProperties();
|
||||
p.putAll(_options);
|
||||
for (Map.Entry e : p.entrySet()) {
|
||||
for (Map.Entry e : _options.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
String val = (String) e.getValue();
|
||||
buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
|
||||
|
@ -19,6 +19,7 @@ import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.Vector;
|
||||
@ -32,6 +33,13 @@ import net.i2p.util.OrderedProperties;
|
||||
* Defines the data that a router either publishes to the global routing table or
|
||||
* provides to trusted peers.
|
||||
*
|
||||
* For efficiency, the methods and structures here are now unsynchronized.
|
||||
* Initialize the RI with readBytes(), or call the setters and then sign() in a single thread.
|
||||
* Don't change it after that.
|
||||
*
|
||||
* To ensure integrity of the RouterInfo, methods that change an element of the
|
||||
* RouterInfo will throw an IllegalStateException after the RouterInfo is signed.
|
||||
*
|
||||
* @author jrandom
|
||||
*/
|
||||
public class RouterInfo extends DatabaseEntry {
|
||||
@ -41,7 +49,7 @@ public class RouterInfo extends DatabaseEntry {
|
||||
private final Set<RouterAddress> _addresses;
|
||||
/** may be null to save memory, no longer final */
|
||||
private Set<Hash> _peers;
|
||||
private /* FIXME final FIXME */ Properties _options;
|
||||
private final Properties _options;
|
||||
private volatile boolean _validated;
|
||||
private volatile boolean _isValid;
|
||||
private volatile String _stringified;
|
||||
@ -67,14 +75,19 @@ public class RouterInfo extends DatabaseEntry {
|
||||
_options = new OrderedProperties();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used only by Router and PublishLocalRouterInfoJob.
|
||||
* Copies ONLY the identity and peers.
|
||||
* Does not copy published, addresses, options, or signature.
|
||||
*/
|
||||
public RouterInfo(RouterInfo old) {
|
||||
this();
|
||||
setIdentity(old.getIdentity());
|
||||
setPublished(old.getPublished());
|
||||
setAddresses(old.getAddresses());
|
||||
//setPublished(old.getPublished());
|
||||
//setAddresses(old.getAddresses());
|
||||
setPeers(old.getPeers());
|
||||
setOptions(old.getOptions());
|
||||
setSignature(old.getSignature());
|
||||
//setOptions(old.getOptions());
|
||||
//setSignature(old.getSignature());
|
||||
// copy over _byteified?
|
||||
}
|
||||
|
||||
@ -90,12 +103,6 @@ public class RouterInfo extends DatabaseEntry {
|
||||
return KEY_TYPE_ROUTERINFO;
|
||||
}
|
||||
|
||||
private void resetCache() {
|
||||
_stringified = null;
|
||||
_byteified = null;
|
||||
_hashCodeInitialized = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the identity of the router represented
|
||||
*
|
||||
@ -107,10 +114,12 @@ public class RouterInfo extends DatabaseEntry {
|
||||
/**
|
||||
* Configure the identity of the router represented
|
||||
*
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void setIdentity(RouterIdentity ident) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
_identity = ident;
|
||||
resetCache();
|
||||
// We only want to cache the bytes for our own RI, which is frequently written.
|
||||
// To cache for all RIs doubles the RI memory usage.
|
||||
// setIdentity() is only called when we are creating our own RI.
|
||||
@ -133,35 +142,36 @@ public class RouterInfo extends DatabaseEntry {
|
||||
/**
|
||||
* Date on which it was published, in milliseconds since Midnight GMT on Jan 01, 1970
|
||||
*
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void setPublished(long published) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
_published = published;
|
||||
resetCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the set of RouterAddress structures at which this
|
||||
* router can be contacted.
|
||||
*
|
||||
* @return unmodifiable view, non-null
|
||||
*/
|
||||
public Set<RouterAddress> getAddresses() {
|
||||
synchronized (_addresses) {
|
||||
return new HashSet(_addresses);
|
||||
}
|
||||
return Collections.unmodifiableSet(_addresses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify a set of RouterAddress structures at which this router
|
||||
* can be contacted.
|
||||
*
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void setAddresses(Set<RouterAddress> addresses) {
|
||||
synchronized (_addresses) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
_addresses.clear();
|
||||
if (addresses != null) _addresses.addAll(addresses);
|
||||
}
|
||||
resetCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a set of SHA-256 hashes of RouterIdentities from routers
|
||||
@ -180,8 +190,11 @@ public class RouterInfo extends DatabaseEntry {
|
||||
* this router can be reached through.
|
||||
*
|
||||
* @deprecated Implemented here but unused elsewhere
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void setPeers(Set<Hash> peers) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
if (peers == null || peers.isEmpty()) {
|
||||
_peers = null;
|
||||
return;
|
||||
@ -192,38 +205,47 @@ public class RouterInfo extends DatabaseEntry {
|
||||
_peers.clear();
|
||||
_peers.addAll(peers);
|
||||
}
|
||||
resetCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a set of options or statistics that the router can expose
|
||||
* Retrieve a set of options or statistics that the router can expose.
|
||||
*
|
||||
* @deprecated use getOptionsMap()
|
||||
* @return sorted, non-null, NOT a copy, do not modify!!!
|
||||
*/
|
||||
public Properties getOptions() {
|
||||
if (_options == null) return new Properties();
|
||||
synchronized (_options) {
|
||||
return (Properties) _options.clone();
|
||||
}
|
||||
}
|
||||
public String getOption(String opt) {
|
||||
if (_options == null) return null;
|
||||
synchronized (_options) {
|
||||
return _options.getProperty(opt);
|
||||
}
|
||||
return _options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a set of options or statistics that the router can expose
|
||||
* Retrieve a set of options or statistics that the router can expose.
|
||||
*
|
||||
* @return an unmodifiable view, non-null, sorted
|
||||
* @since 0.8.13
|
||||
*/
|
||||
public Map getOptionsMap() {
|
||||
return Collections.unmodifiableMap(_options);
|
||||
}
|
||||
|
||||
public String getOption(String opt) {
|
||||
return _options.getProperty(opt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a set of options or statistics that the router can expose.
|
||||
* Makes a copy.
|
||||
*
|
||||
* @param options if null, clears current options
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void setOptions(Properties options) {
|
||||
synchronized (_options) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
|
||||
_options.clear();
|
||||
if (options != null)
|
||||
_options.putAll(options);
|
||||
}
|
||||
resetCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write out the raw payload of the routerInfo, excluding the signature. This
|
||||
@ -234,14 +256,14 @@ public class RouterInfo extends DatabaseEntry {
|
||||
protected byte[] getBytes() throws DataFormatException {
|
||||
if (_byteified != null) return _byteified;
|
||||
if (_identity == null) throw new DataFormatException("Router identity isn't set? wtf!");
|
||||
if (_addresses == null) throw new DataFormatException("Router addressess isn't set? wtf!");
|
||||
if (_options == null) throw new DataFormatException("Router options isn't set? wtf!");
|
||||
|
||||
//long before = Clock.getInstance().now();
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream(6*1024);
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream(2*1024);
|
||||
try {
|
||||
_identity.writeBytes(out);
|
||||
DataHelper.writeDate(out, new Date(_published));
|
||||
// avoid thrashing objects
|
||||
//DataHelper.writeDate(out, new Date(_published));
|
||||
DataHelper.writeLong(out, 8, _published);
|
||||
int sz = _addresses.size();
|
||||
if (sz <= 0 || isHidden()) {
|
||||
// Do not send IP address to peers in hidden mode
|
||||
@ -249,11 +271,12 @@ public class RouterInfo extends DatabaseEntry {
|
||||
} else {
|
||||
DataHelper.writeLong(out, 1, sz);
|
||||
Collection<RouterAddress> addresses = _addresses;
|
||||
if (sz > 1)
|
||||
if (sz > 1) {
|
||||
// WARNING this sort algorithm cannot be changed, as it must be consistent
|
||||
// network-wide. The signature is not checked at readin time, but only
|
||||
// later, and the addresses are stored in a Set, not a List.
|
||||
addresses = (Collection<RouterAddress>) DataHelper.sortStructures(addresses);
|
||||
}
|
||||
for (RouterAddress addr : addresses) {
|
||||
addr.writeBytes(out);
|
||||
}
|
||||
@ -293,7 +316,7 @@ public class RouterInfo extends DatabaseEntry {
|
||||
* Determine whether this router info is authorized with a valid signature
|
||||
*
|
||||
*/
|
||||
public synchronized boolean isValid() {
|
||||
public boolean isValid() {
|
||||
if (!_validated) doValidate();
|
||||
return _isValid;
|
||||
}
|
||||
@ -304,11 +327,7 @@ public class RouterInfo extends DatabaseEntry {
|
||||
* @return -1 if unknown
|
||||
*/
|
||||
public int getNetworkId() {
|
||||
if (_options == null) return -1;
|
||||
String id = null;
|
||||
synchronized (_options) {
|
||||
id = _options.getProperty(PROP_NETWORK_ID);
|
||||
}
|
||||
String id = _options.getProperty(PROP_NETWORK_ID);
|
||||
if (id != null) {
|
||||
try {
|
||||
return Integer.parseInt(id);
|
||||
@ -322,11 +341,7 @@ public class RouterInfo extends DatabaseEntry {
|
||||
* @return non-null, empty string if none
|
||||
*/
|
||||
public String getCapabilities() {
|
||||
if (_options == null) return "";
|
||||
String capabilities = null;
|
||||
synchronized (_options) {
|
||||
capabilities = _options.getProperty(PROP_CAPABILITIES);
|
||||
}
|
||||
String capabilities = _options.getProperty(PROP_CAPABILITIES);
|
||||
if (capabilities != null)
|
||||
return capabilities;
|
||||
else
|
||||
@ -358,20 +373,27 @@ public class RouterInfo extends DatabaseEntry {
|
||||
return (bwTier);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void addCapability(char cap) {
|
||||
if (_options == null) _options = new OrderedProperties();
|
||||
synchronized (_options) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
|
||||
String caps = _options.getProperty(PROP_CAPABILITIES);
|
||||
if (caps == null)
|
||||
_options.setProperty(PROP_CAPABILITIES, ""+cap);
|
||||
else if (caps.indexOf(cap) == -1)
|
||||
_options.setProperty(PROP_CAPABILITIES, caps + cap);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IllegalStateException if RouterInfo is already signed
|
||||
*/
|
||||
public void delCapability(char cap) {
|
||||
if (_options == null) return;
|
||||
synchronized (_options) {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
|
||||
String caps = _options.getProperty(PROP_CAPABILITIES);
|
||||
int idx;
|
||||
if (caps == null) {
|
||||
@ -385,7 +407,6 @@ public class RouterInfo extends DatabaseEntry {
|
||||
_options.setProperty(PROP_CAPABILITIES, buf.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the router was published recently (within the given age milliseconds).
|
||||
@ -409,13 +430,10 @@ public class RouterInfo extends DatabaseEntry {
|
||||
*
|
||||
*/
|
||||
public RouterAddress getTargetAddress(String transportStyle) {
|
||||
synchronized (_addresses) {
|
||||
for (Iterator iter = _addresses.iterator(); iter.hasNext(); ) {
|
||||
RouterAddress addr = (RouterAddress)iter.next();
|
||||
for (RouterAddress addr : _addresses) {
|
||||
if (addr.getTransportStyle().equals(transportStyle))
|
||||
return addr;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -425,22 +443,19 @@ public class RouterInfo extends DatabaseEntry {
|
||||
*/
|
||||
public List<RouterAddress> getTargetAddresses(String transportStyle) {
|
||||
List<RouterAddress> ret = new Vector<RouterAddress>();
|
||||
synchronized(this._addresses) {
|
||||
for(Object o : this._addresses) {
|
||||
RouterAddress addr = (RouterAddress)o;
|
||||
for (RouterAddress addr : _addresses) {
|
||||
if(addr.getTransportStyle().equals(transportStyle))
|
||||
ret.add(addr);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Actually validate the signature
|
||||
*/
|
||||
private synchronized void doValidate() {
|
||||
_validated = true;
|
||||
private void doValidate() {
|
||||
_isValid = super.verifySignature();
|
||||
_validated = true;
|
||||
|
||||
if (!_isValid) {
|
||||
byte data[] = null;
|
||||
@ -459,15 +474,21 @@ public class RouterInfo extends DatabaseEntry {
|
||||
|
||||
/**
|
||||
* This does NOT validate the signature
|
||||
*
|
||||
* @throws IllegalStateException if RouterInfo was already read in
|
||||
*/
|
||||
public synchronized void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||
if (_signature != null)
|
||||
throw new IllegalStateException();
|
||||
_identity = new RouterIdentity();
|
||||
_identity.readBytes(in);
|
||||
Date when = DataHelper.readDate(in);
|
||||
if (when == null)
|
||||
_published = 0;
|
||||
else
|
||||
_published = when.getTime();
|
||||
// avoid thrashing objects
|
||||
//Date when = DataHelper.readDate(in);
|
||||
//if (when == null)
|
||||
// _published = 0;
|
||||
//else
|
||||
// _published = when.getTime();
|
||||
_published = DataHelper.readLong(in, 8);
|
||||
int numAddresses = (int) DataHelper.readLong(in, 1);
|
||||
for (int i = 0; i < numAddresses; i++) {
|
||||
RouterAddress address = new RouterAddress();
|
||||
@ -485,11 +506,10 @@ public class RouterInfo extends DatabaseEntry {
|
||||
_peers.add(peerIdentityHash);
|
||||
}
|
||||
}
|
||||
_options = DataHelper.readProperties(in);
|
||||
DataHelper.readProperties(in, _options);
|
||||
_signature = new Signature();
|
||||
_signature.readBytes(in);
|
||||
|
||||
resetCache();
|
||||
|
||||
//_log.debug("Read routerInfo: " + toString());
|
||||
}
|
||||
@ -497,13 +517,13 @@ public class RouterInfo extends DatabaseEntry {
|
||||
/**
|
||||
* This does NOT validate the signature
|
||||
*/
|
||||
public synchronized void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
||||
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
||||
if (_identity == null) throw new DataFormatException("Missing identity");
|
||||
if (_published < 0) throw new DataFormatException("Invalid published date: " + _published);
|
||||
if (_signature == null) throw new DataFormatException("Signature is null");
|
||||
//if (!isValid())
|
||||
// throw new DataFormatException("Data is not valid");
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
|
||||
baos.write(getBytes());
|
||||
_signature.writeBytes(baos);
|
||||
|
||||
@ -518,10 +538,11 @@ public class RouterInfo extends DatabaseEntry {
|
||||
RouterInfo info = (RouterInfo) object;
|
||||
return DataHelper.eq(_identity, info.getIdentity())
|
||||
&& DataHelper.eq(_signature, info.getSignature())
|
||||
&& _published == info.getPublished()
|
||||
&& DataHelper.eq(_addresses, info.getAddresses())
|
||||
&& DataHelper.eq(_options, info.getOptions())
|
||||
&& DataHelper.eq(getPeers(), info.getPeers());
|
||||
&& _published == info.getPublished();
|
||||
// Let's speed up the NetDB
|
||||
//&& DataHelper.eq(_addresses, info.getAddresses())
|
||||
//&& DataHelper.eq(_options, info.getOptions())
|
||||
//&& DataHelper.eq(getPeers(), info.getPeers());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -541,23 +562,19 @@ public class RouterInfo extends DatabaseEntry {
|
||||
buf.append("\n\tIdentity: ").append(_identity);
|
||||
buf.append("\n\tSignature: ").append(_signature);
|
||||
buf.append("\n\tPublished on: ").append(new Date(_published));
|
||||
Set addresses = _addresses; // getAddresses()
|
||||
buf.append("\n\tAddresses: #: ").append(addresses.size());
|
||||
for (Iterator iter = addresses.iterator(); iter.hasNext();) {
|
||||
RouterAddress addr = (RouterAddress) iter.next();
|
||||
buf.append("\n\tAddresses: #: ").append(_addresses.size());
|
||||
for (RouterAddress addr : _addresses) {
|
||||
buf.append("\n\t\tAddress: ").append(addr);
|
||||
}
|
||||
Set peers = getPeers();
|
||||
Set<Hash> peers = getPeers();
|
||||
buf.append("\n\tPeers: #: ").append(peers.size());
|
||||
for (Iterator iter = peers.iterator(); iter.hasNext();) {
|
||||
Hash hash = (Hash) iter.next();
|
||||
for (Hash hash : peers) {
|
||||
buf.append("\n\t\tPeer hash: ").append(hash);
|
||||
}
|
||||
Properties options = _options; // getOptions();
|
||||
buf.append("\n\tOptions: #: ").append(options.size());
|
||||
for (Iterator iter = options.keySet().iterator(); iter.hasNext();) {
|
||||
String key = (String) iter.next();
|
||||
String val = options.getProperty(key);
|
||||
buf.append("\n\tOptions: #: ").append(_options.size());
|
||||
for (Map.Entry e : _options.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
String val = (String) e.getValue();
|
||||
buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
|
||||
}
|
||||
buf.append("]");
|
||||
|
@ -220,7 +220,8 @@ public class EepGet {
|
||||
if (username != null && password != null)
|
||||
get.addAuthorization(username, password);
|
||||
get.addStatusListener(get.new CLIStatusListener(markSize, lineLen));
|
||||
get.fetch(CONNECT_TIMEOUT, -1, inactivityTimeout);
|
||||
if (!get.fetch(CONNECT_TIMEOUT, -1, inactivityTimeout))
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
public static String suggestName(String url) {
|
||||
|
@ -92,6 +92,7 @@ public class EepHead extends EepGet {
|
||||
System.err.println("Etag: " + get.getETag());
|
||||
} else {
|
||||
System.err.println("Failed " + url);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -260,21 +260,24 @@ public class LogManager {
|
||||
|
||||
/**
|
||||
* Called periodically by the log writer's thread
|
||||
*
|
||||
* Do not log here, deadlock of LogWriter
|
||||
*/
|
||||
void rereadConfig() {
|
||||
// perhaps check modification time
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Rereading configuration file");
|
||||
//if (_log.shouldLog(Log.DEBUG))
|
||||
// _log.debug("Rereading configuration file");
|
||||
loadConfig();
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void loadConfig() {
|
||||
File cfgFile = _locationFile;
|
||||
if (!cfgFile.exists()) {
|
||||
if (!_alreadyNoticedMissingConfig) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Log file " + _locationFile.getAbsolutePath() + " does not exist");
|
||||
//if (_log.shouldLog(Log.WARN))
|
||||
// _log.warn("Log file " + _locationFile.getAbsolutePath() + " does not exist");
|
||||
_alreadyNoticedMissingConfig = true;
|
||||
}
|
||||
parseConfig(new Properties());
|
||||
@ -284,10 +287,10 @@ public class LogManager {
|
||||
_alreadyNoticedMissingConfig = false;
|
||||
|
||||
if ((_configLastRead > 0) && (_configLastRead >= cfgFile.lastModified())) {
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Short circuiting config read (last read: "
|
||||
+ (_context.clock().now() - _configLastRead) + "ms ago, config file modified "
|
||||
+ (_context.clock().now() - cfgFile.lastModified()) + "ms ago");
|
||||
//if (_log.shouldLog(Log.INFO))
|
||||
// _log.info("Short circuiting config read (last read: "
|
||||
// + (_context.clock().now() - _configLastRead) + "ms ago, config file modified "
|
||||
// + (_context.clock().now() - cfgFile.lastModified()) + "ms ago");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -302,6 +305,9 @@ public class LogManager {
|
||||
updateLimits();
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void parseConfig(Properties config) {
|
||||
String fmt = config.getProperty(PROP_FORMAT, DEFAULT_FORMAT);
|
||||
_format = fmt.toCharArray();
|
||||
@ -353,16 +359,22 @@ public class LogManager {
|
||||
_consoleBufferSize = DEFAULT_CONSOLEBUFFERSIZE;
|
||||
}
|
||||
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Log set to use the base log file as " + _baseLogfilename);
|
||||
//if (_log.shouldLog(Log.DEBUG))
|
||||
// _log.debug("Log set to use the base log file as " + _baseLogfilename);
|
||||
|
||||
parseLimits(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void parseLimits(Properties config) {
|
||||
parseLimits(config, PROP_RECORD_PREFIX);
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void parseLimits(Properties config, String recordPrefix) {
|
||||
_limits.clear();
|
||||
if (config != null) {
|
||||
@ -400,6 +412,7 @@ public class LogManager {
|
||||
|
||||
/**
|
||||
* Update the date format
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*
|
||||
* @param format null or empty string means use default format for the locale
|
||||
* (with a SHORT date and a MEDIUM time - see DateFormat)
|
||||
@ -423,7 +436,7 @@ public class LogManager {
|
||||
_dateFormat = fmt;
|
||||
return true;
|
||||
} catch (IllegalArgumentException iae) {
|
||||
getLog(LogManager.class).error("Date format is invalid [" + format + "]", iae);
|
||||
//getLog(LogManager.class).error("Date format is invalid [" + format + "]", iae);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -496,12 +509,18 @@ public class LogManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void updateLimits() {
|
||||
for (Log log : _logs.values()) {
|
||||
updateLimit(log);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
*/
|
||||
private void updateLimit(Log log) {
|
||||
List<LogLimit> limits = getLimits(log);
|
||||
LogLimit max = null;
|
||||
@ -527,7 +546,10 @@ public class LogManager {
|
||||
}
|
||||
}
|
||||
|
||||
/** @return null if no matches */
|
||||
/**
|
||||
* Do not log here, deadlock of LogWriter via rereadConfig().
|
||||
* @return null if no matches
|
||||
*/
|
||||
private List<LogLimit> getLimits(Log log) {
|
||||
ArrayList<LogLimit> limits = null; // new ArrayList(4);
|
||||
for (LogLimit limit : _limits) {
|
||||
|
@ -83,6 +83,7 @@ public class PartialEepGet extends EepGet {
|
||||
System.err.println("Etag: " + get.getETag());
|
||||
} else {
|
||||
System.err.println("Failed " + url);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -59,8 +59,6 @@ public class PortMapper {
|
||||
*/
|
||||
public int getPort(String service) {
|
||||
int port = getPort(service, -1);
|
||||
if(-1==port)
|
||||
throw new RuntimeException("No port registered for service "+service);
|
||||
return port;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,6 @@ public class ResettableGZIPInputStream extends InflaterInputStream {
|
||||
private final ExtraByteInputStream _extraByteInputStream;
|
||||
/** keep a typesafe copy of this */
|
||||
private final LookaheadInputStream _lookaheadStream;
|
||||
private static final byte[] _oneDummyByte = new byte[1];
|
||||
private final InputStream _sequenceStream = null;
|
||||
private final CRC32 _crc32;
|
||||
private final byte _buf1[] = new byte[1];
|
||||
@ -312,6 +311,7 @@ public class ResettableGZIPInputStream extends InflaterInputStream {
|
||||
*
|
||||
* http://code.google.com/p/google-apps-sso-sample/issues/detail?id=8
|
||||
*
|
||||
* @since 0.8.12
|
||||
*/
|
||||
private static class ExtraByteInputStream extends FilterInputStream {
|
||||
private static final byte DUMMY = 0;
|
||||
|
@ -161,7 +161,8 @@ public class SSLEepGet extends EepGet {
|
||||
get._saveCerts = true;
|
||||
get._commandLine = true;
|
||||
get.addStatusListener(get.new CLIStatusListener(1024, 40));
|
||||
get.fetch(45*1000, -1, 60*1000);
|
||||
if(!get.fetch(45*1000, -1, 60*1000))
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
private static void usage() {
|
||||
|
48
debian/changelog
vendored
48
debian/changelog
vendored
@ -1,3 +1,51 @@
|
||||
i2p (0.8.12-2) stable; urgency=low
|
||||
|
||||
* postinst: Don't fail if the i2psvc group doesn't exist
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Fri, 06 Jan 2012 18:43:09 +0000
|
||||
|
||||
i2p (0.8.12-1) stable; urgency=low
|
||||
|
||||
* New upstream I2P release
|
||||
* Debconf:
|
||||
- add wrapper.java.maxmemory from wrapper.config
|
||||
- The warning about the daemon user needing to exist was confusing to some
|
||||
that assumed this meant that i2psvc had to exit. This warning has been
|
||||
clarified.
|
||||
- Spanish, Swedish, Ukrainian translation updates
|
||||
* Initscript changes/fixes:
|
||||
- increase shutdown wait-time in initscript
|
||||
- renumber "wrapper.additional" lines (since gaps are allowed with newer
|
||||
wrapper versions)
|
||||
- move I2PTEMP to /tmp/i2p-daemon
|
||||
- move router.ping to /var/run/i2p
|
||||
- various other clean-ups
|
||||
- explicity redirect errors to stderr
|
||||
* maintainer scripts:
|
||||
- postinst: rewrite the handling of an existing i2psvc account
|
||||
- postrm: remove /etc/default/i2p if the package is purged
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Fri, 06 Jan 2012 02:49:03 +0000
|
||||
|
||||
i2p (0.8.11-2) stable; urgency=medium
|
||||
|
||||
* Fix STUPID bug running I2P with i2prouter. Thanks soundwave.
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Tue, 08 Nov 2011 20:02:05 +0000
|
||||
|
||||
i2p (0.8.11-1) stable; urgency=low
|
||||
|
||||
* New Upstream Version
|
||||
* sv and uk debconf translation updates
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Mon, 07 Nov 2011 19:20:15 +0000
|
||||
|
||||
i2p (0.8.10-1) stable; urgency=medium
|
||||
|
||||
* New upstream version
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Thu, 20 Oct 2011 05:25:04 +0000
|
||||
|
||||
i2p (0.8.9-1) stable; urgency=medium
|
||||
|
||||
* New upstream version
|
||||
|
58
debian/i2p.init
vendored
58
debian/i2p.init
vendored
@ -12,7 +12,7 @@
|
||||
|
||||
# Check permissions
|
||||
if [ "`id -ur`" != '0' ]; then
|
||||
echo 'Error: you must be root.'
|
||||
echo 'ERROR: You must be root to start this service.' >&2
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
@ -25,17 +25,19 @@ DAEMON="/usr/sbin/wrapper"
|
||||
PIDFILE="$RUN/$NAME.pid"
|
||||
JVMPIDFILE="$RUN/routerjvm.pid"
|
||||
I2P="/usr/share/i2p"
|
||||
I2PTEMP="/tmp/"
|
||||
I2PTEMP="/tmp/${NAME}-daemon"
|
||||
WRAPPERLOG="/var/log/i2p/wrapper.log"
|
||||
|
||||
# Don't touch these, edit /etc/default/i2p
|
||||
RUN_DAEMON="False"
|
||||
NICE=
|
||||
NICE=0
|
||||
I2PUSER="i2psvc"
|
||||
|
||||
I2P_ARGS="/etc/i2p/wrapper.config \
|
||||
wrapper.java.additional.1=-DloggerFilenameOverride=/var/log/i2p/log-router-@.txt \
|
||||
wrapper.java.additional.5=-Dwrapper.logfile=$WRAPPERLOG \
|
||||
wrapper.java.additional.10=-Dwrapper.logfile=$WRAPPERLOG \
|
||||
wrapper.java.additional.11=-Di2p.dir.pid=$RUN \
|
||||
wrapper.java.additional.12=-Di2p.dir.temp=$I2PTEMP \
|
||||
wrapper.logfile=$WRAPPERLOG \
|
||||
wrapper.pidfile=$PIDFILE \
|
||||
wrapper.java.pidfile=$JVMPIDFILE \
|
||||
@ -65,7 +67,7 @@ done
|
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
if [ -z "$RUN_DAEMON" ]; then
|
||||
echo "/etc/default/$NAME is not set. Aborting."
|
||||
echo "/etc/default/$NAME is not properly configured. Aborting." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -76,43 +78,45 @@ case "$RUN_DAEMON" in
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# is the wrapper from the service-wrapper package even installed?
|
||||
# if not, bail NOW
|
||||
|
||||
# We need the wrapper. If it's not found, abort.
|
||||
[ -x $DAEMON ] || exit 0
|
||||
|
||||
# Ditto for i2prouter. Even though this script doesn't call it,
|
||||
# if it's not found the package probably hasn't been installed.
|
||||
|
||||
[ -r /usr/bin/i2prouter ] || exit 0
|
||||
# Even though this script doesn't call it, check for i2prouter. If it's not
|
||||
# found, it probably means that the package isn't installed anymore.
|
||||
[ -x /usr/bin/i2prouter ] || exit 0
|
||||
|
||||
do_start()
|
||||
{
|
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null\
|
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null 2>&1 \
|
||||
|| return 1
|
||||
[ -d $RUN ] || mkdir $RUN
|
||||
[ -r $PIDFILE ] || touch $PIDFILE
|
||||
[ -r $JVMPIDFILE ] || touch $JVMPIDFILE
|
||||
[ -d $I2PTEMP ] || mkdir $I2PTEMP
|
||||
chown -Rf $I2PUSER:$I2PUSER $I2PTEMP/*i2p* $I2PTEMP/router.ping $RUN > /dev/null 2>&1
|
||||
chown -f -R $I2PUSER:adm /var/log/$NAME
|
||||
TZ=UTC start-stop-daemon --start --quiet -c $I2PUSER --pidfile $PIDFILE --exec $DAEMON $NICE -- \
|
||||
[ -d $RUN ] || mkdir $RUN > /dev/null 2>&1
|
||||
[ -d $I2PTEMP ] || mkdir $I2PTEMP > /dev/null 2>&1
|
||||
if [ -r $PIDFILE ]; then
|
||||
PID="$(cat ${PIDFILE})"
|
||||
if ! kill -0 $PID > /dev/null 2>&1; then
|
||||
rm "$PIDFILE" "$JVMPIDFILE"
|
||||
else
|
||||
# we shouldn't get here, but...
|
||||
echo "ERROR: Another instance of $DESC is already running." >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
chown -Rf $I2PUSER:$I2PUSER $I2PTEMP $RUN > /dev/null 2>&1
|
||||
chown -f -R $I2PUSER:i2psvc /var/log/$NAME > /dev/null 2>&1
|
||||
TZ=UTC start-stop-daemon --start --quiet -c $I2PUSER --pidfile $PIDFILE --exec $DAEMON -n $NICE -- \
|
||||
$I2P_ARGS || return 2
|
||||
}
|
||||
|
||||
do_stop()
|
||||
{
|
||||
start-stop-daemon --stop --quiet --retry=TERM/15/KILL/5 --pidfile $PIDFILE -u $I2PUSER
|
||||
start-stop-daemon --stop --quiet --retry=TERM/60/KILL/20 --pidfile $PIDFILE -u $I2PUSER
|
||||
RETVAL="$?"
|
||||
[ "$RETVAL" = 2 ] && return 2
|
||||
|
||||
# start-stop-daemon --stop --quiet --oknodo --retry=TERM/15/KILL/5 -u $I2PUSER
|
||||
start-stop-daemon --stop --quiet --oknodo --retry=0/60/KILL/20 --exec $DAEMON
|
||||
|
||||
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
|
||||
|
||||
rm -f "$PIDFILE" "$JVMPIDFILE"
|
||||
[ -d $RUN ] && rmdir $RUN
|
||||
rm -rf "$I2PTEMP" > /dev/null 2>&1
|
||||
[ -d "$RUN" ] && rmdir "$RUN" 2>&1
|
||||
}
|
||||
|
||||
do_dump()
|
||||
|
18
debian/i2p.postinst
vendored
18
debian/i2p.postinst
vendored
@ -61,19 +61,17 @@ case "$1" in
|
||||
< /etc/i2p/wrapper.config > /etc/i2p/wrapper.config.tmp
|
||||
mv -f /etc/i2p/wrapper.config.tmp /etc/i2p/wrapper.config
|
||||
|
||||
migrate_existing_user(){
|
||||
# Adjust the user/group in /etc/passwd, mainly for upgrades from old packages that didn't
|
||||
# create $I2PSYSUSER as a system group/user
|
||||
usermod -c "I2P Router Daemon" -m -d $I2PHOME -g $I2PSYSUSER -s "/bin/false" \
|
||||
-l $I2PSYSUSER -e 1 > /dev/null 2>&1
|
||||
echo "Existing user migrated, home directory moved to $I2PHOME"
|
||||
}
|
||||
|
||||
# Create user and group as a system user.
|
||||
adduser --system --quiet --group --home $I2PHOME $I2PSYSUSER || migrate_existing_user
|
||||
if getent passwd i2psvc > /dev/null 2>&1 ; then
|
||||
groupadd -f $I2PSYSUSER || true
|
||||
usermod -c "I2P Router Daemon" -d $I2PHOME -g $I2PSYSUSER -s "/bin/false" \
|
||||
$I2PSYSUSER -e 1 > /dev/null 2>&1 || true
|
||||
else
|
||||
adduser --system --quiet --group --home $I2PHOME $I2PSYSUSER
|
||||
fi
|
||||
|
||||
[ -d /var/log/i2p ] || mkdir -m0750 /var/log/i2p
|
||||
chown -f -R $I2PSYSUSER:adm /var/log/i2p
|
||||
chown -f -R $I2PSYSUSER:i2psvc /var/log/i2p
|
||||
|
||||
# Has someone set the permissions with dpkg-statoverride? If so, obey them.
|
||||
if ! dpkg-statoverride --list $I2PHOME > /dev/null 2>&1
|
||||
|
3
debian/i2p.templates
vendored
3
debian/i2p.templates
vendored
@ -22,7 +22,8 @@ _Description: I2P daemon user:
|
||||
account name here. For example, if your previous I2P installation is at
|
||||
/home/user/i2p, you may enter 'user' here.
|
||||
.
|
||||
Very important: The account specified here *MUST* already exist.
|
||||
Very important: If a user other than the default of 'i2psvc' is entered
|
||||
here, the chosen username *MUST* already exist.
|
||||
|
||||
Template: i2p/memory
|
||||
Type: string
|
||||
|
13
debian/patches/debian-version.patch
vendored
13
debian/patches/debian-version.patch
vendored
@ -1,13 +0,0 @@
|
||||
Add debian package vesion to the EXTRA version field
|
||||
|
||||
--- a/router/java/src/net/i2p/router/RouterVersion.java
|
||||
+++ b/router/java/src/net/i2p/router/RouterVersion.java
|
||||
@@ -21,7 +21,7 @@
|
||||
public final static long BUILD = 0;
|
||||
|
||||
/** for example "-test" */
|
||||
- public final static String EXTRA = "";
|
||||
+ public final static String EXTRA = "deb1";
|
||||
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Router version: " + FULL_VERSION);
|
10
debian/po/de.po
vendored
10
debian/po/de.po
vendored
@ -6,8 +6,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: i2p 0.8.9-1\n"
|
||||
"Report-Msgid-Bugs-To: i2p@packages.debian.org\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-07-20 04:30+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: de\n"
|
||||
@ -55,7 +55,11 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
#, fuzzy
|
||||
#| msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr "WICHTIG; Der hier angegebene Benutzer *MUSS* bereits existieren!"
|
||||
|
||||
#. Type: string
|
||||
|
34
debian/po/es.po
vendored
34
debian/po/es.po
vendored
@ -1,20 +1,24 @@
|
||||
# Spanish debconf translation
|
||||
# Copyright (C) 2011 The I2P Project
|
||||
# This file is distributed under the same license as the i2p package.
|
||||
# mixxy <m1xxy@mail.i2p>, 2011
|
||||
#
|
||||
|
||||
# Translators:
|
||||
# mixxy <m1xxy@mail.i2p>, 2011.
|
||||
# <punkibastardo@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: i2p 0.8.9-1\n"
|
||||
"Report-Msgid-Bugs-To: i2p@packages.debian.org\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-07-20 04:33+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: es\n"
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-12-21 21:22+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#. Type: boolean
|
||||
#. Description
|
||||
@ -56,20 +60,24 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgstr "Muy importante: El usuario especificado aquí *YA TIENE QUE* existir."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr ""
|
||||
"Muy importante: Si se introduce un nombre de usuario en este campo distinto "
|
||||
"a 'i2psvc', el nombre elegido *DEBE* existir de antemano."
|
||||
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:4001
|
||||
msgid "Memory that can be allocated to I2P:"
|
||||
msgstr ""
|
||||
msgstr "La memoria que puede ser asignada a I2P:"
|
||||
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:4001
|
||||
msgid "By default, I2P will only be allowed to use up to 128MB of RAM."
|
||||
msgstr ""
|
||||
msgstr "Por defecto, a I2P sólo se le permitirá utilizar 128MB de RAM"
|
||||
|
||||
#. Type: string
|
||||
#. Description
|
||||
@ -78,3 +86,5 @@ msgid ""
|
||||
"High bandwidth routers, as well as routers with a lot of active torrents / "
|
||||
"plugins, may need to have this value increased."
|
||||
msgstr ""
|
||||
"Los routers con un alto ancho de banda, así como los routers con muchos "
|
||||
"torrents activos / plugins, podrían necesitar un aumento este valor."
|
||||
|
10
debian/po/pl.po
vendored
10
debian/po/pl.po
vendored
@ -7,8 +7,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: i2p@packages.debian.org\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-10-08 12:41+0000\n"
|
||||
"Last-Translator: PolishAnon <b790979@klzlk.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.net/projects/p/I2P/team/pl/)\n"
|
||||
@ -58,7 +58,11 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
#, fuzzy
|
||||
#| msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr "Bardzo ważne: Podane tutaj konto *MUSI* istnieć."
|
||||
|
||||
#. Type: string
|
||||
|
10
debian/po/ru.po
vendored
10
debian/po/ru.po
vendored
@ -6,8 +6,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: i2p 0.8.9-1\n"
|
||||
"Report-Msgid-Bugs-To: i2p@packages.debian.org\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-06-21 20:59+0500\n"
|
||||
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
|
||||
"Language-Team: ru\n"
|
||||
@ -55,7 +55,11 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
#, fuzzy
|
||||
#| msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr ""
|
||||
"Очень важно: аккаунт, указанный здесь, обязательно должен существовать."
|
||||
|
||||
|
29
debian/po/sv.po
vendored
29
debian/po/sv.po
vendored
@ -1,6 +1,6 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Swedish debconf translation
|
||||
# Copyright (C) 2011 The I2P Project
|
||||
# This file is distributed under the same license as the i2p package.
|
||||
#
|
||||
# Translators:
|
||||
# Martin Svensson <digitalmannen@gmail.com>, 2011.
|
||||
@ -8,14 +8,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-13 14:12+0000\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-12-26 09:48+0000\n"
|
||||
"Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/team/sv_SE/)\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/sv_SE/)\n"
|
||||
"Language: sv_SE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv_SE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#. Type: boolean
|
||||
@ -46,8 +47,8 @@ msgstr "Konto för I2P tjänsten:"
|
||||
msgid ""
|
||||
"By default I2P is configured to run under the account i2psvc when running as "
|
||||
"a daemon. To use an **existing** I2P profile you may enter a different "
|
||||
"account name here. For example, if your previous I2P installation is at "
|
||||
"/home/user/i2p, you may enter 'user' here."
|
||||
"account name here. For example, if your previous I2P installation is at /"
|
||||
"home/user/i2p, you may enter 'user' here."
|
||||
msgstr ""
|
||||
"Som standard är I2P inställt för att köras under kontot i2psvc mär den körs "
|
||||
"som tjänst. För att använda ett **existerande** I2P profil, ange ett annat "
|
||||
@ -57,8 +58,12 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgstr "*OBS!* Kontot som anges *måste* existera."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr ""
|
||||
"OBS! Viktigt: Om en annan användare än standard 'i2psvc' skrivs in här. "
|
||||
"\"MÅSTE\" det användarnamnet redan existera."
|
||||
|
||||
#. Type: string
|
||||
#. Description
|
||||
@ -81,5 +86,3 @@ msgid ""
|
||||
msgstr ""
|
||||
"För routrar med hög bandbredd eller routrar med hög aktivitet kan detta "
|
||||
"behöva ökas"
|
||||
|
||||
|
||||
|
8
debian/po/templates.pot
vendored
8
debian/po/templates.pot
vendored
@ -7,8 +7,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: i2p@packages.debian.org\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -50,7 +50,9 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr ""
|
||||
|
||||
#. Type: string
|
||||
|
28
debian/po/uk.po
vendored
28
debian/po/uk.po
vendored
@ -1,6 +1,6 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Ukrainian debconf translation
|
||||
# Copyright (C) 2011 The I2P Project
|
||||
# This file is distributed under the same license as the i2p package.
|
||||
#
|
||||
# Translators:
|
||||
# Denis <gribua@gmail.com>, 2011.
|
||||
@ -8,15 +8,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-10 04:00+0000\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:25+0000\n"
|
||||
"PO-Revision-Date: 2011-12-16 22:13+0000\n"
|
||||
"Last-Translator: Denis <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.net/projects/p/I2P/team/uk_UA/)\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/uk_UA/)\n"
|
||||
"Language: uk_UA\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: uk_UA\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#. Type: boolean
|
||||
#. Description
|
||||
@ -46,8 +48,8 @@ msgstr "Псевдокористувач для I2P-демона:"
|
||||
msgid ""
|
||||
"By default I2P is configured to run under the account i2psvc when running as "
|
||||
"a daemon. To use an **existing** I2P profile you may enter a different "
|
||||
"account name here. For example, if your previous I2P installation is at "
|
||||
"/home/user/i2p, you may enter 'user' here."
|
||||
"account name here. For example, if your previous I2P installation is at /"
|
||||
"home/user/i2p, you may enter 'user' here."
|
||||
msgstr ""
|
||||
"При роботі в якості демона, I2P за замовчуванням використовує аккаунт i2psvc "
|
||||
"для роботи. Для використовування **існуючого** профіля I2P ви можете ввести "
|
||||
@ -57,7 +59,11 @@ msgstr ""
|
||||
#. Type: string
|
||||
#. Description
|
||||
#: ../i2p.templates:3001
|
||||
msgid "Very important: The account specified here *MUST* already exist."
|
||||
#, fuzzy
|
||||
#| msgid "Very important: The account specified here *MUST* already exist."
|
||||
msgid ""
|
||||
"Very important: If a user other than the default of 'i2psvc' is entered "
|
||||
"here, the chosen username *MUST* already exist."
|
||||
msgstr "Дуже важливо: Аккаунт, вказаний тут * ПОВИНЕН * вже існувати."
|
||||
|
||||
#. Type: string
|
||||
@ -83,5 +89,3 @@ msgstr ""
|
||||
"Роутери з високою швидкістю передачі інформації, так само як роутери з "
|
||||
"великою кількістю активних торрентів / плагінів, можуть потребувати "
|
||||
"збільшення цього значення."
|
||||
|
||||
|
||||
|
14
debian/rules
vendored
14
debian/rules
vendored
@ -26,7 +26,12 @@ build:
|
||||
|
||||
JAVA_HOME=/usr/lib/jvm/default-java
|
||||
I2P=$(CURDIR)/pkg-temp
|
||||
ROUTERVERSION=$(CURDIR)/router/java/src/net/i2p/router/RouterVersion.java
|
||||
|
||||
# I2P's version will be displayed in the router console as "$I2PVERSION-$EXTRAPREFIX$DEBIANVERSION", eg. 0.8.12-0-deb1
|
||||
export EXTRAPREFIX := deb
|
||||
export JAVA_HOME I2P
|
||||
export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/Version/{print $$2}' |sed 's/.*-\([[:digit:]]\{1,\}\).*$$/\1/')
|
||||
#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
|
||||
|
||||
%:
|
||||
@ -35,6 +40,7 @@ export JAVA_HOME I2P
|
||||
clean: createcopyright
|
||||
|
||||
override_dh_auto_clean:
|
||||
-[ -r $(CURDIR)/debian/routerversion.java.bak ] && mv -f $(CURDIR)/debian/routerversion.java.bak $(ROUTERVERSION)
|
||||
dh_auto_clean
|
||||
ant distclean
|
||||
rm -f core/c/jbigi/*.[s]o
|
||||
@ -47,8 +53,11 @@ override_dh_auto_build:
|
||||
binary-indep: build-indep
|
||||
build-indep:
|
||||
dh_prep
|
||||
#mkdir -p $(CURDIR)/installer/lib/wrapper/all
|
||||
#ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
|
||||
cp -f $(ROUTERVERSION) $(CURDIR)/debian/routerversion.java.bak
|
||||
sed -e "s/\(.*EXTRA\ =\ \)[^ ]*\"\(.*\)\"/\1\"\2-$$EXTRAPREFIX$$DEBIANVERSION\"/" < $(ROUTERVERSION) > $(ROUTERVERSION).tmp
|
||||
mv -f $(ROUTERVERSION).tmp $(ROUTERVERSION)
|
||||
# The next line is used by KYTV when building from source packages
|
||||
#[ -r jetty/jetty-5.1.15.tgz ] && ln -sf $(CURDIR)/jetty/jetty-5.1.15.tgz $(CURDIR)/apps/jetty/jetty-5.1.15.tgz
|
||||
ant preppkg-unix javadoc
|
||||
echo router.updateDisabled=true > $(I2P)/router.config
|
||||
mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper
|
||||
@ -74,7 +83,6 @@ createcopyright:
|
||||
@/bin/echo -e "at http://www.i2p2.de/newdevelopers#getting-the-i2p-code\n\n\n" >> $(CURDIR)/debian/copyright
|
||||
@/bin/cat $(CURDIR)/LICENSE.txt >> $(CURDIR)/debian/copyright
|
||||
|
||||
|
||||
override_dh_compress:
|
||||
dh_compress -X.xsl -X.xml
|
||||
|
||||
|
55
history.txt
55
history.txt
@ -1,3 +1,58 @@
|
||||
2012-01-08 zzz
|
||||
* Plugins:
|
||||
- Enforce min and max Jetty versions at plugin installation
|
||||
- Enforce I2P, Java, and Jetty versions at plugin startup too
|
||||
* Router:
|
||||
- No longer check for updates or start any threads in the Router constructor,
|
||||
- for ease in building multiple routers in the JVM,
|
||||
- and also because starting threads in a constructor is bad practice.
|
||||
- All threads now start in runRouter().
|
||||
- Installation of updates now only happens via Router.main().
|
||||
* RouterInfo, RouterAddress: Optimizations and integrity checks
|
||||
- Remove synchronization
|
||||
- Do not allow contents to change after being set, throw IllegalStateException
|
||||
- Do not copy contents out in getters
|
||||
- Make options final
|
||||
- Add getOption() and getOptionsMap() methods
|
||||
* Router shutdown:
|
||||
- Fix failsafe shutdown hook broken in 0.8.8;
|
||||
HUP, INT, and TERM signals should now shut down cleanly.
|
||||
- Shutdown hook no longer prevents other hooks from running
|
||||
- Trap HUP, if router.gracefulHUP=true, and do graceful shutdown.
|
||||
Only under wrapper, non-Windows.
|
||||
- i2prouter stop now uses SIGTERM
|
||||
- Implement i2prouter graceful using SIGHUP (ticket #580)
|
||||
- Configure wrapper to ignore SIGUSR1 and SIGUSR2 as they will shut down
|
||||
or crash the JVM
|
||||
|
||||
2012-01-06 kytv
|
||||
* EepGet: If transfer fails, exit with status 1 (fixes #576)
|
||||
|
||||
* 2012-01-06 0.8.12 released
|
||||
|
||||
2012-01-04 kytv
|
||||
* Update geoip.txt based on Maxmind GeoLite Country database from 2011-12-08
|
||||
|
||||
2012-01-02 kytv
|
||||
* Wrapper 3.5.13 for everything other than armv7.
|
||||
|
||||
2012-01-02 zzz
|
||||
* Fix webapp PortMapper lookup for SSL-only console
|
||||
* Wrapper 3.5.13 for arm v7
|
||||
|
||||
2011-12-31 zzz
|
||||
* Fix log NPE when saveConfig() fails at startup, thx kytv
|
||||
(backport from jetty6 branch)
|
||||
|
||||
2011-12-30 zzz
|
||||
* New Estonian translation thanks ajutine
|
||||
|
||||
2011-12-27 kytv
|
||||
* Spanish and Swedish translation updates from Transifex
|
||||
|
||||
2011-12-23 zzz
|
||||
* Logging: Eliminate LogWriter/LogManager deadlock
|
||||
|
||||
2011-12-18 zzz
|
||||
* Addresses: Add utility toString() methods
|
||||
* Blocklist: Buffer input to speed lookup
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<info>
|
||||
<appname>i2p</appname>
|
||||
<appversion>0.8.11</appversion>
|
||||
<appversion>0.8.12</appversion>
|
||||
<authors>
|
||||
<author name="I2P" email="http://forum.i2p2.de/"/>
|
||||
</authors>
|
||||
|
44
installer/lib/wrapper/README.txt
Normal file
44
installer/lib/wrapper/README.txt
Normal file
@ -0,0 +1,44 @@
|
||||
Wrapper update instructions:
|
||||
|
||||
Get the community "delta pack" from http://wrapper.tanukisoftware.com/doc/english/download.jsp
|
||||
|
||||
Get the source from http://wrapper.tanukisoftware.com/downloads/
|
||||
|
||||
From the delta pack, copy lib/wrapper.jar to all/
|
||||
|
||||
From the delta pack, strip the binaries in lib/
|
||||
(if you have the tools to do so for that architecture) and copy
|
||||
to xxx/librapper.so, libwrapper.jnilib, or wrapper.dll for the following directories.
|
||||
Don't forget to disable the execute bit.
|
||||
linux (x86-32)
|
||||
linux64 (x86-64)
|
||||
solaris (sparc-32)
|
||||
win32
|
||||
|
||||
From the delta pack, strip the binaries in bin/ and copy
|
||||
to xxx/i2psvc for the same directories as above.
|
||||
Don't forget to disable the execute bit.
|
||||
|
||||
For armv5 and armv7, build from source following the instructions
|
||||
in linux-armv7/README.txt.
|
||||
Don't forget to strip the binaries and disable the execute bit.
|
||||
We use a trimslice for armv7 building.
|
||||
|
||||
For freebsd and freebsd64, we don't use the Tanuki binaries
|
||||
because they are compiled in FBSD v6. Compile from source in
|
||||
FreeBSD 7.4 to eliminate the dependency on the compat6x port.
|
||||
Don't forget to strip the binaries and disable the execute bit.
|
||||
A walkthrough can be found in freebsd/README.txt.
|
||||
|
||||
For linux-ppc, we don't use the Tanuki binaires because they're (mistakenly)
|
||||
ppc64 compiles (TODO: File bug with Tanuki). Compile the arch-dependent bits
|
||||
with "ant -Dbits=32 compile-c-unix".
|
||||
|
||||
For macosx, combine the universal-32 and universal-64 files
|
||||
from the delta pack (each a 2-architecture fat file)
|
||||
into a "quad-fat" binary. Instructions can be found in
|
||||
macos/README.txt
|
||||
|
||||
For win64, build from source following the instructions
|
||||
in win64/README-x64-win.txt.
|
||||
Don't forget to strip the binaries and disable the execute bit.
|
Binary file not shown.
24
installer/lib/wrapper/freebsd/README.txt
Normal file
24
installer/lib/wrapper/freebsd/README.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Basic instructions for BSD
|
||||
--------------------------
|
||||
|
||||
Prerequisites for compiling the wrapper can be installed with:
|
||||
pkg_add -r apache-ant gmake openjdk6
|
||||
|
||||
One the prereqs are installed, cd into the wrapper source and run
|
||||
|
||||
For 32bit:
|
||||
ant -Dbits=32 compile-c-unix
|
||||
|
||||
For 64bit:
|
||||
ant -Dbits=64 compile-c-unix
|
||||
|
||||
Omit "compile-c-unix" from the command-lines if you want to compile
|
||||
wrapper.jar too.
|
||||
|
||||
Then strip the binaries:
|
||||
strip --strip-unneeded bin/wrapper lib/libwrapper.so
|
||||
|
||||
...and turn off the executable bit:
|
||||
chmod 644 bin/wrapper lib/libwrapper.so
|
||||
|
||||
Don't forget to rename the binary "wrapper" to "i2psvc".
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
12
installer/lib/wrapper/macosx/README.txt
Normal file
12
installer/lib/wrapper/macosx/README.txt
Normal file
@ -0,0 +1,12 @@
|
||||
OSX instructions
|
||||
----------------
|
||||
|
||||
Make the wrapper "quadfat" using lipo:
|
||||
|
||||
lipo -create wrapper-macosx-universal-32 wrapper-macosx-universal-64 -output i2psvc
|
||||
lipo -create libwrapper-macosx-universal-32.jnilib libwrapper-macosx-universal-64.jnilib -output libwrapper.jnilib
|
||||
|
||||
Then strip the wrapper:
|
||||
strip i2psvc
|
||||
|
||||
The jnilib file does not need to be stripped.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
Changes will probably be needed for newer versions than 3.5.12.
|
||||
Changes may be needed for newer versions than 3.5.13.
|
||||
|
||||
To use the patch in this directory, copy Makefile-windows-x86-32.nmake to
|
||||
Makefile-windows-x86-64.nmake then "patch < x64-win.patch".
|
||||
|
Binary file not shown.
@ -1,3 +1,10 @@
|
||||
# Last updated based on Maxmind GeoLite Country
|
||||
# dated 2011-12-08
|
||||
# Script borrowed from Tor
|
||||
#
|
||||
# wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
|
||||
# cut -d, -f3-5 < GeoIPCountryWhois.csv|sed 's/"//g' > geoip.txt
|
||||
# cut -d, -f5,6 < GeoIPCountryWhois.csv |sed 's/"//g' | sort | uniq > countries.txt
|
||||
A1,Anonymous Proxy
|
||||
A2,Satellite Provider
|
||||
AD,Andorra
|
||||
@ -179,6 +186,7 @@ PH,Philippines
|
||||
PK,Pakistan
|
||||
PL,Poland
|
||||
PM,Saint Pierre and Miquelon
|
||||
PN,Pitcairn Islands
|
||||
PR,Puerto Rico
|
||||
PS,Palestinian Territory
|
||||
PT,Portugal
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -357,7 +357,11 @@ if [ "$DIST_OS" = "macosx" ]
|
||||
then
|
||||
OS_VER=`sw_vers | grep 'ProductVersion:' | grep -o '[0-9]*\.[0-9]*\.[0-9]*'`
|
||||
DIST_ARCH="universal"
|
||||
if [ $(sysctl -n hw.cpu64bit_capable) -eq 1 ]; then
|
||||
DIST_BITS="64"
|
||||
else
|
||||
DIST_BITS="32"
|
||||
fi
|
||||
APP_PLIST_BASE=${PLIST_DOMAIN}.${APP_NAME}
|
||||
APP_PLIST=${APP_PLIST_BASE}.plist
|
||||
else
|
||||
@ -1008,6 +1012,7 @@ start() {
|
||||
startwait
|
||||
}
|
||||
|
||||
|
||||
stopit() {
|
||||
# $1 exit if down flag
|
||||
|
||||
@ -1024,7 +1029,7 @@ stopit() {
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
# Running so try to stop it.
|
||||
kill $pid
|
||||
kill -TERM $pid
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
@ -1076,6 +1081,43 @@ stopit() {
|
||||
fi
|
||||
}
|
||||
|
||||
graceful() {
|
||||
# $1 exit if down flag
|
||||
|
||||
eval echo `gettext 'Stopping $APP_LONG_NAME gracefully...'`
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
eval echo `gettext '$APP_LONG_NAME was not running.'`
|
||||
if [ "X$1" = "X1" ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
# Running so try to stop it.
|
||||
# This sends HUP. router.gracefulHUP must be set in router.config,
|
||||
# or else this will do the same as stop.
|
||||
kill $pid
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
eval echo `gettext 'Unable to stop $APP_LONG_NAME.'`
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
rm -f "$ANCHORFILE"
|
||||
if [ -f "$ANCHORFILE" ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
eval echo `gettext 'Unable to stop $APP_LONG_NAME.'`
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pause() {
|
||||
eval echo `gettext 'Pausing $APP_LONG_NAME.'`
|
||||
}
|
||||
@ -1553,6 +1595,7 @@ showUsage() {
|
||||
echo "`gettext ' console Launch in the current console.'`"
|
||||
echo "`gettext ' start Start in the background as a daemon process.'`"
|
||||
echo "`gettext ' stop Stop if running as a daemon or in another console.'`"
|
||||
echo "`gettext ' graceful Stop gracefully, may take up to 11 minutes.'`"
|
||||
echo "`gettext ' restart Stop if running and then start.'`"
|
||||
echo "`gettext ' condrestart Restart only if already running.'`"
|
||||
if [ -n "$PAUSABLE" ] ; then
|
||||
@ -1620,6 +1663,11 @@ docommand() {
|
||||
stopit "0"
|
||||
;;
|
||||
|
||||
'graceful')
|
||||
checkUser "" "$COMMAND"
|
||||
graceful "0"
|
||||
;;
|
||||
|
||||
'restart')
|
||||
checkUser touchlock "$COMMAND"
|
||||
if [ ! -n "$FIXED_COMMAND" ] ; then
|
||||
|
BIN
installer/resources/icons/flags/im.png
Normal file
BIN
installer/resources/icons/flags/im.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 413 B |
@ -1,30 +1,15 @@
|
||||
<!--
|
||||
<i2p.news date="$Date: 2011-11-08 00:00:00 $">
|
||||
<i2p.release version="0.8.11" date="2011/11/08" minVersion="0.6" />
|
||||
<i2p.news date="$Date: 2012-01-06 00:00:00 $">
|
||||
<i2p.release version="0.8.12" date="2012/01/06" minVersion="0.6" />
|
||||
-->
|
||||
<div lang="en">
|
||||
<h3>2011-11-08: <b>0.8.11 <a href="http://www.i2p2.i2p/release-0.8.11.html">Released</a></b></h3>
|
||||
<h3>2012-01-06: <b>0.8.12 <a href="http://www.i2p2.i2p/release-0.8.12.html">Released</a></b></h3>
|
||||
|
||||
<p>
|
||||
The unprecedented network growth starting October 5th
|
||||
has dramatically increased network congestion, especially on evenings (UTC)
|
||||
and weekends. The last two releases contained a few changes that we hoped
|
||||
would relieve the pressure, but unfortunately these measures have been only
|
||||
modest successes. The primary issue is to limit the number of direct router
|
||||
to-router connections in the network. This isn't a new problem; we've been
|
||||
working on it for several years, usually with good results. However, the recent
|
||||
growth pushed us over the edge once again.
|
||||
</p><p>
|
||||
Release 0.8.11 includes several more changes to reduce the number of router-to-router
|
||||
connections and increase connection and tunnel build capacity. The goal, of course,
|
||||
is to improve tunnel build success rates and general reliability. As always, there's
|
||||
a few bug fixes and translation updates.
|
||||
</p><p>
|
||||
We welcome all our new users. Please be patient as we work to improve network
|
||||
performance. Debugging congestion problems in a distributed anonymous network
|
||||
is a continuing challenge. Please help improve the network
|
||||
by restarting your router once the upgrade is downloaded.
|
||||
|
||||
The 0.8.12 release fixes several serious message corruption bugs.
|
||||
It also contains a redesign of the router's congestion control, and continued
|
||||
optimization of CPU and memory usage. We are hopeful that these changes will
|
||||
improve network performance. Upgrading is recommended.
|
||||
</p><p>
|
||||
Say hello to the volunteers on the <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help IRC channel</a>.
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">Get involved</a>,
|
||||
|
@ -59,8 +59,6 @@
|
||||
<li class="tidylist"><b>Echelon's I2P Resources</b><br><a href="http://echelon.i2p/" target="_blank">echelon.i2p</a>: I2P software
|
||||
archive with source code (where permissible), information about I2P, including a <a href="http://echelon.i2p/I2Pguide/index.html" target="_blank">beginner's guide</a> and pre-release developer builds of I2P for the adventurous to try.</li>
|
||||
<li class="tidylist"><b>Ugha's Wiki</b><br><a href="http://ugha.i2p/" target="_blank">ugha.i2p</a>: An open wiki that anyone can edit with plenty of information about I2P, help for beginners, additional links into the network, and more.</li>
|
||||
<li class="tidylist"><b>I2P-to-Freenet Proxy</b><br><a href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>:
|
||||
Peer into the world of the <a href="http://freenetproject.org/" target="_blank">Freenet</a> network with Tino's I2P-to-Freenet proxy.</li>
|
||||
<li class="tidylist"><b>The Planet (on I2P)</b><br><a href="http://planet.i2p/" target="_blank">planet.i2p</a>: An RSS aggregator site that takes news and events from around I2P and publishes them all in one place. A good site to visit to see the community at work!</li>
|
||||
<li class="tidylist"><b>Eepsite Search Engine</b><br><a href="http://eepsites.i2p/" target="_blank">eepsites.i2p</a>: An
|
||||
anonymously-hosted eepsite search engine.</li>
|
||||
@ -113,7 +111,7 @@
|
||||
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> on I2P's internal IRC network (<code>irc.postman.i2p</code> or <code>irc.freshcoffee.i2p</code>). These channels are also available outside of I2P's encrypted, anonymous network via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.
|
||||
</li>
|
||||
|
||||
<li class="tidylist"><b>Reporting Bugs</b><br>If you'd like to report a bug, please file a ticket on <a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. For developer-related discussions, please visit <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> or come and visit the <a href="irc://127.0.0.1:6668/i2p-dev">developer channel</a> on I2P's IRC network. Developers can browse source at <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository viewer</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p" target="_blank">Sponge's instance</a>, or via <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We use <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> to manage our source code.
|
||||
<li class="tidylist"><b>Reporting Bugs</b><br>If you'd like to report a bug, please file a ticket on <a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. For developer-related discussions, please visit <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> or come and visit the <a href="irc://127.0.0.1:6668/i2p-dev">developer channel</a> on I2P's IRC network. Developers can browse source at <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository viewer</a> or via <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We use <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> to manage our source code.
|
||||
</li>
|
||||
|
||||
<li class="tidylist"><b>Get Involved!</b><br>I2P is developed and maintained mostly through unfunded, voluntary participation by community members. We're happy to accept <a href="http://www.i2p2.i2p/donate.html" target="_blank">donations</a>, which go into essential hosting and administrative costs. We have <a href="http://www.i2p2.i2p/bounties.html" target="_blank">cash bounties</a> for aspects of I2P for developers looking for incentives to participate, and we're always looking for more <a href="http://www.i2p2.i2p/newdevelopers.html" target="_blank">Java coders</a>, <a href="http://www.i2p2.i2p/newtranslators.html" target="_blank">translators</a>, promoters and users to help I2P grow. The bigger the I2P network, the more everyone benefits, so simply telling all your friends about I2P (and lending a hand with the installation and setup where needed) is a big help. For further info on how you can participate, visit the <a href="http://www.i2p2.i2p/getinvolved.html" target="_blank">volunteers page</a> on the website.
|
||||
|
@ -10,7 +10,6 @@
|
||||
هما موقع الرسمي للمشروع <a href="http://www.i2p2.de/index_fr.html">www.i2p2.de</a></li>
|
||||
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>محرك بحث</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>ويكي مفتوح التي يستطيع الجميع تحريرها مع الكثير من المعلومات حول الشبكة</li>
|
||||
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>Freenet مدخل الى شبكة </li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>موقع لتحميل مجموعة من البرامج (I2PFox, iMule, I2P-Messenger, ...) <br></li>
|
||||
</ul>
|
||||
هناك العديد من eepsites، فقط اتبع هذه الروابط لإكتشاف المزيد!</li>
|
||||
|
@ -10,7 +10,6 @@
|
||||
sichere und anonyme Verbindungen zu <a href="http://www.i2p2.de/index_de.html">www.i2p2.de</a></li>
|
||||
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>: anonym gehostete Suchseite für Eepseiten</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>: Ugha's Eepseite, ein öffentliches Wiki mit vielen Links</li>
|
||||
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: ein Freenet-Proxy</li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>: Softwarearchiv und Informationen zu I2P (mit BitTorrent-Klienten, iMule, I2PFox, I2P-Messenger, …)</li>
|
||||
<li><a href="http://pastethis.i2p">pastethis.i2p</a>: anonymer Pastebin</li>
|
||||
</ul><br />
|
||||
|
@ -10,7 +10,6 @@
|
||||
conexiones seguras y anónimas a <a href="http://www.i2p2.de/index_de.html">www.i2p2.de</a></li>
|
||||
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>: página de búsqueda para páginas I2P</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>: página de Ugha; un wiki público con muchos enlaces</li>
|
||||
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: un proxy para acceder a Freenet</li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>: archivo de software e informaciones sobre I2P (con aplicaciones de BitTorrent, iMule, I2PFox, I2P-Messenger, ...)</li>
|
||||
<li><a href="http://pastethis.i2p">pastethis.i2p</a>: pastebin anónimo</li>
|
||||
</ul><br />
|
||||
|
@ -136,9 +136,6 @@ les pré-versions d'I2P à essayer.</li>
|
||||
<li class="tidylist"><b>Le Wiki d'Ugha</b><br><a href="http://ugha.i2p/" target="_blank">ugha.i2p</a>: un wiki
|
||||
ouvert et anonyme sur lequel chacun peut modifier toute sorte d'informations sur I2P, l'aide pour les débutants,
|
||||
des liens supplémentaires dans le réseau, etc…</li>
|
||||
<li class="tidylist"><b>Proxy I2P-vers-Freenet</b><br>
|
||||
<a href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>: une fenêtre sur le monde du réseau
|
||||
<a href="http://freenetproject.org/" target="_blank">Freenet</a> grâce au mandataire I2P-vers-Freenet de Tino.</li>
|
||||
<li class="tidylist"><b>The Planet (sur I2P)</b><br><a href="http://planet.i2p/" target="_blank">planet.i2p</a>:
|
||||
un site agrégateur RSS qui collecte les nouvelles et évènements concernant I2P et les publie toutes regroupée en un
|
||||
seul endroit. Un bon aperçu de la communauté au travail!</li>
|
||||
@ -248,8 +245,7 @@ via le serveur IRC <a href="irc://irc.freenode.net/i2p">Freenode</a>.
|
||||
<a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. Les développeurs discutent sur les
|
||||
<a href="http://zzz.i2p/" target="_blank">fora de développeurs de zzz</a> ou sur le
|
||||
<a href="irc://127.0.0.1:6668/i2p-dev">canal des développeurs</a>. Les développeurs peuvent consulter les sources sur
|
||||
<a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">l'explorateur du dépôt de zzz</a>,
|
||||
<a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p" target="_blank">l'instance de Sponge</a>, ou par
|
||||
<a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">l'explorateur du dépôt de zzz</a> ou par
|
||||
<a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. Nous utilisons
|
||||
<a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> pour gérer les sources du code.
|
||||
</li>
|
||||
|
@ -46,8 +46,6 @@ en maak verbinding met de <a href="irc://127.0.0.1:6668/i2p">server</a> op <code
|
||||
<li class="tidylist"><b>Echelon's I2P Resources</b><br><a href="http://echelon.i2p/" target="_blank">echelon.i2p</a>: I2P software
|
||||
archief met broncode (waar toegestaan), informatie over I2P, inclusief een <a href="http://echelon.i2p/I2Pguide/index.html" target="_blank">beginner's guide</a> en pre-release ontwikkelaars versies van I2P voor de avonturiers om te proberen.</li>
|
||||
<li class="tidylist"><b>Ugha's Wiki</b><br><a href="http://ugha.i2p/" target="_blank">ugha.i2p</a>: Een open wiki die iedereen kan bewerken met veel informatie over I2P, help voor beginners en meer links voor het I2P netwerk en meer.</li>
|
||||
<li class="tidylist"><b>I2P-to-Freenet Proxy</b><br><a href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>:
|
||||
Neem een kijkje in de wereld van het <a href="http://freenetproject.org/" target="_blank">Freenet</a> netwerk met Tino's I2P-to-Freenet proxy.</li>
|
||||
<li class="tidylist"><b>The Planet (on I2P)</b><br><a href="http://planet.i2p/" target="_blank">planet.i2p</a>: Een RSS aggregator site die nieuwswaardigheden en evenementen rondom I2P verzamelt en publiceerd in één plek. Een goede site om te bezoeken om de community aan het werk te zien!</li>
|
||||
<li class="tidylist"><b>Eepsite Search Engine</b><br><a href="http://eepsites.i2p/" target="_blank">eepsites.i2p</a>: Een
|
||||
anonieme zoek machine.</li>
|
||||
@ -86,7 +84,7 @@ Als je achter een verbiedende firewall zit maar wel onbeperkt uitgaande toegang,
|
||||
of langs komen in
|
||||
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> op I2P's Internet IRC netwerk (<code>irc.postman.i2p</code> or <code>irc.freshcoffee.i2p</code>). Deze kanalen zijn tevens beschikbaar buiten I2P's anonieme versleutelde netwerk via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.</li>
|
||||
|
||||
<li class="tidylist"><b>Bugs melden</b><br>Als je een bug wil melden, maak een ticket aan op <a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. Voor ontwikkelaar-gerelateerde discussies, bezoek <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> of bezoek het <a href="irc://127.0.0.1:6668/i2p-dev">developer kanaal</a> op I2P's IRC netwerk. Ontwikkelaars kunnen de broncode doorbladeren op <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository viewer</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p" target="_blank">Sponge's instance</a>, of via <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We gebruiken hoofdzakelijk <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> om de broncode bij te beheren.</li>
|
||||
<li class="tidylist"><b>Bugs melden</b><br>Als je een bug wil melden, maak een ticket aan op <a href="http://trac.i2p2.i2p/" target="_blank">trac.i2p2.i2p</a>. Voor ontwikkelaar-gerelateerde discussies, bezoek <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> of bezoek het <a href="irc://127.0.0.1:6668/i2p-dev">developer kanaal</a> op I2P's IRC netwerk. Ontwikkelaars kunnen de broncode doorbladeren op <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository viewer</a> of via <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We gebruiken hoofdzakelijk <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> om de broncode bij te beheren.</li>
|
||||
|
||||
<li class="tidylist"><b>Raak betrokken!</b><br>I2P word ontwikkeld en onderhouden door hoofdzakelijk ongefinancierde en vrijwillige community leden. We accepteren graag <a href="http://www.i2p2.i2p/donate.html" target="_blank">donaties</a>, welke zullen besteed aan essentiele hosting en administratie kosten. We hebben <a href="http://www.i2p2.i2p/bounties.html" target="_blank">contante beloningen</a> voor aspecten van I2P voor ontwikkelaars welke graag mee willen ontwikkelen, we zijn altijd opzoek naar meer <a href="http://www.i2p2.i2p/newdevelopers.html" target="_blank">Java coders</a>, <a href="http://www.i2p2.i2p/newtranslators.html" target="_blank">vertalers</a>, promoters en gebruikers om I2P te helpen groeien. Hoe groter het I2P netwerk, hoe meer iedereen van de voordelen profiteert, simpelweg al je vrienden vertellen over I2P en ze helpen het te installeren is al een grote hulp. Voor meer informatie over hoe je betrokken kan raken, bezoek de <a href="http://www.i2p2.i2p/getinvolved.html" target="_blank">vrijwilligers pagina</a> op de website.</li>
|
||||
</ul><div class="topness"><a href="#top">[Naar Boven]</a></div>
|
||||
|
@ -10,7 +10,6 @@
|
||||
conexões seguras e anônimas para <a href="http://www.i2p2.de/index_de.html">www.i2p2.de</a></li>
|
||||
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>: búscador para as páginas I2P</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>: página de Ugha; um wiki público com muitos links</li>
|
||||
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: um proxy para acessar à Freenet</li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>: arquivo de software e informações sobre I2P (com aplicações de BitTorrent, iMule, I2PFox, I2P-Messenger, ...)</li>
|
||||
<li><a href="http://pastethis.i2p">pastethis.i2p</a>: pastebin anônimo</li>
|
||||
</ul><br />
|
||||
|
@ -49,8 +49,6 @@
|
||||
<li class="tidylist"><b>Ресурсы Echelon-а</b><br><a href="http://echelon.i2p" target="_blank">echelon.i2p</a>: архив I2P
|
||||
софта с исходными текстами (где позволяет лицензия), информация об I2P, включая <a href="http://echelon.i2p/I2Pguide/index.html" target="_blank">руководство для начинающих</a> и пре-релизные девелоперские сборки I2P для тестирования.</li>
|
||||
<li class="tidylist"><b>Вики Ugha-и</b><br><a href="http://ugha.i2p/" target="_blank">ugha.i2p</a>: Открытая вики, которую может редактировать любой, с изобилием информации об I2P, помощью для начинающих, дополнительными ссылками на ресурсы сети и т.д.</li>
|
||||
<li class="tidylist"><b>I2P-to-Freenet прокси</b><br><a href="http://fproxy.tino.i2p" target="_blank">fproxy.tino.i2p</a>:
|
||||
Взгляните в мир обмена данными закрытой сети <a href="http://freenetproject.org/" target="_blank">Freenet</a> с помощью I2P-to-Freenet прокси-сервера Tino.</li>
|
||||
<li class="tidylist"><b>Планета I2P</b><br><a href="http://planet.i2p/" target="_blank">planet.i2p</a>: RSS-аггрегатор, который собирает новости и события в I2P и публикует их в одном месте. Хороший сайт, который можно посетить и увидеть сообщество в работе!</li>
|
||||
<li class="tidylist"><b>Поисковик по I2P-сайтам</b><br><a href="http://eepsites.i2p/" target="_blank">eepsites.i2p</a>: Анонимно-хостящийся поисковик по eepsite-ам.</li>
|
||||
<li class="tidylist"><b>Здоровье сети I2P</b><br><a href="http://stats.i2p/cgi-bin/dashboard.cgi" target="_blank">stats.i2p</a>: посмотрите различные аспекты сетевой производительности с помощью этого сайта для мониторинга сети I2P, поддерживаемого zzz.</li>
|
||||
@ -90,7 +88,7 @@
|
||||
или посетить каналы
|
||||
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> во внутренней IRC-сети I2P (<code>irc.postman.i2p</code> или <code>irc.freshcoffee.i2p</code>). Эти каналы так же доступны извне I2P через <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.</li>
|
||||
|
||||
<li class="tidylist"><b>Составление отчётов об ошибках</b><br>Если вы хотите сообщить об ошибке, пожалуйста заведите заявку на сайте <a href="http://trac.i2p2.i2p" target="_blank">trac.i2p2.i2p</a>. Для ведения дискуссий, относящихся к разработке, посетите <a href="http://zzz.i2p" target="_blank">форум разработчиков у zzz</a>, или приходите на <a href="irc://127.0.0.1:6668/i2p-dev">девелоперский канал</a> в IRC-сети I2P. Программисты могут захотеть посмотреть исходные коды в <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">веб-просмотрщике mtn-репозитория от zzz</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p" target="_blank">инсталляции у Sponge-а</a>, или через <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. Преимущественно, мы используем <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> для управления исходным кодом.</li>
|
||||
<li class="tidylist"><b>Составление отчётов об ошибках</b><br>Если вы хотите сообщить об ошибке, пожалуйста заведите заявку на сайте <a href="http://trac.i2p2.i2p" target="_blank">trac.i2p2.i2p</a>. Для ведения дискуссий, относящихся к разработке, посетите <a href="http://zzz.i2p" target="_blank">форум разработчиков у zzz</a>, или приходите на <a href="irc://127.0.0.1:6668/i2p-dev">девелоперский канал</a> в IRC-сети I2P. Программисты могут захотеть посмотреть исходные коды в <a href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">веб-просмотрщике mtn-репозитория от zzz</a> или через <a href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. Преимущественно, мы используем <a href="http://www.i2p2.i2p/monotone.html" target="_blank">monotone</a> для управления исходным кодом.</li>
|
||||
|
||||
<li class="tidylist"><b>Вовлекайтесь!</b><br>I2P разрабатывается и сопровождается в основном за счёт неоплачиваемого, добровольного участия членов сообщества. Мы рады принимать <a href="http://www.i2p2.i2p/donate.html" target="_blank">пожертвования</a>, которые идут на необходимые административные затраты и хостинг. Для разработчиков, ищущих материальные стимулы, у нас есть <a href="http://www.i2p2.i2p/bounties.html" target="_blank">денежные премии</a> за работу над некоторыми аспектами I2P, и мы всегда ищем <a href="http://www.i2p2.i2p/newdevelopers.html" target="_blank">Java программистов</a>, <a href="http://www.i2p2.i2p/newtranslators.html" target="_blank">переводчиков</a>, популяризаторов и пользователей, помогающих I2P расширяться. Чем больше I2P-сеть, тем больше общая выгода, поэтому простой рассказ об I2P своим друзьям (и помощь с установкой и настройкой если нужно) - уже большая помощь. Для получения дальнейшей информации о том, как вы можете принять участие, посетите <a href="http://www.i2p2.i2p/getinvolved.html" target="_blank">страницу для добровольцев</a> на официальном сайте.</li>
|
||||
</ul><div class="topness"><a href="#top">[Наверх]</a></div>
|
||||
|
@ -20,8 +20,6 @@ href="http://www.i2p2.de/">www.i2p2.de</a></li>
|
||||
sökmotor</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>: ugha's eepsida, en
|
||||
wiki som alla kan förändra, innehåller många länkar</li>
|
||||
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>:
|
||||
Freenet proxy</li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>: programvaruförråd och information om I2P</li>
|
||||
<li><a href="http://pastethis.i2p">pastethis.i2p</a>: anonym och säker pastebin</li>
|
||||
</ul><br>
|
||||
|
@ -9,7 +9,6 @@
|
||||
<li><a href="http://www.i2p2.i2p/index_zh.html">www.i2p2.i2p</a> 与镜像 <a href="http://i2p-projekt.i2p/index_zh.html">i2p-projekt.i2p</a>: 可以安全匿名的访问I2P官网 <a href="http://www.i2p2.de/index_zh.html">www.i2p2.de</a></li>
|
||||
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>: I2P网络里的 “Google” 可以用来搜索各个匿名小站</li>
|
||||
<li><a href="http://ugha.i2p/">ugha.i2p</a>:UGHA 的 I2P 小站,开放编辑的WIKI,有丰富的链接</li>
|
||||
<li><a href="http://fproxy.tino.i2p/">fproxy.tino.i2p</a>:FREENET 代理</li>
|
||||
<li><a href="http://echelon.i2p/">echelon.i2p</a>:软件存档及有关I2P的相关文档 (例如 I2P Messenger 基于I2P的匿名聊天工具等) </li>
|
||||
<li><a href="http://pastethis.i2p/">pastethis.i2p</a>:安全匿名的公共剪贴板</li>
|
||||
</ul> <br>
|
||||
|
@ -168,6 +168,10 @@ wrapper.logfile.maxfiles=2
|
||||
# Log Level for sys/event log output. (See docs for log levels)
|
||||
wrapper.syslog.loglevel=NONE
|
||||
|
||||
# these will shut down or crash the JVM
|
||||
wrapper.signal.mode.usr1=IGNORE
|
||||
wrapper.signal.mode.usr2=IGNORE
|
||||
|
||||
# choose what to do if the JVM kills itself based on the exit code
|
||||
wrapper.on_exit.default=SHUTDOWN
|
||||
wrapper.on_exit.0=SHUTDOWN
|
||||
|
@ -488,9 +488,7 @@ public class Blocklist {
|
||||
for (int j = 0; j < paddr.size(); j++) {
|
||||
RouterAddress pa = (RouterAddress) pladdr.get(j);
|
||||
if (pa == null) continue;
|
||||
Properties pprops = pa.getOptions();
|
||||
if (pprops == null) continue;
|
||||
String phost = pprops.getProperty("host");
|
||||
String phost = pa.getOption("host");
|
||||
if (phost == null) continue;
|
||||
if (oldphost != null && oldphost.equals(phost)) continue;
|
||||
oldphost = phost;
|
||||
|
@ -12,6 +12,7 @@ package net.i2p.router;
|
||||
* Defines the criteria for selecting a set of peers for use when searching the
|
||||
* PeerManager
|
||||
*
|
||||
* Only used by PeerTestJob, which may not have a point.
|
||||
*/
|
||||
public class PeerSelectionCriteria {
|
||||
/** The peers will be used in a tunnel */
|
||||
|
@ -60,7 +60,7 @@ import net.i2p.util.SimpleScheduler;
|
||||
*
|
||||
*/
|
||||
public class Router implements RouterClock.ClockShiftListener {
|
||||
private final Log _log;
|
||||
private Log _log;
|
||||
private final RouterContext _context;
|
||||
private final Map<String, String> _config;
|
||||
/** full path */
|
||||
@ -77,9 +77,9 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
private ShutdownHook _shutdownHook;
|
||||
/** non-cancellable shutdown has begun */
|
||||
private volatile boolean _shutdownInProgress;
|
||||
private final I2PThread _gracefulShutdownDetector;
|
||||
private final RouterWatchdog _watchdog;
|
||||
private final Thread _watchdogThread;
|
||||
private I2PThread _gracefulShutdownDetector;
|
||||
private RouterWatchdog _watchdog;
|
||||
private Thread _watchdogThread;
|
||||
|
||||
public final static String PROP_CONFIG_FILE = "router.configLocation";
|
||||
|
||||
@ -128,9 +128,17 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
System.setProperty("Dorg.mortbay.util.FileResource.checkAliases", "true");
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiation only. Starts no threads. Does not install updates.
|
||||
* RouterContext is created but not initialized.
|
||||
* You must call runRouter() after any constructor to start things up.
|
||||
*/
|
||||
public Router() { this(null, null); }
|
||||
|
||||
public Router(Properties envProps) { this(null, envProps); }
|
||||
|
||||
public Router(String configFilename) { this(configFilename, null); }
|
||||
|
||||
public Router(String configFilename, Properties envProps) {
|
||||
_gracefulExitCode = -1;
|
||||
_config = new ConcurrentHashMap();
|
||||
@ -233,16 +241,20 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
String now = Long.toString(System.currentTimeMillis());
|
||||
_config.put("router.firstInstalled", now);
|
||||
_config.put("router.updateLastInstalled", now);
|
||||
// only compatible with new i2prouter script
|
||||
_config.put("router.gracefulHUP", "true");
|
||||
saveConfig();
|
||||
}
|
||||
// ********* Start no threads before here ********* //
|
||||
}
|
||||
|
||||
// This is here so that we can get the directory location from the context
|
||||
// for the zip file and the base location to unzip to.
|
||||
// If it does an update, it never returns.
|
||||
// I guess it's better to have the other-router check above this, we don't want to
|
||||
// overwrite an existing running router's jar files. Other than ours.
|
||||
installUpdates();
|
||||
|
||||
/**
|
||||
* Initializes the RouterContext.
|
||||
* Starts some threads. Does not install updates.
|
||||
* All this was in the constructor.
|
||||
* @since 0.8.12
|
||||
*/
|
||||
private void startupStuff() {
|
||||
// ********* Start no threads before here ********* //
|
||||
//
|
||||
// NOW we can start the ping file thread.
|
||||
@ -372,11 +384,18 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
|
||||
public RouterContext getContext() { return _context; }
|
||||
|
||||
/**
|
||||
* Initializes the RouterContext.
|
||||
* Starts the threads. Does not install updates.
|
||||
*/
|
||||
void runRouter() {
|
||||
if (_isAlive)
|
||||
throw new IllegalStateException();
|
||||
startupStuff();
|
||||
_isAlive = true;
|
||||
_started = _context.clock().now();
|
||||
try {
|
||||
Runtime.getRuntime().removeShutdownHook(_shutdownHook);
|
||||
Runtime.getRuntime().addShutdownHook(_shutdownHook);
|
||||
} catch (IllegalStateException ise) {}
|
||||
I2PThread.addOOMEventListener(_oomListener);
|
||||
|
||||
@ -987,9 +1006,12 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
|
||||
/**
|
||||
* Cancel the JVM runtime hook before calling this.
|
||||
* Called by the ShutdownHook.
|
||||
* NOT to be called by others, use shutdown().
|
||||
*/
|
||||
public void shutdown2(int exitCode) {
|
||||
_shutdownInProgress = true;
|
||||
_log.log(Log.CRIT, "Starting final shutdown(" + exitCode + ')');
|
||||
// So we can get all the way to the end
|
||||
// No, you can't do Thread.currentThread.setDaemon(false)
|
||||
if (_killVMOnEnd) {
|
||||
@ -1004,6 +1026,7 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
// Run the shutdown hooks first in case they want to send some goodbye messages
|
||||
// Maybe we need a delay after this too?
|
||||
for (Runnable task : _context.getShutdownTasks()) {
|
||||
//System.err.println("Running shutdown task " + task.getClass());
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Running shutdown task " + task.getClass());
|
||||
try {
|
||||
@ -1098,7 +1121,7 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
//Runtime.getRuntime().halt(exitCode);
|
||||
// allow the Runtime shutdown hooks to execute
|
||||
Runtime.getRuntime().exit(exitCode);
|
||||
} else {
|
||||
} else if (System.getProperty("java.vendor").contains("Android")) {
|
||||
Runtime.getRuntime().gc();
|
||||
}
|
||||
}
|
||||
@ -1266,13 +1289,18 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
|
||||
public static void main(String args[]) {
|
||||
System.out.println("Starting I2P " + RouterVersion.FULL_VERSION);
|
||||
// installUpdates() moved to constructor so we can get file locations from the context
|
||||
// installUpdates();
|
||||
//verifyWrapperConfig();
|
||||
Router r = new Router();
|
||||
if ( (args != null) && (args.length == 1) && ("rebuild".equals(args[0])) ) {
|
||||
r.rebuildNewIdentity();
|
||||
} else {
|
||||
// This is here so that we can get the directory location from the context
|
||||
// for the zip file and the base location to unzip to.
|
||||
// If it does an update, it never returns.
|
||||
// I guess it's better to have the other-router check above this, we don't want to
|
||||
// overwrite an existing running router's jar files. Other than ours.
|
||||
r.installUpdates();
|
||||
// ********* Start no threads before here ********* //
|
||||
r.runRouter();
|
||||
}
|
||||
}
|
||||
@ -1281,6 +1309,7 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
private static final String DELETE_FILE = "deletelist.txt";
|
||||
|
||||
/**
|
||||
* Context must be available.
|
||||
* Unzip update file found in the router dir OR base dir, to the base dir
|
||||
*
|
||||
* If we can't write to the base dir, complain.
|
||||
|
@ -18,10 +18,10 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 24;
|
||||
public final static long BUILD = 1;
|
||||
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "-rc";
|
||||
public final static String EXTRA = "";
|
||||
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Router version: " + FULL_VERSION);
|
||||
|
@ -41,7 +41,7 @@ public class PublishLocalRouterInfoJob extends JobImpl {
|
||||
RouterInfo ri = new RouterInfo(getContext().router().getRouterInfo());
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Old routerInfo contains " + ri.getAddresses().size()
|
||||
+ " addresses and " + ri.getOptions().size() + " options");
|
||||
+ " addresses and " + ri.getOptionsMap().size() + " options");
|
||||
Properties stats = getContext().statPublisher().publishStatistics();
|
||||
stats.setProperty(RouterInfo.PROP_NETWORK_ID, ""+Router.NETWORK_ID);
|
||||
try {
|
||||
@ -60,7 +60,7 @@ public class PublishLocalRouterInfoJob extends JobImpl {
|
||||
getContext().router().setRouterInfo(ri);
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Newly updated routerInfo is published with " + stats.size()
|
||||
+ "/" + ri.getOptions().size() + " options on "
|
||||
+ "/" + ri.getOptionsMap().size() + " options on "
|
||||
+ new Date(ri.getPublished()));
|
||||
try {
|
||||
getContext().netDb().publish(ri);
|
||||
|
@ -133,8 +133,7 @@ class FloodfillMonitorJob extends JobImpl {
|
||||
if (ra == null)
|
||||
happy = false;
|
||||
else {
|
||||
Properties props = ra.getOptions();
|
||||
if (props == null || props.getProperty("ihost0") != null)
|
||||
if (ra.getOption("ihost0") != null)
|
||||
happy = false;
|
||||
}
|
||||
}
|
||||
|
@ -786,8 +786,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
RouterAddress ra = routerInfo.getTargetAddress("SSU");
|
||||
if (ra != null) {
|
||||
// Introducers change often, introducee will ping introducer for 2 hours
|
||||
Properties props = ra.getOptions();
|
||||
if (props != null && props.getProperty("ihost0") != null)
|
||||
if (ra.getOption("ihost0") != null)
|
||||
return "Peer " + key.toBase64() + " published > 75m ago with SSU Introducers";
|
||||
if (routerInfo.getTargetAddress("NTCP") == null)
|
||||
return "Peer " + key.toBase64() + " published > 75m ago, SSU only without introducers";
|
||||
@ -822,10 +821,10 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
if (err != null)
|
||||
throw new IllegalArgumentException("Invalid store attempt - " + err);
|
||||
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("RouterInfo " + key.toBase64() + " is stored with "
|
||||
+ routerInfo.getOptions().size() + " options on "
|
||||
+ new Date(routerInfo.getPublished()));
|
||||
//if (_log.shouldLog(Log.DEBUG))
|
||||
// _log.debug("RouterInfo " + key.toBase64() + " is stored with "
|
||||
// + routerInfo.getOptionsMap().size() + " options on "
|
||||
// + new Date(routerInfo.getPublished()));
|
||||
|
||||
_context.peerManager().setCapabilities(key, routerInfo.getCapabilities());
|
||||
_ds.put(key, routerInfo, persist);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user