diff --git a/.tx/config b/.tx/config index 01bd7def7fad77b5882be86a9fe3af27ca086175..ae6bbab9ec7c35f06dc8b317261f9c8fda0cb2c5 100644 --- a/.tx/config +++ b/.tx/config @@ -10,6 +10,7 @@ trans.fr = apps/i2ptunnel/locale/messages_fr.po trans.hu = apps/i2ptunnel/locale/messages_hu.po trans.it = apps/i2ptunnel/locale/messages_it.po trans.nl = apps/i2ptunnel/locale/messages_nl.po +trans.pt = apps/i2ptunnel/locale/messages_pt.po trans.ru = apps/i2ptunnel/locale/messages_ru.po trans.sv_SE = apps/i2ptunnel/locale/messages_sv.po trans.uk_UA = apps/i2ptunnel/locale/messages_uk.po @@ -32,6 +33,7 @@ trans.hu = apps/routerconsole/locale/messages_hu.po trans.it = apps/routerconsole/locale/messages_it.po trans.nl = apps/routerconsole/locale/messages_nl.po trans.pl = apps/routerconsole/locale/messages_pl.po +trans.pt = apps/routerconsole/locale/messages_pt.po trans.ru = apps/routerconsole/locale/messages_ru.po trans.sv_SE = apps/routerconsole/locale/messages_sv.po trans.uk_UA = apps/routerconsole/locale/messages_uk.po @@ -70,6 +72,7 @@ trans.hu = apps/susidns/locale/messages_hu.po trans.it = apps/susidns/locale/messages_it.po trans.nl = apps/susidns/locale/messages_nl.po trans.pl = apps/susidns/locale/messages_pl.po +trans.pt = apps/susidns/locale/messages_pt.po trans.ru = apps/susidns/locale/messages_ru.po trans.sv_SE = apps/susidns/locale/messages_sv.po trans.uk_UA = apps/susidns/locale/messages_uk.po diff --git a/Slackware/i2p/i2p.SlackBuild b/Slackware/i2p/i2p.SlackBuild index 07c91659c0a72b78b5130a24ea3f4b07ebe6a5a6..325f19c8465254d4d4c90bc372906ab9199ef1d1 100755 --- a/Slackware/i2p/i2p.SlackBuild +++ b/Slackware/i2p/i2p.SlackBuild @@ -128,7 +128,7 @@ cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG # -# requiredbuilder fucks up REALLY bad, and thinks java is perl?! +# requiredbuilder messes up REALLY bad, and thinks java is perl?! # It also did not catch the shell requirements! BOOOOOOOOOOO! HISSSSSSSS! # # requiredbuilder -v -y -s $CWD $PKG diff --git a/apps/BOB/Demos/echo/echoclient/src/net/i2p/BOB/Demos/echo/echoclient/Main.java b/apps/BOB/Demos/echo/echoclient/src/net/i2p/BOB/Demos/echo/echoclient/Main.java index d3398caaacc8a3386edc7901731cba634184b93b..ca7b8288906d227745e76410361d9e9d9952108c 100644 --- a/apps/BOB/Demos/echo/echoclient/src/net/i2p/BOB/Demos/echo/echoclient/Main.java +++ b/apps/BOB/Demos/echo/echoclient/src/net/i2p/BOB/Demos/echo/echoclient/Main.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB.Demos.echo.echoclient; @@ -55,7 +47,7 @@ public class Main { // exit on anything not legal break; } - c = (char)(b & 0x7f); // We only really give a fuck about ASCII + c = (char)(b & 0x7f); // We only care about ASCII S = new String(S + c); } return S; diff --git a/apps/BOB/Demos/echo/echoserver/src/net/i2p/BOB/Demos/echo/echoserver/Main.java b/apps/BOB/Demos/echo/echoserver/src/net/i2p/BOB/Demos/echo/echoserver/Main.java index 86344b1a8292338f0a3895f662d7eef725f93c78..6b7be251824859555928c5798114bbd16e7b37fd 100644 --- a/apps/BOB/Demos/echo/echoserver/src/net/i2p/BOB/Demos/echo/echoserver/Main.java +++ b/apps/BOB/Demos/echo/echoserver/src/net/i2p/BOB/Demos/echo/echoserver/Main.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB.Demos.echo.echoserver; @@ -52,7 +44,7 @@ public class Main { if(b < 20) { break; } - c = (char)(b & 0x7f); // We only really give a fuck about ASCII + c = (char)(b & 0x7f); // We only care about ASCII S = new String(S + c); } return S; diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index 0b55eb532d261a900bfa34b45b3f170314775529..517146dac1d60cbfe597acc04094a4e7da480b40 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index 38bb60ca6e5452d314f9b8f56e947285866ab330..85be6e9ea261a11512d4bc6d5ee2edb7751c13c7 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java index 861a1fbca09eb097de87366e900f0bc1971c1ec1..05b12fcd349a94743b9a240b0d45cde8532a4f3f 100644 --- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java +++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; @@ -94,7 +86,7 @@ public class I2Plistener implements Runnable { } } catch (I2PException e) { - // bad shit + // bad stuff System.out.println("Exception " + e); } } finally { diff --git a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java index 4c186700f65a71f4ca188f4910eb27a3d08674e5..bf699db60e62587e84c8878474a3c788e45c3dbf 100644 --- a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java +++ b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/Lifted.java b/apps/BOB/src/net/i2p/BOB/Lifted.java index fbd23cba5feb7dedf9b5cb25d57335baa0dbfe57..47268243677aea05d4ec7c1d2d21a9fc851beb52 100644 --- a/apps/BOB/src/net/i2p/BOB/Lifted.java +++ b/apps/BOB/src/net/i2p/BOB/Lifted.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/MUXlisten.java b/apps/BOB/src/net/i2p/BOB/MUXlisten.java index 7d1e6478fba3e4dd690f489dc310c780fe9b624d..faaf2899a95615b9cddcbcadf9ac76a7f6e34426 100644 --- a/apps/BOB/src/net/i2p/BOB/MUXlisten.java +++ b/apps/BOB/src/net/i2p/BOB/MUXlisten.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; @@ -302,14 +294,14 @@ public class MUXlisten implements Runnable { // Hopefully nuke stuff here... { - String boner = tg.getName(); + String groupName = tg.getName(); try { - _log.warn("destroySocketManager " + boner); + _log.warn("destroySocketManager " + groupName); socketManager.destroySocketManager(); - _log.warn("destroySocketManager Successful" + boner); + _log.warn("destroySocketManager Successful" + groupName); } catch (Exception e) { // nop - _log.warn("destroySocketManager Failed" + boner); + _log.warn("destroySocketManager Failed" + groupName); _log.warn(e.toString()); } } @@ -333,25 +325,25 @@ public class MUXlisten implements Runnable { // Wait around till all threads are collected. if (tg != null) { - String boner = tg.getName(); - // System.out.println("BOB: MUXlisten: Starting thread collection for: " + boner); - _log.warn("BOB: MUXlisten: Starting thread collection for: " + boner); + String groupName = tg.getName(); + // System.out.println("BOB: MUXlisten: Starting thread collection for: " + groupName); + _log.warn("BOB: MUXlisten: Starting thread collection for: " + groupName); if (tg.activeCount() + tg.activeGroupCount() != 0) { - // visit(tg, 0, boner); + // visit(tg, 0, groupName); int foo = tg.activeCount() + tg.activeGroupCount(); // hopefully no longer needed! // int bar = lives; - // System.out.println("BOB: MUXlisten: Waiting on threads for " + boner); - // System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + boner); - // visit(tg, 0, boner); - // System.out.println("BOB: MUXlisten: ThreadGroup dump END " + boner + "\n"); + // System.out.println("BOB: MUXlisten: Waiting on threads for " + groupName); + // System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + groupName); + // visit(tg, 0, groupName); + // System.out.println("BOB: MUXlisten: ThreadGroup dump END " + groupName + "\n"); // Happily spin forever :-( while (foo != 0) { foo = tg.activeCount() + tg.activeGroupCount(); // if (lives != bar && lives != 0) { - // System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + boner); - // visit(tg, 0, boner); - // System.out.println("BOB: MUXlisten: ThreadGroup dump END " + boner + "\n"); + // System.out.println("\nBOB: MUXlisten: ThreadGroup dump BEGIN " + groupName); + // visit(tg, 0, groupName); + // System.out.println("BOB: MUXlisten: ThreadGroup dump END " + groupName + "\n"); // } // bar = lives; try { @@ -361,8 +353,8 @@ public class MUXlisten implements Runnable { } } } - // System.out.println("BOB: MUXlisten: Threads went away. Success: " + boner); - _log.warn("BOB: MUXlisten: Threads went away. Success: " + boner); + // System.out.println("BOB: MUXlisten: Threads went away. Success: " + groupName); + _log.warn("BOB: MUXlisten: Threads went away. Success: " + groupName); tg.destroy(); // Zap reference to the ThreadGroup so the JVM can GC it. tg = null; diff --git a/apps/BOB/src/net/i2p/BOB/Main.java b/apps/BOB/src/net/i2p/BOB/Main.java index 099d01636244980f753853f1edeba6c01e1dcb0f..89fd9548939d9b1d4bda091272a9b1f7b6fc50ba 100644 --- a/apps/BOB/src/net/i2p/BOB/Main.java +++ b/apps/BOB/src/net/i2p/BOB/Main.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/NamedDB.java b/apps/BOB/src/net/i2p/BOB/NamedDB.java index b5189647bc72fc033a2a25c60afe7690d579fced..46796136dd51baeef1a389ab6e7a6c76a425ec4d 100644 --- a/apps/BOB/src/net/i2p/BOB/NamedDB.java +++ b/apps/BOB/src/net/i2p/BOB/NamedDB.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/TCPio.java b/apps/BOB/src/net/i2p/BOB/TCPio.java index ca3e5c833cd026590736ec02800d95b4652d4df6..e684d5327847c65d2649a4e0b478006287377192 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPio.java +++ b/apps/BOB/src/net/i2p/BOB/TCPio.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java index 35227481a266eb58e47831692f3f34ec5dc191e5..90fff591794a63a12b3c9965c78328138042e784 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java +++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java index 05d3f5b651890242f1024cd2babeba1555e5b072..d83c061a0075169b8c646eb9464c1bf0c8bfd234 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java +++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; @@ -94,7 +86,7 @@ public class TCPtoI2P implements Runnable { // exit on anything not legal break; } - c = (char) (b & 0x7f); // We only really give a fuck about ASCII + c = (char) (b & 0x7f); // We only care about ASCII S = new String(S + c); } return S; diff --git a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java index b421a6a945d7ef0a3f186fdc9e9d605e99820a11..e5c753f5e15d0a611fe873b65b8a9f9e7fb2d03f 100644 --- a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java +++ b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,7 +11,7 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ package net.i2p.BOB; diff --git a/apps/fortuna/build.xml b/apps/fortuna/build.xml deleted file mode 100644 index 50fdf246592792cfa0d506696e8a4bf4b6c5bd9e..0000000000000000000000000000000000000000 --- a/apps/fortuna/build.xml +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project basedir="." default="all" name="fortuna"> - - <property name="cvs.base.dir" value="java/gnu-crypto" /> - <property name="cvs.etc.dir" value="${cvs.base.dir}/etc" /> - <property name="cvs.lib.dir" value="${cvs.base.dir}/lib" /> - <property name="cvs.object.dir" value="${cvs.base.dir}/classes" /> - <property name="cvs.base.crypto.object.dir" value="${cvs.object.dir}/gnu/crypto" /> - <property name="cvs.cipher.object.dir" value="${cvs.base.crypto.object.dir}/cipher" /> - <property name="cvs.hash.object.dir" value="${cvs.base.crypto.object.dir}/hash" /> - <property name="cvs.prng.object.dir" value="${cvs.base.crypto.object.dir}/prng" /> - - <patternset id="fortuna.files"> - <include name="${cvs.base.crypto.object.dir}/Registry.class"/> - <include name="${cvs.prng.object.dir}/Fortuna*.class"/> - <include name="${cvs.prng.object.dir}/BasePRNG.class"/> - <include name="${cvs.prng.object.dir}/RandomEventListener.class"/> - <include name="${cvs.prng.object.dir}/IRandom.class"/> - <include name="${cvs.cipher.object.dir}/CipherFactory.class"/> - <include name="${cvs.cipher.object.dir}/IBlockCipher.class"/> - <include name="${cvs.hash.object.dir}/HashFactory.class"/> - <include name="${cvs.hash.object.dir}/IMessageDigest.class"/> - </patternset> - - <target name="all" depends="build,jar" - description="Create and test the custom Fortuna library" /> - - <target name="build" depends="-init,checkout" - description="Build the source and tests"> - <ant dir="${cvs.base.dir}" target="jar" /> - </target> - - <target name="builddep" /> - - <target name="checkout" depends="-init" unless="cvs.source.available" - description="Check out GNU Crypto sources from CVS HEAD"> - <cvs cvsRoot=":ext:anoncvs@savannah.gnu.org:/cvsroot/gnu-crypto" - cvsRsh="ssh" - dest="java" - package="gnu-crypto" /> - </target> - - <target name="clean" - description="Remove generated tests and object files"> - <ant dir="${cvs.base.dir}" target="clean" /> - </target> - - <target name="cleandep" /> - - <target name="compile" /> - - <target name="distclean" depends="clean" - description="Remove all generated files"> - <delete dir="build" /> - <delete dir="jartemp" /> - <!-- - Annoyingly the GNU Crypto distclean task called here doesn't clean - *all* derived files from java/gnu-crypto/lib like it should..... - --> - <ant dir="${cvs.base.dir}" target="distclean" /> - <!-- - .....and so we mop up the rest ourselves. - --> - <delete dir="${cvs.lib.dir}" /> - </target> - - <target name="-init"> - <available property="cvs.source.available" file="${cvs.base.dir}" /> - </target> - - <target name="jar" depends="build" - description="Create the custom Fortuna jar library"> - <delete dir="build" /> - <delete dir="jartemp" /> - <mkdir dir="build" /> - <mkdir dir="jartemp/${cvs.object.dir}" /> - <copy todir="jartemp"> - <fileset dir="."> - <patternset refid="fortuna.files" /> - </fileset> - </copy> - <jar basedir="jartemp/${cvs.object.dir}" jarfile="build/fortuna.jar"> - <manifest> - <section name="fortuna"> - <attribute name="Implementation-Title" value="I2P Custom GNU Crypto Fortuna Library" /> - <attribute name="Implementation-Version" value="CVS HEAD" /> - <attribute name="Implementation-Vendor" value="Free Software Foundation" /> - <attribute name="Implementation-Vendor-Id" value="FSF" /> - <attribute name="Implementation-URL" value="http://www.gnu.org/software/gnu-crypto" /> - </section> - </manifest> - </jar> - <delete dir="jartemp" /> - </target> - - <target name="test" depends="jar" - description="Perform crypto tests on custom Fortuna jar library" /> - <!-- - Add this when Fortuna tests are added to GNU Crypto, else write some - --> - - <target name="update" depends="checkout" - description="Update GNU Crypto sources to latest CVS HEAD"> - <cvs command="update -d" cvsRsh="ssh" dest="java/gnu-crypto" /> - </target> -</project> diff --git a/apps/i2psnark/java/src/net/i2p/kademlia/KBucketSet.java b/apps/i2psnark/java/src/net/i2p/kademlia/KBucketSet.java index c242ab9b7b1d88cadb642b0e15df8b707c2a01d9..b84cdc66cf5151e5adfac19985016dd4caace023 100644 --- a/apps/i2psnark/java/src/net/i2p/kademlia/KBucketSet.java +++ b/apps/i2psnark/java/src/net/i2p/kademlia/KBucketSet.java @@ -209,10 +209,10 @@ public class KBucketSet<T extends SimpleDataStructure> { int s1, e1, s2, e2; s1 = b0.getRangeBegin(); e2 = b0.getRangeEnd(); - if (B_FACTOR > 1 && - (s1 & (B_FACTOR - 1)) == 0 && - ((e2 + 1) & (B_FACTOR - 1)) == 0 && - e2 > s1 + B_FACTOR) { + if (B_VALUE == 1 || + ((s1 & (B_FACTOR - 1)) == 0 && + ((e2 + 1) & (B_FACTOR - 1)) == 0 && + e2 > s1 + B_FACTOR)) { // The bucket is a "whole" kbucket with a range > B_FACTOR, // so it should be split into two "whole" kbuckets each with // a range >= B_FACTOR. @@ -529,7 +529,10 @@ public class KBucketSet<T extends SimpleDataStructure> { getReadLock(); try { for (KBucket b : _buckets) { - if (b.getLastChanged() < old || b.getKeyCount() < BUCKET_SIZE * 3 / 4) + int curSize = b.getKeyCount(); + // Always explore the closest bucket + if ((b.getRangeBegin() == 0) || + (b.getLastChanged() < old || curSize < BUCKET_SIZE * 3 / 4)) rv.add(generateRandomKey(b)); } } finally { releaseReadLock(); } @@ -759,8 +762,8 @@ public class KBucketSet<T extends SimpleDataStructure> { public String toString() { StringBuilder buf = new StringBuilder(1024); buf.append("Bucket set rooted on: ").append(_us.toString()) - .append(" K= ").append(BUCKET_SIZE) - .append(" B= ").append(B_VALUE) + .append(" K=").append(BUCKET_SIZE) + .append(" B=").append(B_VALUE) .append(" with ").append(size()) .append(" keys in ").append(_buckets.size()).append(" buckets:\n"); getReadLock(); diff --git a/apps/i2psnark/java/src/org/klomp/snark/BitField.java b/apps/i2psnark/java/src/org/klomp/snark/BitField.java index 3f16deb684da1b5100c2affc7bb79917e1eb4c11..d18ef13435d8b129949742589511921db1a24156 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/BitField.java +++ b/apps/i2psnark/java/src/org/klomp/snark/BitField.java @@ -59,7 +59,6 @@ public class BitField // cleared or clear them explicitly ourselves. System.arraycopy(bitfield, 0, this.bitfield, 0, arraysize); - this.count = 0; for (int i = 0; i < size; i++) if (get(i)) this.count++; diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 1ef8cd302a5d3a48f65974a79719b4a6f3199f08..6cef36f67b1cfd93109396b8525cca36eb736026 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -58,7 +58,7 @@ public class I2PSnarkUtil { private volatile I2PSocketManager _manager; private boolean _configured; private volatile boolean _connecting; - private final Set<Hash> _shitlist; + private final Set<Hash> _banlist; private int _maxUploaders; private int _maxUpBW; private int _maxConnections; @@ -86,7 +86,7 @@ public class I2PSnarkUtil { _opts = new HashMap(); //setProxy("127.0.0.1", 4444); setI2CPConfig("127.0.0.1", 7654, null); - _shitlist = new ConcurrentHashSet(); + _banlist = new ConcurrentHashSet(); _maxUploaders = Snark.MAX_TOTAL_UPLOADERS; _maxUpBW = DEFAULT_MAX_UP_BW; _maxConnections = MAX_CONNECTIONS; @@ -244,6 +244,8 @@ public class I2PSnarkUtil { opts.setProperty("i2p.streaming.maxConnsPerHour", "20"); if (opts.getProperty("i2p.streaming.enforceProtocol") == null) opts.setProperty("i2p.streaming.enforceProtocol", "true"); + if (opts.getProperty("i2p.streaming.disableRejectLogging") == null) + opts.setProperty("i2p.streaming.disableRejectLogging", "true"); _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts); _connecting = false; } @@ -283,7 +285,7 @@ public class I2PSnarkUtil { I2PSocketManager mgr = _manager; // FIXME this can cause race NPEs elsewhere _manager = null; - _shitlist.clear(); + _banlist.clear(); if (mgr != null) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Disconnecting from I2P", new Exception("I did it")); @@ -306,24 +308,24 @@ public class I2PSnarkUtil { if (addr.equals(getMyDestination())) throw new IOException("Attempt to connect to myself"); Hash dest = addr.calculateHash(); - if (_shitlist.contains(dest)) - throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are shitlisted"); + if (_banlist.contains(dest)) + throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are banlisted"); try { I2PSocket rv = _manager.connect(addr); if (rv != null) - _shitlist.remove(dest); + _banlist.remove(dest); return rv; } catch (I2PException ie) { - _shitlist.add(dest); - _context.simpleScheduler().addEvent(new Unshitlist(dest), 10*60*1000); + _banlist.add(dest); + _context.simpleScheduler().addEvent(new Unbanlist(dest), 10*60*1000); throw new IOException("Unable to reach the peer " + peer + ": " + ie.getMessage()); } } - private class Unshitlist implements SimpleTimer.TimedEvent { + private class Unbanlist implements SimpleTimer.TimedEvent { private Hash _dest; - public Unshitlist(Hash dest) { _dest = dest; } - public void timeReached() { _shitlist.remove(_dest); } + public Unbanlist(Hash dest) { _dest = dest; } + public void timeReached() { _banlist.remove(_dest); } } /** diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 08c7109ef977dbf354367677d1fc27887d238f5a..f1ef08eb18c914b1505f29a5aeb532128df92dd2 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -377,7 +377,10 @@ class PeerCoordinator implements PeerListener public boolean needOutboundPeers() { //return wantedBytes != 0 && needPeers(); // minus one to make it a little easier for new peers to get in on large swarms - return wantedBytes != 0 && !halted && peers.size() < getMaxConnections() - 1; + return wantedBytes != 0 && + !halted && + peers.size() < getMaxConnections() - 1 && + (storage == null || !storage.isChecking()); } /** @@ -741,7 +744,19 @@ class PeerCoordinator implements PeerListener break; if (havePieces.get(p.getId()) && !p.isRequested()) { - piece = p; + // never ever choose one that's in partialPieces, or we + // will create a second one and leak + boolean hasPartial = false; + for (PartialPiece pp : partialPieces) { + if (pp.getPiece() == p.getId()) { + if (_log.shouldLog(Log.INFO)) + _log.info("wantPiece() skipping partial for " + peer + ": piece = " + pp); + hasPartial = true; + break; + } + } + if (!hasPartial) + piece = p; } else if (p.isRequested()) { @@ -943,13 +958,11 @@ class PeerCoordinator implements PeerListener */ public boolean gotPiece(Peer peer, PartialPiece pp) { - if (metainfo == null || storage == null) + if (metainfo == null || storage == null || storage.isChecking() || halted) { + pp.release(); return true; - int piece = pp.getPiece(); - if (halted) { - _log.info("Got while-halted piece " + piece + "/" + metainfo.getPieces() +" from " + peer + " for " + metainfo.getName()); - return true; // We don't actually care anymore. } + int piece = pp.getPiece(); synchronized(wantedPieces) { @@ -962,12 +975,15 @@ class PeerCoordinator implements PeerListener // Assume we got a good piece, we don't really care anymore. // Well, this could be caused by a change in priorities, so // only return true if we already have it, otherwise might as well keep it. - if (storage.getBitField().get(piece)) + if (storage.getBitField().get(piece)) { + pp.release(); return true; + } } try { + // this takes forever if complete, as it rechecks if (storage.putPiece(pp)) { if (_log.shouldLog(Log.INFO)) @@ -1173,6 +1189,8 @@ class PeerCoordinator implements PeerListener public PartialPiece getPartialPiece(Peer peer, BitField havePieces) { if (metainfo == null) return null; + if (storage != null && storage.isChecking()) + return null; synchronized(wantedPieces) { // sorts by remaining bytes, least first Collections.sort(partialPieces); @@ -1277,6 +1295,7 @@ class PeerCoordinator implements PeerListener PartialPiece pp = iter.next(); if (pp.getPiece() == piece) { iter.remove(); + pp.release(); // there should be only one but keep going to be sure } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java index 95bef3c4f981c0fbef55be361769790724dd12c4..8add00d2b9734ff02a0e016f8e689dc963103c08 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java @@ -592,6 +592,7 @@ class PeerState implements DataLoader // Send cancel even when we are choked to make sure that it is // really never ever send. out.sendCancel(req); + req.getPartialPiece().release(); } } } @@ -741,6 +742,10 @@ class PeerState implements DataLoader out.sendRequest(r); lastRequest = r; return true; + } else { + if (_log.shouldLog(Log.WARN)) + _log.warn("Got dup from coord: " + pp); + pp.release(); } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index ddead3a58f87fa3cc951d5c64b2a94cb720facfd..a42001ba8c607613804fa34d2c1952b637d64ed0 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -985,6 +985,8 @@ public class Storage /** * Put the piece in the Storage if it is correct. + * Warning - takes a LONG time if complete as it does the recheck here. + * TODO thread the recheck? * * @return true if the piece was correct (sha metainfo hash * matches), otherwise false. diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTNodes.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTNodes.java index 5e2569e2d103e19df4cad09ed5f1eb83ec38c67c..21d394a807843452e44e4f2ff7d9ff0bdaada345 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTNodes.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTNodes.java @@ -69,6 +69,9 @@ class DHTNodes { // begin ConcurrentHashMap methods + /** + * @return known nodes, not total net size + */ public int size() { return _nodeMap.size(); } @@ -86,8 +89,13 @@ class DHTNodes { * @return the old value if present, else null */ public NodeInfo putIfAbsent(NodeInfo nInfo) { - _kad.add(nInfo.getNID()); - return _nodeMap.putIfAbsent(nInfo.getNID(), nInfo); + NodeInfo rv = _nodeMap.putIfAbsent(nInfo.getNID(), nInfo); + // ensure same object in both places + if (rv != null) + _kad.add(rv.getNID()); + else + _kad.add(nInfo.getNID()); + return rv; } public NodeInfo remove(NID nid) { @@ -128,11 +136,19 @@ class DHTNodes { return _kad.getExploreKeys(MAX_BUCKET_AGE); } + /** + * Debug info, HTML formatted + * @since 0.9.4 + */ + public void renderStatusHTML(StringBuilder buf) { + buf.append(_kad.toString().replace("\n", "<br>\n")); + } + /** */ private class Cleaner extends SimpleTimer2.TimedEvent { public Cleaner() { - super(SimpleTimer2.getInstance(), CLEAN_TIME); + super(SimpleTimer2.getInstance(), 5 * CLEAN_TIME); } public void timeReached() { diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java index 5e8b3a9526043a1ee6a22bfcab8ba8cc5ce02ea1..0f030a20728224c79762f117ef54a6d8f144faeb 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java @@ -39,6 +39,8 @@ class DHTTracker { private static final long DELTA_EXPIRE_TIME = 3*60*1000; private static final int MAX_PEERS = 2000; private static final int MAX_PEERS_PER_TORRENT = 150; + private static final int ABSOLUTE_MAX_PER_TORRENT = MAX_PEERS_PER_TORRENT * 2; + private static final int MAX_TORRENTS = 400; DHTTracker(I2PAppContext ctx) { _context = ctx; @@ -62,17 +64,29 @@ class DHTTracker { _log.debug("Announce " + hash + " for " + ih); Peers peers = _torrents.get(ih); if (peers == null) { + if (_torrents.size() >= MAX_TORRENTS) + return; peers = new Peers(); Peers peers2 = _torrents.putIfAbsent(ih, peers); if (peers2 != null) peers = peers2; } - Peer peer = new Peer(hash.getData()); - Peer peer2 = peers.putIfAbsent(peer, peer); - if (peer2 != null) - peer = peer2; - peer.setLastSeen(_context.clock().now()); + if (peers.size() < ABSOLUTE_MAX_PER_TORRENT) { + Peer peer = new Peer(hash.getData()); + Peer peer2 = peers.putIfAbsent(peer, peer); + if (peer2 != null) + peer = peer2; + peer.setLastSeen(_context.clock().now()); + } else { + // We could update setLastSeen if he is already + // in there, but that would tend to keep + // the same set of peers. + // So let it expire so new ones can come in. + //Peer peer = peers.get(hash); + //if (peer != null) + // peer.setLastSeen(_context.clock().now()); + } } void unannounce(InfoHash ih, Hash hash) { @@ -113,7 +127,7 @@ class DHTTracker { private class Cleaner extends SimpleTimer2.TimedEvent { public Cleaner() { - super(SimpleTimer2.getInstance(), CLEAN_TIME); + super(SimpleTimer2.getInstance(), 2 * CLEAN_TIME); } public void timeReached() { @@ -122,6 +136,7 @@ class DHTTracker { long now = _context.clock().now(); int torrentCount = 0; int peerCount = 0; + boolean tooMany = false; for (Iterator<Peers> iter = _torrents.values().iterator(); iter.hasNext(); ) { Peers p = iter.next(); int recent = 0; @@ -136,6 +151,7 @@ class DHTTracker { } if (recent > MAX_PEERS_PER_TORRENT) { // too many, delete at random + // TODO sort and remove oldest? // TODO per-torrent adjustable expiration? for (Iterator<Peer> iterp = p.values().iterator(); iterp.hasNext() && p.size() > MAX_PEERS_PER_TORRENT; ) { iterp.next(); @@ -143,6 +159,7 @@ class DHTTracker { peerCount--; } torrentCount++; + tooMany = true; } else if (recent <= 0) { iter.remove(); } else { @@ -151,6 +168,8 @@ class DHTTracker { } if (peerCount > MAX_PEERS) + tooMany = true; + if (tooMany) _expireTime = Math.max(_expireTime - DELTA_EXPIRE_TIME, MIN_EXPIRE_TIME); else _expireTime = Math.min(_expireTime + DELTA_EXPIRE_TIME, MAX_EXPIRE_TIME); @@ -162,7 +181,7 @@ class DHTTracker { DataHelper.formatDuration(_expireTime) + " expiration"); _peerCount = peerCount; _torrentCount = torrentCount; - schedule(CLEAN_TIME); + schedule(tooMany ? CLEAN_TIME / 3 : CLEAN_TIME); } } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java index 01a63a259fdd51e85a8e06652ce014ffa3bed7b8..55521a7876f081fdaf00937c1ef801aa4643c969 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java @@ -613,6 +613,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT { "Rcvd tokens: ").append(_incomingTokens.size()).append("<br>" + "Pending queries: ").append(_sentQueries.size()).append("<br>"); _tracker.renderStatusHTML(buf); + _knownNodes.renderStatusHTML(buf); return buf.toString(); } @@ -1107,8 +1108,12 @@ public class KRPC implements I2PSessionMuxedListener, DHT { if (nInfo.equals(_myNodeInfo)) return _myNodeInfo; NodeInfo rv = _knownNodes.putIfAbsent(nInfo); - if (rv == null) + if (rv == null) { rv = nInfo; + // if we didn't know about it before, set the timestamp + // so it isn't immediately removed by the DHTNodes cleaner + rv.getNID().setLastSeen(); + } return rv; } @@ -1518,7 +1523,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT { private class Cleaner extends SimpleTimer2.TimedEvent { public Cleaner() { - super(SimpleTimer2.getInstance(), CLEAN_TIME); + super(SimpleTimer2.getInstance(), 7 * CLEAN_TIME); } public void timeReached() { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index e96eefe0b2e88c1f38f82e4f765e040122057824..ea5d751e554cbc2062acdf1343b72d11374c4c18 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -995,14 +995,16 @@ public class I2PSnarkServlet extends DefaultServlet { } else if (snark.isAllocating()) { statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Allocating") + "\"></td>" + "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Allocating"); - } else if (err != null) { - if (isRunning && curPeers > 0 && !showPeers) - statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" + - "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") + - ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + - curPeers + thinsp(noThinsp) + - ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; - else if (isRunning) + } else if (err != null && curPeers == 0) { + // let's only show this if we have no peers, otherwise PEX and DHT should bail us out, user doesn't care + //if (isRunning && curPeers > 0 && !showPeers) + // statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" + + // "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") + + // ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" + + // curPeers + thinsp(noThinsp) + + // ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; + //else if (isRunning) + if (isRunning) statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" + "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") + ": " + curPeers + thinsp(noThinsp) + @@ -1149,7 +1151,7 @@ public class I2PSnarkServlet extends DefaultServlet { out.write("</a>"); out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">"); - if(isRunning && remainingSeconds > 0) + if(isRunning && remainingSeconds > 0 && !snark.isChecking()) out.write(DataHelper.formatDuration2(Math.max(remainingSeconds, 10) * 1000)); // (eta 6h) out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentDownloaded " + rowClass + "\">"); @@ -1636,7 +1638,7 @@ public class I2PSnarkServlet extends DefaultServlet { out.write("\" ></td></tr>\n" + "<tr><td>"); - out.write(_("Enable DHT") + " (**BETA**)"); + out.write(_("Enable DHT")); out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"useDHT\" value=\"true\" " + (useDHT ? "checked " : "") + "title=\""); diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po index 7431c3fcca0ca1a256fa637080f2d0f5fc405bc0..808f9d4ad5c510d84875dcb0753adf2c00c11d05 100644 --- a/apps/i2psnark/locale/messages_de.po +++ b/apps/i2psnark/locale/messages_de.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-25 19:28+0000\n" +"POT-Creation-Date: 2012-11-02 19:46+0000\n" "PO-Revision-Date: 2012-08-17 09:44+0000\n" "Last-Translator: blabla <blabla@trash-mail.com>\n" "Language-Team: German (http://www.transifex.com/projects/p/I2P/language/" @@ -25,181 +25,187 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:434 +#: ../java/src/org/klomp/snark/MagnetURI.java:42 +#: ../java/src/org/klomp/snark/MagnetURI.java:52 +#: ../java/src/org/klomp/snark/SnarkManager.java:1549 +msgid "Magnet" +msgstr "Magnet" + +#: ../java/src/org/klomp/snark/SnarkManager.java:459 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Gesamtanzahl der Uploadslots geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:436 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minimale Anzahl derUploadslots ist {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:448 +#: ../java/src/org/klomp/snark/SnarkManager.java:473 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Upload-Bandbreite wurde auf {0}kbyte/s geändert." -#: ../java/src/org/klomp/snark/SnarkManager.java:450 +#: ../java/src/org/klomp/snark/SnarkManager.java:475 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minimales Limit der Upload-Bandbreite ist {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:462 +#: ../java/src/org/klomp/snark/SnarkManager.java:487 #, java-format msgid "Startup delay changed to {0}" msgstr "Startverzögerung auf {0} gesetzt" -#: ../java/src/org/klomp/snark/SnarkManager.java:473 +#: ../java/src/org/klomp/snark/SnarkManager.java:498 #, java-format msgid "Refresh time changed to {0}" msgstr "Auffrischungsrate auf {0} gesetzt" -#: ../java/src/org/klomp/snark/SnarkManager.java:475 +#: ../java/src/org/klomp/snark/SnarkManager.java:500 msgid "Refresh disabled" msgstr "Auffrischung abgeschaltet" -#: ../java/src/org/klomp/snark/SnarkManager.java:530 +#: ../java/src/org/klomp/snark/SnarkManager.java:555 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "" "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents " "wirksam" -#: ../java/src/org/klomp/snark/SnarkManager.java:534 +#: ../java/src/org/klomp/snark/SnarkManager.java:559 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP-Optionen auf {0} gesetzt" -#: ../java/src/org/klomp/snark/SnarkManager.java:539 +#: ../java/src/org/klomp/snark/SnarkManager.java:564 msgid "Disconnecting old I2CP destination" msgstr "Trenne das alte I2CP-Ziel" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 +#: ../java/src/org/klomp/snark/SnarkManager.java:566 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP-Einstellungen geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:546 +#: ../java/src/org/klomp/snark/SnarkManager.java:571 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "" "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die " "alten I2CP-Einstellungen" -#: ../java/src/org/klomp/snark/SnarkManager.java:550 +#: ../java/src/org/klomp/snark/SnarkManager.java:575 msgid "Unable to reconnect with the old settings!" msgstr "Verbinden mit den alten Einstellungen nicht möglich!" -#: ../java/src/org/klomp/snark/SnarkManager.java:552 +#: ../java/src/org/klomp/snark/SnarkManager.java:577 msgid "Reconnected on the new I2CP destination" msgstr "Verbunden auf dem neuem I2CP-Ziel" -#: ../java/src/org/klomp/snark/SnarkManager.java:559 +#: ../java/src/org/klomp/snark/SnarkManager.java:584 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-Verbindung neu gestartet für \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:571 +#: ../java/src/org/klomp/snark/SnarkManager.java:596 msgid "New files will be publicly readable" msgstr "Neu angelegte Dateien werden allgemein lesbar sein." -#: ../java/src/org/klomp/snark/SnarkManager.java:573 +#: ../java/src/org/klomp/snark/SnarkManager.java:598 msgid "New files will not be publicly readable" msgstr "Neu angelegte Dateien werden nicht allgemein lesbar sein." -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:605 msgid "Enabled autostart" msgstr "Aktiviere Autostart" -#: ../java/src/org/klomp/snark/SnarkManager.java:582 +#: ../java/src/org/klomp/snark/SnarkManager.java:607 msgid "Disabled autostart" msgstr "Deaktiviere Autostart" -#: ../java/src/org/klomp/snark/SnarkManager.java:588 +#: ../java/src/org/klomp/snark/SnarkManager.java:613 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "" "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu " "gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:590 +#: ../java/src/org/klomp/snark/SnarkManager.java:615 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "" "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu " "gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:597 +#: ../java/src/org/klomp/snark/SnarkManager.java:622 msgid "Enabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:599 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 msgid "Disabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:601 +#: ../java/src/org/klomp/snark/SnarkManager.java:626 msgid "DHT change requires tunnel shutdown and reopen" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:608 +#: ../java/src/org/klomp/snark/SnarkManager.java:633 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "" "Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die " "Änderungen zu sehen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:615 +#: ../java/src/org/klomp/snark/SnarkManager.java:640 msgid "Configuration unchanged." msgstr "Konfiguration nicht geändert." -#: ../java/src/org/klomp/snark/SnarkManager.java:647 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "" "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu " "gestartet werden" -#: ../java/src/org/klomp/snark/SnarkManager.java:657 +#: ../java/src/org/klomp/snark/SnarkManager.java:682 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Liste privater Tracker geändert - betrifft nur neu erstellte Torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:703 +#: ../java/src/org/klomp/snark/SnarkManager.java:728 #, java-format msgid "Unable to save the config to {0}" msgstr "Konnte Konfiguration nicht in {0} speichern" -#: ../java/src/org/klomp/snark/SnarkManager.java:768 +#: ../java/src/org/klomp/snark/SnarkManager.java:801 msgid "Connecting to I2P" msgstr "Verbinde mit I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:804 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "" "Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:780 +#: ../java/src/org/klomp/snark/SnarkManager.java:813 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht hinzufügen" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:802 +#: ../java/src/org/klomp/snark/SnarkManager.java:835 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kann dies nicht öffnen: \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:821 -#: ../java/src/org/klomp/snark/SnarkManager.java:899 -#: ../java/src/org/klomp/snark/SnarkManager.java:980 +#: ../java/src/org/klomp/snark/SnarkManager.java:854 +#: ../java/src/org/klomp/snark/SnarkManager.java:952 +#: ../java/src/org/klomp/snark/SnarkManager.java:1034 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:159 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent mit diesem Infohash läuft schon: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:827 +#: ../java/src/org/klomp/snark/SnarkManager.java:860 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "Fehler - Keine I2P-Tracker im privaten Torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:829 +#: ../java/src/org/klomp/snark/SnarkManager.java:862 #, fuzzy, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and " @@ -208,7 +214,7 @@ msgstr "" "Warnung - keine I2P-Tracker in \"{0}\", werde nur bei I2P-OpenTrackern " "bekanntgeben" -#: ../java/src/org/klomp/snark/SnarkManager.java:832 +#: ../java/src/org/klomp/snark/SnarkManager.java:865 #, fuzzy, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " @@ -217,7 +223,7 @@ msgstr "" "Warnung - keine I2P-Tracker in \"{0}\", werde nur bei I2P-OpenTrackern " "bekanntgeben" -#: ../java/src/org/klomp/snark/SnarkManager.java:834 +#: ../java/src/org/klomp/snark/SnarkManager.java:867 #, fuzzy, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -226,12 +232,12 @@ msgstr "" "Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass " "OpenTracker aktiviert sind, bevor du diesen Torrent startest!" -#: ../java/src/org/klomp/snark/SnarkManager.java:856 +#: ../java/src/org/klomp/snark/SnarkManager.java:889 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" ist nicht gültig" -#: ../java/src/org/klomp/snark/SnarkManager.java:861 +#: ../java/src/org/klomp/snark/SnarkManager.java:894 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:181 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" @@ -239,23 +245,23 @@ msgstr "" "Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} " "erstellen." -#: ../java/src/org/klomp/snark/SnarkManager.java:873 +#: ../java/src/org/klomp/snark/SnarkManager.java:906 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent hinzugefügt und gestartet: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:875 +#: ../java/src/org/klomp/snark/SnarkManager.java:908 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent hinzugefügt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:910 +#: ../java/src/org/klomp/snark/SnarkManager.java:963 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:87 #, java-format msgid "Fetching {0}" msgstr "Hole {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:916 +#: ../java/src/org/klomp/snark/SnarkManager.java:969 #, fuzzy, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -265,140 +271,139 @@ msgstr "" "Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen " "Torrent startest." -#: ../java/src/org/klomp/snark/SnarkManager.java:920 +#: ../java/src/org/klomp/snark/SnarkManager.java:973 #, java-format msgid "Adding {0}" msgstr "Hinzufügen {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:951 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Download already running: {0}" msgstr "Download läuft bereits: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:990 -#: ../java/src/org/klomp/snark/SnarkManager.java:1013 -#: ../java/src/org/klomp/snark/SnarkManager.java:1449 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#: ../java/src/org/klomp/snark/SnarkManager.java:1067 +#: ../java/src/org/klomp/snark/SnarkManager.java:1505 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Konnte Torrent-Datei nicht nach {0} kopieren" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1294 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Zu viele Dateien in \"{0}\" ({1}), wird gelöscht! " -#: ../java/src/org/klomp/snark/SnarkManager.java:1242 +#: ../java/src/org/klomp/snark/SnarkManager.java:1296 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "Torrentdatei \"{0}\" darf nicht auf '.torrent' enden, wird gelöscht!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1244 +#: ../java/src/org/klomp/snark/SnarkManager.java:1298 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Keine Teile in \"{0}\", wird entfernt!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1300 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Zu viele Teile in \"{0}\", das Limit sind {1}, werden gelöscht!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1302 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Teile in \"{0}\" sind zu groß ({1}B), lösche es." -#: ../java/src/org/klomp/snark/SnarkManager.java:1249 +#: ../java/src/org/klomp/snark/SnarkManager.java:1303 #, java-format msgid "Limit is {0}B" msgstr "Limit ist \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:1251 +#: ../java/src/org/klomp/snark/SnarkManager.java:1305 #, java-format msgid "Torrent \"{0}\" has no data, deleting it!" msgstr "Torrent \"{0}\" enthält keine Daten und wird gelöscht!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1313 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "" "Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht entfernen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1296 -#: ../java/src/org/klomp/snark/SnarkManager.java:1314 +#: ../java/src/org/klomp/snark/SnarkManager.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1368 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent angehalten: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1389 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent entfernt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1343 +#: ../java/src/org/klomp/snark/SnarkManager.java:1397 #, java-format msgid "Adding torrents in {0}" msgstr "Füge Torrents in {0} hinzu ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1428 +#, fuzzy, java-format +msgid "Up bandwidth limit is {0} KBps" +msgstr "Minimales Limit der Upload-Bandbreite ist {0} kbyte/s." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1450 #, java-format msgid "Download finished: {0}" msgstr "vollständig heruntergeladen:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1445 +#: ../java/src/org/klomp/snark/SnarkManager.java:1501 #, java-format msgid "Metainfo received for {0}" msgstr "Metainfo für {0} erhalten" -#: ../java/src/org/klomp/snark/SnarkManager.java:1446 -#: ../java/src/org/klomp/snark/SnarkManager.java:1669 +#: ../java/src/org/klomp/snark/SnarkManager.java:1502 +#: ../java/src/org/klomp/snark/SnarkManager.java:1731 #, java-format msgid "Starting up torrent {0}" msgstr "Starte Torrent {0} ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:1461 +#: ../java/src/org/klomp/snark/SnarkManager.java:1517 #, java-format msgid "Error on torrent {0}" msgstr "Fehler bei Torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1487 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1785 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1795 -msgid "Magnet" -msgstr "Magnet" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1518 +#: ../java/src/org/klomp/snark/SnarkManager.java:1580 msgid "Unable to connect to I2P!" msgstr "Konnte keine Verbindung zu I2P herstellen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1524 +#: ../java/src/org/klomp/snark/SnarkManager.java:1586 #, java-format msgid "Unable to add {0}" msgstr "Konnte {0} nicht hinzufügen." -#: ../java/src/org/klomp/snark/SnarkManager.java:1668 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:124 msgid "Opening the I2P tunnel" msgstr "I2P Tunnel öffnen ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:1692 +#: ../java/src/org/klomp/snark/SnarkManager.java:1754 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Öffne den I2P-Tunnel und starte alle Torrents ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:1747 +#: ../java/src/org/klomp/snark/SnarkManager.java:1809 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Stoppe alle Torrents und beende den I2P-Tunnel." -#: ../java/src/org/klomp/snark/SnarkManager.java:1766 +#: ../java/src/org/klomp/snark/SnarkManager.java:1828 msgid "Closing I2P tunnel after notifying trackers." msgstr "Der I2P-Tunnel wird nach Benachrichtigung der Tracker geschlossen." -#: ../java/src/org/klomp/snark/SnarkManager.java:1773 -#: ../java/src/org/klomp/snark/SnarkManager.java:1784 +#: ../java/src/org/klomp/snark/SnarkManager.java:1835 +#: ../java/src/org/klomp/snark/SnarkManager.java:1846 msgid "I2P tunnel closed." msgstr "I2P-Tunnel geschlossen." @@ -407,6 +412,17 @@ msgstr "I2P-Tunnel geschlossen." msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "" +#: ../java/src/org/klomp/snark/UpdateHandler.java:49 +#: ../java/src/org/klomp/snark/UpdateRunner.java:227 +#, fuzzy +msgid "Updating" +msgstr "Starten" + +#: ../java/src/org/klomp/snark/UpdateRunner.java:114 +#, java-format +msgid "Updating from {0}" +msgstr "" + #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:75 #, java-format msgid "Download torrent file from {0}" @@ -437,205 +453,210 @@ msgstr "Torrent ist schon in der Warteschlange: {0}" msgid "Torrent at {0} was not valid" msgstr "Torrent in {0} war nicht gültig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Anonymer BitTorrent-Klient" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231 msgid "Router is down" msgstr "Router ist Offline" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:250 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 msgid "Refresh page" msgstr "Aktualisiere Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Drücke den \"Torrent Hinzufügen\" Button um den Torrent zu laden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 msgid "clear messages" msgstr "Lösche Nachrichten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2109 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 msgid "Status" msgstr "Zustand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "Hide Peers" msgstr "Teilnehmer ausblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 msgid "Show Peers" msgstr "Teilnehmer einblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1979 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Estimated time remaining" msgstr "geschätzte verbleibende Zeit" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "ETA" msgstr "Dauer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 msgid "Downloaded" msgstr "heruntergeladen" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:380 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "RX" msgstr " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 msgid "Uploaded" msgstr "hochgeladen" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 msgid "TX" msgstr " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:390 msgid "Down Rate" msgstr "eingehend" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:393 msgid "RX Rate" msgstr "Downloadgeschwindigkeit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:399 msgid "Up Rate" msgstr "ausgehend" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "TX Rate" msgstr "Uploadgeschwindigkeit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:429 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425 msgid "Stop all torrents and the I2P tunnel" msgstr "Stoppe alle Torrents und den I2P-Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427 msgid "Stop All" msgstr "Stoppe alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436 msgid "Start all torrents and the I2P tunnel" msgstr "Starte alle Torrents und den I2P-Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:438 msgid "Start All" msgstr "Starte alle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 msgid "No torrents loaded." msgstr "keine Torrents geladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:463 msgid "Totals" msgstr "Gesamt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:469 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:465 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 Torrent" msgstr[1] "{0} Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 verbundener Teilnehmer" msgstr[1] "{0} verbundene Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:478 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 #, fuzzy, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 Teilnehmer" msgstr[1] "{0} Teilnehmern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "ungültige URL - muss mit \"http://\", \"{0}\" oder \"{1}\" anfangen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnetlink wurde gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:620 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:618 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:646 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrentdatei gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#, fuzzy, java-format +msgid "Download deleted: {0}" +msgstr "vollständig heruntergeladen:\"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Data file deleted: {0}" msgstr "Daten gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Daten konnten nicht gelöscht werden: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Das Verzeichnis {0} konnte nicht gelöscht werden." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 #, java-format msgid "Directory deleted: {0}" msgstr "Verzeichnis gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:734 msgid "Error creating torrent - you must select a tracker" msgstr "" "Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent erstellt für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " @@ -644,149 +665,157 @@ msgstr "" "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt " "wird. Bitte tun Sie dies vor dem Start von \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:755 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Fehler beim Erstellen eines Torrents für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Kann keinen Torrent für nicht existente Daten erstellen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:761 msgid "Error creating torrent - you must enter a file or directory" msgstr "" "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein " "Verzeichnis angeben." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 msgid "Delete selected" msgstr "Lösche ausgewähltes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Save tracker configuration" msgstr "Trackereinstellungen speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 msgid "Removed" msgstr "Entfernt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1773 msgid "Add tracker" msgstr "Füge Tracker hinzu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 msgid "Enter valid tracker name and URLs" msgstr "Gib einen gültigen Tracker-Namen sowie die URLs an!" #. "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1754 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 msgid "Restore defaults" msgstr "Auf Default zurücksetzen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "Restored default trackers" msgstr "Auf Default Tracker zurückgesetzt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:994 +msgid "Checking" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:996 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +msgid "Allocating" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016 msgid "Tracker Error" msgstr "Trackerfehler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1023 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1039 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 Teilnehmer" msgstr[1] "{0} Teilnehmern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1004 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 msgid "Starting" msgstr "Starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "Seeding" msgstr "Verteile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166 msgid "Complete" msgstr "vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Stalled" msgstr "Stillstand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 msgid "No Peers" msgstr "keine Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081 msgid "Stopped" msgstr "angehalten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1098 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 msgid "Torrent details" msgstr "Details" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1143 msgid "View files" msgstr "Zeige Dateien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1129 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1145 msgid "Open file" msgstr "Öffne Datei" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1172 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "Stop the torrent" msgstr "Torrent stoppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192 msgid "Stop" msgstr "Stopp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 msgid "Start the torrent" msgstr "Torrent starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1218 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" "entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei" @@ -794,7 +823,7 @@ msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1223 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -803,18 +832,18 @@ msgstr "" "Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? " "(Heruntergeladene Daten werden nicht gelöscht.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Remove" msgstr "Entfernen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Delete the .torrent file and the associated data file(s)" msgstr "löscht die .torrent-Datei und dazugehörige Daten Datei(en)" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -823,53 +852,53 @@ msgstr "" "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle " "heruntergeladenen Daten löschen wollen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736 msgid "Delete" msgstr "Löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Unknown" msgstr "Unbekannt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "Seed" msgstr "Quelle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1298 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 msgid "Uninteresting (The peer has no pieces we need)" msgstr "uninteressant (Der Teilnehmer hat keine Teile, die wir benötigen)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "gedrosselt (Der Teilnehmer hat uns nicht erlaubt, Teile anzufordern)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Uninterested (We have no pieces the peer needs)" msgstr "uninteressiert (Wir haben keine Teile, die der Teilnehmer benötigt)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1322 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "gedrosselt (Wir erlauben dem Teilnehmer nicht, Teile anzufordern)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1394 #, java-format msgid "Details at {0} tracker" msgstr "Details beim Tracker {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1410 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438 msgid "Add Torrent" msgstr "Torrent hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1422 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 msgid "From URL" msgstr "Quell-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1443 msgid "" "Enter the torrent file download URL (I2P only), magnet link, maggot link, or " "info hash" @@ -877,126 +906,126 @@ msgstr "" "Gib die URL einer Torrentdatei (I2P-Link), einen Magnet- / Maggot-Link oder " "einen Info-Hash ein!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1448 msgid "Add torrent" msgstr "Füge Torrent hinzu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1433 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1451 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Alternativ können Sie die .torrent-Dateien auch nach {0} kopieren." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1435 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 msgid "Removing a .torrent will cause it to stop." msgstr "Das Entfernen der .torrent-Datei stoppt den jeweiligen Torrent." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1458 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476 msgid "Create Torrent" msgstr "Torrent erstellen" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 msgid "Data to seed" msgstr "Daten zum Verteilen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1465 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 msgid "File or directory to seed (must be within the specified path)" msgstr "Datei oder Verzeichnis zum Verteilen (muss im angegebenen Pfad sein)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1467 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2001 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1469 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 msgid "Select a tracker" msgstr "Wähle einen Tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1474 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 msgid "Open trackers only" msgstr "Benutze nur OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 msgid "Create torrent" msgstr "Erstelle Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 msgid "Configuration" msgstr "Einstellungen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537 msgid "Data directory" msgstr "Datenverzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 msgid "Edit i2psnark.config and restart to change" msgstr "Zum Ändern, bearbeite die i2psnark.config und starte neu!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 msgid "Files readable by all" msgstr "Dateien von allen lesbar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547 msgid "If checked, other users may access the downloaded files" msgstr "" "Ist dies markiert, können andere Benutzer auf die heruntergeladenen Dateien " "zugreifen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551 msgid "Auto start" msgstr "Autostart" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 msgid "If checked, automatically start torrents that are added" msgstr "Wenn markiert, werden hinzugefügte Torrents automatisch gestartet." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559 msgid "Theme" msgstr "Aufmachung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1572 msgid "Refresh time" msgstr "Auffrischungsintervall" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1585 msgid "Never" msgstr "Nie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1591 msgid "Startup delay" msgstr "Startverzögerung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593 msgid "minutes" msgstr "Minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617 msgid "Total uploader limit" msgstr "Gesamtlimit an Hochladern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1620 msgid "peers" msgstr "Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 msgid "Up bandwidth limit" msgstr "Bandbreitenbegrenzung beim Hochladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1627 msgid "Half available bandwidth recommended." msgstr "Halbe verfügbare Bandbreite wird empfohlen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 msgid "View or change router bandwidth" msgstr "Routerbandbreite ansehen oder ändern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633 msgid "Use open trackers also" msgstr "Benutze auch OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1619 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1637 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -1004,173 +1033,171 @@ msgstr "" "Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den " "OpenTrackern bekanntgegeben." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1641 msgid "Enable DHT" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645 msgid "If checked, use DHT" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 msgid "Inbound Settings" msgstr "Einstellungen eingehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1649 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 msgid "Outbound Settings" msgstr "Einstellungen ausgehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "I2CP host" msgstr "I2CP-Host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "I2CP port" msgstr "I2CP-Port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "I2CP options" msgstr "I2CP-Optionen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1700 msgid "Save configuration" msgstr "Einstellungen speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 msgid "Trackers" msgstr "Trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Name" msgstr "Name" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 msgid "Website URL" msgstr "Webseiten-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1705 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2204 msgid "Open" msgstr "offen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1707 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725 msgid "Private" msgstr "privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 msgid "Announce URL" msgstr "Ankündigungs-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 msgid "Add" msgstr "Hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1798 #, java-format msgid "Invalid magnet URL {0}" msgstr "ungültige Magnet-URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814 -#, java-format -msgid "Invalid info hash in magnet URL {0}" -msgstr "ungültiger Infohash im Magnetlink {0}" - #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1938 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 Zwischenstation" msgstr[1] "{0} Zwischenstationen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1807 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 Tunnel" msgstr[1] "{0} Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 msgid "Torrent file" msgstr "Torrent Datei" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2155 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2023 msgid "Magnet link" msgstr "Magnetlink" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 msgid "Private torrent" msgstr "privater Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 msgid "Size" msgstr "Größe" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Completion" msgstr "Fortschritt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056 msgid "Remaining" msgstr "Verbleibend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2063 msgid "Files" msgstr "Dateien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2200 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068 msgid "Pieces" msgstr "Stücke" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2204 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 msgid "Piece size" msgstr "Stückgröße" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2227 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2231 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2281 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149 msgid "Directory" msgstr "Verzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2248 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2250 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2118 msgid "Priority" msgstr "Priorität" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2124 msgid "Up to higher level directory" msgstr "Eine Hierarchie nach oben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 msgid "Torrent not found?" msgstr "Torrentdatei nicht gefunden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 msgid "File not found in torrent?" msgstr "Datei nicht gefunden im Torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2176 msgid "complete" msgstr "vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2309 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2177 msgid "remaining" msgstr "verbleibend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2231 msgid "High" msgstr "hoch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2368 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2236 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241 msgid "Skip" msgstr "auslassen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2250 msgid "Save priorities" msgstr "Prioritäten speichern" + +#~ msgid "Invalid info hash in magnet URL {0}" +#~ msgstr "ungültiger Infohash im Magnetlink {0}" diff --git a/apps/i2psnark/locale/messages_en.po b/apps/i2psnark/locale/messages_en.po index 9d75bde3cf4bf5ecd6238ec26beabb401968b62e..0e2fb6b064f2851da5fe98183749d79ebf737909 100644 --- a/apps/i2psnark/locale/messages_en.po +++ b/apps/i2psnark/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"POT-Creation-Date: 2012-11-02 19:51+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -18,360 +18,360 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:434 +#: ../java/src/org/klomp/snark/MagnetURI.java:42 +#: ../java/src/org/klomp/snark/MagnetURI.java:52 +#: ../java/src/org/klomp/snark/SnarkManager.java:1549 +msgid "Magnet" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:459 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:436 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:448 +#: ../java/src/org/klomp/snark/SnarkManager.java:473 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:450 +#: ../java/src/org/klomp/snark/SnarkManager.java:475 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:462 +#: ../java/src/org/klomp/snark/SnarkManager.java:487 #, java-format msgid "Startup delay changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:473 +#: ../java/src/org/klomp/snark/SnarkManager.java:498 #, java-format msgid "Refresh time changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:475 +#: ../java/src/org/klomp/snark/SnarkManager.java:500 msgid "Refresh disabled" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:530 +#: ../java/src/org/klomp/snark/SnarkManager.java:555 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:534 +#: ../java/src/org/klomp/snark/SnarkManager.java:559 #, java-format msgid "I2CP options changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:539 +#: ../java/src/org/klomp/snark/SnarkManager.java:564 msgid "Disconnecting old I2CP destination" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:541 +#: ../java/src/org/klomp/snark/SnarkManager.java:566 #, java-format msgid "I2CP settings changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:546 +#: ../java/src/org/klomp/snark/SnarkManager.java:571 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:550 +#: ../java/src/org/klomp/snark/SnarkManager.java:575 msgid "Unable to reconnect with the old settings!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:552 +#: ../java/src/org/klomp/snark/SnarkManager.java:577 msgid "Reconnected on the new I2CP destination" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:559 +#: ../java/src/org/klomp/snark/SnarkManager.java:584 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:571 +#: ../java/src/org/klomp/snark/SnarkManager.java:596 msgid "New files will be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:573 +#: ../java/src/org/klomp/snark/SnarkManager.java:598 msgid "New files will not be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:580 +#: ../java/src/org/klomp/snark/SnarkManager.java:605 msgid "Enabled autostart" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:582 +#: ../java/src/org/klomp/snark/SnarkManager.java:607 msgid "Disabled autostart" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:588 +#: ../java/src/org/klomp/snark/SnarkManager.java:613 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:590 +#: ../java/src/org/klomp/snark/SnarkManager.java:615 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:597 +#: ../java/src/org/klomp/snark/SnarkManager.java:622 msgid "Enabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:599 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 msgid "Disabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:601 +#: ../java/src/org/klomp/snark/SnarkManager.java:626 msgid "DHT change requires tunnel shutdown and reopen" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:608 +#: ../java/src/org/klomp/snark/SnarkManager.java:633 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:615 +#: ../java/src/org/klomp/snark/SnarkManager.java:640 msgid "Configuration unchanged." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:647 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:657 +#: ../java/src/org/klomp/snark/SnarkManager.java:682 msgid "Private tracker list changed - affects newly created torrents only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:703 +#: ../java/src/org/klomp/snark/SnarkManager.java:728 #, java-format msgid "Unable to save the config to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:768 +#: ../java/src/org/klomp/snark/SnarkManager.java:801 msgid "Connecting to I2P" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:804 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:780 +#: ../java/src/org/klomp/snark/SnarkManager.java:813 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:802 +#: ../java/src/org/klomp/snark/SnarkManager.java:835 #, java-format msgid "Cannot open \"{0}\"" msgstr "" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:821 -#: ../java/src/org/klomp/snark/SnarkManager.java:899 -#: ../java/src/org/klomp/snark/SnarkManager.java:980 +#: ../java/src/org/klomp/snark/SnarkManager.java:854 +#: ../java/src/org/klomp/snark/SnarkManager.java:952 +#: ../java/src/org/klomp/snark/SnarkManager.java:1034 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:159 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:827 +#: ../java/src/org/klomp/snark/SnarkManager.java:860 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:829 +#: ../java/src/org/klomp/snark/SnarkManager.java:862 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and " "DHT only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:832 +#: ../java/src/org/klomp/snark/SnarkManager.java:865 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:834 +#: ../java/src/org/klomp/snark/SnarkManager.java:867 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " "disabled, you should enable open trackers or DHT before starting the torrent." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:856 +#: ../java/src/org/klomp/snark/SnarkManager.java:889 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:861 +#: ../java/src/org/klomp/snark/SnarkManager.java:894 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:181 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:873 +#: ../java/src/org/klomp/snark/SnarkManager.java:906 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:875 +#: ../java/src/org/klomp/snark/SnarkManager.java:908 #, java-format msgid "Torrent added: \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:910 +#: ../java/src/org/klomp/snark/SnarkManager.java:963 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:87 #, java-format msgid "Fetching {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:916 +#: ../java/src/org/klomp/snark/SnarkManager.java:969 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " "succeed until you start another torrent, enable open trackers, or enable DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:920 +#: ../java/src/org/klomp/snark/SnarkManager.java:973 #, java-format msgid "Adding {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:951 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 #, java-format msgid "Download already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:990 -#: ../java/src/org/klomp/snark/SnarkManager.java:1013 -#: ../java/src/org/klomp/snark/SnarkManager.java:1451 +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#: ../java/src/org/klomp/snark/SnarkManager.java:1067 +#: ../java/src/org/klomp/snark/SnarkManager.java:1505 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1294 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1242 +#: ../java/src/org/klomp/snark/SnarkManager.java:1296 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1244 +#: ../java/src/org/klomp/snark/SnarkManager.java:1298 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1300 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1302 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1249 +#: ../java/src/org/klomp/snark/SnarkManager.java:1303 #, java-format msgid "Limit is {0}B" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1251 +#: ../java/src/org/klomp/snark/SnarkManager.java:1305 #, java-format msgid "Torrent \"{0}\" has no data, deleting it!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1313 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1296 -#: ../java/src/org/klomp/snark/SnarkManager.java:1314 +#: ../java/src/org/klomp/snark/SnarkManager.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1368 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1389 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1343 +#: ../java/src/org/klomp/snark/SnarkManager.java:1397 #, java-format msgid "Adding torrents in {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1374 +#: ../java/src/org/klomp/snark/SnarkManager.java:1428 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1396 +#: ../java/src/org/klomp/snark/SnarkManager.java:1450 #, java-format msgid "Download finished: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1447 +#: ../java/src/org/klomp/snark/SnarkManager.java:1501 #, java-format msgid "Metainfo received for {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1448 -#: ../java/src/org/klomp/snark/SnarkManager.java:1671 +#: ../java/src/org/klomp/snark/SnarkManager.java:1502 +#: ../java/src/org/klomp/snark/SnarkManager.java:1731 #, java-format msgid "Starting up torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1463 +#: ../java/src/org/klomp/snark/SnarkManager.java:1517 #, java-format msgid "Error on torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1489 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1805 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1815 -msgid "Magnet" -msgstr "" - -#: ../java/src/org/klomp/snark/SnarkManager.java:1520 +#: ../java/src/org/klomp/snark/SnarkManager.java:1580 msgid "Unable to connect to I2P!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1526 +#: ../java/src/org/klomp/snark/SnarkManager.java:1586 #, java-format msgid "Unable to add {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1670 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:124 msgid "Opening the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1754 msgid "Opening the I2P tunnel and starting all torrents." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1749 +#: ../java/src/org/klomp/snark/SnarkManager.java:1809 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1768 +#: ../java/src/org/klomp/snark/SnarkManager.java:1828 msgid "Closing I2P tunnel after notifying trackers." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1775 -#: ../java/src/org/klomp/snark/SnarkManager.java:1786 +#: ../java/src/org/klomp/snark/SnarkManager.java:1835 +#: ../java/src/org/klomp/snark/SnarkManager.java:1846 msgid "I2P tunnel closed." msgstr "" @@ -380,6 +380,16 @@ msgstr "" msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "" +#: ../java/src/org/klomp/snark/UpdateHandler.java:49 +#: ../java/src/org/klomp/snark/UpdateRunner.java:227 +msgid "Updating" +msgstr "" + +#: ../java/src/org/klomp/snark/UpdateRunner.java:114 +#, java-format +msgid "Updating from {0}" +msgstr "" + #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:75 #, java-format msgid "Download torrent file from {0}" @@ -410,739 +420,732 @@ msgstr "" msgid "Torrent at {0} was not valid" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:223 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231 msgid "Router is down" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 msgid "Torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:261 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265 msgid "I2PSnark" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 msgid "Refresh page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 msgid "Forum" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:276 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 msgid "clear messages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2261 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2109 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 msgid "Status" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "Hide Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 msgid "Show Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1979 msgid "Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Estimated time remaining" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "ETA" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 msgid "Downloaded" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "RX" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:386 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 msgid "Uploaded" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 msgid "TX" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:390 msgid "Down Rate" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:393 msgid "RX Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:399 msgid "Up Rate" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 msgid "TX Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:430 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425 msgid "Stop all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427 msgid "Stop All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:441 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436 msgid "Start all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:438 msgid "Start All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:463 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 msgid "No torrents loaded." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:463 msgid "Totals" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:470 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:465 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:473 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:479 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 #, java-format msgid "Magnet deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:622 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:618 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:646 #, java-format msgid "Torrent file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 #, java-format msgid "Download deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Data file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 #, java-format msgid "Data file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689 #, java-format msgid "Directory could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 #, java-format msgid "Directory deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:734 msgid "Error creating torrent - you must select a tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:755 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 #, java-format msgid "Torrent created for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:757 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:755 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:761 msgid "Error creating torrent - you must enter a file or directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1771 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 msgid "Delete selected" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 msgid "Save tracker configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 msgid "Removed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1773 msgid "Add tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 msgid "Enter valid tracker name and URLs" msgstr "" #. "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 msgid "Restore defaults" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:857 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 msgid "Restored default trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:994 msgid "Checking" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:996 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 msgid "Allocating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016 msgid "Tracker Error" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1013 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 msgid "Starting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "Seeding" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1048 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2203 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166 msgid "Complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 msgid "OK" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Stalled" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 msgid "No Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081 msgid "Stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 msgid "Torrent details" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1145 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1143 msgid "View files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1145 msgid "Open file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "Stop the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192 msgid "Stop" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 msgid "Start the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 msgid "Start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1218 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1223 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " "data will not be deleted) ?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Remove" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Delete the .torrent file and the associated data file(s)" msgstr "" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1245 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1248 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736 msgid "Delete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Unknown" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "Seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 msgid "Uninteresting (The peer has no pieces we need)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Uninterested (We have no pieces the peer needs)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1396 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1394 #, java-format msgid "Details at {0} tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1412 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1410 msgid "Info" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438 msgid "Add Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 msgid "From URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1443 msgid "" "Enter the torrent file download URL (I2P only), magnet link, maggot link, or " "info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1448 msgid "Add torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1451 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 msgid "Removing a .torrent will cause it to stop." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476 msgid "Create Torrent" msgstr "" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 msgid "Data to seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 msgid "File or directory to seed (must be within the specified path)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2001 msgid "Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 msgid "Select a tracker" msgstr "" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 msgid "Open trackers only" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 msgid "Create torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1784 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 msgid "Configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537 msgid "Data directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 msgid "Edit i2psnark.config and restart to change" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 msgid "Files readable by all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547 msgid "If checked, other users may access the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1553 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551 msgid "Auto start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 msgid "If checked, automatically start torrents that are added" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559 msgid "Theme" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1572 msgid "Refresh time" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1585 msgid "Never" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1591 msgid "Startup delay" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593 msgid "minutes" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1619 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617 msgid "Total uploader limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1620 msgid "peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 msgid "Up bandwidth limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1627 msgid "Half available bandwidth recommended." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 msgid "View or change router bandwidth" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633 msgid "Use open trackers also" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1637 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1641 msgid "Enable DHT" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645 msgid "If checked, use DHT" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 msgid "Inbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 msgid "Outbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "I2CP host" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "I2CP port" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "I2CP options" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1700 msgid "Save configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 msgid "Trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 msgid "Name" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 msgid "Website URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2204 msgid "Open" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725 msgid "Private" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 msgid "Announce URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 msgid "Add" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1798 #, java-format msgid "Invalid magnet URL {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1834 -#, java-format -msgid "Invalid info hash in magnet URL {0}" -msgstr "" - #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1807 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 msgid "Torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2175 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2023 msgid "Magnet link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 msgid "Private torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2191 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 msgid "Size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2198 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Completion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056 msgid "Remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2063 msgid "Files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068 msgid "Pieces" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2224 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 msgid "Piece size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2247 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2301 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149 msgid "Directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2268 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2118 msgid "Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2276 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2124 msgid "Up to higher level directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 msgid "Torrent not found?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 msgid "File not found in torrent?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2176 msgid "complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2329 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2177 msgid "remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2231 msgid "High" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2236 msgid "Normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241 msgid "Skip" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2402 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2250 msgid "Save priorities" msgstr "" diff --git a/apps/i2psnark/locale/messages_it.po b/apps/i2psnark/locale/messages_it.po index ff5ede7cfdd14281c9bfcb1385600f5bf7b60cfc..e0da9dc493c423326aff609b2da1f50b75668145 100644 --- a/apps/i2psnark/locale/messages_it.po +++ b/apps/i2psnark/locale/messages_it.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:46+0000\n" -"PO-Revision-Date: 2012-10-12 00:39+0000\n" -"Last-Translator: kytv <killyourtv@i2pmail.org>\n" +"POT-Creation-Date: 2012-10-15 17:57+0000\n" +"PO-Revision-Date: 2012-10-12 00:54+0000\n" +"Last-Translator: BadCluster <badcluster@i2pmail.org>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/" "it/)\n" "Language: it\n" @@ -342,7 +342,7 @@ msgstr "Torrent in aggiunta in {0}" #: ../java/src/org/klomp/snark/SnarkManager.java:1374 #, java-format msgid "Up bandwidth limit is {0} KBps" -msgstr "" +msgstr "La banda di Upload massima è {0} KBps" #: ../java/src/org/klomp/snark/SnarkManager.java:1396 #, java-format @@ -606,7 +606,7 @@ msgstr "File torrent eliminato: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642 #, java-format msgid "Download deleted: {0}" -msgstr "" +msgstr "Downloads cancellati: {0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 #, java-format @@ -701,12 +701,12 @@ msgstr "Ripristina tracker di default" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998 msgid "Checking" -msgstr "" +msgstr "Controllo (Check)" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 msgid "Allocating" -msgstr "" +msgstr "Allocando" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 diff --git a/apps/i2psnark/locale/messages_pt.po b/apps/i2psnark/locale/messages_pt.po index a88e4d85e4bdae8180da6920174bd9d8826c0f40..9ab15f23314ec5155ee872e89673ec9e7a0385e4 100644 --- a/apps/i2psnark/locale/messages_pt.po +++ b/apps/i2psnark/locale/messages_pt.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-07 14:00+0000\n" +"POT-Creation-Date: 2012-11-02 19:48+0000\n" "PO-Revision-Date: 2011-09-23 20:17+0000\n" "Last-Translator: kytv <killyourtv@i2pmail.org>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -20,482 +20,640 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:355 +#: ../java/src/org/klomp/snark/MagnetURI.java:42 +#: ../java/src/org/klomp/snark/MagnetURI.java:52 +#: ../java/src/org/klomp/snark/SnarkManager.java:1549 +#, fuzzy +msgid "Magnet" +msgstr "URL magnet" + +#: ../java/src/org/klomp/snark/SnarkManager.java:459 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limite total de subidores mudado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:357 +#: ../java/src/org/klomp/snark/SnarkManager.java:461 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "O limite mÃnimo de subidores é {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:369 +#: ../java/src/org/klomp/snark/SnarkManager.java:473 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Largura de banda para a subida foi mudada para {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:371 +#: ../java/src/org/klomp/snark/SnarkManager.java:475 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "O limite mÃnimo da largura de banda para a subida está em {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:383 +#: ../java/src/org/klomp/snark/SnarkManager.java:487 #, java-format msgid "Startup delay changed to {0}" msgstr "Demora do arranque mudado a {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:394 +#: ../java/src/org/klomp/snark/SnarkManager.java:498 #, java-format msgid "Refresh time changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:396 +#: ../java/src/org/klomp/snark/SnarkManager.java:500 msgid "Refresh disabled" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:451 +#: ../java/src/org/klomp/snark/SnarkManager.java:555 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "" "Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes" -#: ../java/src/org/klomp/snark/SnarkManager.java:455 +#: ../java/src/org/klomp/snark/SnarkManager.java:559 #, java-format msgid "I2CP options changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:460 +#: ../java/src/org/klomp/snark/SnarkManager.java:564 msgid "Disconnecting old I2CP destination" msgstr "Desconectando anterior Destinação I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:462 +#: ../java/src/org/klomp/snark/SnarkManager.java:566 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferências de I2CP mudadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:467 +#: ../java/src/org/klomp/snark/SnarkManager.java:571 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "" "Conectar-se não foi posÃvel com as novas preferências I2CP, utilizarei as " "anteriores." -#: ../java/src/org/klomp/snark/SnarkManager.java:471 +#: ../java/src/org/klomp/snark/SnarkManager.java:575 msgid "Unable to reconnect with the old settings!" msgstr "ImpossÃvel se conectar usando as preferências anteriores!" -#: ../java/src/org/klomp/snark/SnarkManager.java:473 +#: ../java/src/org/klomp/snark/SnarkManager.java:577 msgid "Reconnected on the new I2CP destination" msgstr "Conectado com a nova Destinação I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:480 +#: ../java/src/org/klomp/snark/SnarkManager.java:584 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Conexão I2CP re-estabelecida para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:492 +#: ../java/src/org/klomp/snark/SnarkManager.java:596 msgid "New files will be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:494 +#: ../java/src/org/klomp/snark/SnarkManager.java:598 msgid "New files will not be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:501 +#: ../java/src/org/klomp/snark/SnarkManager.java:605 msgid "Enabled autostart" msgstr "Ativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:503 +#: ../java/src/org/klomp/snark/SnarkManager.java:607 msgid "Disabled autostart" msgstr "Desativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:509 +#: ../java/src/org/klomp/snark/SnarkManager.java:613 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "" "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar " "os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:511 +#: ../java/src/org/klomp/snark/SnarkManager.java:615 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "" "Uso dos rastreadores abertos desativado - Para ter efeito é necesário " "reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:519 -msgid "Open Tracker list changed - torrent restart required to take effect." +#: ../java/src/org/klomp/snark/SnarkManager.java:622 +msgid "Enabled DHT." msgstr "" -"Listado de rastreadores abertos mudado - Para ter efeito é necesário " -"reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:526 +#: ../java/src/org/klomp/snark/SnarkManager.java:624 +msgid "Disabled DHT." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:626 +msgid "DHT change requires tunnel shutdown and reopen" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:633 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "Tema {0} foi carregado. Volte no menú principal para vê-lo." -#: ../java/src/org/klomp/snark/SnarkManager.java:533 +#: ../java/src/org/klomp/snark/SnarkManager.java:640 msgid "Configuration unchanged." msgstr "Configuração não mudada." -#: ../java/src/org/klomp/snark/SnarkManager.java:543 +#: ../java/src/org/klomp/snark/SnarkManager.java:672 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "" +"Listado de rastreadores abertos mudado - Para ter efeito é necesário " +"reiniciar os torrentes." + +#: ../java/src/org/klomp/snark/SnarkManager.java:682 +msgid "Private tracker list changed - affects newly created torrents only." +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:728 #, java-format msgid "Unable to save the config to {0}" msgstr "Não se pode guardar a configuração em {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:608 +#: ../java/src/org/klomp/snark/SnarkManager.java:801 msgid "Connecting to I2P" msgstr "Conectando com I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:611 +#: ../java/src/org/klomp/snark/SnarkManager.java:804 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erro ao se conectar com I2P - Verifique a sua configuração I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:620 +#: ../java/src/org/klomp/snark/SnarkManager.java:813 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erro: Não se pode adicionar o torrente {0}." #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:642 +#: ../java/src/org/klomp/snark/SnarkManager.java:835 #, java-format msgid "Cannot open \"{0}\"" msgstr "Não pode se abrir \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../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:2015 +#: ../java/src/org/klomp/snark/SnarkManager.java:854 +#: ../java/src/org/klomp/snark/SnarkManager.java:952 +#: ../java/src/org/klomp/snark/SnarkManager.java:1034 +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:159 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "torrente com este info hash já em marcha: {0}" -#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:668 -#, java-format +#: ../java/src/org/klomp/snark/SnarkManager.java:860 +#, fuzzy, java-format +msgid "ERROR - No I2P trackers in private torrent \"{0}\"" +msgstr "" +"ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}." + +#: ../java/src/org/klomp/snark/SnarkManager.java:862 +#, fuzzy, java-format msgid "" -"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " -"only." +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and " +"DHT only." msgstr "" "Aviso - Se ignorarão rastreadores fora de I2P em \"{0}\", anunciando só aos " "rastreadores abertos do I2P." -#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:673 -#, java-format +#: ../java/src/org/klomp/snark/SnarkManager.java:865 +#, fuzzy, java-format msgid "" -"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " -"enabled before starting this torrent." +"Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " +"announce to DHT only." +msgstr "" +"Aviso - Se ignorarão rastreadores fora de I2P em \"{0}\", anunciando só aos " +"rastreadores abertos do I2P." + +#: ../java/src/org/klomp/snark/SnarkManager.java:867 +#, fuzzy, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " +"disabled, you should enable open trackers or DHT before starting the torrent." msgstr "" "Aviso - Se ignorará rastreador não I2P no \"{0}\". Tens que ativá os " "rastreadores abertos antes de iniciar o torrente!" -#: ../java/src/org/klomp/snark/SnarkManager.java:694 +#: ../java/src/org/klomp/snark/SnarkManager.java:889 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "O arquivo .torrent em \"{0}\" não é válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:699 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037 +#: ../java/src/org/klomp/snark/SnarkManager.java:894 +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:181 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "" "ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:711 +#: ../java/src/org/klomp/snark/SnarkManager.java:906 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "torrente adicionado e iniciado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:713 +#: ../java/src/org/klomp/snark/SnarkManager.java:908 #, java-format msgid "Torrent added: \"{0}\"" msgstr "torrente adicionado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493 +#: ../java/src/org/klomp/snark/SnarkManager.java:963 +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:87 #, java-format msgid "Fetching {0}" msgstr "Buscando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:751 -#, java-format +#: ../java/src/org/klomp/snark/SnarkManager.java:969 +#, fuzzy, java-format msgid "" -"We have no saved peers and no other torrents are running. Fetch of {0} will " -"not succeed until you start another torrent." +"Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " +"succeed until you start another torrent, enable open trackers, or enable DHT." msgstr "" "Não temos pare guardados nem estão ativo outros torrentes. Receber {0} não " "vai dar certo até começa outro torrente." -#: ../java/src/org/klomp/snark/SnarkManager.java:755 +#: ../java/src/org/klomp/snark/SnarkManager.java:973 #, java-format msgid "Adding {0}" msgstr "Adicionando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:802 -#: ../java/src/org/klomp/snark/SnarkManager.java:825 -#: ../java/src/org/klomp/snark/SnarkManager.java:1260 +#: ../java/src/org/klomp/snark/SnarkManager.java:1005 +#, fuzzy, java-format +msgid "Download already running: {0}" +msgstr "torrente já em marcha: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1044 +#: ../java/src/org/klomp/snark/SnarkManager.java:1067 +#: ../java/src/org/klomp/snark/SnarkManager.java:1505 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Não se pode copiar o torrente para {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1052 +#: ../java/src/org/klomp/snark/SnarkManager.java:1294 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "Ha arquivos demais no \"{0}\", se apagará ({1}). " -#: ../java/src/org/klomp/snark/SnarkManager.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1296 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "" "O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e " "será apagado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1056 +#: ../java/src/org/klomp/snark/SnarkManager.java:1298 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Não ha peças no \"{0}\", se apagará." -#: ../java/src/org/klomp/snark/SnarkManager.java:1058 +#: ../java/src/org/klomp/snark/SnarkManager.java:1300 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "Ha peças demais no \"{0}\" e o limite é {1}. Se apagarão." -#: ../java/src/org/klomp/snark/SnarkManager.java:1060 +#: ../java/src/org/klomp/snark/SnarkManager.java:1302 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "Peças no \"{0}\" são grandes demais ({1}B). Se apagarão." -#: ../java/src/org/klomp/snark/SnarkManager.java:1061 +#: ../java/src/org/klomp/snark/SnarkManager.java:1303 #, java-format msgid "Limit is {0}B" msgstr "O limite são \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:1063 +#: ../java/src/org/klomp/snark/SnarkManager.java:1305 #, java-format msgid "Torrent \"{0}\" has no data, deleting it!" msgstr "O torrente \"{0}\" não contem dados e será apagado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1071 +#: ../java/src/org/klomp/snark/SnarkManager.java:1313 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "" "torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:1087 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erro: Não se pode quitar o torrente \"{0}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:1108 -#: ../java/src/org/klomp/snark/SnarkManager.java:1126 +#: ../java/src/org/klomp/snark/SnarkManager.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1368 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "torrente detido: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1147 +#: ../java/src/org/klomp/snark/SnarkManager.java:1389 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "torrente quitado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1397 #, java-format msgid "Adding torrents in {0}" msgstr "Os torrentes serão adicionados em {0} ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:1208 +#: ../java/src/org/klomp/snark/SnarkManager.java:1428 +#, fuzzy, java-format +msgid "Up bandwidth limit is {0} KBps" +msgstr "O limite mÃnimo da largura de banda para a subida está em {0} kbyte/s." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1450 #, java-format msgid "Download finished: {0}" msgstr "Finalizada a descarga de \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1256 +#: ../java/src/org/klomp/snark/SnarkManager.java:1501 #, java-format msgid "Metainfo received for {0}" msgstr "Metainfo recibido para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:528 +#: ../java/src/org/klomp/snark/SnarkManager.java:1502 +#: ../java/src/org/klomp/snark/SnarkManager.java:1731 #, java-format msgid "Starting up torrent {0}" msgstr "Iniciando o torrente {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1313 +#: ../java/src/org/klomp/snark/SnarkManager.java:1517 +#, fuzzy, java-format +msgid "Error on torrent {0}" +msgstr "Erro: Não se pode adicionar o torrente {0}." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1580 msgid "Unable to connect to I2P!" msgstr "ImpossÃvel de se conectar com I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1586 #, java-format msgid "Unable to add {0}" msgstr "ImpossÃvel de adicionar {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:124 +#, fuzzy +msgid "Opening the I2P tunnel" +msgstr "Deter todos os torrentes e o túnel I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1754 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1809 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "Detindo todos os torrentes e fechando o túnel I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1828 +#, fuzzy +msgid "Closing I2P tunnel after notifying trackers." +msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." + +#: ../java/src/org/klomp/snark/SnarkManager.java:1835 +#: ../java/src/org/klomp/snark/SnarkManager.java:1846 +msgid "I2P tunnel closed." +msgstr "Túnel I2P fechado" + +#: ../java/src/org/klomp/snark/TrackerClient.java:227 +#, java-format +msgid "No valid trackers for {0} - enable opentrackers or DHT?" +msgstr "" + +#: ../java/src/org/klomp/snark/UpdateHandler.java:49 +#: ../java/src/org/klomp/snark/UpdateRunner.java:227 +#, fuzzy +msgid "Updating" +msgstr "Iniciar" + +#: ../java/src/org/klomp/snark/UpdateRunner.java:114 +#, java-format +msgid "Updating from {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:75 +#, fuzzy, java-format +msgid "Download torrent file from {0}" +msgstr "torrente obtido de {0}" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:97 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "Não se pode obter torrente de {0}" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:150 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "torrente obtido de {0}" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:171 +#, java-format +msgid "Torrent already running: {0}" +msgstr "torrente já em marcha: {0}" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:173 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "torrente já na cola: {0}" + +#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:179 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "torrente em {0} não foi válido" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Cliente de BitTorrent Anônimo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231 +msgid "Router is down" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 msgid "Torrents" msgstr "torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:223 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 msgid "Refresh page" msgstr "Atualizar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 msgid "Forum" msgstr "Foro" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:286 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271 +msgid "Click \"Add torrent\" button to fetch torrent" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 +msgid "clear messages" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2109 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:294 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 msgid "Hide Peers" msgstr "ocultar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:301 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:351 msgid "Show Peers" msgstr "mostrar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1979 msgid "Torrent" msgstr "torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Estimated time remaining" msgstr "Tempo que falta para completar" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "ETA" msgstr "Tempo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 msgid "Downloaded" msgstr "Descarregado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376 msgid "RX" msgstr "Baixado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 msgid "TX" msgstr "Subido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:390 msgid "Down Rate" msgstr "Taça de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348 -msgid "Rate" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:393 +#, fuzzy +msgid "RX Rate" msgstr "Taça" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:399 msgid "Up Rate" msgstr "Taça de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 +#. Translators: Please keep short or translate as " " +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#, fuzzy +msgid "TX Rate" +msgstr "Taça" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425 msgid "Stop all torrents and the I2P tunnel" msgstr "Deter todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427 msgid "Stop All" msgstr "Deter tudos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:438 msgid "Start All" msgstr "Arrancar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:458 msgid "No torrents loaded." msgstr "Não carregado nenhum torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:463 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:465 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrente" msgstr[1] "{0} torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 parceiro conectado" msgstr[1] "{0} parceiros conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 +#, fuzzy, java-format +msgid "1 DHT peer" +msgid_plural "{0} DHT peers" +msgstr[0] "1 parceiro" +msgstr[1] "{0} parceiros" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "" "Endereço não válido - tem que começar com \"http://\", \"{0}\", ou \"{1}\"." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:547 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 #, java-format msgid "Magnet deleted: {0}" msgstr "Apagada o magnet: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:555 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:618 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:646 #, java-format msgid "Torrent file deleted: {0}" msgstr "Apagado o arquivo torrente: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#, fuzzy, java-format +msgid "Download deleted: {0}" +msgstr "Apagada a pasta de dados: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652 #, java-format msgid "Data file deleted: {0}" msgstr "Apagado o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:588 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Não se pode apagar o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 -#, java-format -msgid "Data dir deleted: {0}" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689 +#, fuzzy, java-format +msgid "Directory could not be deleted: {0}" +msgstr "Não se pode apagar o arquivo de dados: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 +#, fuzzy, java-format +msgid "Directory deleted: {0}" msgstr "Apagada a pasta de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:734 msgid "Error creating torrent - you must select a tracker" msgstr "Erro ao criar o torrente - Tens que elegir um rastreador." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 #, java-format msgid "Torrent created for \"{0}\"" msgstr "torrente criado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " @@ -504,124 +662,167 @@ msgstr "" "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de " "poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:755 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erro ao criar o torrente \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Não se pode criar um torrente para dados que não existam: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:761 msgid "Error creating torrent - you must enter a file or directory" msgstr "" "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 -msgid "Stopping all torrents and closing the I2P tunnel." -msgstr "Detindo todos os torrentes e fechando o túnel I2P" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 +msgid "Delete selected" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -msgid "I2P tunnel closed." -msgstr "Túnel I2P fechado" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#, fuzzy +msgid "Save tracker configuration" +msgstr "Guardar configuração" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 -msgid "Opening the I2P tunnel and starting all torrents." -msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 +#, fuzzy +msgid "Removed" +msgstr "Quitar" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1773 +#, fuzzy +msgid "Add tracker" +msgstr "Rastreador" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 +msgid "Enter valid tracker name and URLs" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:813 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +#. "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +msgid "Restore defaults" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:853 +msgid "Restored default trackers" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:994 +msgid "Checking" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:996 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +msgid "Allocating" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016 msgid "Tracker Error" msgstr "Erro do rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:815 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 parceiro" msgstr[1] "{0} parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +#, fuzzy +msgid "Starting" +msgstr "Iniciar" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 msgid "Seeding" msgstr "semeando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166 msgid "Complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058 msgid "OK" msgstr "bem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Stalled" msgstr "estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:857 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078 msgid "No Peers" msgstr "sem parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:859 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081 msgid "Stopped" msgstr "detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 msgid "Torrent details" msgstr "Detalhes do torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:903 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167 -msgid "Info" -msgstr "Info" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:918 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1143 msgid "View files" msgstr "mostrar arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1145 msgid "Open file" msgstr "abrir arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190 msgid "Stop the torrent" msgstr "Deter o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192 msgid "Stop" msgstr "Deter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 msgid "Start the torrent" msgstr "Iniciar o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1218 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:992 +#. Then the remaining single quote must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1223 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " @@ -630,18 +831,18 @@ msgstr "" "Está seguro de que quer apagar o arquivo \\''{0}.torrent\\''? (Dados " "baixados não se apagarão.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 msgid "Remove" msgstr "Quitar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Apagar o arquivo torrente e o(s) arquivo(s) de dados pertenecentes" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. -#. Then the remaining single quite must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 +#. Then the remaining single quote must be escaped +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " @@ -650,181 +851,180 @@ msgstr "" "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os " "dados descarregados deste torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736 msgid "Delete" msgstr "Apagar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 msgid "Unknown" msgstr "desconhecido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293 msgid "Seed" msgstr "Semeador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 msgid "Uninteresting (The peer has no pieces we need)" msgstr "não interessante (O parceiro não tem peças que precisamos.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1086 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338 msgid "Uninterested (We have no pieces the peer needs)" msgstr "desinteressado (Não temos as peças que o parceiro quer.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1108 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "" "sufocando (De momento não estamos permitindo que os parceiros peçam mais " "peças)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1394 #, java-format msgid "Details at {0} tracker" msgstr "Detalhes no rastreador {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1410 +msgid "Info" +msgstr "Info" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438 msgid "Add Torrent" msgstr "Adicionar um torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 msgid "From URL" msgstr "URL fonte:" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1443 +#, fuzzy msgid "" -"Enter the torrent file download URL (I2P only), magnet link, or maggot link" +"Enter the torrent file download URL (I2P only), magnet link, maggot link, or " +"info hash" msgstr "Entre aqui a URL do .torrent (só I2P), a URL magnet ou uma URL maggot." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1448 msgid "Add torrent" msgstr "Adicionar torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1451 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Também pode copiar arquivos torrentes a {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 msgid "Removing a .torrent will cause it to stop." msgstr "A remoção de um arquivo .torrent fará com que ele pare." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476 msgid "Create Torrent" msgstr "Criar um torrente" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479 msgid "Data to seed" msgstr "Dados para semear" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 msgid "File or directory to seed (must be within the specified path)" msgstr "Arquivo ou pasta para semear (deve estar no caminho especificado)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2001 msgid "Tracker" msgstr "Rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 msgid "Select a tracker" msgstr "Selecione um rastreador" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492 msgid "Open trackers only" msgstr "só rastreadores abertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 -msgid "or" -msgstr "ou" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267 -msgid "Specify custom tracker announce URL" -msgstr "Especifique o URL de rastreador personalizado" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 msgid "Create torrent" msgstr "Criar torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 msgid "Configuration" msgstr "Preferências" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537 msgid "Data directory" msgstr "Pasta de dados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 msgid "Edit i2psnark.config and restart to change" msgstr "Para mudar, modifique o arquivo i2psnark.config e re-inÃcie!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543 msgid "Files readable by all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547 msgid "If checked, other users may access the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1309 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551 msgid "Auto start" msgstr "Iniciar automáticamente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 msgid "If checked, automatically start torrents that are added" msgstr "se marcado, os torrentes adicionados se iniciarão automaticamente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1572 msgid "Refresh time" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1585 msgid "Never" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1591 msgid "Startup delay" msgstr "Demora do arranque" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593 msgid "minutes" msgstr "minutos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617 msgid "Total uploader limit" msgstr "Limite global de subidores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1378 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1620 msgid "peers" msgstr "parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 msgid "Up bandwidth limit" msgstr "Limite de largura de banda para a subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1627 msgid "Half available bandwidth recommended." msgstr "Se recomenda a metade da largura de banda disponÃvel." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 msgid "View or change router bandwidth" msgstr "mostrar e mudar as preferências da largura de banda do roteador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633 msgid "Use open trackers also" msgstr "usar também rastreadores abertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1637 msgid "" "If checked, announce torrents to open trackers as well as the tracker listed " "in the torrent file" @@ -832,155 +1032,185 @@ msgstr "" "Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos " "rastreadores listados no arquivo torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 -msgid "Open tracker announce URLs" -msgstr "URL(s) para anunciar aos rastreadores abertos" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1641 +msgid "Enable DHT" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645 +msgid "If checked, use DHT" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661 msgid "Inbound Settings" msgstr "Preferências de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1417 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 msgid "Outbound Settings" msgstr "Preferências de saida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675 msgid "I2CP host" msgstr "Anfitrião I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1680 msgid "I2CP port" msgstr "Porto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1695 msgid "I2CP options" msgstr "Opções I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1700 msgid "Save configuration" msgstr "Guardar configuração" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#, fuzzy +msgid "Trackers" +msgstr "Rastreador" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719 +msgid "Name" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +msgid "Website URL" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2204 +msgid "Open" +msgstr "abrir" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725 +msgid "Private" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +msgid "Announce URL" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 +msgid "Add" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1798 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL magnet {0} não válida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 -#, java-format -msgid "Invalid info hash in magnet URL {0}" -msgstr "Info hash não válido na URL magnet {0}" - #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 salto" msgstr[1] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1807 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 túnel" msgstr[1] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 -msgid "Completion" -msgstr "Finalização" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#, fuzzy +msgid "Torrent file" +msgstr "Detalhes do torrente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2023 +msgid "Magnet link" +msgstr "URL magnet" -#. else unknown -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#, fuzzy +msgid "Private torrent" +msgstr "Criar torrente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 msgid "Size" msgstr "Tamanho" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1711 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +msgid "Completion" +msgstr "Finalização" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056 +#, fuzzy +msgid "Remaining" +msgstr "Bytes faltando" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2063 msgid "Files" msgstr "Arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068 msgid "Pieces" msgstr "Peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 msgid "Piece size" msgstr "Tamanho das peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736 -msgid "Magnet link" -msgstr "URL magnet" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149 msgid "Directory" msgstr "Pasta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2118 msgid "Priority" msgstr "Prioridade" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2124 msgid "Up to higher level directory" msgstr "Subir uma herarquia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1797 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 msgid "Torrent not found?" msgstr "Não achei o arquivo torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 msgid "File not found in torrent?" msgstr "Arquivo não achado no torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2176 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1820 -msgid "bytes remaining" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2177 +#, fuzzy +msgid "remaining" msgstr "Bytes faltando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1845 -msgid "Open" -msgstr "abrir" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1871 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2231 msgid "High" msgstr "alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2236 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1881 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241 msgid "Skip" msgstr "Ignorar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1890 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2250 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2006 -#, java-format -msgid "Torrent fetched from {0}" -msgstr "torrente obtido de {0}" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027 -#, java-format -msgid "Torrent already running: {0}" -msgstr "torrente já em marcha: {0}" +#~ msgid "Invalid info hash in magnet URL {0}" +#~ msgstr "Info hash não válido na URL magnet {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2029 -#, java-format -msgid "Torrent already in the queue: {0}" -msgstr "torrente já na cola: {0}" +#~ msgid "or" +#~ msgstr "ou" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035 -#, java-format -msgid "Torrent at {0} was not valid" -msgstr "torrente em {0} não foi válido" +#~ msgid "Specify custom tracker announce URL" +#~ msgstr "Especifique o URL de rastreador personalizado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042 -#, java-format -msgid "Torrent was not retrieved from {0}" -msgstr "Não se pode obter torrente de {0}" +#~ msgid "Open tracker announce URLs" +#~ msgstr "URL(s) para anunciar aos rastreadores abertos" diff --git a/apps/i2psnark/locale/messages_sv.po b/apps/i2psnark/locale/messages_sv.po index e8bee1dea48f4e0e9e956ccd6f963effd73f0071..dc7a00092a93f6cabfd741ed442d2c2173b2b18f 100644 --- a/apps/i2psnark/locale/messages_sv.po +++ b/apps/i2psnark/locale/messages_sv.po @@ -2,379 +2,393 @@ # Copyright (C) 2009 The I2P Project # This file is distributed under the same license as the i2psnark package. # To contribute translations, see http://www.i2p2.de/newdevelopers -# +# # Translators: # 123hund123 <M8R-ra4r1r@mailinator.com>, 2011. # <ducki2p@gmail.com>, 2011. # hottuna <i2p@robertfoss.se>, 2011. # <i2p@robertfoss.se>, 2011. -# Martin Svensson <digitalmannen@gmail.com>, 2011, 2012. +# Martin Svensson <digitalmannen@gmail.com>, 2011-2012. +# <mattias.ohlsson@inprose.com>, 2012. msgid "" msgstr "" "Project-Id-Version: I2P\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:10+0000\n" -"PO-Revision-Date: 2012-07-25 19:21+0000\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"PO-Revision-Date: 2012-10-15 14:54+0000\n" "Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n" -"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/" -"language/sv_SE/)\n" -"Language: sv_SE\n" +"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\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" +"Language: sv_SE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../java/src/org/klomp/snark/SnarkManager.java:407 +#: ../java/src/org/klomp/snark/SnarkManager.java:434 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Gräns för totalt antal uppladdare är bytt till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:409 +#: ../java/src/org/klomp/snark/SnarkManager.java:436 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Gräns för totalt minsta antal uppladdare är bytt till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:421 +#: ../java/src/org/klomp/snark/SnarkManager.java:448 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Uppladdnings bandbredd bytt till {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:423 +#: ../java/src/org/klomp/snark/SnarkManager.java:450 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minsta uppladdnings bandbredd bytt till {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:435 +#: ../java/src/org/klomp/snark/SnarkManager.java:462 #, java-format msgid "Startup delay changed to {0}" msgstr "Fördröjning vid uppstart bytt till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:446 +#: ../java/src/org/klomp/snark/SnarkManager.java:473 #, java-format msgid "Refresh time changed to {0}" msgstr "Uppdateringstiden ändrad till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:448 +#: ../java/src/org/klomp/snark/SnarkManager.java:475 msgid "Refresh disabled" msgstr "Uppdatering inaktiverad" -#: ../java/src/org/klomp/snark/SnarkManager.java:503 +#: ../java/src/org/klomp/snark/SnarkManager.java:530 msgid "I2CP and tunnel changes will take effect after stopping all torrents" -msgstr "" -"I2CP och tunnel förändringar kommer träda i kraft efter alla torrentar " -"stoppats." +msgstr "I2CP och tunnel förändringar kommer träda i kraft efter alla torrentar stoppats." -#: ../java/src/org/klomp/snark/SnarkManager.java:507 +#: ../java/src/org/klomp/snark/SnarkManager.java:534 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP valet ändrad till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:512 +#: ../java/src/org/klomp/snark/SnarkManager.java:539 msgid "Disconnecting old I2CP destination" msgstr "Kopplat frÃ¥n gammal I2CP destination" -#: ../java/src/org/klomp/snark/SnarkManager.java:514 +#: ../java/src/org/klomp/snark/SnarkManager.java:541 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP-inställningar ändrade till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:519 +#: ../java/src/org/klomp/snark/SnarkManager.java:546 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" -msgstr "" -"Misslyckades med anslutningsförsök med nya inställningar, Ã¥terställer de " -"gamla I2CP inställningarna" +msgstr "Misslyckades med anslutningsförsök med nya inställningar, Ã¥terställer de gamla I2CP inställningarna" -#: ../java/src/org/klomp/snark/SnarkManager.java:523 +#: ../java/src/org/klomp/snark/SnarkManager.java:550 msgid "Unable to reconnect with the old settings!" msgstr "Misslyckades med anslutningsförsök med gamla inställningar!" -#: ../java/src/org/klomp/snark/SnarkManager.java:525 +#: ../java/src/org/klomp/snark/SnarkManager.java:552 msgid "Reconnected on the new I2CP destination" msgstr "Ã…teranslöt mot den nya I2CP destinationen" -#: ../java/src/org/klomp/snark/SnarkManager.java:532 +#: ../java/src/org/klomp/snark/SnarkManager.java:559 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-lyssnar omstartad pÃ¥ grund av \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:544 +#: ../java/src/org/klomp/snark/SnarkManager.java:571 msgid "New files will be publicly readable" msgstr "Nya filer kommer vara publikt läsbara" -#: ../java/src/org/klomp/snark/SnarkManager.java:546 +#: ../java/src/org/klomp/snark/SnarkManager.java:573 msgid "New files will not be publicly readable" msgstr "Nya filer kommer inte vara publikt läsbara" -#: ../java/src/org/klomp/snark/SnarkManager.java:553 +#: ../java/src/org/klomp/snark/SnarkManager.java:580 msgid "Enabled autostart" msgstr "Aktiverade automatisk start" -#: ../java/src/org/klomp/snark/SnarkManager.java:555 +#: ../java/src/org/klomp/snark/SnarkManager.java:582 msgid "Disabled autostart" msgstr "Avaktiverade automatisk start" -#: ../java/src/org/klomp/snark/SnarkManager.java:561 +#: ../java/src/org/klomp/snark/SnarkManager.java:588 msgid "Enabled open trackers - torrent restart required to take effect." -msgstr "" -"Aktiverade öppna trackers - torrent mÃ¥ste startas om för att inställningen " -"ska träda i kraft" +msgstr "Aktiverade öppna trackers - torrent mÃ¥ste startas om för att inställningen ska träda i kraft" -#: ../java/src/org/klomp/snark/SnarkManager.java:563 +#: ../java/src/org/klomp/snark/SnarkManager.java:590 msgid "Disabled open trackers - torrent restart required to take effect." -msgstr "" -"Avaktiverade öppna trackers - torrent mÃ¥ste startas om för att inställningen " -"ska träda i kraft" +msgstr "Avaktiverade öppna trackers - torrent mÃ¥ste startas om för att inställningen ska träda i kraft" + +#: ../java/src/org/klomp/snark/SnarkManager.java:597 +msgid "Enabled DHT." +msgstr "Aktivera DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#: ../java/src/org/klomp/snark/SnarkManager.java:599 +msgid "Disabled DHT." +msgstr "Avaktivera DHT." + +#: ../java/src/org/klomp/snark/SnarkManager.java:601 +msgid "DHT change requires tunnel shutdown and reopen" +msgstr "Förändringar i DHT kräver att tunneln stängs och öppnas igen " + +#: ../java/src/org/klomp/snark/SnarkManager.java:608 #, java-format msgid "{0} theme loaded, return to main i2psnark page to view." msgstr "{0} tema laddat, Ã¥tergÃ¥ till huvudvyn för i2psnark." -#: ../java/src/org/klomp/snark/SnarkManager.java:577 +#: ../java/src/org/klomp/snark/SnarkManager.java:615 msgid "Configuration unchanged." msgstr "Inställningar oförändrade" -#: ../java/src/org/klomp/snark/SnarkManager.java:609 +#: ../java/src/org/klomp/snark/SnarkManager.java:647 msgid "Open Tracker list changed - torrent restart required to take effect." -msgstr "" -"Öppen tracker-lista förändrad - torrent mÃ¥ste startas om för att " -"inställningen ska träda i kraft" +msgstr "Öppen tracker-lista förändrad - torrent mÃ¥ste startas om för att inställningen ska träda i kraft" -#: ../java/src/org/klomp/snark/SnarkManager.java:619 +#: ../java/src/org/klomp/snark/SnarkManager.java:657 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Privat trackerlista ändrad - pÃ¥verkar bara nyligen skapade torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:665 +#: ../java/src/org/klomp/snark/SnarkManager.java:703 #, java-format msgid "Unable to save the config to {0}" msgstr "Misslyckades med att spara inställningar till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:730 +#: ../java/src/org/klomp/snark/SnarkManager.java:768 msgid "Connecting to I2P" msgstr "Ansluter till I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:733 +#: ../java/src/org/klomp/snark/SnarkManager.java:771 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Problem vid anslutning till I2P - kontrollera dina I2CP-inställningar!" -#: ../java/src/org/klomp/snark/SnarkManager.java:742 +#: ../java/src/org/klomp/snark/SnarkManager.java:780 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Problem: Kunda in lägga till torrent {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:764 +#: ../java/src/org/klomp/snark/SnarkManager.java:802 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kan inte öppna \"{0}\"" -#. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:783 -#: ../java/src/org/klomp/snark/SnarkManager.java:861 -#: ../java/src/org/klomp/snark/SnarkManager.java:939 +#. TODO - if the existing one is a magnet, delete it and add the metainfo +#. instead? +#: ../java/src/org/klomp/snark/SnarkManager.java:821 +#: ../java/src/org/klomp/snark/SnarkManager.java:899 +#: ../java/src/org/klomp/snark/SnarkManager.java:980 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:159 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent med denna infohash körs redan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:789 +#: ../java/src/org/klomp/snark/SnarkManager.java:827 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "FEL - Inga I2P trackers den i privata torrenten \"{0}\"" -#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:792 +#: ../java/src/org/klomp/snark/SnarkManager.java:829 #, java-format msgid "" -"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers " -"only." -msgstr "" -"Varning - Inga I2P trackers i \"{0}\", kommer enbart anmäla til öppna " -"trackers i I2P." +"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" +" DHT only." +msgstr "Varning - Ingen I2P tracker i \"{0}\", kommer enbart att annonseras till I2P öppna trackers och DHT." -#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:797 +#: ../java/src/org/klomp/snark/SnarkManager.java:832 #, java-format msgid "" -"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is " -"enabled before starting this torrent." -msgstr "" -"Varning - Inga I2P trackers i \"{0}\". Kontrollera att öppna trackers är " -"pÃ¥slagna innan denhär torrenten startas." +"Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " +"announce to DHT only." +msgstr "Varning - Ingen I2P tracker i \"{0}\" och öppna trakers är avaktiverade, kommer enbart att annonseras till DHT" -#: ../java/src/org/klomp/snark/SnarkManager.java:818 +#: ../java/src/org/klomp/snark/SnarkManager.java:834 +#, java-format +msgid "" +"Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " +"disabled, you should enable open trackers or DHT before starting the " +"torrent." +msgstr "Varning - Ingen I2P tracker i \"{0}\" och bÃ¥de DHT och öppna trakers är avaktiverade, du bör aktivera öppna trackers eller DHT innan du startar torrenten. " + +#: ../java/src/org/klomp/snark/SnarkManager.java:856 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent i \"{0}\" är ogiltig" -#: ../java/src/org/klomp/snark/SnarkManager.java:823 +#: ../java/src/org/klomp/snark/SnarkManager.java:861 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:181 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "Problem: Minnet har tagit slut, kan inte skapa torrent frÃ¥n {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:835 +#: ../java/src/org/klomp/snark/SnarkManager.java:873 #, java-format msgid "Torrent added and started: \"{0}\"" msgstr "Torrent tillagd och startad: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:837 +#: ../java/src/org/klomp/snark/SnarkManager.java:875 #, java-format msgid "Torrent added: \"{0}\"" msgstr "Torrent tillagd: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:872 +#: ../java/src/org/klomp/snark/SnarkManager.java:910 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:87 #, java-format msgid "Fetching {0}" msgstr "Hämtar {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:875 +#: ../java/src/org/klomp/snark/SnarkManager.java:916 #, java-format msgid "" -"We have no saved peers and no other torrents are running. Fetch of {0} will " -"not succeed until you start another torrent." -msgstr "" -"Vi har inga sparade nerladdare och inga andra torrents kör. Hämtning av {0} " -"kommer inte lyckas för en annan torrent startas." +"Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " +"succeed until you start another torrent, enable open trackers, or enable " +"DHT." +msgstr "Öppna trackers är avaktiverade och det finns inga DHT peers. Hämtningen av {0} kan inte genomföras innan du startar en annan torrent eller aktiverar öppna trackers eller DHT " -#: ../java/src/org/klomp/snark/SnarkManager.java:879 +#: ../java/src/org/klomp/snark/SnarkManager.java:920 #, java-format msgid "Adding {0}" msgstr "Lägger till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:910 +#: ../java/src/org/klomp/snark/SnarkManager.java:951 #, java-format msgid "Download already running: {0}" msgstr "nerladdning körs: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:949 -#: ../java/src/org/klomp/snark/SnarkManager.java:972 -#: ../java/src/org/klomp/snark/SnarkManager.java:1408 +#: ../java/src/org/klomp/snark/SnarkManager.java:990 +#: ../java/src/org/klomp/snark/SnarkManager.java:1013 +#: ../java/src/org/klomp/snark/SnarkManager.java:1451 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Misslyckades att kopiera torrentfil till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1240 #, java-format msgid "Too many files in \"{0}\" ({1}), deleting it!" msgstr "För mÃ¥nga filer i \"{0}\" ({1}), tar bort den!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1201 +#: ../java/src/org/klomp/snark/SnarkManager.java:1242 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" msgstr "Torrenten \"{0}\" fÃ¥r inte sluta med \".torrent\", tar bort den." -#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1244 #, java-format msgid "No pieces in \"{0}\", deleting it!" msgstr "Inga delar i \"{0}\", tar bort den." -#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/SnarkManager.java:1246 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" msgstr "För mÃ¥nga delar i \"{0}\", gränden är {1}, raderar den!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1207 +#: ../java/src/org/klomp/snark/SnarkManager.java:1248 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." msgstr "För stora delar i \"{0}\" ({1}B), raderar den." -#: ../java/src/org/klomp/snark/SnarkManager.java:1208 +#: ../java/src/org/klomp/snark/SnarkManager.java:1249 #, java-format msgid "Limit is {0}B" msgstr "Gränsen är {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/SnarkManager.java:1251 #, java-format msgid "Torrent \"{0}\" has no data, deleting it!" msgstr "Torrenten \"{0}\" har ingen data, tar bort den!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1218 +#: ../java/src/org/klomp/snark/SnarkManager.java:1259 #, java-format msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" msgstr "Torrentar större än {0}B stöds ännu ej, tar bort \"{1}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1234 +#: ../java/src/org/klomp/snark/SnarkManager.java:1275 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Problem: Kunde ej ta bort torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1255 -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1296 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "Torrent stopped: \"{0}\"" msgstr "Torrent stannad: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1294 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent borttagen: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1302 +#: ../java/src/org/klomp/snark/SnarkManager.java:1343 #, java-format msgid "Adding torrents in {0}" msgstr "Torrents tillagda i {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1374 +#, java-format +msgid "Up bandwidth limit is {0} KBps" +msgstr "Upp bandbredds gräns är {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1396 #, java-format msgid "Download finished: {0}" msgstr "Nerladdning klar: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1404 +#: ../java/src/org/klomp/snark/SnarkManager.java:1447 #, java-format msgid "Metainfo received for {0}" msgstr "Metainfo mottagen till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1405 -#: ../java/src/org/klomp/snark/SnarkManager.java:1620 +#: ../java/src/org/klomp/snark/SnarkManager.java:1448 +#: ../java/src/org/klomp/snark/SnarkManager.java:1671 #, java-format msgid "Starting up torrent {0}" msgstr "Startar torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1420 +#: ../java/src/org/klomp/snark/SnarkManager.java:1463 #, java-format msgid "Error on torrent {0}" msgstr "Fel pÃ¥ torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1438 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1765 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:1489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1815 msgid "Magnet" msgstr "Magnet" -#: ../java/src/org/klomp/snark/SnarkManager.java:1469 +#: ../java/src/org/klomp/snark/SnarkManager.java:1520 msgid "Unable to connect to I2P!" msgstr "Misslyckades med att ansluta till I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1475 +#: ../java/src/org/klomp/snark/SnarkManager.java:1526 #, java-format msgid "Unable to add {0}" msgstr "Misslyckades med att lägga till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1619 +#: ../java/src/org/klomp/snark/SnarkManager.java:1670 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:124 msgid "Opening the I2P tunnel" msgstr "Öpnat I2P tunnel " -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 +#: ../java/src/org/klomp/snark/SnarkManager.java:1694 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Öppnar I2P-tunneln och startar torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:1698 +#: ../java/src/org/klomp/snark/SnarkManager.java:1749 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Stoppar alla torrents och stänger I2P-tunneln." -#: ../java/src/org/klomp/snark/SnarkManager.java:1714 +#: ../java/src/org/klomp/snark/SnarkManager.java:1768 msgid "Closing I2P tunnel after notifying trackers." msgstr "Stänger I2P tunnel eter meddelande till trackers." -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:1732 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:1786 msgid "I2P tunnel closed." msgstr "I2P-tunneln är stängd." +#: ../java/src/org/klomp/snark/TrackerClient.java:227 +#, java-format +msgid "No valid trackers for {0} - enable opentrackers or DHT?" +msgstr "Ingen giltig tracker för {0} - aktiverar öppna trackers eller DHT?" + #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:75 #, java-format msgid "Download torrent file from {0}" @@ -405,718 +419,741 @@ msgstr "Torrent finns redan i kö: {0}" msgid "Torrent at {0} was not valid" msgstr "Torrent vid {0} var inte giltig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:223 msgid "I2PSnark - Anonymous BitTorrent Client" msgstr "I2PSnark - Anonym bittorrentklient" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236 msgid "Router is down" msgstr "Routen är nere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:250 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:251 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 msgid "Refresh page" msgstr "Ladda om sida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:263 msgid "Forum" msgstr "Forum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:276 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Klicka pÃ¥ \"Lägg till torrent\" för att hämta en trorrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312 msgid "clear messages" msgstr "rensa meddelandena" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2219 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2221 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349 msgid "Hide Peers" msgstr "Göm nerladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:356 msgid "Show Peers" msgstr "Visa nerladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:364 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2076 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2131 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370 msgid "Estimated time remaining" msgstr "Uppskattad Ã¥terstÃ¥ende tid" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 msgid "ETA" msgstr "UÃ…T" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378 msgid "Downloaded" msgstr "Nerladdat" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:380 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:385 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:386 msgid "Uploaded" msgstr "Uppladdat" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:389 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:395 msgid "Down Rate" msgstr "Nerhastighet" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398 msgid "RX Rate" msgstr "RX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 msgid "Up Rate" msgstr "Upphastighet" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 msgid "TX Rate" msgstr "TX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:429 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:430 msgid "Stop all torrents and the I2P tunnel" msgstr "Stoppa alla torrents och I2P-tunneln" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:432 msgid "Stop All" msgstr "Stoppa alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:441 msgid "Start all torrents and the I2P tunnel" msgstr "Starta alla torrents och I2P-tunneln" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:443 msgid "Start All" msgstr "Starta alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:463 msgid "No torrents loaded." msgstr "Inga torrents laddade." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468 msgid "Totals" msgstr "Totalt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:469 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:470 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0} torrent" msgstr[1] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:473 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0} ansluten nerladdare" msgstr[1] "{0} anslutna nerladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:479 +#, java-format +msgid "1 DHT peer" +msgid_plural "{0} DHT peers" +msgstr[0] "1 DHT peer" +msgstr[1] "{0} DHT peers" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572 #, java-format msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"" msgstr "Ogiltig URL: MÃ¥ste starta med \"http://\", \"{0}\" eller \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:602 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:622 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrentfil borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642 +#, java-format +msgid "Download deleted: {0}" +msgstr "Nedladdning borttagen: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 #, java-format msgid "Data file deleted: {0}" msgstr "Datafil borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Datafil kunde inte tas bort: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Katalogen kunde inta tas bort: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691 #, java-format msgid "Directory deleted: {0}" msgstr "Katalogen bort tagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:722 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:738 msgid "Error creating torrent - you must select a tracker" msgstr "Misslyckades med att skapa torrent - en tracker mÃ¥ste väljas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:755 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent skapad för \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:740 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:757 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" -msgstr "" -"MÃ¥nga I2P trackers kräver att användare registrerar sig för uppladdning av " -"torrent - gör det innan \"{0}\" startas" +msgstr "MÃ¥nga I2P trackers kräver att användare registrerar sig för uppladdning av torrent - gör det innan \"{0}\" startas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:759 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Misslyckades med att skapa torrent för \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Kan ej skapa torrent för data som ej finns: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 msgid "Error creating torrent - you must enter a file or directory" msgstr "Misslyckades med att skapa torrent - en fil eller mapp mÃ¥ste anges" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1771 msgid "Delete selected" msgstr "Ta bort valda" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 msgid "Save tracker configuration" msgstr "Spara tracker konfiguration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 msgid "Removed" msgstr "Borttagen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 msgid "Add tracker" msgstr "Lägg till tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852 msgid "Enter valid tracker name and URLs" msgstr "Ange namn och URL för trackern " -#. "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734 +#. "<input type=\"reset\" class=\"cancel\" +#. value=\"").append(_("Cancel")).append("\">\n" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 msgid "Restore defaults" msgstr "Ã…terställ standardvärden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:857 msgid "Restored default trackers" msgstr "Ã…terställ standard trackers " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:989 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998 +msgid "Checking" +msgstr "Kontrollerar " + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +msgid "Allocating" +msgstr "Allokerar" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018 msgid "Tracker Error" msgstr "Tracker-fel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1039 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1008 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1013 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0} nerladdare" msgstr[1] "{0} nerladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:992 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 msgid "Starting" msgstr "Startar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 msgid "Seeding" msgstr "Uppladdning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1019 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2161 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2276 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1048 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2203 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Complete" msgstr "Färdig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1024 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1025 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060 msgid "OK" msgstr "Ok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 msgid "Stalled" msgstr "Avstannad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080 msgid "No Peers" msgstr "Inga källor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1083 msgid "Stopped" msgstr "Stoppad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1116 msgid "Torrent details" msgstr "Torrentdetaljer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1145 msgid "View files" msgstr "Se filer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147 msgid "Open file" msgstr "Öppna fil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192 msgid "Stop the torrent" msgstr "Stoppa torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 msgid "Stop" msgstr "Stoppa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1175 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1206 msgid "Start the torrent" msgstr "Starta torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 msgid "Start" msgstr "Starta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Ta bort torrent frÃ¥n den aktiva listan, tar bort .torrent fil" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded " "data will not be deleted) ?" -msgstr "" -"Är du säker pÃ¥ att du vill ta bort filen \"{0}.torrent\" (nerladdad data " -"kommer ej tas bort) ?" +msgstr "Är du säker pÃ¥ att du vill ta bort filen \"{0}.torrent\" (nerladdad data kommer ej tas bort) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 msgid "Remove" msgstr "Ta bort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1209 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240 msgid "Delete the .torrent file and the associated data file(s)" msgstr "Ta bort .torrent filen och tillhörande datafil(er)" #. Can't figure out how to escape double quotes inside the onclick string. #. Single quotes in translate strings with parameters must be doubled. #. Then the remaining single quote must be escaped -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1245 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" -msgstr "" -"Är du säker pÃ¥ att du vill ta bort torrenten \"{0}\" och all nerladdad data?" +msgstr "Är du säker pÃ¥ att du vill ta bort torrenten \"{0}\" och all nerladdad data?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1248 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1738 msgid "Delete" msgstr "Ta bort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1252 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 msgid "Unknown" msgstr "Okänd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295 msgid "Seed" msgstr "Källa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Ointressant (nerladdaren har inga delar vi behöver)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Spärra (nerladdaren lÃ¥ter oss inte be dom delar)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1309 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Ointresserad (vi har inga delar nerladdaren behöver)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1342 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Spärrar (vi lÃ¥ter inte nerladdaren be dom delar)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1396 #, java-format msgid "Details at {0} tracker" msgstr "Detaljer för {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1412 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 msgid "Add Torrent" msgstr "Lägg till torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 msgid "From URL" msgstr "FrÃ¥n URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1414 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445 msgid "" -"Enter the torrent file download URL (I2P only), magnet link, maggot link, or " -"info hash" -msgstr "" -"Ange URL för torrentfilen (enbart I2P), magnet link, maggot länk eller info " -"hash" +"Enter the torrent file download URL (I2P only), magnet link, maggot link, or" +" info hash" +msgstr "Ange URL för torrentfilen (enbart I2P), magnet link, maggot länk eller info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 msgid "Add torrent" msgstr "Lägg till torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1422 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Du kan även kopiera .torrent filer till: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1424 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1455 msgid "Removing a .torrent will cause it to stop." msgstr "Borttagning av .torrent fil kommer stanna den." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1447 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478 msgid "Create Torrent" msgstr "Skapa torrent" -#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" +#. value=\"" + newFile + "\" /><br>\n"); +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1481 msgid "Data to seed" msgstr "Data att ladda upp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1454 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1485 msgid "File or directory to seed (must be within the specified path)" msgstr "Fil eller mapp att ladda upp (mÃ¥ste finnas pÃ¥ angiven plats)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1456 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1458 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489 msgid "Select a tracker" msgstr "Välj en tracker" #. out.write(_("Open trackers and DHT only")); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1494 msgid "Open trackers only" msgstr "Enbart öppna trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511 msgid "Create torrent" msgstr "Skapa torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1784 msgid "Configuration" msgstr "Inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539 msgid "Data directory" msgstr "Datamapp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541 msgid "Edit i2psnark.config and restart to change" -msgstr "Förändra i2psnark.conig och starta om för att ändra" +msgstr "Förändra i2psnark.config och starta om för att ändra" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545 msgid "Files readable by all" msgstr "Filer läsbara för alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549 msgid "If checked, other users may access the downloaded files" msgstr "Om vald, kommer andra användare att kunna komma Ã¥t nerladdade filer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1553 msgid "Auto start" msgstr "Automatisk start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557 msgid "If checked, automatically start torrents that are added" msgstr "Om ikryssad, startas automatiskt tillagda torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1574 msgid "Refresh time" msgstr "Uppdateringsintervall" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1587 msgid "Never" msgstr "Aldrig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593 msgid "Startup delay" msgstr "Fördröjning av uppstart" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 msgid "minutes" msgstr "minuter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1619 msgid "Total uploader limit" msgstr "Gräns för totalt antal uppladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1622 msgid "peers" msgstr "nerladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1626 msgid "Up bandwidth limit" msgstr "Gräns för bandbredd uppÃ¥t" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 msgid "Half available bandwidth recommended." msgstr "Hälften av tillgänglig bandbredd rekommenderas." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1631 msgid "View or change router bandwidth" msgstr "Se eller ändra routerns bandbredd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1635 msgid "Use open trackers also" msgstr "Använd öppna trackers med" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1639 msgid "" -"If checked, announce torrents to open trackers as well as the tracker listed " -"in the torrent file" -msgstr "" -"Om ikryssad, anmäl torrents till öppna trackers och tracker angiven i " -"torrentfilen" +"If checked, announce torrents to open trackers as well as the tracker listed" +" in the torrent file" +msgstr "Om ikryssad, anmäl torrents till öppna trackers och tracker angiven i torrentfilen" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643 +msgid "Enable DHT" +msgstr "Aktivera DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1647 +msgid "If checked, use DHT" +msgstr "om vald, använd DHT" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663 msgid "Inbound Settings" msgstr "Inkommande inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1629 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669 msgid "Outbound Settings" msgstr "UtgÃ¥ende inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677 msgid "I2CP host" msgstr "I2CP-värd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682 msgid "I2CP port" msgstr "I2CP-port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697 msgid "I2CP options" msgstr "I2CP-inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702 msgid "Save configuration" msgstr "Spara inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 msgid "Trackers" msgstr "Trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 msgid "Name" msgstr "Namn" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 msgid "Website URL" msgstr "Webbplats URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2314 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 msgid "Open" msgstr "Öppna" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1687 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 msgid "Private" msgstr "Privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729 msgid "Announce URL" msgstr "Tillkännage URLen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 msgid "Add" msgstr "Lägg till" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1800 #, java-format msgid "Invalid magnet URL {0}" msgstr "Ogiltig magnet URL {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1834 #, java-format msgid "Invalid info hash in magnet URL {0}" msgstr "Ogiltig infohash i magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1918 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0} hopp" msgstr[1] "{0} hopp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1919 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0} tunnel" msgstr[1] "{0} tunnlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Torrent file" msgstr "Torrent fil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2175 msgid "Magnet link" msgstr "Magnet länk" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2182 msgid "Private torrent" msgstr "Privat torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2191 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2257 msgid "Size" msgstr "Storlek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2198 msgid "Completion" msgstr "Färdiställning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2208 msgid "Remaining" msgstr "Kvar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2173 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215 msgid "Files" msgstr "Filer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2220 msgid "Pieces" msgstr "Delar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2182 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2224 msgid "Piece size" msgstr "Delstorlek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2301 msgid "Directory" msgstr "Mapp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2226 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Priority" msgstr "Prioritet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2234 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2276 msgid "Up to higher level directory" msgstr "Up till högre mappnivÃ¥" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2306 msgid "Torrent not found?" msgstr "Torrent hittades ej?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 msgid "File not found in torrent?" msgstr "Fil hittades ej i torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2286 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328 msgid "complete" msgstr "färdig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2287 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2329 msgid "remaining" msgstr "kvar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2341 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2383 msgid "High" msgstr "Hög" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2388 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2351 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 msgid "Skip" msgstr "Hoppa över" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2402 msgid "Save priorities" msgstr "Spara prioriteter" diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 0c68ab1c14f44ba8adc6a8a0febd28cd14ea0e6c..5a54e6c566db27acfcf6a115bf772766d0c0ff24 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -179,6 +179,7 @@ <pathelement location="${ant.home}/lib/ant.jar" /> <pathelement location="build/i2ptunnel.jar" /> <pathelement location="build/temp-beans.jar" /> + <pathelement location="../../../core/java/build/i2p.jar" /> </classpath> <arg value="-d" /> <arg value="../jsp/WEB-INF/classes" /> @@ -202,6 +203,7 @@ <pathelement location="../../jetty/jettylib/jsp-api.jar" /> <pathelement location="build/i2ptunnel.jar" /> <pathelement location="build/temp-beans.jar" /> + <pathelement location="../../../core/java/build/i2p.jar" /> </classpath> </javac> <copy file="../jsp/web.xml" tofile="../jsp/web-out.xml" /> @@ -213,6 +215,7 @@ <uptodate property="precompilejsp.uptodate" targetfile="../jsp/web-out.xml"> <srcfiles dir= "../jsp" includes="*.jsp, *.html, web.xml"/> + <srcfiles dir= "src/net/i2p/i2ptunnel/web" includes="*.java"/> </uptodate> <target name="javadoc"> @@ -230,7 +233,7 @@ <mkdir dir="./build" /> <mkdir dir="./build/obj" /> <!-- We need the ant runtime, as it includes junit --> - <javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" + <javac srcdir="./src:./test/junit" debug="true" source="1.5" target="1.5" includeAntRuntime="true" deprecation="on" destdir="./build/obj" > <compilerarg line="${javac.compilerargs}" /> @@ -248,7 +251,7 @@ <pathelement location="../../../core/java/build/i2p.jar" /> </classpath> <batchtest> - <fileset dir="./test/"> + <fileset dir="./test/junit/"> <include name="**/*Test.java" /> </fileset> </batchtest> diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 04ca75e75aa069237266bfa4c2e0215cbe0e1ebd..142aaf49bbd10f7e92235ac7a1244f86dd6e56f6 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -13,6 +13,7 @@ import java.util.Locale; import java.util.Properties; import java.util.StringTokenizer; +import net.i2p.I2PAppContext; import net.i2p.I2PException; import net.i2p.client.streaming.I2PSocket; import net.i2p.client.streaming.I2PSocketOptions; @@ -20,7 +21,6 @@ import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.util.EventDispatcher; -import net.i2p.util.FileUtil; import net.i2p.util.Log; import net.i2p.util.PortMapper; @@ -58,6 +58,8 @@ import net.i2p.util.PortMapper; */ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements Runnable { + public static final String AUTH_REALM = "I2P SSL Proxy"; + private final static byte[] ERR_DESTINATION_UNKNOWN = ("HTTP/1.1 503 Service Unavailable\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ @@ -89,17 +91,6 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R "Your browser is misconfigured. Do not use the proxy to access the router console or other localhost destinations.<BR>") .getBytes(); - private final static byte[] ERR_AUTH = - ("HTTP/1.1 407 Proxy Authentication Required\r\n"+ - "Content-Type: text/html; charset=UTF-8\r\n"+ - "Cache-control: no-cache\r\n"+ - "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.5\r\n" + // try to get a UTF-8-encoded response back for the password - "Proxy-Authenticate: Basic realm=\"I2P SSL Proxy\"\r\n" + - "\r\n"+ - "<html><body><H1>I2P ERROR: PROXY AUTHENTICATION REQUIRED</H1>"+ - "This proxy is configured to require authentication.<BR>") - .getBytes(); - private final static byte[] SUCCESS_RESPONSE = ("HTTP/1.1 200 Connection Established\r\n"+ "Proxy-agent: I2P\r\n"+ @@ -165,6 +156,11 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R return super.close(forced); } + /** @since 0.9.4 */ + protected String getRealm() { + return AUTH_REALM; + } + protected void clientConnectionRun(Socket s) { InputStream in = null; OutputStream out = null; @@ -237,10 +233,10 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R _log.debug(getPrefix(requestId) + "REST :" + restofline + ":"); _log.debug(getPrefix(requestId) + "DEST :" + destination + ":"); } - } else if (line.toLowerCase(Locale.US).startsWith("proxy-authorization: basic ")) { + } else if (line.toLowerCase(Locale.US).startsWith("proxy-authorization: ")) { // strip Proxy-Authenticate from the response in HTTPResponseOutputStream // save for auth check below - authorization = line.substring(27); // "proxy-authorization: basic ".length() + authorization = line.substring(21); // "proxy-authorization: ".length() line = null; } else if (line.length() > 0) { // Additional lines - shouldn't be too many. Firefox sends: @@ -281,30 +277,26 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R } // Authorization - if (!authorize(s, requestId, authorization)) { + AuthResult result = authorize(s, requestId, method, authorization); + if (result != AuthResult.AUTH_GOOD) { if (_log.shouldLog(Log.WARN)) { if (authorization != null) _log.warn(getPrefix(requestId) + "Auth failed, sending 407 again"); else _log.warn(getPrefix(requestId) + "Auth required, sending 407"); } - writeErrorMessage(ERR_AUTH, out); + out.write(getAuthError(result == AuthResult.AUTH_STALE).getBytes()); s.close(); return; } Destination clientDest = _context.namingService().lookup(destination); if (clientDest == null) { - String str; byte[] header; if (usingWWWProxy) - str = FileUtil.readTextFile((new File(_errorDir, "dnfp-header.ht")).getAbsolutePath(), 100, true); + header = getErrorPage("dnfp-header.ht", ERR_DESTINATION_UNKNOWN); else - str = FileUtil.readTextFile((new File(_errorDir, "dnfh-header.ht")).getAbsolutePath(), 100, true); - if (str != null) - header = str.getBytes(); - else - header = ERR_DESTINATION_UNKNOWN; + header = getErrorPage("dnfh-header.ht", ERR_DESTINATION_UNKNOWN); writeErrorMessage(header, out, targetRequest, usingWWWProxy, destination); s.close(); return; @@ -341,12 +333,13 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R } private static class OnTimeout implements Runnable { - private Socket _socket; - private OutputStream _out; - private String _target; - private boolean _usingProxy; - private String _wwwProxy; - private long _requestId; + private final Socket _socket; + private final OutputStream _out; + private final String _target; + private final boolean _usingProxy; + private final String _wwwProxy; + private final long _requestId; + public OnTimeout(Socket s, OutputStream out, String target, boolean usingProxy, String wwwProxy, long id) { _socket = s; _out = out; @@ -355,6 +348,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R _wwwProxy = wwwProxy; _requestId = id; } + public void run() { //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Timeout occured requesting " + _target); @@ -391,17 +385,12 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R boolean usingWWWProxy, String wwwProxy, long requestId) { if (out == null) return; + byte[] header; + if (usingWWWProxy) + header = getErrorPage(I2PAppContext.getGlobalContext(), "dnfp-header.ht", ERR_DESTINATION_UNKNOWN); + else + header = getErrorPage(I2PAppContext.getGlobalContext(), "dnf-header.ht", ERR_DESTINATION_UNKNOWN); try { - String str; - byte[] header; - if (usingWWWProxy) - str = FileUtil.readTextFile((new File(_errorDir, "dnfp-header.ht")).getAbsolutePath(), 100, true); - else - str = FileUtil.readTextFile((new File(_errorDir, "dnf-header.ht")).getAbsolutePath(), 100, true); - if (str != null) - header = str.getBytes(); - else - header = ERR_DESTINATION_UNKNOWN; writeErrorMessage(header, out, targetRequest, usingWWWProxy, wwwProxy); } catch (IOException ioe) {} } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPBidirProxy.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPBidirProxy.java index 8c188d11576416a80082bc3409116a0b90cd6981..56c2e7550c4242fb5146880a2968f198972f2f6c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPBidirProxy.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPBidirProxy.java @@ -1,17 +1,9 @@ /** - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * WTFPL * Version 2, December 2004 * * Copyright (C) sponge * Planet Earth - * Everyone is permitted to copy and distribute verbatim or modified - * copies of this license document, and changing it is allowed as long - * as the name is changed. - * - * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - * - * 0. You just DO WHAT THE FUCK YOU WANT TO. * * See... * @@ -19,9 +11,8 @@ * and * http://en.wikipedia.org/wiki/WTFPL * - * ...for any additional details and liscense questions. + * ...for any additional details and license questions. */ - package net.i2p.i2ptunnel; // import java.util.ArrayList; diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java index bc7a474774d1013047a57a236f8b540f2b0e75ea..518e7dcdcbd957a9d815e4c67e6e17d9619259b3 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java @@ -3,9 +3,7 @@ */ package net.i2p.i2ptunnel; -import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -73,10 +71,14 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn * via address helper links */ private final ConcurrentHashMap<String, String> addressHelpers = new ConcurrentHashMap(8); + /** * Used to protect actions via http://proxy.i2p/ */ private final String _proxyNonce; + + public static final String AUTH_REALM = "I2P HTTP Proxy"; + /** * These are backups if the xxx.ht error page is missing. */ @@ -167,15 +169,6 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn "\r\n" + "<html><body><H1>I2P ERROR: REQUEST DENIED</H1>" + "Your browser is misconfigured. Do not use the proxy to access the router console or other localhost destinations.<BR>").getBytes(); - private final static byte[] ERR_AUTH = - ("HTTP/1.1 407 Proxy Authentication Required\r\n" + - "Content-Type: text/html; charset=UTF-8\r\n" + - "Cache-control: no-cache\r\n" + - "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.5\r\n" + // try to get a UTF-8-encoded response back for the password - "Proxy-Authenticate: Basic realm=\"I2P HTTP Proxy\"\r\n" + - "\r\n" + - "<html><body><H1>I2P ERROR: PROXY AUTHENTICATION REQUIRED</H1>" + - "This proxy is configured to require authentication.<BR>").getBytes(); /** * This constructor always starts the tunnel (ignoring the i2cp.delayOpen option). @@ -300,6 +293,12 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn } return rv; } + + /** @since 0.9.4 */ + protected String getRealm() { + return AUTH_REALM; + } + private static final String HELPER_PARAM = "i2paddresshelper"; public static final String LOCAL_SERVER = "proxy.i2p"; private static final boolean DEFAULT_GZIP = true; @@ -769,10 +768,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn // hop-by-hop header, and we definitely want to block Windows NTLM after a far-end 407. // Response to far-end shouldn't happen, as we // strip Proxy-Authenticate from the response in HTTPResponseOutputStream - if(lowercaseLine.startsWith("proxy-authorization: basic ")) // save for auth check below - { - authorization = line.substring(27); // "proxy-authorization: basic ".length() - } + authorization = line.substring(21); // "proxy-authorization: ".length() line = null; continue; } else if(lowercaseLine.startsWith("icy")) { @@ -850,7 +846,8 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn } // Authorization - if(!authorize(s, requestId, authorization)) { + AuthResult result = authorize(s, requestId, method, authorization); + if (result != AuthResult.AUTH_GOOD) { if(_log.shouldLog(Log.WARN)) { if(authorization != null) { _log.warn(getPrefix(requestId) + "Auth failed, sending 407 again"); @@ -858,7 +855,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn _log.warn(getPrefix(requestId) + "Auth required, sending 407"); } } - out.write(getErrorPage("auth", ERR_AUTH)); + out.write(getAuthError(result == AuthResult.AUTH_STALE).getBytes()); writeFooter(out); s.close(); return; @@ -1095,61 +1092,6 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn return Base32.encode(_dest.calculateHash().getData()) + ".b32.i2p"; } - /** - * foo => errordir/foo-header_xx.ht for lang xx, or errordir/foo-header.ht, - * or the backup byte array on fail. - * - * .ht files must be UTF-8 encoded and use \r\n terminators so the - * HTTP headers are conformant. - * We can't use FileUtil.readFile() because it strips \r - * - * @return non-null - */ - private byte[] getErrorPage(String base, byte[] backup) { - return getErrorPage(_context, base, backup); - } - - private static byte[] getErrorPage(I2PAppContext ctx, String base, byte[] backup) { - File errorDir = new File(ctx.getBaseDir(), "docs"); - String lang = ctx.getProperty("routerconsole.lang", Locale.getDefault().getLanguage()); - if(lang != null && lang.length() > 0 && !lang.equals("en")) { - File file = new File(errorDir, base + "-header_" + lang + ".ht"); - try { - return readFile(file); - } catch(IOException ioe) { - // try the english version now - } - } - File file = new File(errorDir, base + "-header.ht"); - try { - return readFile(file); - } catch(IOException ioe) { - return backup; - } - } - - private static byte[] readFile(File file) throws IOException { - FileInputStream fis = null; - byte[] buf = new byte[512]; - ByteArrayOutputStream baos = new ByteArrayOutputStream(2048); - try { - int len = 0; - fis = new FileInputStream(file); - while((len = fis.read(buf)) > 0) { - baos.write(buf, 0, len); - } - return baos.toByteArray(); - } finally { - try { - if(fis != null) { - fis.close(); - } - } catch(IOException foo) { - } - } - // we won't ever get here - } - /** * Public only for LocalHTTPServer, not for general use */ @@ -1163,12 +1105,12 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn private static class OnTimeout implements Runnable { - private Socket _socket; - private OutputStream _out; - private String _target; - private boolean _usingProxy; - private String _wwwProxy; - private long _requestId; + private final Socket _socket; + private final OutputStream _out; + private final String _target; + private final boolean _usingProxy; + private final String _wwwProxy; + private final long _requestId; public OnTimeout(Socket s, OutputStream out, String target, boolean usingProxy, String wwwProxy, long id) { _socket = s; diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java index f14de68b4b1550d7ed26ae0ef8e384255a13e4d3..1a88969141e7bbccf7d9402948d3bfcb28bbbf13 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java @@ -3,19 +3,26 @@ */ package net.i2p.i2ptunnel; +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.util.ArrayList; import java.io.File; +import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Map; import net.i2p.I2PAppContext; import net.i2p.client.streaming.I2PSocketManager; import net.i2p.data.Base64; +import net.i2p.data.DataHelper; import net.i2p.util.EventDispatcher; import net.i2p.util.InternalSocket; import net.i2p.util.Log; +import net.i2p.util.PasswordManager; /** * Common things for HTTPClient and ConnectClient @@ -25,6 +32,25 @@ import net.i2p.util.Log; */ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implements Runnable { + private static final int PROXYNONCE_BYTES = 8; + private static final int MD5_BYTES = 16; + /** 24 */ + private static final int NONCE_BYTES = DataHelper.DATE_LENGTH + MD5_BYTES; + private static final long MAX_NONCE_AGE = 30*24*60*60*1000L; + + private static final String ERR_AUTH1 = + "HTTP/1.1 407 Proxy Authentication Required\r\n" + + "Content-Type: text/html; charset=UTF-8\r\n" + + "Cache-control: no-cache\r\n" + + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.5\r\n" + // try to get a UTF-8-encoded response back for the password + "Proxy-Authenticate: "; + // put the auth type and realm in between + private static final String ERR_AUTH2 = + "\r\n" + + "\r\n" + + "<html><body><H1>I2P ERROR: PROXY AUTHENTICATION REQUIRED</H1>" + + "This proxy is configured to require authentication."; + protected final List<String> _proxyList; protected final static byte[] ERR_NO_OUTPROXY = @@ -40,7 +66,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem /** used to assign unique IDs to the threads / clients. no logic or functionality */ protected static volatile long __clientId = 0; - protected static final File _errorDir = new File(I2PAppContext.getGlobalContext().getBaseDir(), "docs"); + private final byte[] _proxyNonce; protected String getPrefix(long requestId) { return "Client[" + _clientId + "/" + requestId + "]: "; } @@ -63,6 +89,8 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem I2PTunnel tunnel) throws IllegalArgumentException { super(localPort, ownDest, l, notifyThis, handlerName, tunnel); _proxyList = new ArrayList(4); + _proxyNonce = new byte[PROXYNONCE_BYTES]; + _context.random().nextBytes(_proxyNonce); } /** @@ -76,8 +104,12 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem throws IllegalArgumentException { super(localPort, l, sktMgr, tunnel, notifyThis, clientId); _proxyList = new ArrayList(4); + _proxyNonce = new byte[PROXYNONCE_BYTES]; + _context.random().nextBytes(_proxyNonce); } + //////// Authorization stuff + /** all auth @since 0.8.2 */ public static final String PROP_AUTH = "proxyAuth"; public static final String PROP_USER = "proxyUsername"; @@ -90,68 +122,349 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem /** passwords for specific outproxies may be added with outproxyUsername.fooproxy.i2p=user and outproxyPassword.fooproxy.i2p=pw */ public static final String PROP_OUTPROXY_USER_PREFIX = PROP_OUTPROXY_USER + '.'; public static final String PROP_OUTPROXY_PW_PREFIX = PROP_OUTPROXY_PW + '.'; + /** new style MD5 auth */ + public static final String PROP_PROXY_DIGEST_PREFIX = "proxy.auth."; + public static final String PROP_PROXY_DIGEST_SUFFIX = ".md5"; + public static final String BASIC_AUTH = "basic"; + public static final String DIGEST_AUTH = "digest"; + + protected abstract String getRealm(); + + protected enum AuthResult {AUTH_BAD_REQ, AUTH_BAD, AUTH_STALE, AUTH_GOOD} /** - * @param authorization may be null + * @since 0.9.4 + */ + protected boolean isDigestAuthRequired() { + String authRequired = getTunnel().getClientOptions().getProperty(PROP_AUTH); + if (authRequired == null) + return false; + return authRequired.toLowerCase(Locale.US).equals("digest"); + } + + /** + * Authorization + * Ref: RFC 2617 + * If the socket is an InternalSocket, no auth required. + * + * @param method GET, POST, etc. + * @param authorization may be null, the full auth line e.g. "Basic lskjlksjf" * @return success */ - protected boolean authorize(Socket s, long requestId, String authorization) { - // Authorization - // Ref: RFC 2617 - // If the socket is an InternalSocket, no auth required. + protected AuthResult authorize(Socket s, long requestId, String method, String authorization) { String authRequired = getTunnel().getClientOptions().getProperty(PROP_AUTH); - if (Boolean.parseBoolean(authRequired) || - (authRequired != null && "basic".equals(authRequired.toLowerCase(Locale.US)))) { - if (s instanceof InternalSocket) { - if (_log.shouldLog(Log.INFO)) - _log.info(getPrefix(requestId) + "Internal access, no auth required"); - return true; - } else if (authorization != null) { - // hmm safeDecode(foo, true) to use standard alphabet is private in Base64 - byte[] decoded = Base64.decode(authorization.replace("/", "~").replace("+", "=")); - if (decoded != null) { - // We send Accept-Charset: UTF-8 in the 407 so hopefully it comes back that way inside the B64 ? - try { - String dec = new String(decoded, "UTF-8"); - String[] parts = dec.split(":"); - String user = parts[0]; - String pw = parts[1]; - // first try pw for that user - String configPW = getTunnel().getClientOptions().getProperty(PROP_PW_PREFIX + user); - if (configPW == null) { - // if not, look at default user and pw - String configUser = getTunnel().getClientOptions().getProperty(PROP_USER); - if (user.equals(configUser)) - configPW = getTunnel().getClientOptions().getProperty(PROP_PW); - } - if (configPW != null) { - if (pw.equals(configPW)) { - if (_log.shouldLog(Log.INFO)) - _log.info(getPrefix(requestId) + "Good auth - user: " + user + " pw: " + pw); - return true; - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn(getPrefix(requestId) + "Bad auth, pw mismatch - user: " + user + " pw: " + pw + " expected: " + configPW); - } - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn(getPrefix(requestId) + "Bad auth, no stored pw for user: " + user + " pw: " + pw); + if (authRequired == null) + return AuthResult.AUTH_GOOD; + authRequired = authRequired.toLowerCase(Locale.US); + if (authRequired.equals("false")) + return AuthResult.AUTH_GOOD; + if (s instanceof InternalSocket) { + if (_log.shouldLog(Log.INFO)) + _log.info(getPrefix(requestId) + "Internal access, no auth required"); + return AuthResult.AUTH_GOOD; + } + if (authorization == null) + return AuthResult.AUTH_BAD; + if (_log.shouldLog(Log.INFO)) + _log.info(getPrefix(requestId) + "Auth: " + authorization); + String authLC = authorization.toLowerCase(Locale.US); + if (authRequired.equals("true") || authRequired.equals(BASIC_AUTH)) { + if (!authLC.startsWith("basic ")) + return AuthResult.AUTH_BAD; + authorization = authorization.substring(6); + + // hmm safeDecode(foo, true) to use standard alphabet is private in Base64 + byte[] decoded = Base64.decode(authorization.replace("/", "~").replace("+", "=")); + if (decoded != null) { + // We send Accept-Charset: UTF-8 in the 407 so hopefully it comes back that way inside the B64 ? + try { + String dec = new String(decoded, "UTF-8"); + String[] parts = dec.split(":"); + String user = parts[0]; + String pw = parts[1]; + // first try pw for that user + String configPW = getTunnel().getClientOptions().getProperty(PROP_PW_PREFIX + user); + if (configPW == null) { + // if not, look at default user and pw + String configUser = getTunnel().getClientOptions().getProperty(PROP_USER); + if (user.equals(configUser)) + configPW = getTunnel().getClientOptions().getProperty(PROP_PW); + } + if (configPW != null) { + if (pw.equals(configPW)) { + if (_log.shouldLog(Log.INFO)) + _log.info(getPrefix(requestId) + "Good auth - user: " + user + " pw: " + pw); + return AuthResult.AUTH_GOOD; } - } catch (UnsupportedEncodingException uee) { - _log.error(getPrefix(requestId) + "No UTF-8 support? B64: " + authorization, uee); - } catch (ArrayIndexOutOfBoundsException aioobe) { - // no ':' in response - if (_log.shouldLog(Log.WARN)) - _log.warn(getPrefix(requestId) + "Bad auth B64: " + authorization, aioobe); } - } else { + _log.logAlways(Log.WARN, "PROXY AUTH FAILURE: user " + user); + } catch (UnsupportedEncodingException uee) { + _log.error(getPrefix(requestId) + "No UTF-8 support? B64: " + authorization, uee); + } catch (ArrayIndexOutOfBoundsException aioobe) { + // no ':' in response if (_log.shouldLog(Log.WARN)) - _log.warn(getPrefix(requestId) + "Bad auth B64: " + authorization); + _log.warn(getPrefix(requestId) + "Bad auth B64: " + authorization, aioobe); + return AuthResult.AUTH_BAD_REQ; } + return AuthResult.AUTH_BAD; + } else { + if (_log.shouldLog(Log.WARN)) + _log.warn(getPrefix(requestId) + "Bad auth B64: " + authorization); + return AuthResult.AUTH_BAD_REQ; } - return false; + } else if (authRequired.equals(DIGEST_AUTH)) { + if (!authLC.startsWith("digest ")) + return AuthResult.AUTH_BAD; + authorization = authorization.substring(7); + Map<String, String> args = parseArgs(authorization); + AuthResult rv = validateDigest(method, args); + return rv; } else { - return true; + _log.error("Unknown proxy authorization type configured: " + authRequired); + return AuthResult.AUTH_BAD_REQ; + } + } + + /** + * Verify all of it. + * Ref: RFC 2617 + * @since 0.9.4 + */ + private AuthResult validateDigest(String method, Map<String, String> args) { + String user = args.get("username"); + String realm = args.get("realm"); + String nonce = args.get("nonce"); + String qop = args.get("qop"); + String uri = args.get("uri"); + String cnonce = args.get("cnonce"); + String nc = args.get("nc"); + String response = args.get("response"); + if (user == null || realm == null || nonce == null || qop == null || + uri == null || cnonce == null || nc == null || response == null) { + if (_log.shouldLog(Log.INFO)) + _log.info("Bad digest request: " + DataHelper.toString(args)); + return AuthResult.AUTH_BAD_REQ; + } + // nonce check + AuthResult check = verifyNonce(nonce); + if (check != AuthResult.AUTH_GOOD) { + if (_log.shouldLog(Log.INFO)) + _log.info("Bad digest nonce: " + check + ' ' + DataHelper.toString(args)); + return check; + } + // get H(A1) == stored password + String ha1 = getTunnel().getClientOptions().getProperty(PROP_PROXY_DIGEST_PREFIX + user + + PROP_PROXY_DIGEST_SUFFIX); + if (ha1 == null) { + _log.logAlways(Log.WARN, "PROXY AUTH FAILURE: user " + user); + return AuthResult.AUTH_BAD; + } + // get H(A2) + String a2 = method + ':' + uri; + String ha2 = PasswordManager.md5Hex(a2); + // response check + String kd = ha1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2; + String hkd = PasswordManager.md5Hex(kd); + if (!response.equals(hkd)) { + _log.logAlways(Log.WARN, "PROXY AUTH FAILURE: user " + user); + if (_log.shouldLog(Log.INFO)) + _log.info("Bad digest auth: " + DataHelper.toString(args)); + return AuthResult.AUTH_BAD; + } + if (_log.shouldLog(Log.INFO)) + _log.info("Good digest auth - user: " + user); + return AuthResult.AUTH_GOOD; + } + + /** + * The Base 64 of 24 bytes: (now, md5 of (now, proxy nonce)) + * @since 0.9.4 + */ + private String getNonce() { + byte[] b = new byte[DataHelper.DATE_LENGTH + PROXYNONCE_BYTES]; + byte[] n = new byte[NONCE_BYTES]; + long now = _context.clock().now(); + DataHelper.toLong(b, 0, DataHelper.DATE_LENGTH, now); + System.arraycopy(_proxyNonce, 0, b, DataHelper.DATE_LENGTH, PROXYNONCE_BYTES); + System.arraycopy(b, 0, n, 0, DataHelper.DATE_LENGTH); + byte[] md5 = PasswordManager.md5Sum(b); + System.arraycopy(md5, 0, n, DataHelper.DATE_LENGTH, MD5_BYTES); + return Base64.encode(n); + } + + /** + * Verify the Base 64 of 24 bytes: (now, md5 of (now, proxy nonce)) + * @since 0.9.4 + */ + private AuthResult verifyNonce(String b64) { + byte[] n = Base64.decode(b64); + if (n == null || n.length != NONCE_BYTES) + return AuthResult.AUTH_BAD; + long now = _context.clock().now(); + long stamp = DataHelper.fromLong(n, 0, DataHelper.DATE_LENGTH); + if (now - stamp > MAX_NONCE_AGE) + return AuthResult.AUTH_STALE; + byte[] b = new byte[DataHelper.DATE_LENGTH + PROXYNONCE_BYTES]; + System.arraycopy(n, 0, b, 0, DataHelper.DATE_LENGTH); + System.arraycopy(_proxyNonce, 0, b, DataHelper.DATE_LENGTH, PROXYNONCE_BYTES); + byte[] md5 = PasswordManager.md5Sum(b); + if (!DataHelper.eq(md5, 0, n, DataHelper.DATE_LENGTH, MD5_BYTES)) + return AuthResult.AUTH_BAD; + return AuthResult.AUTH_GOOD; + } + + /** + * What to send if digest auth fails + * @since 0.9.4 + */ + protected String getAuthError(boolean isStale) { + boolean isDigest = isDigestAuthRequired(); + return + ERR_AUTH1 + + (isDigest ? "Digest" : "Basic") + + " realm=\"" + getRealm() + '"' + + (isDigest ? ", nonce=\"" + getNonce() + "\"," + + " algorithm=MD5," + + " qop=\"auth\"" + + (isStale ? ", stale=true" : "") + : "") + + ERR_AUTH2; + } + + /** + * Modified from LoadClientAppsJob. + * All keys are mapped to lower case. + * Ref: RFC 2617 + * + * @param args non-null + * @since 0.9.4 + */ + private static Map<String, String> parseArgs(String args) { + Map<String, String> rv = new HashMap(8); + char data[] = args.toCharArray(); + StringBuilder buf = new StringBuilder(32); + boolean isQuoted = false; + String key = null; + for (int i = 0; i < data.length; i++) { + switch (data[i]) { + case '\"': + if (isQuoted) { + // keys never quoted + if (key != null) { + rv.put(key, buf.toString().trim()); + key = null; + } + buf.setLength(0); + } + isQuoted = !isQuoted; + break; + + case ' ': + case '\r': + case '\n': + case '\t': + case ',': + // whitespace - if we're in a quoted section, keep this as part of the quote, + // otherwise use it as a delim + if (isQuoted) { + buf.append(data[i]); + } else { + if (key != null) { + rv.put(key, buf.toString().trim()); + key = null; + } + buf.setLength(0); + } + break; + + case '=': + if (isQuoted) { + buf.append(data[i]); + } else { + key = buf.toString().trim().toLowerCase(Locale.US); + buf.setLength(0); + } + break; + + default: + buf.append(data[i]); + break; + } + } + if (key != null) + rv.put(key, buf.toString().trim()); + return rv; + } + + //////// Error page stuff + + /** + * foo => errordir/foo-header_xx.ht for lang xx, or errordir/foo-header.ht, + * or the backup byte array on fail. + * + * .ht files must be UTF-8 encoded and use \r\n terminators so the + * HTTP headers are conformant. + * We can't use FileUtil.readFile() because it strips \r + * + * @return non-null + * @since 0.9.4 moved from I2PTunnelHTTPClient + */ + protected byte[] getErrorPage(String base, byte[] backup) { + return getErrorPage(_context, base, backup); + } + + /** + * foo => errordir/foo-header_xx.ht for lang xx, or errordir/foo-header.ht, + * or the backup byte array on fail. + * + * .ht files must be UTF-8 encoded and use \r\n terminators so the + * HTTP headers are conformant. + * We can't use FileUtil.readFile() because it strips \r + * + * @return non-null + * @since 0.9.4 moved from I2PTunnelHTTPClient + */ + protected static byte[] getErrorPage(I2PAppContext ctx, String base, byte[] backup) { + File errorDir = new File(ctx.getBaseDir(), "docs"); + String lang = ctx.getProperty("routerconsole.lang", Locale.getDefault().getLanguage()); + if(lang != null && lang.length() > 0 && !lang.equals("en")) { + File file = new File(errorDir, base + "-header_" + lang + ".ht"); + try { + return readFile(file); + } catch(IOException ioe) { + // try the english version now + } + } + File file = new File(errorDir, base + "-header.ht"); + try { + return readFile(file); + } catch(IOException ioe) { + return backup; + } + } + + /** + * @since 0.9.4 moved from I2PTunnelHTTPClient + */ + private static byte[] readFile(File file) throws IOException { + FileInputStream fis = null; + byte[] buf = new byte[2048]; + ByteArrayOutputStream baos = new ByteArrayOutputStream(2048); + try { + int len = 0; + fis = new FileInputStream(file); + while((len = fis.read(buf)) > 0) { + baos.write(buf, 0, len); + } + return baos.toByteArray(); + } finally { + try { + if(fis != null) { + fis.close(); + } + } catch(IOException foo) { + } } + // we won't ever get here } } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index 8420604c9a56afc20b554046fb38dcdeaedfb2fb..3a5c001f67c0cf9239e90bb699b97c0321f7f599 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -19,8 +19,10 @@ import net.i2p.client.I2PSession; import net.i2p.data.Base32; import net.i2p.data.Destination; import net.i2p.i2ptunnel.socks.I2PSOCKSTunnel; +import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; +import net.i2p.util.SecureFile; import net.i2p.util.SecureFileOutputStream; /** @@ -43,6 +45,8 @@ public class TunnelController implements Logging { private boolean _running; private boolean _starting; + public static final String KEY_BACKUP_DIR = "i2ptunnel-keyBackup"; + /** * Create a new controller for a tunnel out of the specific config options. * The config may contain a large number of options - only ones that begin in @@ -102,8 +106,17 @@ public class TunnelController implements Logging { Destination dest = client.createDestination(fos); String destStr = dest.toBase64(); log("Private key created and saved in " + keyFile.getAbsolutePath()); + log("You should backup this file in a secure place."); log("New destination: " + destStr); - log("Base32: " + Base32.encode(dest.calculateHash().getData()) + ".b32.i2p"); + String b32 = Base32.encode(dest.calculateHash().getData()) + ".b32.i2p"; + log("Base32: " + b32); + File backupDir = new SecureFile(I2PAppContext.getGlobalContext().getConfigDir(), KEY_BACKUP_DIR); + if (backupDir.isDirectory() || backupDir.mkdir()) { + String name = b32 + '-' + I2PAppContext.getGlobalContext().clock().now() + ".dat"; + File backup = new File(backupDir, name); + if (FileUtil.copy(keyFile, backup, false, true)) + log("Private key backup saved to " + backup.getAbsolutePath()); + } } catch (I2PException ie) { if (_log.shouldLog(Log.ERROR)) _log.error("Error creating new destination", ie); @@ -307,7 +320,9 @@ public class TunnelController implements Logging { I2PSession session = sessions.get(i); if (_log.shouldLog(Log.INFO)) _log.info("Acquiring session " + session); - TunnelControllerGroup.getInstance().acquire(this, session); + TunnelControllerGroup group = TunnelControllerGroup.getInstance(); + if (group != null) + group.acquire(this, session); } _sessions = sessions; } else { @@ -326,7 +341,9 @@ public class TunnelController implements Logging { I2PSession s = _sessions.get(i); if (_log.shouldLog(Log.INFO)) _log.info("Releasing session " + s); - TunnelControllerGroup.getInstance().release(this, s); + TunnelControllerGroup group = TunnelControllerGroup.getInstance(); + if (group != null) + group.release(this, s); } // _sessions.clear() ???? } else { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java index 600464f87302e0ef7acc1ba38a8276b3017c43c4..3262cf711b0feb16af5e12c34a60d11642ac254f 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelControllerGroup.java @@ -12,27 +12,35 @@ import java.util.Properties; import java.util.Set; import net.i2p.I2PAppContext; +import net.i2p.app.*; +import static net.i2p.app.ClientAppState.*; import net.i2p.client.I2PSession; import net.i2p.client.I2PSessionException; import net.i2p.data.DataHelper; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.OrderedProperties; +import net.i2p.util.SystemVersion; /** * Coordinate a set of tunnels within the JVM, loading and storing their config * to disk, and building new ones as requested. * - * Warning - this is a singleton. Todo: fix + * This is the entry point from clients.config. */ -public class TunnelControllerGroup { - private Log _log; - private static TunnelControllerGroup _instance; +public class TunnelControllerGroup implements ClientApp { + private final Log _log; + private volatile ClientAppState _state; + private final I2PAppContext _context; + private final ClientAppManager _mgr; + private static volatile TunnelControllerGroup _instance; static final String DEFAULT_CONFIG_FILE = "i2ptunnel.config"; private final List<TunnelController> _controllers; - private String _configFile = DEFAULT_CONFIG_FILE; + private final String _configFile; + private static final String REGISTERED_NAME = "i2ptunnel"; + /** * Map of I2PSession to a Set of TunnelController objects * using the session (to prevent closing the session until @@ -41,48 +49,143 @@ public class TunnelControllerGroup { */ private final Map<I2PSession, Set<TunnelController>> _sessions; + /** + * In I2PAppContext will instantiate if necessary and always return non-null. + * As of 0.9.4, when in RouterContext, will return null (except in Android) + * if the TCG has not yet been started by the router. + * + * @throws IllegalArgumentException if unable to load from i2ptunnel.config + */ public static TunnelControllerGroup getInstance() { synchronized (TunnelControllerGroup.class) { - if (_instance == null) - _instance = new TunnelControllerGroup(DEFAULT_CONFIG_FILE); + if (_instance == null) { + I2PAppContext ctx = I2PAppContext.getGlobalContext(); + if (SystemVersion.isAndroid() || !ctx.isRouterContext()) { + _instance = new TunnelControllerGroup(ctx, null, null); + _instance.startup(); + } // else wait for the router to start it + } return _instance; } } - private TunnelControllerGroup(String configFile) { - _log = I2PAppContext.getGlobalContext().logManager().getLog(TunnelControllerGroup.class); - _controllers = Collections.synchronizedList(new ArrayList()); - _configFile = configFile; + /** + * Instantiation only. Caller must call startup(). + * Config file problems will not throw exception until startup(). + * + * @param mgr may be null + * @param args one arg, the config file, if not absolute will be relative to the context's config dir, + * if empty or null, the default is i2ptunnel.config + * @since 0.9.4 + */ + public TunnelControllerGroup(I2PAppContext context, ClientAppManager mgr, String[] args) { + _state = UNINITIALIZED; + _context = context; + _mgr = mgr; + _log = _context.logManager().getLog(TunnelControllerGroup.class); + _controllers = new ArrayList(); + if (args == null || args.length <= 0) + _configFile = DEFAULT_CONFIG_FILE; + else if (args.length == 1) + _configFile = args[0]; + else + throw new IllegalArgumentException("Usage: TunnelControllerGroup [filename]"); _sessions = new HashMap(4); - loadControllers(_configFile); - I2PAppContext.getGlobalContext().addShutdownTask(new Shutdown()); + synchronized (TunnelControllerGroup.class) { + if (_instance == null) + _instance = this; + } + if (_instance != this) { + _log.logAlways(Log.WARN, "New TunnelControllerGroup, now you have two"); + if (_log.shouldLog(Log.WARN)) + _log.warn("I did it", new Exception()); + } + _state = INITIALIZED; } + /** + * @param args one arg, the config file, if not absolute will be relative to the context's config dir, + * if no args, the default is i2ptunnel.config + * @throws IllegalArgumentException if unable to load from config from file + */ public static void main(String args[]) { synchronized (TunnelControllerGroup.class) { if (_instance != null) return; // already loaded through the web - - if ( (args == null) || (args.length <= 0) ) { - _instance = new TunnelControllerGroup(DEFAULT_CONFIG_FILE); - } else if (args.length == 1) { - _instance = new TunnelControllerGroup(args[0]); - } else { - System.err.println("Usage: TunnelControllerGroup [filename]"); - return; - } + _instance = new TunnelControllerGroup(I2PAppContext.getGlobalContext(), null, args); + _instance.startup(); } } + /** + * ClientApp interface + * @throws IllegalArgumentException if unable to load config from file + * @since 0.9.4 + */ + public void startup() { + loadControllers(_configFile); + if (_mgr != null) + _mgr.register(this); + _context.addShutdownTask(new Shutdown()); + } + + /** + * ClientApp interface + * @since 0.9.4 + */ + public ClientAppState getState() { + return _state; + } + + /** + * ClientApp interface + * @since 0.9.4 + */ + public String getName() { + return REGISTERED_NAME; + } + + /** + * ClientApp interface + * @since 0.9.4 + */ + public String getDisplayName() { + return REGISTERED_NAME; + } + + /** + * @since 0.9.4 + */ + private void changeState(ClientAppState state) { + changeState(state, null); + } + + /** + * @since 0.9.4 + */ + private synchronized void changeState(ClientAppState state, Exception e) { + _state = state; + if (_mgr != null) + _mgr.notify(this, state, null, e); + } + /** * Warning - destroys the singleton! * @since 0.8.8 */ - private static class Shutdown implements Runnable { + private class Shutdown implements Runnable { public void run() { shutdown(); } } + /** + * ClientApp interface + * @since 0.9.4 + */ + public void shutdown(String[] args) { + shutdown(); + } + /** * Warning - destroys the singleton! * Caller must root a new context before calling instance() or main() again. @@ -91,28 +194,31 @@ public class TunnelControllerGroup { * * @since 0.8.8 */ - public static void shutdown() { + public void shutdown() { + changeState(STOPPING); + if (_mgr != null) + _mgr.unregister(this); + unloadControllers(); synchronized (TunnelControllerGroup.class) { - if (_instance == null) return; - _instance.unloadControllers(); - _instance._log = null; - _instance = null; + if (_instance == this) + _instance = null; } +/// fixme static I2PTunnelClientBase.killClientExecutor(); + changeState(STOPPED); } /** * Load up all of the tunnels configured in the given file (but do not start * them) * + * DEPRECATED for use outside this class. Use startup() or getInstance(). + * + * @throws IllegalArgumentException if unable to load from file */ - public void loadControllers(String configFile) { + public synchronized void loadControllers(String configFile) { + changeState(STARTING); Properties cfg = loadConfig(configFile); - if (cfg == null) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Unable to load the config from " + configFile); - return; - } int i = 0; while (true) { String type = cfg.getProperty("tunnel." + i + ".type"); @@ -127,20 +233,28 @@ public class TunnelControllerGroup { if (_log.shouldLog(Log.INFO)) _log.info(i + " controllers loaded from " + configFile); + changeState(RUNNING); } private class StartControllers implements Runnable { public void run() { - for (int i = 0; i < _controllers.size(); i++) { - TunnelController controller = _controllers.get(i); - if (controller.getStartOnLoad()) - controller.startTunnel(); + synchronized(TunnelControllerGroup.this) { + for (int i = 0; i < _controllers.size(); i++) { + TunnelController controller = _controllers.get(i); + if (controller.getStartOnLoad()) + controller.startTunnel(); + } } } } - - public void reloadControllers() { + /** + * Stop all tunnels, reload config, and restart those configured to do so. + * WARNING - Does NOT simply reload the configuration!!! This is probably not what you want. + * + * @throws IllegalArgumentException if unable to reload config file + */ + public synchronized void reloadControllers() { unloadControllers(); loadControllers(_configFile); } @@ -150,7 +264,7 @@ public class TunnelControllerGroup { * file or do other silly things) * */ - public void unloadControllers() { + public synchronized void unloadControllers() { stopAllControllers(); _controllers.clear(); if (_log.shouldLog(Log.INFO)) @@ -162,14 +276,14 @@ public class TunnelControllerGroup { * a config file or start it or anything) * */ - public void addController(TunnelController controller) { _controllers.add(controller); } + public synchronized void addController(TunnelController controller) { _controllers.add(controller); } /** * Stop and remove the given tunnel * * @return list of messages from the controller as it is stopped */ - public List<String> removeController(TunnelController controller) { + public synchronized List<String> removeController(TunnelController controller) { if (controller == null) return new ArrayList(); controller.stopTunnel(); List<String> msgs = controller.clearMessages(); @@ -183,7 +297,7 @@ public class TunnelControllerGroup { * * @return list of messages the tunnels generate when stopped */ - public List<String> stopAllControllers() { + public synchronized List<String> stopAllControllers() { List<String> msgs = new ArrayList(); for (int i = 0; i < _controllers.size(); i++) { TunnelController controller = _controllers.get(i); @@ -200,7 +314,7 @@ public class TunnelControllerGroup { * * @return list of messages the tunnels generate when started */ - public List<String> startAllControllers() { + public synchronized List<String> startAllControllers() { List<String> msgs = new ArrayList(); for (int i = 0; i < _controllers.size(); i++) { TunnelController controller = _controllers.get(i); @@ -218,7 +332,7 @@ public class TunnelControllerGroup { * * @return list of messages the tunnels generate when restarted */ - public List<String> restartAllControllers() { + public synchronized List<String> restartAllControllers() { List<String> msgs = new ArrayList(); for (int i = 0; i < _controllers.size(); i++) { TunnelController controller = _controllers.get(i); @@ -235,7 +349,7 @@ public class TunnelControllerGroup { * * @return list of messages the tunnels have generated */ - public List<String> clearAllMessages() { + public synchronized List<String> clearAllMessages() { List<String> msgs = new ArrayList(); for (int i = 0; i < _controllers.size(); i++) { TunnelController controller = _controllers.get(i); @@ -257,8 +371,7 @@ public class TunnelControllerGroup { * Save the configuration of all known tunnels to the given file * */ - public void saveConfig(String configFile) throws IOException { - _configFile = configFile; + public synchronized void saveConfig(String configFile) throws IOException { File cfgFile = new File(configFile); if (!cfgFile.isAbsolute()) cfgFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), configFile); @@ -279,16 +392,17 @@ public class TunnelControllerGroup { /** * Load up the config data from the file * - * @return properties loaded or null if there was an error + * @return properties loaded + * @throws IllegalArgumentException if unable to load from file */ - private Properties loadConfig(String configFile) { + private synchronized Properties loadConfig(String configFile) { File cfgFile = new File(configFile); if (!cfgFile.isAbsolute()) cfgFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), configFile); if (!cfgFile.exists()) { if (_log.shouldLog(Log.ERROR)) _log.error("Unable to load the controllers from " + cfgFile.getAbsolutePath()); - return null; + throw new IllegalArgumentException("Unable to load the controllers from " + cfgFile.getAbsolutePath()); } Properties props = new Properties(); @@ -298,7 +412,7 @@ public class TunnelControllerGroup { } catch (IOException ioe) { if (_log.shouldLog(Log.ERROR)) _log.error("Error reading the controllers from " + cfgFile.getAbsolutePath(), ioe); - return null; + throw new IllegalArgumentException("Error reading the controllers from " + cfgFile.getAbsolutePath(), ioe); } } @@ -307,7 +421,9 @@ public class TunnelControllerGroup { * * @return list of TunnelController objects */ - public List<TunnelController> getControllers() { return _controllers; } + public synchronized List<TunnelController> getControllers() { + return new ArrayList(_controllers); + } /** diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java index a0c38616e80b536f8bce34b6e4f4bc480ad5de3b..0f4d6636c8fd5671a28c39d8352a6b7d488d065e 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -29,8 +29,8 @@ import net.i2p.util.Addresses; /** * Ugly little accessor for the edit page * - * Warning - This class is not part of the i2ptunnel API, and at some point - * it will be moved from the jar to the war. + * Warning - This class is not part of the i2ptunnel API, + * it has been moved from the jar to the war. * Usage by classes outside of i2ptunnel.war is deprecated. */ public class EditBean extends IndexBean { @@ -38,6 +38,8 @@ public class EditBean extends IndexBean { public static boolean staticIsClient(int tunnel) { TunnelControllerGroup group = TunnelControllerGroup.getInstance(); + if (group == null) + return false; List controllers = group.getControllers(); if (controllers.size() > tunnel) { TunnelController cur = (TunnelController)controllers.get(tunnel); @@ -55,6 +57,7 @@ public class EditBean extends IndexBean { else return "127.0.0.1"; } + public String getTargetPort(int tunnel) { TunnelController tun = getController(tunnel); if (tun != null && tun.getTargetPort() != null) @@ -62,6 +65,7 @@ public class EditBean extends IndexBean { else return ""; } + public String getSpoofedHost(int tunnel) { TunnelController tun = getController(tunnel); if (tun != null && tun.getSpoofedHost() != null) @@ -69,12 +73,13 @@ public class EditBean extends IndexBean { else return ""; } + public String getPrivateKeyFile(int tunnel) { TunnelController tun = getController(tunnel); if (tun != null && tun.getPrivKeyFile() != null) return tun.getPrivKeyFile(); if (tunnel < 0) - tunnel = _group.getControllers().size(); + tunnel = _group == null ? 999 : _group.getControllers().size(); return "i2ptunnel" + tunnel + "-privKeys.dat"; } @@ -221,19 +226,7 @@ public class EditBean extends IndexBean { /** all proxy auth @since 0.8.2 */ public boolean getProxyAuth(int tunnel) { - return getBooleanProperty(tunnel, I2PTunnelHTTPClientBase.PROP_AUTH) && - getProxyUsername(tunnel).length() > 0 && - getProxyPassword(tunnel).length() > 0; - } - - public String getProxyUsername(int tunnel) { - return getProperty(tunnel, I2PTunnelHTTPClientBase.PROP_USER, ""); - } - - public String getProxyPassword(int tunnel) { - if (getProxyUsername(tunnel).length() <= 0) - return ""; - return getProperty(tunnel, I2PTunnelHTTPClientBase.PROP_PW, ""); + return getProperty(tunnel, I2PTunnelHTTPClientBase.PROP_AUTH, "false") != "false"; } public boolean getOutproxyAuth(int tunnel) { @@ -354,10 +347,17 @@ public class EditBean extends IndexBean { if (opts == null) return ""; StringBuilder buf = new StringBuilder(64); int i = 0; + boolean isMD5Proxy = "httpclient".equals(tun.getType()) || + "connectclient".equals(tun.getType()); for (Iterator iter = opts.keySet().iterator(); iter.hasNext(); ) { String key = (String)iter.next(); if (_noShowSet.contains(key)) continue; + // leave in for HTTP and Connect so it can get migrated to MD5 + // hide for SOCKS until migrated to MD5 + if ((!isMD5Proxy) && + _nonProxyNoShowSet.contains(key)) + continue; String val = opts.getProperty(key); if (i != 0) buf.append(' '); buf.append(key).append('=').append(val); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 363c9a60b132ae907d229a9e7256f84ff378790c..692f3585c76891e6c28312879e8884f676fb785d 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -27,6 +27,7 @@ import net.i2p.data.Certificate; import net.i2p.data.Destination; import net.i2p.data.PrivateKeyFile; import net.i2p.data.SessionKey; +import net.i2p.i2ptunnel.I2PTunnelConnectClient; import net.i2p.i2ptunnel.I2PTunnelHTTPClient; import net.i2p.i2ptunnel.I2PTunnelHTTPClientBase; import net.i2p.i2ptunnel.I2PTunnelIRCClient; @@ -36,18 +37,21 @@ import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.FileUtil; import net.i2p.util.Log; +import net.i2p.util.PasswordManager; +import net.i2p.util.SecureFile; /** * Simple accessor for exposing tunnel info, but also an ugly form handler * - * Warning - This class is not part of the i2ptunnel API, and at some point - * it will be moved from the jar to the war. + * Warning - This class is not part of the i2ptunnel API, + * it has been moved from the jar to the war. * Usage by classes outside of i2ptunnel.war is deprecated. */ public class IndexBean { protected final I2PAppContext _context; protected final Log _log; protected final TunnelControllerGroup _group; + private final String _fatalError; private String _action; private int _tunnel; //private long _prevNonce; @@ -83,15 +87,14 @@ public class IndexBean { private int _hashCashValue; private int _certType; private String _certSigner; + private String _newProxyUser; + private String _newProxyPW; public static final int RUNNING = 1; public static final int STARTING = 2; public static final int NOT_RUNNING = 3; public static final int STANDBY = 4; - /** deprecated unimplemented, now using routerconsole realm */ - //public static final String PROP_TUNNEL_PASSPHRASE = "i2ptunnel.passphrase"; - public static final String PROP_TUNNEL_PASSPHRASE = "consolePassword"; //static final String PROP_NONCE = IndexBean.class.getName() + ".nonce"; //static final String PROP_NONCE_OLD = PROP_NONCE + '2'; /** 3 wasn't enough for some browsers. They are reloading the page for some reason - maybe HEAD? @since 0.8.1 */ @@ -104,11 +107,23 @@ public class IndexBean { public static final String DEFAULT_THEME = "light"; public static final String PROP_CSS_DISABLED = "routerconsole.css.disabled"; public static final String PROP_JS_DISABLED = "routerconsole.javascript.disabled"; + private static final String PROP_PW_ENABLE = "routerconsole.auth.enable"; public IndexBean() { _context = I2PAppContext.getGlobalContext(); _log = _context.logManager().getLog(IndexBean.class); - _group = TunnelControllerGroup.getInstance(); + TunnelControllerGroup tcg; + String error; + try { + tcg = TunnelControllerGroup.getInstance(); + error = tcg == null ? _("Tunnels are not initialized yet, please reload in two minutes.") + : null; + } catch (IllegalArgumentException iae) { + tcg = null; + error = iae.toString(); + } + _group = tcg; + _fatalError = error; _tunnel = -1; _curNonce = "-1"; addNonce(); @@ -116,6 +131,13 @@ public class IndexBean { _otherOptions = new ConcurrentHashMap(4); } + /** + * @since 0.9.4 + */ + public boolean isInitialized() { + return _group != null; + } + public static String getNextNonce() { synchronized (_nonces) { return _nonces.get(0); @@ -145,14 +167,11 @@ public class IndexBean { } } - /** deprecated unimplemented, now using routerconsole realm */ - public void setPassphrase(String phrase) { - } - public void setAction(String action) { if ( (action == null) || (action.trim().length() <= 0) ) return; _action = action; } + public void setTunnel(String tunnel) { if ( (tunnel == null) || (tunnel.trim().length() <= 0) ) return; try { @@ -162,17 +181,17 @@ public class IndexBean { } } - /** just check if console password option is set, jetty will do auth */ - private boolean validPassphrase() { - String pass = _context.getProperty(PROP_TUNNEL_PASSPHRASE); - return pass != null && pass.trim().length() > 0; - } - private String processAction() { if ( (_action == null) || (_action.trim().length() <= 0) || ("Cancel".equals(_action))) return ""; - if ( (!haveNonce(_curNonce)) && (!validPassphrase()) ) - return _("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."); + if (_group == null) + return "Error - tunnels are not initialized yet"; + // If passwords are turned on, all is assumed good + if (!_context.getBooleanProperty(PROP_PW_ENABLE) && + !haveNonce(_curNonce)) + return _("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser."); if ("Stop all".equals(_action)) return stopAll(); else if ("Start all".equals(_action)) @@ -200,33 +219,33 @@ public class IndexBean { else return "Action " + _action + " unknown"; } + private String stopAll() { - if (_group == null) return ""; List<String> msgs = _group.stopAllControllers(); return getMessages(msgs); } + private String startAll() { - if (_group == null) return ""; List<String> msgs = _group.startAllControllers(); return getMessages(msgs); } + private String restartAll() { - if (_group == null) return ""; List<String> msgs = _group.restartAllControllers(); return getMessages(msgs); } + private String reloadConfig() { - if (_group == null) return ""; - _group.reloadControllers(); return _("Configuration reloaded for all tunnels"); } + private String start() { if (_tunnel < 0) return "Invalid tunnel"; - List controllers = _group.getControllers(); + List<TunnelController> controllers = _group.getControllers(); if (_tunnel >= controllers.size()) return "Invalid tunnel"; - TunnelController controller = (TunnelController)controllers.get(_tunnel); + TunnelController controller = controllers.get(_tunnel); controller.startTunnelBackground(); // give the messages a chance to make it to the window try { Thread.sleep(1000); } catch (InterruptedException ie) {} @@ -237,9 +256,9 @@ public class IndexBean { private String stop() { if (_tunnel < 0) return "Invalid tunnel"; - List controllers = _group.getControllers(); + List<TunnelController> controllers = _group.getControllers(); if (_tunnel >= controllers.size()) return "Invalid tunnel"; - TunnelController controller = (TunnelController)controllers.get(_tunnel); + TunnelController controller = controllers.get(_tunnel); controller.stopTunnel(); // give the messages a chance to make it to the window try { Thread.sleep(1000); } catch (InterruptedException ie) {} @@ -268,10 +287,10 @@ public class IndexBean { // if the current tunnel is shared, and of supported type if (Boolean.parseBoolean(cur.getSharedClient()) && isClient(cur.getType())) { // all clients use the same I2CP session, and as such, use the same I2CP options - List controllers = _group.getControllers(); + List<TunnelController> controllers = _group.getControllers(); for (int i = 0; i < controllers.size(); i++) { - TunnelController c = (TunnelController)controllers.get(i); + TunnelController c = controllers.get(i); // Current tunnel modified by user, skip if (c == cur) continue; @@ -355,10 +374,13 @@ public class IndexBean { name = Long.toString(_context.clock().now()); } } - name = "i2ptunnel-deleted-" + name.replace(' ', '_') + "-privkeys.dat"; - File to = new File(_context.getConfigDir(), name); - if (to.exists()) - to = new File(_context.getConfigDir(), name + '-' + _context.clock().now()); + name = "i2ptunnel-deleted-" + name.replace(' ', '_') + '-' + _context.clock().now() + "-privkeys.dat"; + File backupDir = new SecureFile(_context.getConfigDir(), TunnelController.KEY_BACKUP_DIR); + File to; + if (backupDir.isDirectory() || backupDir.mkdir()) + to = new File(backupDir, name); + else + to = new File(_context.getConfigDir(), name); boolean success = FileUtil.rename(pkf, to); if (success) msgs.add("Private key file " + pkf.getAbsolutePath() + @@ -375,7 +397,7 @@ public class IndexBean { */ public String getMessages() { if (_group == null) - return ""; + return _fatalError; StringBuilder buf = new StringBuilder(512); if (_action != null) { @@ -804,21 +826,22 @@ public class IndexBean { /** all proxy auth @since 0.8.2 */ public void setProxyAuth(String s) { - _booleanOptions.add(I2PTunnelHTTPClientBase.PROP_AUTH); + if (s != null) + _otherOptions.put(I2PTunnelHTTPClientBase.PROP_AUTH, I2PTunnelHTTPClientBase.DIGEST_AUTH); } public void setProxyUsername(String s) { if (s != null) - _otherOptions.put(I2PTunnelHTTPClientBase.PROP_USER, s.trim()); + _newProxyUser = s.trim(); } public void setProxyPassword(String s) { if (s != null) - _otherOptions.put(I2PTunnelHTTPClientBase.PROP_PW, s.trim()); + _newProxyPW = s.trim(); } public void setOutproxyAuth(String s) { - _booleanOptions.add(I2PTunnelHTTPClientBase.PROP_OUTPROXY_AUTH); + _otherOptions.put(I2PTunnelHTTPClientBase.PROP_OUTPROXY_AUTH, I2PTunnelHTTPClientBase.DIGEST_AUTH); } public void setOutproxyUsername(String s) { @@ -1040,6 +1063,45 @@ public class IndexBean { config.setProperty("proxyList", _proxyList); } + // Proxy auth including migration to MD5 + if ("httpclient".equals(_type) || "connectclient".equals(_type)) { + // Migrate even if auth is disabled + // go get the old from custom options that updateConfigGeneric() put in there + String puser = "option." + I2PTunnelHTTPClientBase.PROP_USER; + String user = config.getProperty(puser); + String ppw = "option." + I2PTunnelHTTPClientBase.PROP_PW; + String pw = config.getProperty(ppw); + if (user != null && pw != null && user.length() > 0 && pw.length() > 0) { + String pmd5 = "option." + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX + + user + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_SUFFIX; + if (config.getProperty(pmd5) == null) { + // not in there, migrate + String realm = _type.equals("httpclient") ? I2PTunnelHTTPClient.AUTH_REALM + : I2PTunnelConnectClient.AUTH_REALM; + String hex = PasswordManager.md5Hex(realm, user, pw); + if (hex != null) { + config.setProperty(pmd5, hex); + config.remove(puser); + config.remove(ppw); + } + } + } + // New user/password + String auth = _otherOptions.get(I2PTunnelHTTPClientBase.PROP_AUTH); + if (auth != null && !auth.equals("false")) { + if (_newProxyUser != null && _newProxyPW != null && + _newProxyUser.length() > 0 && _newProxyPW.length() > 0) { + String pmd5 = "option." + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX + + _newProxyUser + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_SUFFIX; + String realm = _type.equals("httpclient") ? I2PTunnelHTTPClient.AUTH_REALM + : I2PTunnelConnectClient.AUTH_REALM; + String hex = PasswordManager.md5Hex(realm, _newProxyUser, _newProxyPW); + if (hex != null) + config.setProperty(pmd5, hex); + } + } + } + if ("ircclient".equals(_type) || "client".equals(_type) || "streamrclient".equals(_type)) { if (_targetDestination != null) config.setProperty("targetDestination", _targetDestination); @@ -1084,15 +1146,16 @@ public class IndexBean { "i2cp.reduceOnIdle", "i2cp.closeOnIdle", "i2cp.newDestOnResume", "persistentClientKey", "i2cp.delayOpen" }; private static final String _booleanProxyOpts[] = { - I2PTunnelHTTPClientBase.PROP_AUTH, I2PTunnelHTTPClientBase.PROP_OUTPROXY_AUTH + I2PTunnelHTTPClientBase.PROP_OUTPROXY_AUTH }; private static final String _booleanServerOpts[] = { "i2cp.reduceOnIdle", "i2cp.encryptLeaseSet", PROP_ENABLE_ACCESS_LIST, PROP_ENABLE_BLACKLIST }; private static final String _otherClientOpts[] = { "i2cp.reduceIdleTime", "i2cp.reduceQuantity", "i2cp.closeIdleTime", - "proxyUsername", "proxyPassword", "outproxyUsername", "outproxyPassword", - I2PTunnelHTTPClient.PROP_JUMP_SERVERS + "outproxyUsername", "outproxyPassword", + I2PTunnelHTTPClient.PROP_JUMP_SERVERS, + I2PTunnelHTTPClientBase.PROP_AUTH }; private static final String _otherServerOpts[] = { "i2cp.reduceIdleTime", "i2cp.reduceQuantity", "i2cp.leaseSetKey", "i2cp.accessList", @@ -1101,7 +1164,17 @@ public class IndexBean { PROP_MAX_STREAMS }; + /** + * do NOT add these to noShoOpts, we must leave them in for HTTPClient and ConnectCLient + * so they will get migrated to MD5 + * TODO migrate socks to MD5 + */ + private static final String _otherProxyOpts[] = { + "proxyUsername", "proxyPassword" + }; + protected static final Set _noShowSet = new HashSet(64); + protected static final Set _nonProxyNoShowSet = new HashSet(4); static { _noShowSet.addAll(Arrays.asList(_noShowOpts)); _noShowSet.addAll(Arrays.asList(_booleanClientOpts)); @@ -1109,6 +1182,7 @@ public class IndexBean { _noShowSet.addAll(Arrays.asList(_booleanServerOpts)); _noShowSet.addAll(Arrays.asList(_otherClientOpts)); _noShowSet.addAll(Arrays.asList(_otherServerOpts)); + _nonProxyNoShowSet.addAll(Arrays.asList(_otherProxyOpts)); } private void updateConfigGeneric(Properties config) { @@ -1139,6 +1213,12 @@ public class IndexBean { String key = pair.substring(0, eq); if (_noShowSet.contains(key)) continue; + // leave in for HTTP and Connect so it can get migrated to MD5 + // hide for SOCKS until migrated to MD5 + if ((!"httpclient".equals(_type)) && + (! "connectclient".equals(_type)) && + _nonProxyNoShowSet.contains(key)) + continue; String val = pair.substring(eq+1); config.setProperty("option." + key, val); } @@ -1190,9 +1270,9 @@ public class IndexBean { protected TunnelController getController(int tunnel) { if (tunnel < 0) return null; if (_group == null) return null; - List controllers = _group.getControllers(); + List<TunnelController> controllers = _group.getControllers(); if (controllers.size() > tunnel) - return (TunnelController)controllers.get(tunnel); + return controllers.get(tunnel); else return null; } diff --git a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java b/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java similarity index 100% rename from apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java rename to apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java diff --git a/apps/i2ptunnel/jsp/editClient.jsp b/apps/i2ptunnel/jsp/editClient.jsp index d2ca8f7ad331cbc8d65fd30fdec720047d9ec7c7..6ee0ae540ef9fcf1ffda0c87c264193b071630ab 100644 --- a/apps/i2ptunnel/jsp/editClient.jsp +++ b/apps/i2ptunnel/jsp/editClient.jsp @@ -31,7 +31,11 @@ <body id="tunnelEditPage"> <div id="pageHeader"> </div> +<% + if (editBean.isInitialized()) { + +%> <form method="post" action="list"> <div id="tunnelEditPanel" class="panel"> @@ -429,19 +433,19 @@ <label> <%=intl._("Enable")%>: </label> - <input value="1" type="checkbox" id="proxyAuth" name="proxyAuth" title="Check to require authorization for this service"<%=(editBean.getProxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" /> + <input value="1" type="checkbox" id="startOnLoad" name="proxyAuth" title="Check to require authorization for this service"<%=(editBean.getProxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" /> </div> <div id="portField" class="rowItem"> <label> <%=intl._("Username")%>: </label> - <input type="text" id="clientPort" name="proxyUsername" title="Set username for this service" value="<%=editBean.getProxyUsername(curTunnel)%>" class="freetext" /> + <input type="text" id="clientPort" name="proxyUsername" title="Set username for this service" value="" class="freetext" /> </div> <div id="portField" class="rowItem"> <label> <%=intl._("Password")%>: </label> - <input type="password" id="clientPort" name="proxyPassword" title="Set password for this service" value="<%=editBean.getProxyPassword(curTunnel)%>" class="freetext" /> + <input type="password" id="clientPort" name="proxyPassword" title="Set password for this service" value="" class="freetext" /> </div> <div class="subdivider"> <hr /> @@ -453,7 +457,7 @@ <label> <%=intl._("Enable")%>: </label> - <input value="1" type="checkbox" id="outproxyAuth" name="outproxyAuth" title="Check if the outproxy requires authorization"<%=(editBean.getOutproxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" /> + <input value="1" type="checkbox" id="startOnLoad" name="outproxyAuth" title="Check if the outproxy requires authorization"<%=(editBean.getOutproxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" /> </div> <div id="portField" class="rowItem"> <label> @@ -508,5 +512,12 @@ </form> <div id="pageFooter"> </div> +<% + + } else { + %>Tunnels are not initialized yet, please reload in two minutes.<% + } // isInitialized() + +%> </body> </html> diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp index 1931182cce3d84df048895f9ff10c24e53be2108..9447fc36873025f04ffe74a285927afd3a9e3266 100644 --- a/apps/i2ptunnel/jsp/editServer.jsp +++ b/apps/i2ptunnel/jsp/editServer.jsp @@ -31,7 +31,11 @@ <body id="tunnelEditPage"> <div id="pageHeader"> </div> +<% + if (editBean.isInitialized()) { + +%> <form method="post" action="list"> <div id="tunnelEditPanel" class="panel"> @@ -518,5 +522,12 @@ </form> <div id="pageFooter"> </div> +<% + + } else { + %>Tunnels are not initialized yet, please reload in two minutes.<% + } // isInitialized() + +%> </body> </html> diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index 6494430e4ea742d637ca89226677d3b2902edbc3..c8982e73c6d1db2164905c0188c939bf00e30650 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -55,12 +55,23 @@ </div> </div> </div> +<% + + if (indexBean.isInitialized()) { +%> <div id="globalOperationsPanel" class="panel"> <div class="header"></div> <div class="footer"> <div class="toolbox"> - <a class="control" href="wizard"><%=intl._("Tunnel Wizard")%></a> <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Stop%20all"><%=intl._("Stop All")%></a> <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Start%20all"><%=intl._("Start All")%></a> <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Restart%20all"><%=intl._("Restart All")%></a> <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Reload%20configuration"><%=intl._("Reload Config")%></a> + <a class="control" href="wizard"><%=intl._("Tunnel Wizard")%></a> + <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Stop%20all"><%=intl._("Stop All")%></a> + <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Start%20all"><%=intl._("Start All")%></a> + <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Restart%20all"><%=intl._("Restart All")%></a> +<%-- + //this is really bad because it stops and restarts all tunnels, which is probably not what you want + <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&action=Reload%20configuration"><%=intl._("Reload Config")%></a> +--%> </div> </div> </div> @@ -285,7 +296,9 @@ </label> <div class="text"> <% String cdest = indexBean.getClientDestination(curClient); - if (cdest.length() > 0) { + if (cdest.length() > 70) { // Probably a B64 (a B32 is 60 chars) so truncate + %><%=cdest.substring(0, 45)%>…<%=cdest.substring(cdest.length() - 15, cdest.length())%><% + } else if (cdest.length() > 0) { %><%=cdest%><% } else { %><i><%=intl._("none")%></i><% @@ -327,6 +340,11 @@ </form> </div> </div> +<% + + } // isInitialized() + +%> <div id="pageFooter"> </div> </body> diff --git a/apps/i2ptunnel/locale/messages_de.po b/apps/i2ptunnel/locale/messages_de.po index 3ab1f53ad3f4ce65be0f5a947edff2074e103d37..b937ce2fe08722d42328427feda1c63f7f34094d 100644 --- a/apps/i2ptunnel/locale/messages_de.po +++ b/apps/i2ptunnel/locale/messages_de.po @@ -11,30 +11,31 @@ # ducki2p <ducki2p@gmail.com>, 2011. # foo <foo@bar>, 2009. # mixxy, 2011. +# <pirr@tormail.org>, 2012. msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:55+0000\n" -"PO-Revision-Date: 2012-07-22 01:10+0000\n" -"Last-Translator: blabla <blabla@trash-mail.com>\n" +"POT-Creation-Date: 2012-11-02 19:46+0000\n" +"PO-Revision-Date: 2012-10-27 16:43+0000\n" +"Last-Translator: pirr <pirr@tormail.org>\n" "Language-Team: German (http://www.transifex.com/projects/p/I2P/language/" "de/)\n" "Language: de\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 msgid "This seems to be a bad destination:" msgstr "Dies scheint kein gültiges Ziel zu sein:" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 msgid "i2paddresshelper cannot help you with a destination like that!" msgstr "Der I2P-Adresshelfer kann dir bei solch einem Ziel nicht helfen." -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:620 #, java-format msgid "" "To visit the destination in your host database, click <a href=\"{0}\">here</" @@ -45,49 +46,49 @@ msgstr "" "\"{0}\">hier</a>, und um das Ziel aus der kollidierenden Adresshelfer-" "Anfrage zu besuchen, <a href=\"{1}\">hier</a>!" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1023 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1020 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410 msgid "Host" msgstr "Host" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1027 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1024 msgid "Base 32" msgstr "Base 32" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1031 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:380 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1028 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 msgid "Destination" msgstr "Ziel" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1037 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1034 #, java-format msgid "Continue to {0} without saving" msgstr "Weiter zu {0}, ohne zu speichern" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039 #, java-format msgid "Save {0} to router address book and continue to eepsite" msgstr "{0} im Router-Adressbuch speichern und auf die Eepseite weiterleiten" #. only blockfile supports multiple books -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1045 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 #, java-format msgid "Save {0} to master address book and continue to eepsite" msgstr "{0} im Master-Adressbuch speichern und auf die Eepseite weiterleiten" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043 #, java-format msgid "Save {0} to private address book and continue to eepsite" msgstr "{0} im privaten Adressbuch speichern und auf die Eepseite weiterleiten" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1211 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1153 msgid "HTTP Outproxy" msgstr "HTTP-Outproxy" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1158 msgid "" "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "" @@ -95,7 +96,7 @@ msgstr "" "Adresshelfer von einem \"Sprung\"-Service:" #. Translators: parameter is a host name -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1252 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1194 #, java-format msgid "{0} jump service" msgstr "Weiterleitungsdienst {0}" @@ -141,12 +142,16 @@ msgstr "" msgid "Click here if you are not redirected automatically." msgstr "Klick hier, wenn du nicht automatisch weitergeleitet wirst!" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:332 -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:342 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:325 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:335 msgid "internal" msgstr "intern" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:174 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119 +msgid "Tunnels are not initialized yet, please reload in two minutes." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:192 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." @@ -154,178 +159,198 @@ msgstr "" "Ungültige Formulareingabe - wahrscheinlich haben Sie den \"Zurück\"-Knopf " "Ihres Browsers betätigt. Bitte neuladen!" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:221 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:240 msgid "Configuration reloaded for all tunnels" msgstr "Einstellungen für alle Tunnel neugeladen" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:233 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:253 msgid "Starting tunnel" msgstr "Starte Tunnel ..." #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:246 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:266 msgid "Stopping tunnel" msgstr "Beende Tunnel ..." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334 msgid "Configuration changes saved" msgstr "Änderungen der Einstellungen gespeichert" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:317 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337 msgid "Failed to save configuration" msgstr "Einstellungen nicht gespeichert" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 msgid "New Tunnel" msgstr "Neuer Tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609 +msgid "Port not set" +msgstr "Port nicht gesetzt" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611 +msgid "Invalid port" +msgstr "Ungültiger Port" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Warnung - Ports unter 1024 sind nicht empfehlenswert" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504 msgid "Standard client" msgstr "Standardklient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505 msgid "HTTP client" msgstr "HTTP-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506 msgid "IRC client" msgstr "IRC-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507 msgid "Standard server" msgstr "Standardserver" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 msgid "HTTP server" msgstr "HTTP-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS-4/4a/5-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510 msgid "SOCKS IRC proxy" msgstr "SOCKS-IRC-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS-Proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 msgid "IRC server" msgstr "IRC-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513 msgid "Streamr client" msgstr "Streamr-Klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514 msgid "Streamr server" msgstr "Streamr-Server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515 msgid "HTTP bidir" msgstr "HTTP Bidir" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:305 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:302 msgid "Host not set" msgstr "Host nicht gesetzt" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:287 -msgid "Port not set" -msgstr "Port nicht gesetzt" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605 +msgid "Invalid address" +msgstr "Ungültige Adresse" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:82 msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "I2P-Tunnel-Manager - Kliententunnel bearbeiten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:104 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:110 msgid "Edit proxy settings" msgstr "Proxyeinstellungen bearbeiten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:118 msgid "New proxy settings" msgstr "Neue Proxyeinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:140 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326 msgid "Name" msgstr "Name" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:291 msgid "Type" msgstr "Typ" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:402 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 msgid "Description" msgstr "Beschreibung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:147 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 msgid "Target" msgstr "Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:141 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:143 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:173 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:147 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:149 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:179 msgid "Access Point" msgstr "Zugriffspunkt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:161 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:164 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:229 msgid "required" msgstr "benötigt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:169 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:188 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:175 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:194 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:479 msgid "Reachable by" msgstr "Erreichbar von" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:196 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:358 msgid "Outproxies" msgstr "Ausgehende Proxies" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378 msgid "Tunnel Destination" msgstr "Ziel des Tunnels" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382 msgid "name or destination" msgstr "Name oder Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:385 msgid "b32 not recommended" msgstr "B32-Adressen nicht empfohlen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 msgid "Shared Client" msgstr "versch. Klienten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" @@ -333,29 +358,29 @@ msgstr "" "(Soll dieser Tunnel mit anderen Klienten und IRC/HTTP-Klienten geteilt " "werden? Änderungen benötigen Neustart des Klientenproxys)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:225 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:135 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:519 msgid "Auto Start" msgstr "Automatischer Start" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:229 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:523 msgid "(Check the Box for 'YES')" msgstr "(Aktiviere das Kästchen für 'ja')" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 msgid "Enable DCC" msgstr "DCC aktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:259 msgid "Advanced networking options" msgstr "Erweiterte Netzwerkoptionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:249 msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" @@ -363,288 +388,288 @@ msgstr "" "(HINWEIS: Ist dieser Proxy konfiguriert, Tunnel mit anderen Klienten zu " "teilen, so gelten diese Optionen für alle Klienten des Proxys!)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:255 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:261 msgid "Tunnel Options" msgstr "Tunneloptionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:257 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:263 msgid "Length" msgstr "Länge" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "0-Hop-Tunnel (geringe Anonymität, geringe Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:274 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "1-Hop-Tunnel (mittlere Anonymität, mittlere Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:278 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "2-Hop-Tunnel (hohe Anonymität, hohe Latenz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:266 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:282 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "3-Hop-Tunnel (sehr hohe Anonymität, geringe Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:274 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 msgid "hop tunnel (very poor performance)" msgstr "Hop-Tunnel (sehr geringe Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:279 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "Variance" msgstr "Varianz" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "" "0-Hop-Varianz (keine zufällige Längenveränderung, konsistente Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 msgid "" "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "" "+ 0-1 Hop Varianz (mittlere zufällige Verlängerung, verringert die Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:294 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 msgid "" "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "+ 0-2 Hops Varianz (hohe zufällige Verlängerung, verringerte Leistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:298 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "" "+/- 0-1 Hop Varianz (geringe zufällige Längenänderung, Standardleistung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:302 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 msgid "+/- 0-2 hop variance (not recommended)" msgstr "+/- 0-2 Hops Varianz (nicht empfohlen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:313 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:329 msgid "hop variance" msgstr "Hops Varianz" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:318 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:334 msgid "Count" msgstr "Anzahl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "" "1 eingehender, 1 ausgehender Tunnel (geringe Bandbreitennutzung, weniger " "zuverlässig)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" msgstr "" "2 eingehende, 2 ausgehende Tunnel (Standardbandbreitennutzung, zuverlässig)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:333 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "" "3 eingehende, 3 ausgehende Tunnel (hohe Bandbreitennutzung, zuverlässiger)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357 msgid "tunnels" msgstr "Tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:346 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362 msgid "Backup Count" msgstr "Anzahl an Ersatztunneln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "0 Ersatztunnel (0 Redundanz, keine zusätzliche Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "" "1 Ersatztunnel in jede Richtung (geringe Redundanz, geringe " "Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "" "2 Ersatztunnel in jede Richtung (mittlere Redundanz, mittlere " "Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "" "3 Ersatztunnel in jede Richtung (hohe Redundanz, hohe Ressourcennutzung)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389 msgid "backup tunnels" msgstr "Ersatztunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396 msgid "Profile" msgstr "Profil" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403 msgid "interactive connection" msgstr "Interaktive Verbindung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 msgid "bulk connection (downloads/websites/BT)" msgstr "Mengenverbindung (Download/Webseiten/BitTorrent)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399 msgid "Delay Connect" msgstr "Verbindung verzögern" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 msgid "for request/response connections" msgstr "für Verbindungen mit Anfragen/Antworten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411 msgid "Router I2CP Address" msgstr "I2CP-Adresse des Routers" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 msgid "Port" msgstr "Port" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 msgid "Reduce tunnel quantity when idle" msgstr "Anzahl an Tunneln im Leerlauf reduzieren" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:445 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "Enable" msgstr "aktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 msgid "Reduced tunnel count" msgstr "Reduzierte Tunnelanzahl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:431 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 msgid "Idle minutes" msgstr "Minuten Inaktivität" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 msgid "Close tunnels when idle" msgstr "nicht genutzte Tunnel schließen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 msgid "New Keys on Reopen" msgstr "Neue Schlüssel beim Wiederöffnen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Disable" msgstr "deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461 msgid "Delay tunnel open until required" msgstr "Aufbau des Tunnela verzögern, bis dieser benötigt wird" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 msgid "Persistent private key" msgstr "Dauerhafter privater Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 msgid "File" msgstr "Datei" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:475 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236 msgid "Local destination" msgstr "lokales Ziel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485 msgid "(if known)" msgstr "(falls bekannt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 msgid "Local Authorization" msgstr "lokale Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506 msgid "Username" msgstr "Benutzername" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510 msgid "Password" msgstr "Passwort" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500 msgid "Outproxy Authorization" msgstr "Outproxy Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 msgid "Jump URL List" msgstr "List der Sprung-URLs" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:521 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Custom options" msgstr "Eigene Optionen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699 msgid "Cancel" msgstr "Abbrechen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:529 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545 msgid "Delete" msgstr "Löschen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547 msgid "Save" msgstr "Speichern" @@ -652,132 +677,132 @@ msgstr "Speichern" msgid "I2P Tunnel Manager - Edit Server Tunnel" msgstr "I2P-Tunnel-Manager - Servertunnel bearbeiten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:104 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:110 msgid "Edit server settings" msgstr "Servereinstellungen ändern" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:118 msgid "New server settings" msgstr "Neue Servereinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:215 msgid "Website name" msgstr "Name der Webseite" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:219 msgid "(leave blank for outproxies)" msgstr "(für ausgehende Proxies leer lassen)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:224 msgid "Private key file" msgstr "private Schlüsseldatei" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:246 msgid "Add to local addressbook" msgstr "zum lokalen Adressbuch hinzufügen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 msgid "Hostname Signature" msgstr "Signatur des Namens" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Encrypt Leaseset" msgstr "Leaseset verschlüsseln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Encryption Key" msgstr "Schlüssel zum verschlüsseln" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 msgid "Generate New Key" msgstr "Erzeuge neuen Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 msgid "Generate" msgstr "Erzeugen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "(Tunnel must be stopped first)" msgstr "(Tunnel muss zuerst beendet sein)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 msgid "Restricted Access List" msgstr "Zugang beschränken" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 msgid "Whitelist" msgstr "Zugangsliste" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 msgid "Blacklist" msgstr "Sperrliste" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 msgid "Access List" msgstr "Zugangsliste" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 msgid "Inbound connection limits (0=unlimited)" msgstr "Begrenzung eingehender Verbindungen (0=unbegrenzt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 msgid "Per client" msgstr "pro Klient" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 msgid "Per minute" msgstr "pro Minute" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471 msgid "Per hour" msgstr "pro Stunde" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 msgid "Per day" msgstr "pro Tag" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Total" msgstr "Gesamt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 msgid "Max concurrent connections (0=unlimited)" msgstr "max. Anzahl gleichzeitiger Verbindungen (0=unbegrenzt)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "New Certificate type" msgstr "Neuer Zertifizierungstyp" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "None" msgstr "Keiner" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 msgid "Hashcash (effort)" msgstr "Hashcash (Durchsatz)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517 msgid "Hashcash Calc Time" msgstr "Hashcash Berechnungszeit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Estimate" msgstr "Abschätzung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Hidden" msgstr "Versteckt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Signed (signed by)" msgstr "Signiert (unterschrieben von)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Modify Certificate" msgstr "Zertifikat modifizieren" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533 msgid "Modify" msgstr "Modifizieren" @@ -793,90 +818,86 @@ msgstr "Statusnachrichten" msgid "Refresh" msgstr "Auffrischen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 msgid "Tunnel Wizard" msgstr "Tunnel Wizard" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 msgid "Stop All" msgstr "Alle stoppen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117 msgid "Start All" msgstr "Alle starten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 msgid "Restart All" msgstr "Alle neustarten" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119 -msgid "Reload Config" -msgstr "Konfiguration neu einlesen" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124 msgid "I2P Server Tunnels" msgstr "I2P-Servertunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:146 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:128 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:149 msgid "Points at" msgstr "Läuft auf" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:168 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:175 msgid "Preview" msgstr "Vorschau" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:129 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:192 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:309 msgid "Status" msgstr "Status" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:178 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:181 msgid "Base32 Address" msgstr "Basis-32-Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:186 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:189 msgid "No Preview" msgstr "Keine Vorschau" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:199 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:316 msgid "Starting..." msgstr "Starte ..." -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:206 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:326 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:351 msgid "Stop" msgstr "Stopp" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 msgid "Running" msgstr "Aktiv" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358 msgid "Stopped" msgstr "Gestoppt" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:365 msgid "Start" msgstr "Start" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:252 msgid "New server tunnel" msgstr "Neuer Servertunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:412 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295 @@ -885,33 +906,33 @@ msgstr "Neuer Servertunnel" msgid "Standard" msgstr "Standard" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414 msgid "Create" msgstr "Erstellen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:258 msgid "I2P Client Tunnels" msgstr "I2P-Klienten-Tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:295 msgid "Interface" msgstr "Interface" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:330 msgid "Standby" msgstr "Wartestellung" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 msgid "Outproxy" msgstr "Ausgehender Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397 msgid "none" msgstr "Keiner" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:410 msgid "New client tunnel" msgstr "Neuer Kliententunnel" @@ -1325,3 +1346,6 @@ msgstr "Abschließen" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724 msgid "Next" msgstr "Nächstes" + +#~ msgid "Reload Config" +#~ msgstr "Konfiguration neu einlesen" diff --git a/apps/i2ptunnel/locale/messages_en.po b/apps/i2ptunnel/locale/messages_en.po index 3a9532e43207757fb712ade4f15d4851ae5b250a..913a095cb2629b6bd63361e678ebd412c4c0e565 100644 --- a/apps/i2ptunnel/locale/messages_en.po +++ b/apps/i2ptunnel/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"POT-Creation-Date: 2012-11-02 19:51+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 msgid "This seems to be a bad destination:" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 msgid "i2paddresshelper cannot help you with a destination like that!" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:620 #, java-format msgid "" "To visit the destination in your host database, click <a href=\"{0}\">here</" @@ -34,55 +34,55 @@ msgid "" "\"{1}\">here</a>." msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1023 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1020 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410 msgid "Host" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1027 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1024 msgid "Base 32" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1031 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1028 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 msgid "Destination" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1037 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1034 #, java-format msgid "Continue to {0} without saving" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039 #, java-format msgid "Save {0} to router address book and continue to eepsite" msgstr "" #. only blockfile supports multiple books -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1045 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 #, java-format msgid "Save {0} to master address book and continue to eepsite" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043 #, java-format msgid "Save {0} to private address book and continue to eepsite" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1211 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1153 msgid "HTTP Outproxy" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1158 msgid "" "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "" #. Translators: parameter is a host name -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1252 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1194 #, java-format msgid "{0} jump service" msgstr "" @@ -126,112 +126,122 @@ msgstr "" msgid "Click here if you are not redirected automatically." msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:332 -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:342 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:325 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:335 msgid "internal" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:175 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119 +msgid "Tunnels are not initialized yet, please reload in two minutes." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:192 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:222 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:240 msgid "Configuration reloaded for all tunnels" msgstr "" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:234 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:253 msgid "Starting tunnel" msgstr "" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:247 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:266 msgid "Stopping tunnel" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334 msgid "Configuration changes saved" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:318 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337 msgid "Failed to save configuration" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:437 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 msgid "New Tunnel" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:470 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:587 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609 msgid "Port not set" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:589 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611 msgid "Invalid port" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 msgid "Warning - ports less than 1024 are not recommended" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504 msgid "Standard client" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:483 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505 msgid "HTTP client" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506 msgid "IRC client" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507 msgid "Standard server" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:486 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 msgid "HTTP server" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509 msgid "SOCKS 4/4a/5 proxy" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510 msgid "SOCKS IRC proxy" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:489 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511 msgid "CONNECT/SSL/HTTPS proxy" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 msgid "IRC server" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:491 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513 msgid "Streamr client" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514 msgid "Streamr server" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:493 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515 msgid "HTTP bidir" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:581 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:302 msgid "Host not set" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:583 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605 msgid "Invalid address" msgstr "" @@ -239,393 +249,393 @@ msgstr "" msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:104 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:110 msgid "Edit proxy settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:118 msgid "New proxy settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:140 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326 msgid "Name" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:288 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:291 msgid "Type" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:402 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 msgid "Description" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:147 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 msgid "Target" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:141 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:143 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:173 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:147 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:149 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:179 msgid "Access Point" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:161 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:164 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:229 msgid "required" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:169 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:188 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:175 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:194 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:479 msgid "Reachable by" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:196 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:358 msgid "Outproxies" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378 msgid "Tunnel Destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382 msgid "name or destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:385 msgid "b32 not recommended" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 msgid "Shared Client" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:225 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:135 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:519 msgid "Auto Start" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:229 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:523 msgid "(Check the Box for 'YES')" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:233 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 msgid "Enable DCC" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:259 msgid "Advanced networking options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:249 msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:255 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:261 msgid "Tunnel Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:257 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:263 msgid "Length" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:274 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:278 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:266 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:276 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:282 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:274 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 msgid "hop tunnel (very poor performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:279 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 msgid "Variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 msgid "" "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:294 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 msgid "" "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:298 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:302 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 msgid "+/- 0-2 hop variance (not recommended)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:313 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:329 msgid "hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:318 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:334 msgid "Count" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:333 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357 msgid "tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:346 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362 msgid "Backup Count" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389 msgid "backup tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396 msgid "Profile" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403 msgid "interactive connection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 msgid "bulk connection (downloads/websites/BT)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399 msgid "Delay Connect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 msgid "for request/response connections" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411 msgid "Router I2CP Address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:411 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:281 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 msgid "Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 msgid "Reduce tunnel quantity when idle" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:445 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 msgid "Enable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 msgid "Reduced tunnel count" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:431 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 msgid "Idle minutes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 msgid "Close tunnels when idle" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 msgid "New Keys on Reopen" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Disable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461 msgid "Delay tunnel open until required" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 msgid "Persistent private key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 msgid "File" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:475 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236 msgid "Local destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485 msgid "(if known)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 msgid "Local Authorization" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506 msgid "Username" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510 msgid "Password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500 msgid "Outproxy Authorization" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 msgid "Jump URL List" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:521 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 msgid "Custom options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699 msgid "Cancel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:529 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545 msgid "Delete" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547 msgid "Save" msgstr "" @@ -633,132 +643,132 @@ msgstr "" msgid "I2P Tunnel Manager - Edit Server Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:104 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:110 msgid "Edit server settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:118 msgid "New server settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:215 msgid "Website name" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:219 msgid "(leave blank for outproxies)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:224 msgid "Private key file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:240 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:246 msgid "Add to local addressbook" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 msgid "Hostname Signature" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 msgid "Encrypt Leaseset" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 msgid "Encryption Key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 msgid "Generate New Key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 msgid "Generate" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 msgid "(Tunnel must be stopped first)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 msgid "Restricted Access List" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 msgid "Whitelist" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 msgid "Blacklist" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 msgid "Access List" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 msgid "Inbound connection limits (0=unlimited)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 msgid "Per client" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 msgid "Per minute" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471 msgid "Per hour" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 msgid "Per day" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Total" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 msgid "Max concurrent connections (0=unlimited)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 msgid "New Certificate type" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 msgid "None" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 msgid "Hashcash (effort)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517 msgid "Hashcash Calc Time" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 msgid "Estimate" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 msgid "Hidden" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 msgid "Signed (signed by)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 msgid "Modify Certificate" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533 msgid "Modify" msgstr "" @@ -774,90 +784,86 @@ msgstr "" msgid "Refresh" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 msgid "Tunnel Wizard" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 msgid "Stop All" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117 msgid "Start All" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 msgid "Restart All" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119 -msgid "Reload Config" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124 msgid "I2P Server Tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:146 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:128 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:149 msgid "Points at" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:168 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:175 msgid "Preview" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:129 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:192 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:309 msgid "Status" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:178 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:181 msgid "Base32 Address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:186 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:189 msgid "No Preview" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:199 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:316 msgid "Starting..." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:206 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:351 msgid "Stop" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 msgid "Running" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358 msgid "Stopped" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:365 msgid "Start" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:252 msgid "New server tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:412 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295 @@ -866,33 +872,33 @@ msgstr "" msgid "Standard" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414 msgid "Create" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:258 msgid "I2P Client Tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:295 msgid "Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:330 msgid "Standby" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 msgid "Outproxy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:388 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397 msgid "none" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:410 msgid "New client tunnel" msgstr "" diff --git a/apps/i2ptunnel/locale/messages_es.po b/apps/i2ptunnel/locale/messages_es.po index c5bbeaf039ead9e135b934708b05b9dc7390224e..b3170c14b7f19a384b8ec702634cb73bb293acef 100644 --- a/apps/i2ptunnel/locale/messages_es.po +++ b/apps/i2ptunnel/locale/messages_es.po @@ -2,10 +2,11 @@ # Copyright (C) 2009 The I2P Project # This file is distributed under the same license as the i2ptunnel package. # To contribute translations, see http://www.i2p2.de/newdevelopers -# +# # Translators: # "blabla", 2011. # <blabla@trash-mail.com>, 2011, 2012. +# Daniel Mustieles <daniel.mustieles@gmail.com>, 2012. # ducki2p <ducki2p@gmail.com>, 2011. # foo <foo@bar>, 2009. # <punkibastardo@gmail.com>, 2011, 2012. @@ -13,17 +14,16 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:45+0000\n" -"PO-Revision-Date: 2012-07-21 19:52+0000\n" -"Last-Translator: blabla <blabla@trash-mail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/" -"es/)\n" -"Language: es\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"PO-Revision-Date: 2012-10-18 08:55+0000\n" +"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/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" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 msgid "This seems to be a bad destination:" @@ -36,13 +36,10 @@ msgstr "El ayudante de direcciones no te puede ayudar con un destino asÃ." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621 #, java-format msgid "" -"To visit the destination in your host database, click <a href=\"{0}\">here</" -"a>. To visit the conflicting addresshelper destination, click <a href=" -"\"{1}\">here</a>." -msgstr "" -"Para visitar el destino en la base de datos de hosts, ¡pincha <a href=" -"\"{0}\">aquÃ</a>! Para visitar el destino del ayudante de direcciones en " -"conflicto, ¡pincha <a href=\"{1}\">aquÃ</a>!" +"To visit the destination in your host database, click <a " +"href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, " +"click <a href=\"{1}\">here</a>." +msgstr "Para visitar el destino en la base de datos de hosts, ¡pincha <a href=\"{0}\">aquÃ</a>! Para visitar el destino del ayudante de direcciones en conflicto, ¡pincha <a href=\"{1}\">aquÃ</a>!" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1023 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 @@ -57,7 +54,7 @@ msgid "Base 32" msgstr "Base 32" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1031 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 msgid "Destination" msgstr "Destino" @@ -69,21 +66,18 @@ msgstr "Acceder a {0} sin guardar" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 #, java-format msgid "Save {0} to router address book and continue to eepsite" -msgstr "" -"Guardar {0} a la libreta de direcciones del router y acceder al sitio i2p." +msgstr "Guardar {0} a la libreta de direcciones del router y acceder al sitio i2p." #. only blockfile supports multiple books #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1045 #, java-format msgid "Save {0} to master address book and continue to eepsite" -msgstr "" -"Guardar {0} a la libreta de direcciones principal y acceder al sitio i2p." +msgstr "Guardar {0} a la libreta de direcciones principal y acceder al sitio i2p." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046 #, java-format msgid "Save {0} to private address book and continue to eepsite" -msgstr "" -"Guardar {0} a la libreta de direcciones privada y acceder al sitio i2p." +msgstr "Guardar {0} a la libreta de direcciones privada y acceder al sitio i2p." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1211 msgid "HTTP Outproxy" @@ -91,10 +85,9 @@ msgstr "Puerta de salida HTTP" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216 msgid "" -"Click a link below to look for an address helper by using a \"jump\" service:" -msgstr "" -"Pincha en un enlace de debajo para buscar un ayudante de direcciones " -"mediante el uso de un servicio de \"salto\":" +"Click a link below to look for an address helper by using a \"jump\" " +"service:" +msgstr "Pincha en un enlace de debajo para buscar un ayudante de direcciones mediante el uso de un servicio de \"salto\":" #. Translators: parameter is a host name #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1252 @@ -146,97 +139,109 @@ msgstr "¡Haz click aquà si no estás siendo enviado automáticamente!" msgid "internal" msgstr "interno" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:174 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:175 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." -msgstr "" -"El formulario presentado es inválido, probablemente porque has utilizado el " -"botón 'atrás' o 'recargar' de tu navegador. Por favor, ¡vuelve a enviarlo!" +msgstr "El formulario presentado es inválido, probablemente porque has utilizado el botón 'atrás' o 'recargar' de tu navegador. Por favor, ¡vuelve a enviarlo!" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:221 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:222 msgid "Configuration reloaded for all tunnels" msgstr "Configuración recargada para todos los túneles" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:233 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:234 msgid "Starting tunnel" msgstr "Inicializando el túnel" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:246 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:247 msgid "Stopping tunnel" msgstr "Deteniendo el túnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315 msgid "Configuration changes saved" msgstr "Cambios en la configuración guardados" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:317 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:318 msgid "Failed to save configuration" msgstr "No se pudo guardar la configuración" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:437 msgid "New Tunnel" msgstr "Nuevo túnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:470 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:587 +msgid "Port not set" +msgstr "Puerto no establecido" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:589 +msgid "Invalid port" +msgstr "Puerto no válido" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Advertencia: no se recomienda usar puertos inferiores al 1024" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 msgid "Standard client" msgstr "Cliente estándar" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:483 msgid "HTTP client" msgstr "Cliente HTTP" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484 msgid "IRC client" msgstr "Cliente IRC" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 msgid "Standard server" msgstr "Servidor estándar" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:486 msgid "HTTP server" msgstr "Servidor HTTP" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487 msgid "SOCKS 4/4a/5 proxy" msgstr "Proxy SOCKS 4/4a/5" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 msgid "SOCKS IRC proxy" msgstr "Proxy IRC SOCKS" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:489 msgid "CONNECT/SSL/HTTPS proxy" msgstr "Proxy CONNECT/SSL/HTTPS" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490 msgid "IRC server" msgstr "Servidor de IRC" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:491 msgid "Streamr client" msgstr "Cliente Streamr" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 msgid "Streamr server" msgstr "Servidor Streamr" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:493 msgid "HTTP bidir" msgstr "HTTP bidir" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:305 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 msgid "Host not set" msgstr "Host no establecido" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:287 -msgid "Port not set" -msgstr "Puerto no establecido" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:583 +msgid "Invalid address" +msgstr "Dirección no válida" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:82 msgid "I2P Tunnel Manager - Edit Client Tunnel" @@ -263,14 +268,14 @@ msgstr "Nombre" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:127 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:127 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:288 msgid "Type" msgstr "Tipo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:131 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:131 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:393 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 msgid "Description" msgstr "Descripción" @@ -329,9 +334,7 @@ msgstr "Túnel Compartido" msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" -msgstr "" -"(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto " -"requiere reiniciar el proxy de cliente)" +msgstr "(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto requiere reiniciar el proxy de cliente)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:225 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:135 @@ -359,9 +362,7 @@ msgstr "Opciones de red avanzadas" msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" -msgstr "" -"(NOTA: Si este proxy de cliente está configurado para compartir túneles, " -"estas opciones se aplicarán a todos los proxys de cliente compartidos.)" +msgstr "(NOTA: Si este proxy de cliente está configurado para compartir túneles, estas opciones se aplicarán a todos los proxys de cliente compartidos.)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:255 @@ -412,23 +413,18 @@ msgstr "Variación de 0 saltos (sin aleatoriedad, rendimiento constante)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:300 msgid "" "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" -msgstr "" -"Variación de + 0-1 salto (aleatoriedad media aditiva, rendimiento " -"substractivo)" +msgstr "Variación de + 0-1 salto (aleatoriedad media aditiva, rendimiento substractivo)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:294 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:304 msgid "" "+ 0-2 hop variance (high additive randomisation, subtractive performance)" -msgstr "" -"Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento " -"substractivo)" +msgstr "Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento substractivo)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:298 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:308 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" -msgstr "" -"Variación de +/- 0-1 salto (aleatoriedad estándar, rendimiento estándar)" +msgstr "Variación de +/- 0-1 salto (aleatoriedad estándar, rendimiento estándar)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:302 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:312 @@ -448,25 +444,20 @@ msgstr "Cantidad" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" -msgstr "" -"1 túnel entrante, 1 de salida (bajo uso de ancho de banda, menos fiabilidad)" +msgstr "1 túnel entrante, 1 de salida (bajo uso de ancho de banda, menos fiabilidad)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:339 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" -msgstr "" -"2 túneles entrantes, 2 de salida (uso de ancho de banda estándar, fiabilidad " -"estándar)" +msgstr "2 túneles entrantes, 2 de salida (uso de ancho de banda estándar, fiabilidad estándar)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:333 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:343 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" -msgstr "" -"3 túneles entrantes, 3 de salida (mayor uso de ancho de banda, mayor " -"fiabilidad)" +msgstr "3 túneles entrantes, 3 de salida (mayor uso de ancho de banda, mayor fiabilidad)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:351 @@ -486,24 +477,18 @@ msgstr "0 túneles de respaldo (redundancia 0, no aumenta el uso de recursos)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:367 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" -msgstr "" -"1 túnel de respaldo en cada dirección (redundancia baja, uso bajo de " -"recursos)" +msgstr "1 túnel de respaldo en cada dirección (redundancia baja, uso bajo de recursos)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" -msgstr "" -"2 túneles de respaldo en cada dirección (redundancia media, uso de recursos " -"medio)" +msgstr "2 túneles de respaldo en cada dirección (redundancia media, uso de recursos medio)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" -msgstr "" -"3 túneles de respaldo en cada dirección (alta redundancia, uso de recursos " -"alto)" +msgstr "3 túneles de respaldo en cada dirección (alta redundancia, uso de recursos alto)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 @@ -835,7 +820,7 @@ msgstr "Vista previa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:129 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:192 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306 msgid "Status" msgstr "Estado" @@ -848,30 +833,30 @@ msgid "No Preview" msgstr "Sin vista previa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:199 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 msgid "Starting..." msgstr "Iniciando..." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:206 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:326 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 msgid "Stop" msgstr "Detener" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:341 msgid "Running" msgstr "Ejecutándose" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:355 msgid "Stopped" msgstr "Detenido" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 msgid "Start" msgstr "Iniciar" @@ -880,7 +865,7 @@ msgid "New server tunnel" msgstr "Nuevo servidor de túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295 @@ -890,7 +875,7 @@ msgid "Standard" msgstr "Estándar" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405 msgid "Create" msgstr "Crear" @@ -899,23 +884,23 @@ msgid "I2P Client Tunnels" msgstr "Túneles de cliente I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292 msgid "Interface" msgstr "Interfaz" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 msgid "Standby" msgstr "En espera" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:371 msgid "Outproxy" msgstr "Puerta de salida" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:388 msgid "none" msgstr "ninguno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401 msgid "New client tunnel" msgstr "Nuevo túnel cliente" @@ -959,35 +944,27 @@ msgstr "Asistente completado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189 msgid "" -"This wizard will take you through the various options available for creating " -"tunnels in I2P." -msgstr "" -"Este asistente le guiará a través de las distintas opciones disponibles para " -"la creación de túneles en I2P." +"This wizard will take you through the various options available for creating" +" tunnels in I2P." +msgstr "Este asistente le guiará a través de las distintas opciones disponibles para la creación de túneles en I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191 msgid "" -"The first thing to decide is whether you want to create a server or a client " -"tunnel." -msgstr "" -"Lo primero que debe decidir es si se desea crear un túnel de servidor o de " -"cliente." +"The first thing to decide is whether you want to create a server or a client" +" tunnel." +msgstr "Lo primero que debe decidir es si se desea crear un túnel de servidor o de cliente." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193 msgid "" -"If you need to connect to a remote service, such as an IRC server inside I2P " -"or a code repository, then you will require a CLIENT tunnel." -msgstr "" -"Si necesita conectarse a un servicio remoto, como un servidor de IRC dentro " -"de I2P o un repositorio de código, va a requerir un túnel CLIENTE." +"If you need to connect to a remote service, such as an IRC server inside I2P" +" or a code repository, then you will require a CLIENT tunnel." +msgstr "Si necesita conectarse a un servicio remoto, como un servidor de IRC dentro de I2P o un repositorio de código, va a requerir un túnel CLIENTE." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195 msgid "" "On the other hand, if you wish to host a service for others to connect to " "you'll need to create a SERVER tunnel." -msgstr "" -"Por otro lado, si desea hospedar un servicio para que otros puedan " -"conectarse a usted, necesitará crear un túnel SERVIDOR." +msgstr "Por otro lado, si desea hospedar un servicio para que otros puedan conectarse a usted, necesitará crear un túnel SERVIDOR." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197 msgid "Server Tunnel" @@ -1010,9 +987,7 @@ msgstr "Túnel básico para la conexión a un servicio dentro de I2P." msgid "" "Try this if none of the tunnel types below fit your requirements, or you " "don't know what type of tunnel you need." -msgstr "" -"Pruebe esto si ninguno de los tipos de túneles a continuación se ajustan a " -"sus requerimientos, o si no sabe qué tipo de túnel necesita." +msgstr "Pruebe esto si ninguno de los tipos de túneles a continuación se ajustan a sus requerimientos, o si no sabe qué tipo de túnel necesita." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229 msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P." @@ -1021,20 +996,15 @@ msgstr "Túnel que actúa como un proxy HTTP para llegar a eepsites dentro I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231 msgid "" "Set your browser to use this tunnel as an http proxy, or set your " -"\"http_proxy\" environment variable for command-line applications in GNU/" -"Linux." -msgstr "" -"Configure su navegador para usar este túnel como un proxy HTTP, o configure " -"su variable de entorno \"http_proxy\" para aplicaciones de lÃnea de comandos " -"en GNU / Linux." +"\"http_proxy\" environment variable for command-line applications in " +"GNU/Linux." +msgstr "Configure su navegador para usar este túnel como un proxy HTTP, o configure su variable de entorno \"http_proxy\" para aplicaciones de lÃnea de comandos en GNU / Linux." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233 msgid "" "Websites outside I2P can also be reached if an HTTP proxy within I2P is " "known." -msgstr "" -"También es posible llegar a sitios web de fuera de I2P si se conoce algún " -"proxy HTTP dentro de I2P." +msgstr "También es posible llegar a sitios web de fuera de I2P si se conoce algún proxy HTTP dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235 msgid "Customised client tunnel specific for IRC connections." @@ -1044,17 +1014,13 @@ msgstr "Túnel de cliente personalizado especÃficamente para conexiones de IRC. msgid "" "With this tunnel type, your IRC client will be able to connect to an IRC " "network inside I2P." -msgstr "" -"Con este tipo de túnel, su cliente de IRC será capaz de conectarse a una red " -"de IRC dentro de I2P." +msgstr "Con este tipo de túnel, su cliente de IRC será capaz de conectarse a una red de IRC dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239 msgid "" "Each IRC network in I2P that you wish to connect to will require its own " "tunnel. (See Also, SOCKS IRC)" -msgstr "" -"Cada red IRC en I2P a la que desee conectarse requerirá su propio túnel. " -"(Véase también, SOCKS IRC)" +msgstr "Cada red IRC en I2P a la que desee conectarse requerirá su propio túnel. (Véase también, SOCKS IRC)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241 msgid "A tunnel that implements the SOCKS protocol." @@ -1064,45 +1030,33 @@ msgstr "Un túnel que implementa el protocolo SOCKS." msgid "" "This enables both TCP and UDP connections to be made through a SOCKS " "outproxy within I2P." -msgstr "" -"Esto permite que las conexiones TCP y UDP se hagan a través de un outproxy " -"SOCKS que esté dentro de I2P." +msgstr "Esto permite que las conexiones TCP y UDP se hagan a través de un outproxy SOCKS que esté dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245 msgid "" "A client tunnel implementing the SOCKS protocol, which is customised for " "connecting to IRC networks." -msgstr "" -"Un túnel de cliente que implementa el protocolo SOCKS, personalizado para la " -"conexión con redes IRC." +msgstr "Un túnel de cliente que implementa el protocolo SOCKS, personalizado para la conexión con redes IRC." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247 msgid "" "With this tunnel type, IRC networks in I2P can be reached by typing the I2P " "address into your IRC client, and configuring the IRC client to use this " "SOCKS tunnel." -msgstr "" -"Con este tipo de túnel, las redes IRC de I2P pueden ser alcanzadas " -"escribiendo directamente la dirección I2P en el cliente de IRC, y " -"configurando el cliente de IRC para utilizar este túnel SOCKS." +msgstr "Con este tipo de túnel, las redes IRC de I2P pueden ser alcanzadas escribiendo directamente la dirección I2P en el cliente de IRC, y configurando el cliente de IRC para utilizar este túnel SOCKS." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249 msgid "" "This means that only one I2P tunnel is required rather than a separate " "tunnel per IRC network." -msgstr "" -"Esto significa que sólo es necesario un único túnel I2P en lugar de un túnel " -"distinto por cada red IRC." +msgstr "Esto significa que sólo es necesario un único túnel I2P en lugar de un túnel distinto por cada red IRC." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251 msgid "" "IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P " "is known, though it depends on whether or not the outproxy has been blocked " "by the IRC network." -msgstr "" -"También se puede llegar a redes IRC de fuera de I2P si se conoce un outproxy " -"SOCKS en I2P, aunque depende de si el outproxy ha sido bloqueado por la red " -"IRC." +msgstr "También se puede llegar a redes IRC de fuera de I2P si se conoce un outproxy SOCKS en I2P, aunque depende de si el outproxy ha sido bloqueado por la red IRC." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253 msgid "A client tunnel that implements the HTTP CONNECT command." @@ -1112,9 +1066,7 @@ msgstr "Un túnel de cliente que implementa el comando HTTP CONNECT." msgid "" "This enables TCP connections to be made through an HTTP outproxy, assuming " "the proxy supports the CONNECT command." -msgstr "" -"Esto permite hacer conexiones TCP a través de un outproxy HTTP, suponiendo " -"que el servidor proxy admita el comando CONNECT." +msgstr "Esto permite hacer conexiones TCP a través de un outproxy HTTP, suponiendo que el servidor proxy admita el comando CONNECT." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:257 msgid "A customised client tunnel for Streamr." @@ -1122,8 +1074,7 @@ msgstr "Un túnel de cliente personalizado para Streamr." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267 msgid "A basic server tunnel for hosting a generic service inside I2P." -msgstr "" -"Un túnel básico de servidor para alojar un servicio genérico dentro de I2P." +msgstr "Un túnel básico de servidor para alojar un servicio genérico dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271 msgid "A server tunnel that is customised for HTTP connections." @@ -1137,28 +1088,21 @@ msgstr "Utilice este tipo de túnel si desea alojar una eepsite." msgid "" "A customised server tunnel that can both serve HTTP data and connect to " "other server tunnels." -msgstr "" -"Un túnel de servidor personalizado que puede servir tanto datos HTTP como " -"conectar a otros túneles de servidor." +msgstr "Un túnel de servidor personalizado que puede servir tanto datos HTTP como conectar a otros túneles de servidor." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277 msgid "This tunnel type is predominantly used when running a Seedless server." -msgstr "" -"Este tipo de túnel se utiliza principalmente cuando se ejecuta un servidor " -"sin semillas (Seedless)." +msgstr "Este tipo de túnel se utiliza principalmente cuando se ejecuta un servidor sin semillas (Seedless)." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279 msgid "A customised server tunnel for hosting IRC networks inside I2P." -msgstr "" -"Un túnel de servidor personalizado para alojar redes IRC dentro de I2P." +msgstr "Un túnel de servidor personalizado para alojar redes IRC dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:281 msgid "" "Usually, a separate tunnel needs to be created for each IRC server that is " "to be accessible inside I2P." -msgstr "" -"Normalmente, se debe crear un túnel por separado para cada servidor IRC, que " -"será accesible dentro de I2P." +msgstr "Normalmente, se debe crear un túnel por separado para cada servidor IRC, que será accesible dentro de I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:283 msgid "A customised server tunnel for Streamr." @@ -1172,17 +1116,13 @@ msgstr "Elegir un nombre y una descripción para su túnel." msgid "" "These can be anything you want - they are just for ease of identifying the " "tunnel in the routerconsole." -msgstr "" -"Estos pueden ser lo que se quiera - son sólo para facilitar la " -"identificación del túnel en la consola del router." +msgstr "Estos pueden ser lo que se quiera - son sólo para facilitar la identificación del túnel en la consola del router." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354 msgid "" "If you know of any outproxies for this type of tunnel (either HTTP or " "SOCKS), fill them in below." -msgstr "" -"Si conoce algún outproxie para este tipo de túnel (HTTP o SOCKS), rellénelo " -"a continuación." +msgstr "Si conoce algún outproxie para este tipo de túnel (HTTP o SOCKS), rellénelo a continuación." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356 msgid "Separate multiple proxies with commas." @@ -1192,35 +1132,27 @@ msgstr "Separe múltiples servidores proxy con comas." msgid "" "Type in the I2P destination of the service that this client tunnel should " "connect to." -msgstr "" -"Introduzca el destino de I2P del servicio al que este túnel de cliente debe " -"conectarse." +msgstr "Introduzca el destino de I2P del servicio al que este túnel de cliente debe conectarse." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:376 msgid "" "This could be the full base 64 destination key, or an I2P URL from your " "address book." -msgstr "" -"Este puede ser la clave de destino en base 64 o una dirección URL I2P de su " -"libreta de direcciones." +msgstr "Este puede ser la clave de destino en base 64 o una dirección URL I2P de su libreta de direcciones." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:406 msgid "" "This is the IP that your service is running on, this is usually on the same " "machine so 127.0.0.1 is autofilled." -msgstr "" -"Esta es la IP en la que el servicio se está ejecutando, esto suele ser en la " -"misma máquina, por lo que se ha auto-rellenado con 127.0.0.1 " +msgstr "Esta es la IP en la que el servicio se está ejecutando, esto suele ser en la misma máquina, por lo que se ha auto-rellenado con 127.0.0.1 " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429 msgid "This is the port that the service is accepting connections on." -msgstr "" -"Este es el puerto por el que el servicio está aceptando conexiones entrantes." +msgstr "Este es el puerto por el que el servicio está aceptando conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450 msgid "This is the port that the client tunnel will be accessed from locally." -msgstr "" -"Este es el puerto por el que se accederá al túnel de cliente localmente." +msgstr "Este es el puerto por el que se accederá al túnel de cliente localmente." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:452 msgid "This is also the client port for the HTTPBidir server tunnel." @@ -1230,9 +1162,7 @@ msgstr "También es el puerto de cliente para el túnel de servidor HTTPBidir." msgid "" "How do you want this tunnel to be accessed? By just this machine, your " "entire subnet, or external internet?" -msgstr "" -"¿Cómo quiere que se acceda a este túnel? ¿Sólo esta máquina, su subred " -"entera, o todo el internet externo?" +msgstr "¿Cómo quiere que se acceda a este túnel? ¿Sólo esta máquina, su subred entera, o todo el internet externo?" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:473 msgid "You will most likely want to just allow 127.0.0.1" @@ -1242,41 +1172,30 @@ msgstr "Lo más probable es que desee permitir sólo 127.0.0.1" msgid "" "The I2P router can automatically start this tunnel for you when the router " "is started." -msgstr "" -"El router I2P puede activar automáticamente este túnel cuando el router se " -"inicie" +msgstr "El router I2P puede activar automáticamente este túnel cuando el router se inicie" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517 msgid "" "This can be useful for frequently-used tunnels (especially server tunnels), " "but for tunnels that are only used occassionally it would mean that the I2P " "router is creating and maintaining unnecessary tunnels." -msgstr "" -"Esto puede ser útil para los túneles de uso frecuente (especialmente en los " -"túneles de servidor), pero para los túneles que sólo se utilizan " -"ocasionalmente, significarÃa que el router I2P está creando y manteniendo " -"túneles innecesarios." +msgstr "Esto puede ser útil para los túneles de uso frecuente (especialmente en los túneles de servidor), pero para los túneles que sólo se utilizan ocasionalmente, significarÃa que el router I2P está creando y manteniendo túneles innecesarios." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543 msgid "The wizard has now collected enough information to create your tunnel." -msgstr "" -"El asistente ya ha recogido suficiente información para crear el túnel." +msgstr "El asistente ya ha recogido suficiente información para crear el túnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:545 msgid "" "Upon clicking the Save button below, the wizard will set up the tunnel, and " "take you back to the main I2PTunnel page." -msgstr "" -"Al hacer clic en el botón Guardar a continuación, el asistente creará el " -"túnel, y le llevará de vuelta a la página principal de túneles I2P." +msgstr "Al hacer clic en el botón Guardar a continuación, el asistente creará el túnel, y le llevará de vuelta a la página principal de túneles I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550 msgid "" "Because you chose to automatically start the tunnel when the router starts, " "you don't have to do anything further." -msgstr "" -"Como ha decidido iniciar automáticamente el túnel cuando el router se " -"inicie, no tiene que hacer nada más." +msgstr "Como ha decidido iniciar automáticamente el túnel cuando el router se inicie, no tiene que hacer nada más." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552 msgid "The router will start the tunnel once it has been set up." @@ -1286,17 +1205,13 @@ msgstr "El router iniciará el túnel una vez haya sido establecido." msgid "" "Because you chose not to automatically start the tunnel, you will have to " "manually start it." -msgstr "" -"Como usted ha decidido no iniciar automáticamente el túnel, tendrá que " -"iniciarlo de forma manual." +msgstr "Como usted ha decidido no iniciar automáticamente el túnel, tendrá que iniciarlo de forma manual." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558 msgid "" "You can do this by clicking the Start button on the main page which " "corresponds to the new tunnel." -msgstr "" -"Esto se puede hacer haciendo clic en el botón Iniciar en la página principal " -"que corresponde al nuevo túnel." +msgstr "Esto se puede hacer haciendo clic en el botón Iniciar en la página principal que corresponde al nuevo túnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:562 msgid "Below is a summary of the options you chose:" @@ -1306,19 +1221,14 @@ msgstr "A continuación se muestra un resumen de las opciones que ha elegido:" msgid "" "Alongside these basic settings, there are a number of advanced options for " "tunnel configuration." -msgstr "" -"Junto a estos valores básicos, hay una serie de opciones avanzadas para la " -"configuración de túneles." +msgstr "Junto a estos valores básicos, hay una serie de opciones avanzadas para la configuración de túneles." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:662 msgid "" "The wizard will set reasonably sensible default values for these, but you " "can view and/or edit these by clicking on the tunnel's name in the main " "I2PTunnel page." -msgstr "" -"El asistente establecerá valores razonablemente sensibles para ellos por " -"defecto, pero se pueden ver y/o editar haciendo clic en el nombre del túnel " -"en la página de túneles I2P principal." +msgstr "El asistente establecerá valores razonablemente sensibles para ellos por defecto, pero se pueden ver y/o editar haciendo clic en el nombre del túnel en la página de túneles I2P principal." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704 msgid "Previous" diff --git a/apps/i2ptunnel/locale/messages_it.po b/apps/i2ptunnel/locale/messages_it.po index 6df2bc725353d75c611f9eecdbc3b4417eb1f637..8e2217db2e0856eb1807806ad639912004216f91 100644 --- a/apps/i2ptunnel/locale/messages_it.po +++ b/apps/i2ptunnel/locale/messages_it.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:46+0000\n" -"PO-Revision-Date: 2012-10-12 00:40+0000\n" -"Last-Translator: kytv <killyourtv@i2pmail.org>\n" +"POT-Creation-Date: 2012-10-15 17:57+0000\n" +"PO-Revision-Date: 2012-10-12 00:51+0000\n" +"Last-Translator: BadCluster <badcluster@i2pmail.org>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/" "it/)\n" "Language: it\n" @@ -185,11 +185,11 @@ msgstr "Porta non impostata" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:589 msgid "Invalid port" -msgstr "" +msgstr "Porta non valida" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 msgid "Warning - ports less than 1024 are not recommended" -msgstr "" +msgstr "Attenzione - E' meglio non utilizzare porte inderiori alla 1024" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 msgid "Standard client" @@ -246,7 +246,7 @@ msgstr "Host non impostato" #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:583 msgid "Invalid address" -msgstr "" +msgstr "Indirizzo non valido" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:82 msgid "I2P Tunnel Manager - Edit Client Tunnel" diff --git a/apps/i2ptunnel/locale/messages_pt.po b/apps/i2ptunnel/locale/messages_pt.po new file mode 100644 index 0000000000000000000000000000000000000000..d66d1806aa2a585eab9350343280596f2cd27b03 --- /dev/null +++ b/apps/i2ptunnel/locale/messages_pt.po @@ -0,0 +1,1265 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2ptunnel package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# <wicked@riseup.net>, 2012. +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-11-02 19:48+0000\n" +"PO-Revision-Date: 2012-10-18 23:41+0000\n" +"Last-Translator: wicked <wicked@riseup.net>\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/" +"pt/)\n" +"Language: pt\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" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 +msgid "This seems to be a bad destination:" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:553 +msgid "i2paddresshelper cannot help you with a destination like that!" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:620 +#, java-format +msgid "" +"To visit the destination in your host database, click <a href=\"{0}\">here</" +"a>. To visit the conflicting addresshelper destination, click <a href=" +"\"{1}\">here</a>." +msgstr "" +"Para visitar o destino da sua base de dados, clique <a href=\"{0}\">aqui</" +"a>. Para visitar o endereço de ajuda do conflito, clique <a href=" +"\"{1}\">aqui</a>." + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1020 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:159 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:410 +msgid "Host" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1024 +msgid "Base 32" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1028 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +msgid "Destination" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1034 +#, java-format +msgid "Continue to {0} without saving" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1039 +#, java-format +msgid "Save {0} to router address book and continue to eepsite" +msgstr "" + +#. only blockfile supports multiple books +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1042 +#, java-format +msgid "Save {0} to master address book and continue to eepsite" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043 +#, java-format +msgid "Save {0} to private address book and continue to eepsite" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1153 +msgid "HTTP Outproxy" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1158 +msgid "" +"Click a link below to look for an address helper by using a \"jump\" service:" +msgstr "" +"Clique no link abaixo para procurar um ajudante de endereços usando um " +"serviço \"jump\":" + +#. Translators: parameter is a host name +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1194 +#, java-format +msgid "{0} jump service" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:159 +msgid "Added via address helper" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:183 +#, java-format +msgid "Redirecting to {0}" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:189 +msgid "Router Console" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190 +msgid "Addressbook" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190 +msgid "Configuration" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190 +msgid "Help" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:195 +#, java-format +msgid "Saved {0} to the {1} addressbook, redirecting now." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196 +#, java-format +msgid "Failed to save {0} to the {1} addressbook, redirecting now." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198 +msgid "Click here if you are not redirected automatically." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:325 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:335 +msgid "internal" +msgstr "interno" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:119 +msgid "Tunnels are not initialized yet, please reload in two minutes." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:192 +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" +"Envio de formulário inválido, provavelmente porque você usou o 'voltar' ou " +"'recarregar' no seu navegador. Por favor reenvie." + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:194 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:240 +msgid "Configuration reloaded for all tunnels" +msgstr "Configuração recarregada em todos os túneis" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:253 +msgid "Starting tunnel" +msgstr "Iniciar túnel" + +#. and give them something to look at in any case +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:266 +msgid "Stopping tunnel" +msgstr "Parar túnel" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:334 +msgid "Configuration changes saved" +msgstr "As configurações foram guardadas" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:337 +msgid "Failed to save configuration" +msgstr "Falha a guardar as configurações" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +msgid "New Tunnel" +msgstr "Novo Túnel" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:609 +msgid "Port not set" +msgstr "Porto não definido" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:611 +msgid "Invalid port" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504 +msgid "Standard client" +msgstr "Cliente padrão" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505 +msgid "HTTP client" +msgstr "Cliente HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:506 +msgid "IRC client" +msgstr "Cliente IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:507 +msgid "Standard server" +msgstr "Servidor Padrão" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508 +msgid "HTTP server" +msgstr "Servidor HTTP" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:509 +msgid "SOCKS 4/4a/5 proxy" +msgstr "SOCKS 4/4a/5 proxy" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:510 +msgid "SOCKS IRC proxy" +msgstr "SOCKS IRC proxy" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:511 +msgid "CONNECT/SSL/HTTPS proxy" +msgstr "CONNECT/SSL/HTTPS proxy" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512 +msgid "IRC server" +msgstr "Servidor IRC" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:513 +msgid "Streamr client" +msgstr "Cliente Streamr" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:514 +msgid "Streamr server" +msgstr "Servidor Streamr" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:515 +msgid "HTTP bidir" +msgstr "HTTP bidir" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:603 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:302 +msgid "Host not set" +msgstr "Host por definir" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:605 +msgid "Invalid address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:82 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "Gestor de Túnel I2P - Editar o Cliente do Túnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:110 +msgid "Edit proxy settings" +msgstr "Editar as definições da proxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:118 +msgid "New proxy settings" +msgstr "Novas definições da proxy" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:129 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:140 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326 +msgid "Name" +msgstr "Nome" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:133 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:291 +msgid "Type" +msgstr "Tipo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 +msgid "Description" +msgstr "Descrição" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153 +msgid "Target" +msgstr "Alvo" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:147 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:149 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:179 +msgid "Access Point" +msgstr "Ponto de Acesso" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:229 +msgid "required" +msgstr "obrigatório" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:175 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:479 +msgid "Reachable by" +msgstr "Ao alcance de" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:196 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:358 +msgid "Outproxies" +msgstr "Proxys de saÃda" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:203 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378 +msgid "Tunnel Destination" +msgstr "Destino do Túnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:382 +msgid "name or destination" +msgstr "nome ou destino" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:385 +msgid "b32 not recommended" +msgstr "b32 não é recomendado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223 +msgid "Shared Client" +msgstr "Cliente Partilhado" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 +msgid "" +"(Share tunnels with other clients and irc/httpclients? Change requires " +"restart of client proxy)" +msgstr "" +"(Compartilhe túneis com outros clientes e IRC / httpclients? Mudança requer " +"a reinicialização do proxy do cliente)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:519 +msgid "Auto Start" +msgstr "Inicio Automático" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:523 +msgid "(Check the Box for 'YES')" +msgstr "(Marque a Caixa para 'SIM')" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239 +msgid "Enable DCC" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:259 +msgid "Advanced networking options" +msgstr "Opções avançadas da rede" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:249 +msgid "" +"(NOTE: when this client proxy is configured to share tunnels, then these " +"options are for all the shared proxy clients!)" +msgstr "" +"(NOTA: quando esse cliente proxy é configurado para partilhar túneis, então, " +"essas opções são para todos os clientes proxy compartilhados!)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:261 +msgid "Tunnel Options" +msgstr "Opções de Túnel" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:263 +msgid "Length" +msgstr "Comprimento" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270 +msgid "0 hop tunnel (low anonymity, low latency)" +msgstr "0 túneis de salto (baixo anonimato, baixa latência)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:274 +msgid "1 hop tunnel (medium anonymity, medium latency)" +msgstr "1 túnel de salto (médio anonimato, média latência)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:278 +msgid "2 hop tunnel (high anonymity, high latency)" +msgstr "2 túneis de salto (alto anonimato, alta latência)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:282 +msgid "3 hop tunnel (very high anonymity, poor performance)" +msgstr "3 túneis de salto (muito alto anonimato, muito alta latência)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290 +msgid "hop tunnel (very poor performance)" +msgstr "túnel de salto (muito baixa performance)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295 +msgid "Variance" +msgstr "Variação" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302 +msgid "0 hop variance (no randomisation, consistant performance)" +msgstr "0 variações de salto (sem randomização, performance constante)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306 +msgid "" +"+ 0-1 hop variance (medium additive randomisation, subtractive performance)" +msgstr "" +"+ 0-1 variações de salto (randomização aditivada media, performance " +"subtraÃda)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 +msgid "" +"+ 0-2 hop variance (high additive randomisation, subtractive performance)" +msgstr "" +"+ 0-2 variações de salto (randomização aditivada alta, performance subtraÃda)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 +msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" +msgstr "+/- 0-1 variações de salto (randomização padrão, performance padrão)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 +msgid "+/- 0-2 hop variance (not recommended)" +msgstr "+/- 0-2 variações de salto (não recomendado)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:329 +msgid "hop variance" +msgstr "variação de salto" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:334 +msgid "Count" +msgstr "Contar" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341 +msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" +msgstr "" +"1 entrada, 1 túnel de saÃda (baixo uso de largura de banda, menor confiança)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:345 +msgid "" +"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " +"reliability)" +msgstr "" +"2 entrada, 2 túneis de saÃda (uso de largura de banda padrão, confiança " +"padrão)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349 +msgid "" +"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" +msgstr "" +"3 entrada, 3 túneis de saÃda (uso de largura de banda alto, alta confiança)" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:357 +msgid "tunnels" +msgstr "túneis" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362 +msgid "Backup Count" +msgstr "Contagem de Backups" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:369 +msgid "0 backup tunnels (0 redundancy, no added resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:373 +msgid "1 backup tunnel each direction (low redundancy, low resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377 +msgid "" +"2 backup tunnels each direction (medium redundancy, medium resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:381 +msgid "3 backup tunnels each direction (high redundancy, high resource usage)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:389 +msgid "backup tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396 +msgid "Profile" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403 +msgid "interactive connection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 +msgid "bulk connection (downloads/websites/BT)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:399 +msgid "Delay Connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 +msgid "for request/response connections" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411 +msgid "Router I2CP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:165 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 +msgid "Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 +msgid "Reduce tunnel quantity when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:451 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:473 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493 +msgid "Enable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 +msgid "Reduced tunnel count" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 +msgid "Idle minutes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441 +msgid "Close tunnels when idle" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447 +msgid "New Keys on Reopen" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 +msgid "Disable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:461 +msgid "Delay tunnel open until required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471 +msgid "Persistent private key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477 +msgid "File" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:236 +msgid "Local destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:485 +msgid "(if known)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490 +msgid "Local Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:506 +msgid "Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:498 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:510 +msgid "Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500 +msgid "Outproxy Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517 +msgid "Jump URL List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537 +msgid "Custom options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:527 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:699 +msgid "Cancel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:545 +msgid "Delete" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:547 +msgid "Save" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:82 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:110 +msgid "Edit server settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:118 +msgid "New server settings" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:215 +msgid "Website name" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:219 +msgid "(leave blank for outproxies)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:224 +msgid "Private key file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:246 +msgid "Add to local addressbook" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253 +msgid "Hostname Signature" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +msgid "Encrypt Leaseset" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +msgid "Encryption Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 +msgid "Generate New Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441 +msgid "Generate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535 +msgid "(Tunnel must be stopped first)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 +msgid "Restricted Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 +msgid "Whitelist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 +msgid "Blacklist" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 +msgid "Access List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463 +msgid "Inbound connection limits (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 +msgid "Per client" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467 +msgid "Per minute" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471 +msgid "Per hour" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 +msgid "Per day" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 +msgid "Total" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 +msgid "Max concurrent connections (0=unlimited)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505 +msgid "New Certificate type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507 +msgid "None" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:511 +msgid "Hashcash (effort)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:517 +msgid "Hashcash Calc Time" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519 +msgid "Estimate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521 +msgid "Hidden" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525 +msgid "Signed (signed by)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531 +msgid "Modify Certificate" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:533 +msgid "Modify" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83 +msgid "I2P Tunnel Manager - List" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:97 +msgid "Status Messages" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:101 +msgid "Refresh" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109 +msgid "Tunnel Wizard" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113 +msgid "Stop All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117 +msgid "Start All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121 +msgid "Restart All" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124 +msgid "I2P Server Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:128 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:149 +msgid "Points at" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:175 +msgid "Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:309 +msgid "Status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:181 +msgid "Base32 Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:189 +msgid "No Preview" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:316 +msgid "Starting..." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:351 +msgid "Stop" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +msgid "Running" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358 +msgid "Stopped" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:365 +msgid "Start" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:252 +msgid "New server tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:573 +msgid "Standard" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:414 +msgid "Create" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:258 +msgid "I2P Client Tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:295 +msgid "Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:330 +msgid "Standby" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 +msgid "Outproxy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397 +msgid "none" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:410 +msgid "New client tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:119 +msgid "I2P Tunnel Manager - Tunnel Creation Wizard" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:564 +msgid "Server or client tunnel?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:568 +msgid "Tunnel type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:151 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:598 +msgid "Tunnel name and description" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:607 +msgid "Tunnel destination" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:623 +msgid "Binding address and port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:169 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:649 +msgid "Tunnel auto-start" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:175 +msgid "Wizard completed" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189 +msgid "" +"This wizard will take you through the various options available for creating " +"tunnels in I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191 +msgid "" +"The first thing to decide is whether you want to create a server or a client " +"tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193 +msgid "" +"If you need to connect to a remote service, such as an IRC server inside I2P " +"or a code repository, then you will require a CLIENT tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195 +msgid "" +"On the other hand, if you wish to host a service for others to connect to " +"you'll need to create a SERVER tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197 +msgid "Server Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:199 +msgid "Client Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:217 +msgid "There are several types of tunnels to choose from:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225 +msgid "Basic tunnel for connecting to a single service inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269 +msgid "" +"Try this if none of the tunnel types below fit your requirements, or you " +"don't know what type of tunnel you need." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229 +msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231 +msgid "" +"Set your browser to use this tunnel as an http proxy, or set your " +"\"http_proxy\" environment variable for command-line applications in GNU/" +"Linux." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233 +msgid "" +"Websites outside I2P can also be reached if an HTTP proxy within I2P is " +"known." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235 +msgid "Customised client tunnel specific for IRC connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:237 +msgid "" +"With this tunnel type, your IRC client will be able to connect to an IRC " +"network inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239 +msgid "" +"Each IRC network in I2P that you wish to connect to will require its own " +"tunnel. (See Also, SOCKS IRC)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241 +msgid "A tunnel that implements the SOCKS protocol." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:243 +msgid "" +"This enables both TCP and UDP connections to be made through a SOCKS " +"outproxy within I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245 +msgid "" +"A client tunnel implementing the SOCKS protocol, which is customised for " +"connecting to IRC networks." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247 +msgid "" +"With this tunnel type, IRC networks in I2P can be reached by typing the I2P " +"address into your IRC client, and configuring the IRC client to use this " +"SOCKS tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249 +msgid "" +"This means that only one I2P tunnel is required rather than a separate " +"tunnel per IRC network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251 +msgid "" +"IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P " +"is known, though it depends on whether or not the outproxy has been blocked " +"by the IRC network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253 +msgid "A client tunnel that implements the HTTP CONNECT command." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:255 +msgid "" +"This enables TCP connections to be made through an HTTP outproxy, assuming " +"the proxy supports the CONNECT command." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:257 +msgid "A customised client tunnel for Streamr." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267 +msgid "A basic server tunnel for hosting a generic service inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271 +msgid "A server tunnel that is customised for HTTP connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273 +msgid "Use this tunnel type if you want to host an eepsite." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:275 +msgid "" +"A customised server tunnel that can both serve HTTP data and connect to " +"other server tunnels." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277 +msgid "This tunnel type is predominantly used when running a Seedless server." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279 +msgid "A customised server tunnel for hosting IRC networks inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:281 +msgid "" +"Usually, a separate tunnel needs to be created for each IRC server that is " +"to be accessible inside I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:283 +msgid "A customised server tunnel for Streamr." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322 +msgid "Choose a name and description for your tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:324 +msgid "" +"These can be anything you want - they are just for ease of identifying the " +"tunnel in the routerconsole." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354 +msgid "" +"If you know of any outproxies for this type of tunnel (either HTTP or " +"SOCKS), fill them in below." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356 +msgid "Separate multiple proxies with commas." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:374 +msgid "" +"Type in the I2P destination of the service that this client tunnel should " +"connect to." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:376 +msgid "" +"This could be the full base 64 destination key, or an I2P URL from your " +"address book." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:406 +msgid "" +"This is the IP that your service is running on, this is usually on the same " +"machine so 127.0.0.1 is autofilled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429 +msgid "This is the port that the service is accepting connections on." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450 +msgid "This is the port that the client tunnel will be accessed from locally." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:452 +msgid "This is also the client port for the HTTPBidir server tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:471 +msgid "" +"How do you want this tunnel to be accessed? By just this machine, your " +"entire subnet, or external internet?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:473 +msgid "You will most likely want to just allow 127.0.0.1" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:515 +msgid "" +"The I2P router can automatically start this tunnel for you when the router " +"is started." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517 +msgid "" +"This can be useful for frequently-used tunnels (especially server tunnels), " +"but for tunnels that are only used occassionally it would mean that the I2P " +"router is creating and maintaining unnecessary tunnels." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543 +msgid "The wizard has now collected enough information to create your tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:545 +msgid "" +"Upon clicking the Save button below, the wizard will set up the tunnel, and " +"take you back to the main I2PTunnel page." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550 +msgid "" +"Because you chose to automatically start the tunnel when the router starts, " +"you don't have to do anything further." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552 +msgid "The router will start the tunnel once it has been set up." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:556 +msgid "" +"Because you chose not to automatically start the tunnel, you will have to " +"manually start it." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558 +msgid "" +"You can do this by clicking the Start button on the main page which " +"corresponds to the new tunnel." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:562 +msgid "Below is a summary of the options you chose:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:660 +msgid "" +"Alongside these basic settings, there are a number of advanced options for " +"tunnel configuration." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:662 +msgid "" +"The wizard will set reasonably sensible default values for these, but you " +"can view and/or edit these by clicking on the tunnel's name in the main " +"I2PTunnel page." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704 +msgid "Previous" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:712 +msgid "Save Tunnel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:718 +msgid "Finish" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724 +msgid "Next" +msgstr "" diff --git a/apps/i2ptunnel/locale/messages_sv.po b/apps/i2ptunnel/locale/messages_sv.po index d55649d575b4db010b59a1bb2409735b598eec58..439c2a930dd5cd9bbf5d6e4af629d8a8e89d3d8f 100644 --- a/apps/i2ptunnel/locale/messages_sv.po +++ b/apps/i2ptunnel/locale/messages_sv.po @@ -2,23 +2,22 @@ # Copyright (C) 2009 The I2P Project # This file is distributed under the same license as the i2ptunnel package. # To contribute translations, see http://www.i2p2.de/newdevelopers -# +# # Translators: -# Martin Svensson <digitalmannen@gmail.com>, 2011, 2012. +# Martin Svensson <digitalmannen@gmail.com>, 2011-2012. msgid "" msgstr "" "Project-Id-Version: I2P\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:10+0000\n" -"PO-Revision-Date: 2012-07-23 16:31+0000\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"PO-Revision-Date: 2012-10-31 14:26+0000\n" "Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n" -"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/" -"language/sv_SE/)\n" -"Language: sv_SE\n" +"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\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" +"Language: sv_SE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554 msgid "This seems to be a bad destination:" @@ -31,13 +30,10 @@ msgstr "i2padresshjälp kan inte hjälpa dig med ett sÃ¥dant mÃ¥l!" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:621 #, java-format msgid "" -"To visit the destination in your host database, click <a href=\"{0}\">here</" -"a>. To visit the conflicting addresshelper destination, click <a href=" -"\"{1}\">here</a>." -msgstr "" -"För att besöka mÃ¥let i din värd databas href=\"{0}\"> klicka <a här </ a>. " -"För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a " -"här </ a>." +"To visit the destination in your host database, click <a " +"href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, " +"click <a href=\"{1}\">here</a>." +msgstr "För att besöka mÃ¥let i din värd databas href=\"{0}\"> klicka <a här </ a>. För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a här </ a>." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1023 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403 @@ -52,7 +48,7 @@ msgid "Base 32" msgstr "Bas 32" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1031 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:374 msgid "Destination" msgstr "MÃ¥l" @@ -83,10 +79,9 @@ msgstr "HTTP Utproxy" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1216 msgid "" -"Click a link below to look for an address helper by using a \"jump\" service:" -msgstr "" -"Klicka pÃ¥ en länk nedan för att söka efter en hjälpaddress genom att använda " -"en \"hopp\" tjänst" +"Click a link below to look for an address helper by using a \"jump\" " +"service:" +msgstr "Klicka pÃ¥ en länk nedan för att söka efter en hjälpaddress genom att använda en \"hopp\" tjänst" #. Translators: parameter is a host name #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1252 @@ -138,97 +133,109 @@ msgstr "Klicka här om du inte omdirigeras automatiskt " msgid "internal" msgstr "Intern " -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:174 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:175 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." -msgstr "" -"Ogiltigt formulärbegäran, beror troligtvis pÃ¥ attt du använde 'tillbaka' " -"eller 'uppdatera' knappen. Försök att skicka igen" +msgstr "Ogiltigt formulärbegäran, beror troligtvis pÃ¥ attt du använde 'tillbaka' eller 'uppdatera' knappen. Försök att skicka igen" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:221 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:222 msgid "Configuration reloaded for all tunnels" msgstr "Konfigurationen uppdateras för alla tunnlar" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:233 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:234 msgid "Starting tunnel" msgstr "Startar tunnel" #. and give them something to look at in any case -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:246 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:247 msgid "Stopping tunnel" msgstr "Stannar tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315 msgid "Configuration changes saved" msgstr "Konfigurationsändringar sparas" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:317 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:318 msgid "Failed to save configuration" msgstr "Det gick inte att spara konfigurationen" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:437 msgid "New Tunnel" msgstr "Ny tunnel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:470 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:587 +msgid "Port not set" +msgstr "Ingen port angiven" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:589 +msgid "Invalid port" +msgstr "Ogiltig port" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Varning - port-nummer under 1024 är inte lämpligt" + +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 msgid "Standard client" msgstr "Standard klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:483 msgid "HTTP client" msgstr "HTTP-klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:484 msgid "IRC client" msgstr "IRC-klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:485 msgid "Standard server" msgstr "Standard server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:486 msgid "HTTP server" msgstr "HTTP server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:487 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS 4/4a/5 proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:488 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:489 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:490 msgid "IRC server" msgstr "IRC-server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:491 msgid "Streamr client" msgstr "Klient för Streamr " -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:492 msgid "Streamr server" msgstr "Server för Streamr" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:493 msgid "HTTP bidir" msgstr "HTTP bidir" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:305 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299 msgid "Host not set" msgstr "Ingen värd angiven" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:287 -msgid "Port not set" -msgstr "Ingen port angiven" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:583 +msgid "Invalid address" +msgstr "Ogiltig adress" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:82 msgid "I2P Tunnel Manager - Edit Client Tunnel" @@ -255,14 +262,14 @@ msgstr "Namn" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:127 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:127 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:288 msgid "Type" msgstr "Typ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:131 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:131 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:393 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 msgid "Description" msgstr "Beskrivning" @@ -321,9 +328,7 @@ msgstr "Delad klient" msgid "" "(Share tunnels with other clients and irc/httpclients? Change requires " "restart of client proxy)" -msgstr "" -"(Dela tunnlarna med andra klienter och irc/HTTP-klienter? Ändring kräver " -"omstart av klientproxyn)" +msgstr "(Dela tunnlarna med andra klienter och irc/HTTP-klienter? Ändring kräver omstart av klientproxyn)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:225 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:135 @@ -351,9 +356,7 @@ msgstr "Avancerade nätverks instälningar" msgid "" "(NOTE: when this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!)" -msgstr "" -"(OBS: när denna klientproxyn är konfigurerad för att dela tunnlar, dÃ¥ gäller " -"dessa alternativ för alla delade proxyklienter!)" +msgstr "(OBS: när denna klientproxyn är konfigurerad för att dela tunnlar, dÃ¥ gäller dessa alternativ för alla delade proxyklienter!)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:255 @@ -435,26 +438,20 @@ msgstr "Antal" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" -msgstr "" -"1 inkommande, 1 utgÃ¥ende tunnlar (lÃ¥g bandbreddsanvändning, lÃ¥g " -"tillförlitlighet)" +msgstr "1 inkommande, 1 utgÃ¥ende tunnlar (lÃ¥g bandbreddsanvändning, lÃ¥g tillförlitlighet)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:329 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:339 msgid "" "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard " "reliability)" -msgstr "" -"2 inkommande, 2 utgÃ¥ende tunnlar (normal bandbreddsanvändning, normal " -"tillförlitlighet)" +msgstr "2 inkommande, 2 utgÃ¥ende tunnlar (normal bandbreddsanvändning, normal tillförlitlighet)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:333 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:343 msgid "" "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" -msgstr "" -"3 inkommande, 3 utgÃ¥ende tunnlar (Högre bandbreddsanvändning, högre " -"tillförlitlighet)" +msgstr "3 inkommande, 3 utgÃ¥ende tunnlar (Högre bandbreddsanvändning, högre tillförlitlighet)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:351 @@ -469,8 +466,7 @@ msgstr "Antal reserver" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:363 msgid "0 backup tunnels (0 redundancy, no added resource usage)" -msgstr "" -"0 reserv tunnlar i varje riktning (ingen redundans, ingen resursanvändning)" +msgstr "0 reserv tunnlar i varje riktning (ingen redundans, ingen resursanvändning)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:367 @@ -481,15 +477,12 @@ msgstr "1 reserv tunnel i varje riktning (lÃ¥g redundans, lÃ¥g resursanvändning #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371 msgid "" "2 backup tunnels each direction (medium redundancy, medium resource usage)" -msgstr "" -"2 reserv tunnlar i varje riktning (medel hög redundans, medel hög " -"resursanvändning)" +msgstr "2 reserv tunnlar i varje riktning (medel hög redundans, medel hög resursanvändning)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" -msgstr "" -"3 reserv tunnlar i varje riktning (hög redundans, hög resursanvändning)" +msgstr "3 reserv tunnlar i varje riktning (hög redundans, hög resursanvändning)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 @@ -821,7 +814,7 @@ msgstr "förhandsvisning" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:129 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:192 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306 msgid "Status" msgstr "Status" @@ -834,30 +827,30 @@ msgid "No Preview" msgstr "Ingen förhandsvisning" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:199 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313 msgid "Starting..." msgstr "Startar..." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:206 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:326 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:340 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:354 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348 msgid "Stop" msgstr "Stopp" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:341 msgid "Running" msgstr "Kör" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:355 msgid "Stopped" msgstr "Stoppad" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362 msgid "Start" msgstr "Start" @@ -866,7 +859,7 @@ msgid "New server tunnel" msgstr "Ny severtunnel " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:403 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:295 @@ -876,7 +869,7 @@ msgid "Standard" msgstr "Standard" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405 msgid "Create" msgstr "Skapa" @@ -885,23 +878,23 @@ msgid "I2P Client Tunnels" msgstr "I2P Klienttunnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292 msgid "Interface" msgstr "Gränssnitt " -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 msgid "Standby" msgstr "Standby" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:371 msgid "Outproxy" msgstr "Utproxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:388 msgid "none" msgstr "Ingen" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401 msgid "New client tunnel" msgstr "Ny klienttunnel" @@ -945,33 +938,27 @@ msgstr "Guiden färdig " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189 msgid "" -"This wizard will take you through the various options available for creating " -"tunnels in I2P." -msgstr "" -"Guiden tar dig igenom de olika inställningsmöjligheterna för att skapa " -"tunnlar." +"This wizard will take you through the various options available for creating" +" tunnels in I2P." +msgstr "Guiden tar dig igenom de olika inställningsmöjligheterna för att skapa tunnlar." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191 msgid "" -"The first thing to decide is whether you want to create a server or a client " -"tunnel." -msgstr "" -"Det första är att bestämma om det skall vara en server- eller klient-tunnel. " +"The first thing to decide is whether you want to create a server or a client" +" tunnel." +msgstr "Det första är att bestämma om det skall vara en server- eller klient-tunnel. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193 msgid "" -"If you need to connect to a remote service, such as an IRC server inside I2P " -"or a code repository, then you will require a CLIENT tunnel." -msgstr "" -"Om du ansluter till en fjärrtjänst sÃ¥ som tex en IRC-server inom I2P, behövs " -"en KLIENT-tunnel. " +"If you need to connect to a remote service, such as an IRC server inside I2P" +" or a code repository, then you will require a CLIENT tunnel." +msgstr "Om du ansluter till en fjärrtjänst sÃ¥ som tex en IRC-server inom I2P, behövs en KLIENT-tunnel. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195 msgid "" "On the other hand, if you wish to host a service for others to connect to " "you'll need to create a SERVER tunnel." -msgstr "" -"Men om du vill göra en tjänst tillgänglig för andra behövs en SERVER-tunnel." +msgstr "Men om du vill göra en tjänst tillgänglig för andra behövs en SERVER-tunnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197 msgid "Server Tunnel" @@ -987,32 +974,25 @@ msgstr "Det finns flera typer av tunnlar att välja pÃ¥:" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225 msgid "Basic tunnel for connecting to a single service inside I2P." -msgstr "" -"Grundläggande tunnel för anslutning till en snigel tjänst innanför I2P. " +msgstr "Grundläggande tunnel för anslutning till en snigel tjänst innanför I2P. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269 msgid "" "Try this if none of the tunnel types below fit your requirements, or you " "don't know what type of tunnel you need." -msgstr "" -"Prova detta om ingen av valen passar eller du inte vet vilken typ av tunnel " -"som behövs." +msgstr "Prova detta om ingen av valen passar eller du inte vet vilken typ av tunnel som behövs." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229 msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P." -msgstr "" -"Tunneln agerar som en HTTP-proxy för att komma Ã¥t eepsites innanför I2P. " +msgstr "Tunneln agerar som en HTTP-proxy för att komma Ã¥t eepsites innanför I2P. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231 msgid "" "Set your browser to use this tunnel as an http proxy, or set your " -"\"http_proxy\" environment variable for command-line applications in GNU/" -"Linux." -msgstr "" -"Peka din webbläsare pÃ¥ denna tunnel som en http-proxy eller ställ in " -"miljövariabeln \"http_proxy\" för terminal baserade applikationer i GNU/" -"Linux." +"\"http_proxy\" environment variable for command-line applications in " +"GNU/Linux." +msgstr "Peka din webbläsare pÃ¥ denna tunnel som en http-proxy eller ställ in miljövariabeln \"http_proxy\" för terminal baserade applikationer i GNU/Linux." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233 msgid "" @@ -1034,9 +1014,7 @@ msgstr "Med denna tunneltyp kan IRC-klienter ansluta till IRC-nät inom I2P " msgid "" "Each IRC network in I2P that you wish to connect to will require its own " "tunnel. (See Also, SOCKS IRC)" -msgstr "" -"Varje IRC-nät inom I2P som du vill ansluta till kräver en egen tunnel (Se " -"även: SOCKS IRC) " +msgstr "Varje IRC-nät inom I2P som du vill ansluta till kräver en egen tunnel (Se även: SOCKS IRC) " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241 msgid "A tunnel that implements the SOCKS protocol." @@ -1046,9 +1024,7 @@ msgstr "En tunnel som implementerar SOCKS protokollet." msgid "" "This enables both TCP and UDP connections to be made through a SOCKS " "outproxy within I2P." -msgstr "" -"Detta möjliggör bÃ¥de TCP och UDP anslutningar genom SOCKS utgÃ¥ende-proxy " -"innanför I2P " +msgstr "Detta möjliggör bÃ¥de TCP och UDP anslutningar genom SOCKS utgÃ¥ende-proxy innanför I2P " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245 msgid "" @@ -1061,27 +1037,20 @@ msgid "" "With this tunnel type, IRC networks in I2P can be reached by typing the I2P " "address into your IRC client, and configuring the IRC client to use this " "SOCKS tunnel." -msgstr "" -"Med denna tunnel typen kan IRC-nät inom I2P nÃ¥s genom att skriva in I2P " -"adressen i IRC-klienten och konfigurera IRC-klienten att använda denna SOCKS-" -"tunneln." +msgstr "Med denna tunnel typen kan IRC-nät inom I2P nÃ¥s genom att skriva in I2P adressen i IRC-klienten och konfigurera IRC-klienten att använda denna SOCKS-tunneln." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249 msgid "" "This means that only one I2P tunnel is required rather than a separate " "tunnel per IRC network." -msgstr "" -"Detta innebär att enbart en I2P-tunnel behövs istället för en tunnel per IRC-" -"nät." +msgstr "Detta innebär att enbart en I2P-tunnel behövs istället för en tunnel per IRC-nät." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251 msgid "" "IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P " "is known, though it depends on whether or not the outproxy has been blocked " "by the IRC network." -msgstr "" -"IRC-nät utanför I2P kan nÃ¥s om en SOCKS-proxy innanför I2P är känd, men det " -"bror pÃ¥ om utgÃ¥ende-proxy har blockerats av IRC-nätet." +msgstr "IRC-nät utanför I2P kan nÃ¥s om en SOCKS-proxy innanför I2P är känd, men det bror pÃ¥ om utgÃ¥ende-proxy har blockerats av IRC-nätet." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253 msgid "A client tunnel that implements the HTTP CONNECT command." @@ -1091,9 +1060,7 @@ msgstr "En klient-tunnel som implementerar HTTP CONNECT kommandot. " msgid "" "This enables TCP connections to be made through an HTTP outproxy, assuming " "the proxy supports the CONNECT command." -msgstr "" -"Detta möjliggör TCP anslutningar genom en HTTP utgÃ¥ende-proxy om proxyn " -"stödjer CONNECT kommandot" +msgstr "Detta möjliggör TCP anslutningar genom en HTTP utgÃ¥ende-proxy om proxyn stödjer CONNECT kommandot" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:257 msgid "A customised client tunnel for Streamr." @@ -1115,9 +1082,7 @@ msgstr "Använd denna denna typ av tunnel om du vill köra en eepsite." msgid "" "A customised server tunnel that can both serve HTTP data and connect to " "other server tunnels." -msgstr "" -"En anpassad server tunnel som hanterar bÃ¥de HTTP data och anslutningar till " -"andra server-tunnlar." +msgstr "En anpassad server tunnel som hanterar bÃ¥de HTTP data och anslutningar till andra server-tunnlar." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277 msgid "This tunnel type is predominantly used when running a Seedless server." @@ -1131,9 +1096,7 @@ msgstr "En server-tunnel för IRC-Nät innanför I2P." msgid "" "Usually, a separate tunnel needs to be created for each IRC server that is " "to be accessible inside I2P." -msgstr "" -"Vanligtvis behövs en separat tunnel för varje IRC-server som skall anslutas " -"till innanför I2P." +msgstr "Vanligtvis behövs en separat tunnel för varje IRC-server som skall anslutas till innanför I2P." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:283 msgid "A customised server tunnel for Streamr." @@ -1147,17 +1110,13 @@ msgstr "Välj namn och beskrivning av tunneln." msgid "" "These can be anything you want - they are just for ease of identifying the " "tunnel in the routerconsole." -msgstr "" -"Kan vad som helst, används enbart för att enkelt identifiera tunneln i " -"routerkonsolen " +msgstr "Kan vad som helst, används enbart för att enkelt identifiera tunneln i routerkonsolen " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354 msgid "" "If you know of any outproxies for this type of tunnel (either HTTP or " "SOCKS), fill them in below." -msgstr "" -"Om du känner till nÃ¥gra utgÃ¥ende proxies för denna typen av tunnlar (HTTP " -"eller SOCKS), fyll i dem nedan. " +msgstr "Om du känner till nÃ¥gra utgÃ¥ende proxies för denna typen av tunnlar (HTTP eller SOCKS), fyll i dem nedan. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356 msgid "Separate multiple proxies with commas." @@ -1179,9 +1138,7 @@ msgstr "Kan vara hela base 64 mÃ¥lsnyckeln eller en I2P URL frÃ¥n adressboken." msgid "" "This is the IP that your service is running on, this is usually on the same " "machine so 127.0.0.1 is autofilled." -msgstr "" -"Detta är IP-adressen som tjänsten körs pÃ¥, detta är vanligtvis pÃ¥ samma " -"maskin sÃ¥ 127.0.0.1 fylls i automatiskt. " +msgstr "Detta är IP-adressen som tjänsten körs pÃ¥, detta är vanligtvis pÃ¥ samma maskin sÃ¥ 127.0.0.1 fylls i automatiskt. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429 msgid "This is the port that the service is accepting connections on." @@ -1199,9 +1156,7 @@ msgstr "Detta är ocksÃ¥ en klient-port för HTTPBidir server-tunneln." msgid "" "How do you want this tunnel to be accessed? By just this machine, your " "entire subnet, or external internet?" -msgstr "" -"Hur du vill att tunneln ska nÃ¥s? Enbart denna maskinen, ditt lokala nät " -"eller hela internet? " +msgstr "Hur du vill att tunneln ska nÃ¥s? Enbart denna maskinen, ditt lokala nät eller hela internet? " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:473 msgid "You will most likely want to just allow 127.0.0.1" @@ -1218,10 +1173,7 @@ msgid "" "This can be useful for frequently-used tunnels (especially server tunnels), " "but for tunnels that are only used occassionally it would mean that the I2P " "router is creating and maintaining unnecessary tunnels." -msgstr "" -"Detta kan vara användbart för tunnlar som används ofta (tex server-tunnlar) " -"men för tunnlar som används sällan innebär det att onödiga tunnlar " -"upprättas. " +msgstr "Detta kan vara användbart för tunnlar som används ofta (tex server-tunnlar) men för tunnlar som används sällan innebär det att onödiga tunnlar upprättas. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543 msgid "The wizard has now collected enough information to create your tunnel." @@ -1231,17 +1183,13 @@ msgstr "Guiden hat samlat tillräckligt med information för att skapa tunneln. msgid "" "Upon clicking the Save button below, the wizard will set up the tunnel, and " "take you back to the main I2PTunnel page." -msgstr "" -"När du klickar pÃ¥ \"spara\" kommer guiden att skapa tunneln och sedan ta dig " -"till sidan för tunnlar." +msgstr "När du klickar pÃ¥ \"spara\" kommer guiden att skapa tunneln och sedan ta dig till sidan för tunnlar." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550 msgid "" "Because you chose to automatically start the tunnel when the router starts, " "you don't have to do anything further." -msgstr "" -"Efter som du valt att starta tunneln samtidigt som routern startas behövs " -"inget mer göras. " +msgstr "Efter som du valt att starta tunneln samtidigt som routern startas behövs inget mer göras. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552 msgid "The router will start the tunnel once it has been set up." @@ -1251,9 +1199,7 @@ msgstr "Routern starta tunneln när den skapats. " msgid "" "Because you chose not to automatically start the tunnel, you will have to " "manually start it." -msgstr "" -"Efter som du valt att inte starta tunneln samtidigt som routern startas, " -"behövs den startas manuellt." +msgstr "Efter som du valt att inte starta tunneln samtidigt som routern startas, behövs den startas manuellt." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558 msgid "" @@ -1269,18 +1215,14 @@ msgstr "Nedan är en sammanfattning över valen du kan göra:" msgid "" "Alongside these basic settings, there are a number of advanced options for " "tunnel configuration." -msgstr "" -"Vid sidan om dessa grundägande inställningar finns att par avancerade val " -"för tunneln. " +msgstr "Vid sidan om dessa grundägande inställningar finns att par avancerade val för tunneln. " #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:662 msgid "" "The wizard will set reasonably sensible default values for these, but you " "can view and/or edit these by clicking on the tunnel's name in the main " "I2PTunnel page." -msgstr "" -"Guiden väljer lämpliga värden för dessa. Men du kan ändra/se värdena pÃ¥ " -"huvudsidan för I2P-tunnlar." +msgstr "Guiden väljer lämpliga värden för dessa. Men du kan ändra/se värdena pÃ¥ huvudsidan för I2P-tunnlar." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704 msgid "Previous" diff --git a/apps/jetty/java/src/net/i2p/jetty/JettyStart.java b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java new file mode 100644 index 0000000000000000000000000000000000000000..f5b3295b546deeff4525c7aceab865df990c72d6 --- /dev/null +++ b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java @@ -0,0 +1,170 @@ +package net.i2p.jetty; + +// Contains code from org.mortbay.xml.XmlConfiguation: + +// ======================================================================== +// Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +import net.i2p.I2PAppContext; +import net.i2p.app.*; +import static net.i2p.app.ClientAppState.*; + +import org.mortbay.component.LifeCycle; +import org.mortbay.resource.Resource; +import org.mortbay.xml.XmlConfiguration; + +/** + * Start Jetty where the args are one or more XML files. + * Save a reference to the Server so it can be cleanly stopped later. + * + * This is like XmlConfiguration.main(), which is essentially what + * org.mortbay.start.Main does. + * + * @since 0.9.4 + */ +public class JettyStart implements ClientApp { + + private final I2PAppContext _context; + private final ClientAppManager _mgr; + private final String[] _args; + private final List<LifeCycle> _jettys; + private volatile ClientAppState _state; + + /** + * All args must be XML file names. + * Does not support any of the other argument types from org.mortbay.start.Main. + */ + public JettyStart(I2PAppContext context, ClientAppManager mgr, String[] args) throws Exception { + _state = UNINITIALIZED; + _context = context; + _mgr = mgr; + _args = args; + _jettys = new ArrayList(args.length); + parseArgs(args); + _state = INITIALIZED; + } + + /** + * Modified from XmlConfiguration.main() + */ + public void parseArgs(String[] args) throws Exception { + Properties properties=new Properties(); + XmlConfiguration last=null; + for (int i = 0; i < args.length; i++) { + if (args[i].toLowerCase().endsWith(".properties")) { + properties.load(Resource.newResource(args[i]).getInputStream()); + } else { + XmlConfiguration configuration = new XmlConfiguration(Resource.newResource(args[i]).getURL()); + if (last!=null) + configuration.getIdMap().putAll(last.getIdMap()); + if (properties.size()>0) + configuration.setProperties(properties); + Object o = configuration.configure(); + if (o instanceof LifeCycle) + _jettys.add((LifeCycle)o); + last=configuration; + } + } + } + + public void startup() { + if (_state != INITIALIZED) + return; + if (_jettys.isEmpty()) { + changeState(START_FAILED); + } else { + (new Starter()).start(); + } + } + + private class Starter extends Thread { + public Starter() { + super("JettyStarter"); + } + + /** + * Modified from XmlConfiguration.main() + */ + public void run() { + changeState(STARTING); + for (LifeCycle lc : _jettys) { + if (!lc.isRunning()) { + try { + lc.start(); + } catch (Exception e) { + changeState(START_FAILED, e); + return; + } + } + } + changeState(RUNNING); + } + } + + public void shutdown(String[] args) { + if (_state != RUNNING) + return; + if (_jettys.isEmpty()) { + changeState(STOPPED); + } else { + (new Stopper()).start(); + } + } + + private class Stopper extends Thread { + public Stopper() { + super("JettyStopper"); + } + + public void run() { + changeState(STOPPING); + for (LifeCycle lc : _jettys) { + if (lc.isRunning()) { + try { + lc.stop(); + } catch (Exception e) { + changeState(STOPPING, e); + } + } + } + changeState(STOPPED); + } + } + + public ClientAppState getState() { + return _state; + } + + public String getName() { + return "Jetty"; + } + + public String getDisplayName() { + return "Jetty " + Arrays.toString(_args); + } + + private void changeState(ClientAppState state) { + changeState(state, null); + } + + private synchronized void changeState(ClientAppState state, Exception e) { + _state = state; + _mgr.notify(this, state, null, e); + } +} diff --git a/apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkClient.java b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkClient.java similarity index 100% rename from apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkClient.java rename to apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkClient.java diff --git a/apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkSend.java b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkSend.java similarity index 100% rename from apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkSend.java rename to apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkSend.java diff --git a/apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkServer.java b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkServer.java similarity index 100% rename from apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkServer.java rename to apps/ministreaming/java/test/junit/net/i2p/client/streaming/StreamSinkServer.java diff --git a/apps/ministreaming/java/test/net/i2p/client/streaming/TestSwarm.java b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/TestSwarm.java similarity index 100% rename from apps/ministreaming/java/test/net/i2p/client/streaming/TestSwarm.java rename to apps/ministreaming/java/test/junit/net/i2p/client/streaming/TestSwarm.java diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java index 3aed6631533b7853db7c07b8a312d6311eea2f7d..3e612d166c8f37de7a8f92d183348965da498b9c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java @@ -558,10 +558,22 @@ public class ConsoleUpdateManager implements UpdateManager { * Call once for each type/method pair. */ public void register(Updater updater, UpdateType type, UpdateMethod method, int priority) { + // DEBUG slow start for snark updates + // For 0.9.4 update, only for dev builds + // For 0.9.5 update, only for dev builds and 1% more + // Remove this in 0.9.6 or 0.9.7 + if (method == TORRENT && RouterVersion.BUILD == 0 && _context.random().nextInt(100) != 0) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Ignoring torrent registration"); + return; + } RegisteredUpdater ru = new RegisteredUpdater(updater, type, method, priority); if (_log.shouldLog(Log.INFO)) _log.info("Registering " + ru); - _registeredUpdaters.add(ru); + if (!_registeredUpdaters.add(ru)) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Duplicate registration " + ru); + } } public void unregister(Updater updater, UpdateType type, UpdateMethod method) { @@ -575,7 +587,10 @@ public class ConsoleUpdateManager implements UpdateManager { RegisteredChecker rc = new RegisteredChecker(updater, type, method, priority); if (_log.shouldLog(Log.INFO)) _log.info("Registering " + rc); - _registeredCheckers.add(rc); + if (!_registeredCheckers.add(rc)) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Duplicate registration " + rc); + } } public void unregister(Checker updater, UpdateType type, UpdateMethod method) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java similarity index 89% rename from apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java rename to apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java index 1c1c39ac3638111c86045a2a3e35a7bef004de82..276a6a5df205421a1ad0d4e2ced3ec14e065b8b1 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java @@ -18,15 +18,15 @@ import java.util.TreeMap; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.router.RouterContext; -import net.i2p.router.Shitlist; +import net.i2p.router.Banlist; /** - * Moved from Shitlist.java + * Moved from Banlist.java */ -public class ShitlistRenderer { +public class BanlistRenderer { private final RouterContext _context; - public ShitlistRenderer(RouterContext context) { + public BanlistRenderer(RouterContext context) { _context = context; } @@ -40,9 +40,9 @@ public class ShitlistRenderer { StringBuilder buf = new StringBuilder(1024); // move to the jsp //buf.append("<h2>Banned Peers</h2>"); - Map<Hash, Shitlist.Entry> entries = new TreeMap(new HashComparator()); + Map<Hash, Banlist.Entry> entries = new TreeMap(new HashComparator()); - entries.putAll(_context.shitlist().getEntries()); + entries.putAll(_context.banlist().getEntries()); if (entries.isEmpty()) { buf.append("<i>").append(_("none")).append("</i>"); out.write(buf.toString()); @@ -51,9 +51,9 @@ public class ShitlistRenderer { buf.append("<ul>"); - for (Map.Entry<Hash, Shitlist.Entry> e : entries.entrySet()) { + for (Map.Entry<Hash, Banlist.Entry> e : entries.entrySet()) { Hash key = e.getKey(); - Shitlist.Entry entry = e.getValue(); + Banlist.Entry entry = e.getValue(); long expires = entry.expireOn-_context.clock().now(); if (expires <= 0) continue; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java index 038d61d1bcf48fb6886914ab19dd606bffff7c82..851b7ab0b96535135224dacf09974b52d15e5bdc 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java @@ -23,7 +23,6 @@ import org.mortbay.jetty.handler.ContextHandlerCollection; * Saves changes to clients.config or webapps.config */ public class ConfigClientsHandler extends FormHandler { - private Map _settings; @Override protected void processForm() { @@ -171,8 +170,6 @@ public class ConfigClientsHandler extends FormHandler { } - public void setSettings(Map settings) { _settings = new HashMap(settings); } - private void saveClientChanges() { List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context); for (int cur = 0; cur < clients.size(); cur++) { @@ -216,15 +213,8 @@ public class ConfigClientsHandler extends FormHandler { } ClientAppConfig.writeClientAppConfig(_context, clients); - addFormNotice(_("Client configuration saved successfully - restart required to take effect.")); - } - - /** curses Jetty for returning arrays */ - private String getJettyString(String key) { - String[] arr = (String[]) _settings.get(key); - if (arr == null) - return null; - return arr[0].trim(); + addFormNotice(_("Client configuration saved successfully")); + addFormNotice(_("Restart required to take effect")); } // STUB for stopClient, not completed yet. @@ -248,7 +238,7 @@ public class ConfigClientsHandler extends FormHandler { return; } ClientAppConfig ca = clients.get(i); - LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _log); + LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _context, _log); addFormNotice(_("Client") + ' ' + _(ca.clientName) + ' ' + _("started") + '.'); } @@ -264,7 +254,7 @@ public class ConfigClientsHandler extends FormHandler { } private void saveWebAppChanges() { - Properties props = RouterConsoleRunner.webAppProperties(); + Properties props = RouterConsoleRunner.webAppProperties(_context); Set keys = props.keySet(); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { String name = (String)iter.next(); @@ -275,7 +265,7 @@ public class ConfigClientsHandler extends FormHandler { if (! RouterConsoleRunner.ROUTERCONSOLE.equals(app)) props.setProperty(name, "" + (val != null)); } - RouterConsoleRunner.storeWebAppProperties(props); + RouterConsoleRunner.storeWebAppProperties(_context, props); addFormNotice(_("WebApp configuration saved.")); } @@ -416,11 +406,12 @@ public class ConfigClientsHandler extends FormHandler { if (intfc != null) changes.put(ClientManagerFacadeImpl.PROP_CLIENT_HOST, intfc); String user = getJettyString("user"); - if (user != null) - changes.put(ConfigClientsHelper.PROP_USER, user); String pw = getJettyString("pw"); - if (pw != null) - changes.put(ConfigClientsHelper.PROP_PW, pw); + if (user != null && pw != null && user.length() > 0 && pw.length() > 0) { + ConsolePasswordManager mgr = new ConsolePasswordManager(_context); + mgr.saveHash(ConfigClientsHelper.PROP_AUTH, user, pw); + addFormNotice(_("Added user {0}", user)); + } String mode = getJettyString("mode"); boolean disabled = "0".equals(mode); boolean ssl = "2".equals(mode); @@ -433,9 +424,10 @@ public class ConfigClientsHandler extends FormHandler { boolean all = "0.0.0.0".equals(intfc) || "0:0:0:0:0:0:0:0".equals(intfc) || "::".equals(intfc); changes.put(ConfigClientsHelper.BIND_ALL_INTERFACES, Boolean.toString(all)); - if (_context.router().saveConfig(changes, null)) - addFormNotice(_("Interface configuration saved successfully - restart required to take effect.")); - else + if (_context.router().saveConfig(changes, null)) { + addFormNotice(_("Interface configuration saved")); + addFormNotice(_("Restart required to take effect")); + } else addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs")); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index b4a1155ffcc4eee69439d2350f88a7674905af6b..80251d217a2818eecc8a016c77d914c7980de7c6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -24,8 +24,6 @@ public class ConfigClientsHelper extends HelperBase { public static final String PROP_ENABLE_SSL = "i2cp.SSL"; /** from ClientMessageEventListener */ public static final String PROP_AUTH = "i2cp.auth"; - public static final String PROP_USER = "i2cp.username"; - public static final String PROP_PW = "i2cp.password"; public ConfigClientsHelper() {} @@ -35,16 +33,6 @@ public class ConfigClientsHelper extends HelperBase { Integer.toString(ClientManagerFacadeImpl.DEFAULT_PORT)); } - /** @since 0.8.3 */ - public String getUser() { - return _context.getProperty(PROP_USER, ""); - } - - /** @since 0.8.3 */ - public String getPw() { - return _context.getProperty(PROP_PW, ""); - } - /** @since 0.8.3 */ public String i2cpModeChecked(int mode) { boolean disabled = _context.getBooleanProperty(PROP_DISABLE_EXTERNAL); @@ -128,7 +116,7 @@ public class ConfigClientsHelper extends HelperBase { StringBuilder buf = new StringBuilder(1024); buf.append("<table>\n"); buf.append("<tr><th align=\"right\">" + _("WebApp") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Control") + "</th><th align=\"left\">" + _("Description") + "</th></tr>\n"); - Properties props = RouterConsoleRunner.webAppProperties(); + Properties props = RouterConsoleRunner.webAppProperties(_context); Set<String> keys = new TreeSet(props.keySet()); for (Iterator<String> iter = keys.iterator(); iter.hasNext(); ) { String name = iter.next(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java index e944f367eca055df5bac60f68848f5df5268539f..c8b3d0e74545f8f1d3b2ad133e999030afc74583 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java @@ -1,11 +1,9 @@ package net.i2p.router.web; import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Set; -import java.util.Map; import net.i2p.data.DataHelper; @@ -16,8 +14,6 @@ import net.i2p.data.DataHelper; */ public class ConfigHomeHandler extends FormHandler { - private Map _settings; - @Override protected void processForm() { if (_action == null) return; @@ -106,14 +102,4 @@ public class ConfigHomeHandler extends FormHandler { addFormError(_("Unsupported")); } } - - public void setSettings(Map settings) { _settings = new HashMap(settings); } - - /** curses Jetty for returning arrays */ - private String getJettyString(String key) { - String[] arr = (String[]) _settings.get(key); - if (arr == null) - return null; - return arr[0].trim(); - } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java index cd1f103caf3cc9d109c708681c269301e8b67e76..67c47fbb7f7a6b88cb1be0a5dee5289b27745330 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java @@ -280,9 +280,10 @@ public class ConfigNetHandler extends FormHandler { _upnp) { // This is minor, don't set restartRequired if (_upnp) - addFormNotice(_("Enabling UPnP, restart required to take effect")); + addFormNotice(_("Enabling UPnP")); else - addFormNotice(_("Disabling UPnP, restart required to take effect")); + addFormNotice(_("Disabling UPnP")); + addFormNotice(_("Restart required to take effect")); } changes.put(TransportManager.PROP_ENABLE_UPNP, "" + _upnp); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java index 5af095d2c49489eec5101cf5e977eac81b5c9aa5..350bae04924daf061338f888ba2f3918b800033f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java @@ -20,7 +20,7 @@ public class ConfigPeerHandler extends FormHandler { } else if (_action.equals(_("Ban peer until restart"))) { Hash h = getHash(); if (h != null) { - _context.shitlist().shitlistRouterForever(h, _("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>"); + _context.banlist().banlistRouterForever(h, _("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>"); addFormNotice(_("Peer") + " " + _peer + " " + _("banned until restart") ); return; } @@ -28,8 +28,8 @@ public class ConfigPeerHandler extends FormHandler { } else if (_action.equals(_("Unban peer"))) { Hash h = getHash(); if (h != null) { - if (_context.shitlist().isShitlisted(h)) { - _context.shitlist().unshitlistRouter(h); + if (_context.banlist().isBanlisted(h)) { + _context.banlist().unbanlistRouter(h); addFormNotice(_("Peer") + " " + _peer + " " + _("unbanned") ); } else addFormNotice(_("Peer") + " " + _peer + " " + _("is not currently banned") ); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java index 53da37bc7ade63700a0d61d44fc48269888f84ac..09f7a8934378be1804e73a7317434fcb15db5d22 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java @@ -11,7 +11,6 @@ import net.i2p.router.networkdb.reseed.Reseeder; * @since 0.8.3 */ public class ConfigReseedHandler extends FormHandler { - private Map _settings; private final Map<String, String> changes = new HashMap(); private final List<String> removes = new ArrayList(); @@ -34,16 +33,6 @@ public class ConfigReseedHandler extends FormHandler { } addFormError(_("Unsupported") + ' ' + _action + '.'); } - - public void setSettings(Map settings) { _settings = new HashMap(settings); } - - /** curses Jetty for returning arrays */ - private String getJettyString(String key) { - String[] arr = (String[]) _settings.get(key); - if (arr == null) - return null; - return arr[0].trim(); - } /** @since 0.8.9 */ private void saveString(String config, String param) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java index 3419ba2146c125cacb03a170a7e36032bed2bc06..5a1b6c807b854e0fe0d20895a98c8307e25f990c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java @@ -8,6 +8,7 @@ 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.PortMapper; import net.i2p.util.SystemVersion; import net.i2p.util.VersionComparator; @@ -257,7 +258,9 @@ public class ConfigServiceHandler extends FormHandler { } // releases <= 0.6.5 deleted the entry completely if (shouldLaunchBrowser && !found) { - ClientAppConfig ca = new ClientAppConfig(UrlLauncher.class.getName(), "consoleBrowser", "http://127.0.0.1:7657", 5, false); + int port = _context.portMapper().getPort(PortMapper.SVC_CONSOLE, RouterConsoleRunner.DEFAULT_LISTEN_PORT); + ClientAppConfig ca = new ClientAppConfig(UrlLauncher.class.getName(), "consoleBrowser", + "http://127.0.0.1:" + port + '/', 5, false); clients.add(ca); } ClientAppConfig.writeClientAppConfig(_context, clients); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java index 07f220f7a096268399173627aeb66170b7de1c7f..e867a8b32fa6a6187d26b8b1f21dfb4bccafd133 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java @@ -116,9 +116,10 @@ public class ConfigStatsHandler extends FormHandler { addFormNotice(_("Stat filter and location updated successfully to") + ": " + stats.toString()); if (fullChanged) { if (_isFull) - addFormNotice(_("Full statistics enabled - restart required to take effect")); + addFormNotice(_("Full statistics enabled")); else - addFormNotice(_("Full statistics disabled - restart required to take effect")); + addFormNotice(_("Full statistics disabled")); + addFormNotice(_("Restart required to take effect")); } if (graphsChanged) addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>")); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java index 61d4969330f498b2607cb622c1deff980c04902f..b890f1bc668ae91d6e97bd0d41512b08181e3c03 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java @@ -1,12 +1,16 @@ package net.i2p.router.web; import java.util.ArrayList; +import java.text.Collator; +import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; import java.util.StringTokenizer; +import java.util.TreeMap; import net.i2p.stat.FrequencyStat; import net.i2p.stat.Rate; @@ -17,9 +21,9 @@ import net.i2p.util.Log; public class ConfigStatsHelper extends HelperBase { private Log _log; private String _filter; - private Set _filters; + private Set<String> _filters; /** list of names of stats which are remaining, ordered by nested groups */ - private List _stats; + private List<String> _stats; private String _currentStatName; private String _currentGraphName; private String _currentStatDescription; @@ -43,11 +47,11 @@ public class ConfigStatsHelper extends HelperBase { _log = _context.logManager().getLog(ConfigStatsHelper.class); _stats = new ArrayList(); - Map groups = _context.statManager().getStatsByGroup(); - for (Iterator iter = groups.values().iterator(); iter.hasNext(); ) { - Set stats = (Set)iter.next(); - for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) - _stats.add(statIter.next()); + Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup(); + Map<String, Set<String>> groups = new TreeMap(new AlphaComparator()); + groups.putAll(unsorted); + for (Set<String> stats : groups.values()) { + _stats.addAll(stats); } _filter = _context.statManager().getStatFilter(); if (_filter == null) @@ -149,4 +153,16 @@ public class ConfigStatsHelper extends HelperBase { public boolean getIsFull() { return _context.getBooleanProperty(StatManager.PROP_STAT_FULL); } + + /** + * Translated sort + * @since 0.9.4 + */ + private class AlphaComparator implements Comparator<String> { + public int compare(String lhs, String rhs) { + String lname = _(lhs); + String rname = _(rhs); + return Collator.getInstance().compare(lname, rname); + } + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java index 7d5c2677697f409091aec6ec3a349a99d6f083e7..9965f63c305c7afd034e3219cb0ef6202a3388b6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java @@ -1,7 +1,6 @@ package net.i2p.router.web; import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; @@ -16,8 +15,6 @@ import net.i2p.data.DataHelper; * @since 0.9.1 */ public class ConfigSummaryHandler extends FormHandler { - - private Map _settings; @Override protected void processForm() { @@ -144,16 +141,6 @@ public class ConfigSummaryHandler extends FormHandler { } } - public void setSettings(Map settings) { _settings = new HashMap(settings); } - - /** curses Jetty for returning arrays */ - private String getJettyString(String key) { - String[] arr = (String[]) _settings.get(key); - if (arr == null) - return null; - return arr[0].trim(); - } - public void setMovingAction() { for (Object o : _settings.keySet()) { if (!(o instanceof String)) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java index 9616e74b348c03408964e0a063fa239ab3670113..923395096f9d384d89fa878b41c3f9b6fb0c4a07 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java @@ -13,8 +13,13 @@ public class ConfigUIHandler extends FormHandler { @Override protected void processForm() { - if (_shouldSave) + if (_shouldSave) { saveChanges(); + } else if (_action.equals(_("Delete selected"))) { + delUser(); + } else if (_action.equals(_("Add user"))) { + addUser(); + } } public void setShouldsave(String moo) { _shouldSave = true; } @@ -51,4 +56,48 @@ public class ConfigUIHandler extends FormHandler { addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs.")); } } + + private void addUser() { + String name = getJettyString("name"); + if (name == null || name.length() <= 0) { + addFormError(_("No user name entered")); + return; + } + String pw = getJettyString("pw"); + if (pw == null || pw.length() <= 0) { + addFormError(_("No password entered")); + return; + } + ConsolePasswordManager mgr = new ConsolePasswordManager(_context); + // rfc 2617 + if (mgr.saveMD5(RouterConsoleRunner.PROP_CONSOLE_PW, RouterConsoleRunner.JETTY_REALM, name, pw)) { + if (!_context.getBooleanProperty(RouterConsoleRunner.PROP_PW_ENABLE)) + _context.router().saveConfig(RouterConsoleRunner.PROP_PW_ENABLE, "true"); + addFormNotice(_("Added user {0}", name)); + addFormNotice(_("Restart required to take effect")); + } else { + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs.")); + } + } + + private void delUser() { + ConsolePasswordManager mgr = new ConsolePasswordManager(_context); + boolean success = false; + for (Object o : _settings.keySet()) { + if (!(o instanceof String)) + continue; + String k = (String) o; + if (!k.startsWith("delete_")) + continue; + k = k.substring(7); + if (mgr.remove(RouterConsoleRunner.PROP_CONSOLE_PW, k)) { + addFormNotice(_("Removed user {0}", k)); + success = true; + } else { + addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs.")); + } + } + if (success) + addFormNotice(_("Restart required to take effect")); + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java index 990572ab489aacaf8fd214a602018d4cef450361..273c8521d8ce656961b62f83b911b169576deac5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java @@ -2,8 +2,9 @@ package net.i2p.router.web; import java.io.File; import java.util.Iterator; -import java.util.TreeSet; +import java.util.Map; import java.util.Set; +import java.util.TreeSet; public class ConfigUIHelper extends HelperBase { @@ -87,4 +88,38 @@ public class ConfigUIHelper extends HelperBase { } return buf.toString(); } + + /** @since 0.9.4 */ + public String getPasswordForm() { + StringBuilder buf = new StringBuilder(512); + ConsolePasswordManager mgr = new ConsolePasswordManager(_context); + Map<String, String> userpw = mgr.getMD5(RouterConsoleRunner.PROP_CONSOLE_PW); + buf.append("<table>"); + if (userpw.isEmpty()) { + buf.append("<tr><td colspan=\"3\">"); + buf.append(_("Add a user and password to enable.")); + buf.append("</td></tr>"); + } else { + buf.append("<tr><th>") + .append(_("Remove")) + .append("</th><th>") + .append(_("User Name")) + .append("</th><th> </th></tr>\n"); + for (String name : userpw.keySet()) { + buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_") + .append(name) + .append("\"></td><td colspan=\"2\">") + .append(name) + .append("</td></tr>\n"); + } + } + buf.append("<tr><td align=\"center\"><b>") + .append(_("Add")).append(":</b>" + + "</td><td align=\"left\"><input type=\"text\" name=\"name\">" + + "</td><td align=\"left\"><b>"); + buf.append(_("Password")).append(":</b> " + + "<input type=\"password\" size=\"40\" name=\"pw\"></td></tr>" + + "</table>\n"); + return buf.toString(); + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java new file mode 100644 index 0000000000000000000000000000000000000000..681d6bcb3de05f83105009e8adbc3f93bfc4af17 --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java @@ -0,0 +1,213 @@ +package net.i2p.router.web; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.i2p.data.Base64; +import net.i2p.data.DataHelper; +import net.i2p.router.Router; +import net.i2p.router.RouterContext; +import net.i2p.router.util.RouterPasswordManager; + +//import org.mortbay.jetty.security.UnixCrypt; + +/** + * Manage both plaintext and salted/hashed password storage in + * router.config. + * + * @since 0.9.4 + */ +public class ConsolePasswordManager extends RouterPasswordManager { + + private static final String PROP_MIGRATED = "routerconsole.passwordManager.migrated"; + // migrate these to hash + private static final String PROP_CONSOLE_OLD = "consolePassword"; + private static final String CONSOLE_USER = "admin"; + + public ConsolePasswordManager(RouterContext ctx) { + super(ctx); + migrateConsole(); + } + + /** + * The username is the salt + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ +/**** + public boolean checkCrypt(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String cr = _context.getProperty(pfx + PROP_CRYPT); + if (cr == null) + return false; + return cr.equals(UnixCrypt.crypt(pw, cr)); + } +****/ + + /** + * Straight MD5. Compatible with Jetty. + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ + public boolean checkMD5(String realm, String subrealm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String hex = _context.getProperty(pfx + PROP_MD5); + if (hex == null) + return false; + return hex.equals(md5Hex(subrealm, user, pw)); + } + + /** + * Get all MD5 usernames and passwords. Compatible with Jetty. + * Any "null" user is NOT included.. + * + * @param realm e.g. i2cp, routerconsole, etc. + * @return Map of usernames to passwords (hex with leading zeros, 32 characters) + */ + public Map<String, String> getMD5(String realm) { + String pfx = realm + '.'; + Map<String, String> rv = new HashMap(4); + for (Map.Entry<String, String> e : _context.router().getConfigMap().entrySet()) { + String prop = e.getKey(); + if (prop.startsWith(pfx) && prop.endsWith(PROP_MD5)) { + String user = prop.substring(0, prop.length() - PROP_MD5.length()).substring(pfx.length()); + String hex = e.getValue(); + if (user.length() > 0 && hex.length() == 32) + rv.put(user, hex); + } + } + return rv; + } + + /** + * Migrate from plaintext to MD5 hash + * Ref: RFC 2617 + * + * @return success or nothing to migrate + */ + private boolean migrateConsole() { + synchronized(ConsolePasswordManager.class) { + if (_context.getBooleanProperty(PROP_MIGRATED)) + return true; + // consolePassword + String pw = _context.getProperty(PROP_CONSOLE_OLD); + if (pw != null) { + Map toAdd = new HashMap(2); + if (pw.length() > 0) { + saveMD5(RouterConsoleRunner.PROP_CONSOLE_PW, RouterConsoleRunner.JETTY_REALM, + CONSOLE_USER, pw); + toAdd.put(RouterConsoleRunner.PROP_PW_ENABLE, "true"); + } + toAdd.put(PROP_MIGRATED, "true"); + List toDel = Collections.singletonList(PROP_CONSOLE_OLD); + return _context.router().saveConfig(toAdd, toDel); + } + return true; + } + } + + /** + * This will fail if + * user contains '#' or '=' or starts with '!' + * The user is the salt. + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return success + */ +/**** + public boolean saveCrypt(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String salt = user != null ? user : ""; + String crypt = UnixCrypt.crypt(pw, salt); + Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_CRYPT, crypt); + List<String> toDel = new ArrayList(4); + toDel.add(pfx + PROP_PW); + toDel.add(pfx + PROP_B64); + toDel.add(pfx + PROP_MD5); + toDel.add(pfx + PROP_SHASH); + return _context.router().saveConfig(toAdd, toDel); + } +****/ + + /** + * Straight MD5, no salt + * Compatible with Jetty and RFC 2617. + * + * @param realm The full realm, e.g. routerconsole.auth.i2prouter, etc. + * @param subrealm to be used in creating the checksum + * @param user non-null, non-empty, already trimmed + * @param pw plain text + * @return if pw verified + */ + public boolean saveMD5(String realm, String subrealm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String hex = md5Hex(subrealm, user, pw); + if (hex == null) + return false; + Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_MD5, hex); + List<String> toDel = new ArrayList(4); + toDel.add(pfx + PROP_PW); + toDel.add(pfx + PROP_B64); + toDel.add(pfx + PROP_CRYPT); + toDel.add(pfx + PROP_SHASH); + return _context.router().saveConfig(toAdd, toDel); + } + + public static void main(String args[]) { + RouterContext ctx = (new Router()).getContext(); + ConsolePasswordManager pm = new ConsolePasswordManager(ctx); + if (!pm.migrate()) + System.out.println("Fail 1"); + if (!pm.migrateConsole()) + System.out.println("Fail 1a"); + + System.out.println("Test plain"); + if (!pm.savePlain("type1", "user1", "pw1")) + System.out.println("Fail 2"); + if (!pm.checkPlain("type1", "user1", "pw1")) + System.out.println("Fail 3"); + + System.out.println("Test B64"); + if (!pm.saveB64("type2", "user2", "pw2")) + System.out.println("Fail 4"); + if (!pm.checkB64("type2", "user2", "pw2")) + System.out.println("Fail 5"); + + System.out.println("Test MD5"); + if (!pm.saveMD5("type3", "realm", "user3", "pw3")) + System.out.println("Fail 6"); + if (!pm.checkMD5("type3", "realm", "user3", "pw3")) + System.out.println("Fail 7"); + + //System.out.println("Test crypt"); + //if (!pm.saveCrypt("type4", "user4", "pw4")) + // System.out.println("Fail 8"); + //if (!pm.checkCrypt("type4", "user4", "pw4")) + // System.out.println("Fail 9"); + + System.out.println("Test hash"); + if (!pm.saveHash("type5", "user5", "pw5")) + System.out.println("Fail 10"); + if (!pm.checkHash("type5", "user5", "pw5")) + System.out.println("Fail 11"); + } +} diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java index 2f16cd359bc8d5e4f82aacc4689735c1814b0722..ba5856632a851e85f49bb391cfb14ff79ff4eb37 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java @@ -1,7 +1,9 @@ package net.i2p.router.web; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import net.i2p.router.RouterContext; import net.i2p.util.Log; @@ -18,16 +20,14 @@ import net.i2p.util.Log; public class FormHandler { protected RouterContext _context; protected Log _log; - private String _nonce; + protected Map _settings; + private String _nonce, _nonce1, _nonce2; protected String _action; protected String _method; - protected String _passphrase; private final List<String> _errors; private final List<String> _notices; private boolean _processed; private boolean _valid; - private static final String NONCE_SUFFIX = ".nonce"; - private static final String PREV_SUFFIX = "Prev"; public FormHandler() { _errors = new ArrayList(); @@ -52,7 +52,28 @@ public class FormHandler { public void setNonce(String val) { _nonce = val; } public void setAction(String val) { _action = val; } - public void setPassphrase(String val) { _passphrase = val; } + + /** + * For many forms, it's easiest just to put all the parameters here. + * + * @since 0.9.4 consolidated from numerous FormHandlers + */ + public void setSettings(Map settings) { _settings = new HashMap(settings); } + + /** + * setSettings() must have been called previously + * Curses Jetty for returning arrays. + * + * @since 0.9.4 consolidated from numerous FormHandlers + */ + protected String getJettyString(String key) { + if (_settings == null) + return null; + String[] arr = (String[]) _settings.get(key); + if (arr == null) + return null; + return arr[0].trim(); + } /** * Call this to prevent changes using GET @@ -61,6 +82,15 @@ public class FormHandler { * @since 0.8.2 */ public void storeMethod(String val) { _method = val; } + + /** + * The old nonces from the session + * @since 0.9.4 + */ + public void storeNonces(String n1, String n2) { + _nonce1 = n1; + _nonce2 = n2; + } /** * Override this to perform the final processing (in turn, adding formNotice @@ -147,35 +177,33 @@ public class FormHandler { _valid = false; return; } - if (_nonce == null) { - //addFormError("You trying to mess with me? Huh? Are you?"); - _valid = false; - return; - } // To prevent actions with GET, jsps must call storeMethod() if (_method != null && !"POST".equals(_method)) { addFormError("Invalid form submission, requires POST not " + _method); _valid = false; return; } + // If passwords are turned on, all is assumed good + if (_context.getBooleanProperty(RouterConsoleRunner.PROP_PW_ENABLE)) { + _valid = true; + return; + } + if (_nonce == null) { + //addFormError("You trying to mess with me? Huh? Are you?"); + _valid = false; + return; + } String sharedNonce = System.getProperty("router.consoleNonce"); if ( (sharedNonce != null) && (sharedNonce.equals(_nonce) ) ) { return; } - String nonce = System.getProperty(getClass().getName() + NONCE_SUFFIX); - String noncePrev = nonce + PREV_SUFFIX; - if ( ( (nonce == null) || (!_nonce.equals(nonce)) ) && - ( (noncePrev == null) || (!_nonce.equals(noncePrev)) ) ) { - - String expected = _context.getProperty("consolePassword"); - if ( (expected != null) && (expected.trim().length() > 0) && (expected.equals(_passphrase)) ) { - // ok - } else { - addFormError(_("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")); + if (!_nonce.equals(_nonce1) && !_nonce.equals(_nonce2)) { + addFormError(_("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser.")); _valid = false; - } } } @@ -204,18 +232,13 @@ public class FormHandler { } /** - * Generate a new nonce, store old and new in the system properties. + * Generate a new nonce. * Only call once per page! * @return a new random long as a String * @since 0.8.5 */ public String getNewNonce() { - String prop = getClass().getName() + NONCE_SUFFIX; - String prev = System.getProperty(prop); - if (prev != null) - System.setProperty(prop + PREV_SUFFIX, prev); String rv = Long.toString(_context.random().nextLong()); - System.setProperty(prop, rv); return rv; } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java index c2878b383c61b1f3106e6000b8df380e6ef16518..27cea16d991e54ac6e7d6693b15cceb090eca996 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -29,7 +29,7 @@ public class LogsHelper extends HelperBase { */ public String getLogs() { String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages()); - return _("File location") + ": <b><code>" + _context.logManager().currentFile() + "</code></b><br><br>" + str; + return "<p>" + _("File location") + ": <b><code>" + _context.logManager().currentFile() + "</code></b></p>" + str; } /** @@ -73,10 +73,10 @@ public class LogsHelper extends HelperBase { File f = wrapperLogFile(_context); String str = FileUtil.readTextFile(f.getAbsolutePath(), 250, false); if (str == null) - return _("File not found") + ": <b><code>" + f.getAbsolutePath() + "</code></b>"; + return "<p>" + _("File not found") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p>"; else { str = str.replace("&", "&").replace("<", "<").replace(">", ">"); - return _("File location") + ": <b><code>" + f.getAbsolutePath() + "</code></b> <pre>" + str + "</pre>"; + return "<p>" + _("File location") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p><pre>" + str + "</pre>"; } } @@ -97,6 +97,9 @@ public class LogsHelper extends HelperBase { buf.append("<ul>"); for (int i = msgs.size() - 1; i >= 0; i--) { String msg = msgs.get(i); + // don't display the dup message if it is last + if (i == 0 && msg.contains("↓")) + break; msg = msg.replace("&", "&").replace("<", "<").replace(">", ">"); msg = msg.replace("&darr;", "↓"); // hack - undo the damage (LogWriter) // remove last \n that LogRecordFormatter added diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java index 09d4d0666e0b47100a4c32583a5c9e404035fde6..7ec9b7895e991766b5a124fdad5a6b1cdc6a3d15 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -662,7 +662,7 @@ public class PluginStarter implements Runnable { // quick check, will throw ClassNotFoundException on error LoadClientAppsJob.testClient(app.className, cl); // run this guy now - LoadClientAppsJob.runClient(app.className, app.clientName, argVal, log, pluginThreadGroup, cl); + LoadClientAppsJob.runClient(app.className, app.clientName, argVal, ctx, log, pluginThreadGroup, cl); } else { // If there is some delay, there may be a really good reason for it. // Loading a class would be one of them! diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index a1dce25341cf6eb1ca7f99cbccfaeae0c376884a..aeb3639030cb55d35d76c63a2b0253f77e1e71d3 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -168,7 +168,7 @@ class ProfileOrganizerRenderer { } buf.append("</td><td align=\"right\">").append(num(prof.getIntegrationValue())); buf.append("</td><td align=\"center\">"); - if (_context.shitlist().isShitlisted(peer)) buf.append(_("Banned")); + if (_context.banlist().isBanlisted(peer)) buf.append(_("Banned")); if (prof.getIsFailing()) buf.append(' ').append(_("Failing")); if (_context.commSystem().wasUnreachable(peer)) buf.append(' ').append(_("Unreachable")); Rate failed = prof.getTunnelHistory().getFailedRate().getRate(30*60*1000); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java index 2aa1c2afd758dc9aed089168771bad015cf89520..6645558d5d730a2fc5b48c5c11557bcdf33eb811 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java @@ -46,7 +46,7 @@ public class ProfilesHelper extends HelperBase { renderNavBar(); } catch (IOException ioe) {} if (_full == 3) - getShitlistSummary(); + getBanlistSummary(); else getProfileSummary(); return ""; @@ -64,9 +64,9 @@ public class ProfilesHelper extends HelperBase { } /** @return empty string, writes directly to _out */ - public String getShitlistSummary() { + public String getBanlistSummary() { try { - ShitlistRenderer rend = new ShitlistRenderer(_context); + BanlistRenderer rend = new BanlistRenderer(_context); rend.renderStatusHTML(_out); } catch (IOException ioe) { ioe.printStackTrace(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 2144fc8c1d1606ff809292b1b990bb7716426f1d..d96fe03c12cee11ad0c16e1272255b58ac4be9a7 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -23,11 +23,15 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import net.i2p.I2PAppContext; +import net.i2p.app.ClientAppManager; +import net.i2p.app.ClientAppState; +import static net.i2p.app.ClientAppState.*; import net.i2p.apps.systray.SysTray; import net.i2p.data.Base32; import net.i2p.data.DataHelper; import net.i2p.router.RouterContext; import net.i2p.router.update.ConsoleUpdateManager; +import net.i2p.router.app.RouterApp; import net.i2p.util.Addresses; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; @@ -48,6 +52,7 @@ import org.mortbay.jetty.handler.DefaultHandler; import org.mortbay.jetty.handler.HandlerCollection; import org.mortbay.jetty.handler.RequestLogHandler; import org.mortbay.jetty.nio.SelectChannelConnector; +import org.mortbay.jetty.security.Credential.MD5; import org.mortbay.jetty.security.DigestAuthenticator; import org.mortbay.jetty.security.HashUserRealm; import org.mortbay.jetty.security.Constraint; @@ -65,7 +70,10 @@ import org.mortbay.thread.concurrent.ThreadPool; /** * Start the router console. */ -public class RouterConsoleRunner { +public class RouterConsoleRunner implements RouterApp { + private final RouterContext _context; + private final ClientAppManager _mgr; + private volatile ClientAppState _state = UNINITIALIZED; private static Server _server; private String _listenPort; private String _listenHost; @@ -74,14 +82,21 @@ public class RouterConsoleRunner { private String _webAppsDir; private static final String DEFAULT_WEBAPP_CONFIG_FILENAME = "webapps.config"; + + // Jetty Auth private static final DigestAuthenticator authenticator = new DigestAuthenticator(); + public static final String JETTY_REALM = "i2prouter"; + private static final String JETTY_ROLE = "routerAdmin"; + public static final String PROP_CONSOLE_PW = "routerconsole.auth." + JETTY_REALM; + public static final String PROP_PW_ENABLE = "routerconsole.auth.enable"; + public static final String ROUTERCONSOLE = "routerconsole"; public static final String PREFIX = "webapps."; public static final String ENABLED = ".startOnLoad"; private static final String PROP_KEYSTORE_PASSWORD = "routerconsole.keystorePassword"; private static final String DEFAULT_KEYSTORE_PASSWORD = "changeit"; private static final String PROP_KEY_PASSWORD = "routerconsole.keyPassword"; - private static final String DEFAULT_LISTEN_PORT = "7657"; + public static final int DEFAULT_LISTEN_PORT = 7657; private static final String DEFAULT_LISTEN_HOST = "127.0.0.1"; private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + @@ -125,10 +140,12 @@ public class RouterConsoleRunner { * to both, we can't connect to [::1]:7657 for some reason. * So the wise choice is ::1,127.0.0.1 */ - public RouterConsoleRunner(String args[]) { + public RouterConsoleRunner(RouterContext ctx, ClientAppManager mgr, String args[]) { + _context = ctx; + _mgr = mgr; if (args.length == 0) { // _listenHost and _webAppsDir are defaulted below - _listenPort = DEFAULT_LISTEN_PORT; + _listenPort = Integer.toString(DEFAULT_LISTEN_PORT); } else { boolean ssl = false; for (int i = 0; i < args.length; i++) { @@ -161,14 +178,61 @@ public class RouterConsoleRunner { System.err.println(USAGE); throw new IllegalArgumentException(USAGE); } + _state = INITIALIZED; } public static void main(String args[]) { - startTrayApp(); - RouterConsoleRunner runner = new RouterConsoleRunner(args); - runner.startConsole(); + List<RouterContext> contexts = RouterContext.listContexts(); + if (contexts == null || contexts.isEmpty()) + throw new IllegalStateException("no router context"); + RouterConsoleRunner runner = new RouterConsoleRunner(contexts.get(0), null, args); + runner.startup(); } + /////// ClientApp methods + + /** @since 0.9.4 */ + public void startup() { + changeState(STARTING); + startTrayApp(_context); + startConsole(); + } + + /** @since 0.9.4 */ + public void shutdown(String[] args) { + changeState(STOPPING); + try { + _server.stop(); + } catch (Exception ie) {} + PortMapper portMapper = _context.portMapper(); + portMapper.unregister(PortMapper.SVC_CONSOLE); + portMapper.unregister(PortMapper.SVC_HTTPS_CONSOLE); + changeState(STOPPED); + } + + /** @since 0.9.4 */ + public ClientAppState getState() { + return _state; + } + + /** @since 0.9.4 */ + public String getName() { + return "console"; + } + + /** @since 0.9.4 */ + public String getDisplayName() { + return "Router Console"; + } + + /////// end ClientApp methods + + private synchronized void changeState(ClientAppState state) { + _state = state; + if (_mgr != null) + _mgr.notify(this, state, null, null); + } + /** * SInce _server is now static * @return may be null or stopped perhaps @@ -178,13 +242,13 @@ public class RouterConsoleRunner { return _server; } - private static void startTrayApp() { + private static void startTrayApp(I2PAppContext ctx) { try { //TODO: move away from routerconsole into a separate application. //ApplicationManager? boolean recentJava = SystemVersion.isJava6(); // default false for now - boolean desktopguiEnabled = I2PAppContext.getGlobalContext().getBooleanProperty("desktopgui.enabled"); + boolean desktopguiEnabled = ctx.getBooleanProperty("desktopgui.enabled"); if (recentJava && desktopguiEnabled) { //Check if we are in a headless environment, set properties accordingly System.setProperty("java.awt.headless", Boolean.toString(GraphicsEnvironment.isHeadless())); @@ -219,7 +283,7 @@ public class RouterConsoleRunner { *</pre> */ public void startConsole() { - File workDir = new SecureDirectory(I2PAppContext.getGlobalContext().getTempDir(), "jetty-work"); + File workDir = new SecureDirectory(_context.getTempDir(), "jetty-work"); boolean workDirRemoved = FileUtil.rmdir(workDir, false); if (!workDirRemoved) System.err.println("ERROR: Unable to remove Jetty temporary work directory"); @@ -228,7 +292,7 @@ public class RouterConsoleRunner { System.err.println("ERROR: Unable to create Jetty temporary work directory"); //try { - // Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); + // Log.setLog(new I2PLogger(_context)); //} catch (Throwable t) { // System.err.println("INFO: I2P Jetty logging class not found, logging to wrapper log"); //} @@ -236,7 +300,7 @@ public class RouterConsoleRunner { System.setProperty("org.mortbay.log.class", "net.i2p.jetty.I2PLogger"); // so Jetty can find WebAppConfiguration - System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); + System.setProperty("jetty.class.path", _context.getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); _server.setGracefulShutdown(1000); @@ -259,11 +323,11 @@ public class RouterConsoleRunner { hColl.addHandler(chColl); hColl.addHandler(new DefaultHandler()); - String log = I2PAppContext.getGlobalContext().getProperty("routerconsole.log"); + String log = _context.getProperty("routerconsole.log"); if (log != null) { File logFile = new File(log); if (!logFile.isAbsolute()) - logFile = new File(I2PAppContext.getGlobalContext().getLogDir(), "logs/" + log); + logFile = new File(_context.getLogDir(), "logs/" + log); try { RequestLogHandler rhl = new RequestLogHandler(); rhl.setRequestLog(new NCSARequestLog(logFile.getAbsolutePath())); @@ -283,7 +347,7 @@ public class RouterConsoleRunner { // We assume relative to the base install dir for backward compatibility File app = new File(_webAppsDir); if (!app.isAbsolute()) { - app = new File(I2PAppContext.getGlobalContext().getBaseDir(), _webAppsDir); + app = new File(_context.getBaseDir(), _webAppsDir); try { _webAppsDir = app.getCanonicalPath(); } catch (IOException ioe) {} @@ -363,7 +427,7 @@ public class RouterConsoleRunner { } } // XXX: what if listenhosts do not include 127.0.0.1? (Should that ever even happen?) - I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_CONSOLE,lport); + _context.portMapper().register(PortMapper.SVC_CONSOLE,lport); } // add SSL listeners @@ -376,8 +440,7 @@ public class RouterConsoleRunner { System.err.println("Bad routerconsole SSL port " + _sslListenPort); } if (sslPort > 0) { - I2PAppContext ctx = I2PAppContext.getGlobalContext(); - File keyStore = new File(ctx.getConfigDir(), "keystore/console.ks"); + File keyStore = new File(_context.getConfigDir(), "keystore/console.ks"); if (verifyKeyStore(keyStore)) { StringTokenizer tok = new StringTokenizer(_sslListenHost, " ,"); while (tok.hasMoreTokens()) { @@ -408,9 +471,9 @@ public class RouterConsoleRunner { SslSelectChannelConnector sssll = new SslSelectChannelConnector(); // the keystore path and password sssll.setKeystore(keyStore.getAbsolutePath()); - sssll.setPassword(ctx.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); + sssll.setPassword(_context.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); // the X.509 cert password (if not present, verifyKeyStore() returned false) - sssll.setKeyPassword(ctx.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); + sssll.setKeyPassword(_context.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); sssll.setUseDirectBuffers(false); // default true seems to be leaky ssll = sssll; } else { @@ -418,9 +481,9 @@ public class RouterConsoleRunner { SslSocketConnector sssll = new SslSocketConnector(); // the keystore path and password sssll.setKeystore(keyStore.getAbsolutePath()); - sssll.setPassword(ctx.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); + sssll.setPassword(_context.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); // the X.509 cert password (if not present, verifyKeyStore() returned false) - sssll.setKeyPassword(ctx.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); + sssll.setKeyPassword(_context.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); ssll = sssll; } ssll.setHost(host); @@ -437,7 +500,7 @@ public class RouterConsoleRunner { System.err.println("You may ignore this warning if the console is still available at https://localhost:" + sslPort); } } - I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_HTTPS_CONSOLE,sslPort); + _context.portMapper().register(PortMapper.SVC_HTTPS_CONSOLE,sslPort); } else { System.err.println("Unable to create or access keystore for SSL: " + keyStore.getAbsolutePath()); } @@ -448,7 +511,7 @@ public class RouterConsoleRunner { return; } - rootWebApp = new LocaleWebAppHandler(I2PAppContext.getGlobalContext(), + rootWebApp = new LocaleWebAppHandler(_context, "/", _webAppsDir + ROUTERCONSOLE + ".war"); File tmpdir = new SecureDirectory(workDir, ROUTERCONSOLE + "-" + (_listenPort != null ? _listenPort : _sslListenPort)); @@ -458,7 +521,7 @@ public class RouterConsoleRunner { rootWebApp.setSessionHandler(new SessionHandler()); rootServletHandler = new ServletHandler(); rootWebApp.setServletHandler(rootServletHandler); - initialize(rootWebApp); + initialize(_context, rootWebApp); chColl.addHandler(rootWebApp); } catch (Exception ioe) { @@ -495,7 +558,7 @@ public class RouterConsoleRunner { } if (error) { System.err.println("WARNING: Error starting one or more listeners of the Router Console server.\n" + - "If your console is still accessible at http://127.0.0.1:7657/,\n" + + "If your console is still accessible at http://127.0.0.1:" + _listenPort + "/,\n" + "this may be a problem only with binding to the IPV6 address ::1.\n" + "If so, you may ignore this error, or remove the\n" + "\"::1,\" in the \"clientApp.0.args\" line of the clients.config file."); @@ -517,7 +580,7 @@ public class RouterConsoleRunner { if (! "false".equals(enabled)) { try { String path = new File(dir, fileNames[i]).getCanonicalPath(); - WebAppStarter.startWebApp(I2PAppContext.getGlobalContext(), chColl, appName, path); + WebAppStarter.startWebApp(_context, chColl, appName, path); if (enabled == null) { // do this so configclients.jsp knows about all apps from reading the config props.setProperty(PREFIX + appName + ENABLED, "true"); @@ -532,13 +595,15 @@ public class RouterConsoleRunner { notStarted.add(appName); } } + changeState(RUNNING); } } else { System.err.println("ERROR: Router console did not start, not starting webapps"); + changeState(START_FAILED); } if (rewrite) - storeWebAppProperties(props); + storeWebAppProperties(_context, props); if (rootServletHandler != null && notStarted.size() > 0) { // map each not-started webapp to the error page @@ -565,35 +630,29 @@ public class RouterConsoleRunner { t.setPriority(Thread.NORM_PRIORITY - 1); t.start(); - List<RouterContext> contexts = RouterContext.listContexts(); - if (contexts != null) { - RouterContext ctx = contexts.get(0); - - ConsoleUpdateManager um = new ConsoleUpdateManager(ctx); + ConsoleUpdateManager um = new ConsoleUpdateManager(_context); um.start(); - if (PluginStarter.pluginsEnabled(ctx)) { - t = new I2PAppThread(new PluginStarter(ctx), "PluginStarter", true); + if (PluginStarter.pluginsEnabled(_context)) { + t = new I2PAppThread(new PluginStarter(_context), "PluginStarter", true); t.setPriority(Thread.NORM_PRIORITY - 1); t.start(); - ctx.addShutdownTask(new PluginStopper(ctx)); + _context.addShutdownTask(new PluginStopper(_context)); } // stat summarizer registers its own hook - ctx.addShutdownTask(new ServerShutdown()); - ConfigServiceHandler.registerSignalHandler(ctx); - } // else log CRIT ? + _context.addShutdownTask(new ServerShutdown()); + ConfigServiceHandler.registerSignalHandler(_context); } /** * @return success if it exists and we have a password, or it was created successfully. * @since 0.8.3 */ - private static boolean verifyKeyStore(File ks) { + private boolean verifyKeyStore(File ks) { if (ks.exists()) { - I2PAppContext ctx = I2PAppContext.getGlobalContext(); - boolean rv = ctx.getProperty(PROP_KEY_PASSWORD) != null; + boolean rv = _context.getProperty(PROP_KEY_PASSWORD) != null; if (!rv) - System.err.println("Console SSL error, must set " + PROP_KEY_PASSWORD + " in " + (new File(ctx.getConfigDir(), "router.config")).getAbsolutePath()); + System.err.println("Console SSL error, must set " + PROP_KEY_PASSWORD + " in " + (new File(_context.getConfigDir(), "router.config")).getAbsolutePath()); return rv; } File dir = ks.getParentFile(); @@ -614,14 +673,13 @@ public class RouterConsoleRunner { * @return success * @since 0.8.3 */ - private static boolean createKeyStore(File ks) { - I2PAppContext ctx = I2PAppContext.getGlobalContext(); + private boolean createKeyStore(File ks) { // make a random 48 character password (30 * 8 / 5) byte[] rand = new byte[30]; - ctx.random().nextBytes(rand); + _context.random().nextBytes(rand); String keyPassword = Base32.encode(rand); // and one for the cname - ctx.random().nextBytes(rand); + _context.random().nextBytes(rand); String cname = Base32.encode(rand) + ".console.i2p.net"; String keytool = (new File(System.getProperty("java.home"), "bin/keytool")).getAbsolutePath(); @@ -643,11 +701,10 @@ public class RouterConsoleRunner { if (success) { SecureFileOutputStream.setPerms(ks); try { - RouterContext rctx = (RouterContext) ctx; Map<String, String> changes = new HashMap(); changes.put(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD); changes.put(PROP_KEY_PASSWORD, keyPassword); - rctx.router().saveConfig(changes, null); + _context.router().saveConfig(changes, null); } catch (Exception e) {} // class cast exception } } @@ -664,27 +721,42 @@ public class RouterConsoleRunner { System.err.println(buf.toString()); System.err.println("This is for the Sun/Oracle keytool, others may be incompatible.\n" + "If you create the keystore manually, you must add " + PROP_KEYSTORE_PASSWORD + " and " + PROP_KEY_PASSWORD + - " to " + (new File(ctx.getConfigDir(), "router.config")).getAbsolutePath()); + " to " + (new File(_context.getConfigDir(), "router.config")).getAbsolutePath()); } return success; } - static void initialize(WebAppContext context) { + /** + * Set up basic security constraints for the webapp. + * Add all users and passwords. + */ + static void initialize(RouterContext ctx, WebAppContext context) { SecurityHandler sec = new SecurityHandler(); List<ConstraintMapping> constraints = new ArrayList(4); - String password = getPassword(); - if (password != null) { - HashUserRealm realm = new HashUserRealm("i2prouter"); - realm.put("admin", password); - realm.addUserToRole("admin", "routerAdmin"); - sec.setUserRealm(realm); - sec.setAuthenticator(authenticator); - Constraint constraint = new Constraint("admin", "routerAdmin"); - constraint.setAuthenticate(true); - ConstraintMapping cm = new ConstraintMapping(); - cm.setConstraint(constraint); - cm.setPathSpec("/"); - constraints.add(cm); + ConsolePasswordManager mgr = new ConsolePasswordManager(ctx); + boolean enable = ctx.getBooleanProperty(PROP_PW_ENABLE); + if (enable) { + Map<String, String> userpw = mgr.getMD5(PROP_CONSOLE_PW); + if (userpw.isEmpty()) { + enable = false; + ctx.router().saveConfig(PROP_CONSOLE_PW, "false"); + } else { + HashUserRealm realm = new HashUserRealm(JETTY_REALM); + sec.setUserRealm(realm); + sec.setAuthenticator(authenticator); + for (Map.Entry<String, String> e : userpw.entrySet()) { + String user = e.getKey(); + String pw = e.getValue(); + realm.put(user, MD5.__TYPE + pw); + realm.addUserToRole(user, JETTY_ROLE); + Constraint constraint = new Constraint(user, JETTY_ROLE); + constraint.setAuthenticate(true); + ConstraintMapping cm = new ConstraintMapping(); + cm.setConstraint(constraint); + cm.setPathSpec("/"); + constraints.add(cm); + } + } } // This forces a '403 Forbidden' response for TRACE and OPTIONS unless the @@ -719,43 +791,25 @@ public class RouterConsoleRunner { context.setSecurityHandler(sec); } - static String getPassword() { - List<RouterContext> contexts = RouterContext.listContexts(); - if (contexts != null) { - for (int i = 0; i < contexts.size(); i++) { - RouterContext ctx = contexts.get(i); - String password = ctx.getProperty("consolePassword"); - if (password != null) { - password = password.trim(); - if (password.length() > 0) { - return password; - } - } - } - // no password in any context - return null; - } else { - // no contexts?! - return null; - } - } - /** @since 0.8.8 */ - private static class ServerShutdown implements Runnable { + private class ServerShutdown implements Runnable { public void run() { - try { - _server.stop(); - } catch (Exception ie) {} + shutdown(null); } } - public static Properties webAppProperties() { - return webAppProperties(I2PAppContext.getGlobalContext().getConfigDir().getAbsolutePath()); + private Properties webAppProperties() { + return webAppProperties(_context.getConfigDir().getAbsolutePath()); + } + + /** @since 0.9.4 */ + public static Properties webAppProperties(I2PAppContext ctx) { + return webAppProperties(ctx.getConfigDir().getAbsolutePath()); } public static Properties webAppProperties(String dir) { Properties rv = new Properties(); - // String webappConfigFile = ctx.getProperty(PROP_WEBAPP_CONFIG_FILENAME, DEFAULT_WEBAPP_CONFIG_FILENAME); + // String webappConfigFile = _context.getProperty(PROP_WEBAPP_CONFIG_FILENAME, DEFAULT_WEBAPP_CONFIG_FILENAME); String webappConfigFile = DEFAULT_WEBAPP_CONFIG_FILENAME; File cfgFile = new File(dir, webappConfigFile); @@ -768,10 +822,10 @@ public class RouterConsoleRunner { return rv; } - public static void storeWebAppProperties(Properties props) { - // String webappConfigFile = ctx.getProperty(PROP_WEBAPP_CONFIG_FILENAME, DEFAULT_WEBAPP_CONFIG_FILENAME); + public static void storeWebAppProperties(RouterContext ctx, Properties props) { + // String webappConfigFile = _context.getProperty(PROP_WEBAPP_CONFIG_FILENAME, DEFAULT_WEBAPP_CONFIG_FILENAME); String webappConfigFile = DEFAULT_WEBAPP_CONFIG_FILENAME; - File cfgFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), webappConfigFile); + File cfgFile = new File(ctx.getConfigDir(), webappConfigFile); try { DataHelper.storeProps(props, cfgFile); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 63bf2a564679df06f9e30b4c7536e3eb26387933..2bd763606f9cd33f70dc8b4b2494f7ba985281bc 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -172,6 +172,8 @@ public class SummaryHelper extends HelperBase { //if (_context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0) // return _("WARN-Firewalled and Fast"); return _("Firewalled"); + case CommSystemFacade.STATUS_DISCONNECTED: + return _("Disconnected - check network cable"); case CommSystemFacade.STATUS_HOSED: return _("ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"); case CommSystemFacade.STATUS_UNKNOWN: // fallthrough @@ -283,11 +285,11 @@ public class SummaryHelper extends HelperBase { * */ /******** - public int getShitlistedPeers() { + public int getBanlistedPeers() { if (_context == null) return 0; else - return _context.shitlist().getRouterCount(); + return _context.banlist().getRouterCount(); } ********/ diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java index 5afa5d2db080a466fd2b7e7bf36a3d4da1e1399a..74c744170b0abb11d8502fd3ee69b67e0e6eed84 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java @@ -74,7 +74,7 @@ public class WebAppConfiguration implements Configuration { cp = props.getProperty(RouterConsoleRunner.PREFIX + appName + CLASSPATH); dir = pluginDir; } else { - Properties props = RouterConsoleRunner.webAppProperties(); + Properties props = RouterConsoleRunner.webAppProperties(i2pContext); cp = props.getProperty(RouterConsoleRunner.PREFIX + appName + CLASSPATH); } if (cp == null) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java index 53f71b348608be5d57e72930779b591b5b4d4202..a7506d65fb9375a789df4243078c999a89b15c82 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import net.i2p.I2PAppContext; +import net.i2p.router.RouterContext; import net.i2p.util.FileUtil; import net.i2p.util.SecureDirectory; @@ -51,7 +51,7 @@ public class WebAppStarter { * adds and starts * @throws just about anything, caller would be wise to catch Throwable */ - static void startWebApp(I2PAppContext ctx, ContextHandlerCollection server, + static void startWebApp(RouterContext ctx, ContextHandlerCollection server, String appName, String warPath) throws Exception { File tmpdir = new SecureDirectory(ctx.getTempDir(), "jetty-work-" + appName + ctx.random().nextInt()); WebAppContext wac = addWebApp(ctx, server, appName, warPath, tmpdir); @@ -65,7 +65,7 @@ public class WebAppStarter { * This is used only by RouterConsoleRunner, which adds all the webapps first * and then starts all at once. */ - static WebAppContext addWebApp(I2PAppContext ctx, ContextHandlerCollection server, + static WebAppContext addWebApp(RouterContext ctx, ContextHandlerCollection server, String appName, String warPath, File tmpdir) throws IOException { // Jetty will happily load one context on top of another without stopping @@ -103,7 +103,7 @@ public class WebAppStarter { wac.setExtractWAR(false); // this does the passwords... - RouterConsoleRunner.initialize(wac); + RouterConsoleRunner.initialize(ctx, wac); // see WebAppConfiguration for info String[] classNames = wac.getConfigurationClasses(); diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 0d56b5f59d2045633f7b6ca43e729e03118a282b..538fb8a5f25f0e96f892b1cc7e6a507cabd10274 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -19,13 +19,10 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>"> <input type="hidden" name="action" value="blah" > <input type="hidden" name="ratesOnly" value="1" > <h3><%=intl._("Bandwidth limiter")%></h3><p> diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index 53a8b227f5c7a3087f8e3128ff11b3c0502a400e..d8a19e35055a3580f97496a5ac7994c5c1327c6c 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -21,14 +21,11 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> <div class="wideload"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="action" value="blah" > <h3><%=intl._("Advanced I2P Configuration")%></h3> <textarea rows="32" cols="60" name="config" wrap="off" spellcheck="false"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr> diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index e97b22968d8c4fa0180bdea6108e632666cffdf2..3d0cf7cda6998c90410d7f387e91b415909978a2 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -25,16 +25,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; } <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" /> - <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" /> - <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> -<% - String pageNonce = formhandler.getNewNonce(); -%> <h3><%=intl._("Client Configuration")%></h3><p> <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%> </p><div class="wideload"> @@ -85,9 +77,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; } <input type="checkbox" class="optbox" name="auth" value="true" <jsp:getProperty name="clientshelper" property="auth" /> > <%=intl._("Require username and password")%><br> <%=intl._("Username")%>: -<input name="user" type="text" value="<jsp:getProperty name="clientshelper" property="user" />" ><br> +<input name="user" type="text" value="" /><br> <%=intl._("Password")%>: -<input name="pw" type="password" value="<jsp:getProperty name="clientshelper" property="pw" />" ><br> +<input name="pw" type="password" value="" /><br> </p><p><b><%=intl._("The default settings will work for most people.")%></b> <%=intl._("Any changes made here must also be configured in the external client.")%> <%=intl._("Many clients do not support SSL or authorization.")%> diff --git a/apps/routerconsole/jsp/confighome.jsp b/apps/routerconsole/jsp/confighome.jsp index b8296fcbbbedccd253199b66cebb1db6f9090487..6be2d9d2e9fdf9988df568c5158a3d5c91c43954 100644 --- a/apps/routerconsole/jsp/confighome.jsp +++ b/apps/routerconsole/jsp/confighome.jsp @@ -22,14 +22,7 @@ input.default { <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigHomeHandler" id="formhandler" scope="request" /> -<% formhandler.storeMethod(request.getMethod()); %> -<jsp:setProperty name="formhandler" property="*" /> -<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> -<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> -<jsp:getProperty name="formhandler" property="allMessages" /> -<% - String pageNonce = formhandler.getNewNonce(); -%> +<%@include file="formhandler.jsi" %> <jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" /> <jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index e8b4089371fb38b0fd19c11a1d834ba673dbd5d1..b2f5ef657cd8258e79880c4d97489f2ebe17b03c 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -15,10 +15,7 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" /> <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <div class="configure"><h2><%=intl._("Keyring")%></h2><p> @@ -29,7 +26,7 @@ </div> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <h3><%=intl._("Manual Keyring Addition")%></h3><p> <%=intl._("Enter keys for encrypted remote destinations here.")%> <%=intl._("Keys for local destinations must be entered on the")%> <a href="i2ptunnel/"><%=intl._("I2PTunnel page")%></a>. diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index c6f3ed945a1e3c75432ccd4f817fc3aa84144f2d..837ed81b8a126e97313979b430252b54efe02682 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -18,13 +18,10 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="action" value="blah" > <h3><%=intl._("Configure I2P Logging Options")%></h3> <div class="wideload"> diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp index 7fb74500d918a3805ded794d005b8ee1528127cb..cd1ad65f7b049990f840969a6a5fd52d3317951b 100644 --- a/apps/routerconsole/jsp/confignet.jsp +++ b/apps/routerconsole/jsp/confignet.jsp @@ -18,13 +18,10 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="action" value="blah" > <h3><%=intl._("IP and Transport Configuration")%></h3><p> <img src="/themes/console/images/itoopie_xsm.png" alt=""> @@ -207,7 +204,7 @@ <p> This setting causes your router identity to be regenerated every time your IP address changes. If you have a dynamic IP this option can speed up your reintegration into - the network (since people will have shitlisted your old router identity), and, for + the network (since people will have banned your old router identity), and, for very weak adversaries, help frustrate trivial <a href="http://www.i2p.net/how_threatmodel#intersection">intersection attacks</a> against the NetDB. Your different router identities would only be diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index 9952db5534fcbef79e0e795daa0330520aa69ac7..4e4010ecac402ed3b9a9c15a975e3f0394be4db5 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -15,13 +15,7 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - - +<%@include file="formhandler.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigPeerHelper" id="peerhelper" scope="request" /> <jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> @@ -31,7 +25,7 @@ %> <div class="configure"> <form action="configpeer" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <a name="sh"> </a> <a name="unsh"> </a> <a name="bonus"> </a> @@ -61,11 +55,11 @@ <input type="text" size="8" name="capacity" value="<%=capacity%>" /> <input type="submit" name="action" class="add" value="<%=intl._("Adjust peer bonuses")%>" /></p></div> </form> - <a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2> + <a name="banlist"> </a><h2><%=intl._("Banned Peers")%></h2> <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <% profilesHelper.storeWriter(out); %> - <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> + <jsp:getProperty name="profilesHelper" property="banlistSummary" /> <div class="wideload"><h2><%=intl._("Banned IPs")%></h2> <jsp:getProperty name="peerhelper" property="blocklistSummary" /> diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp index 39df228c698224742b9b1585071302791a975318..c83ed389dd0487820155c275335dcc11a25f877a 100644 --- a/apps/routerconsole/jsp/configreseed.jsp +++ b/apps/routerconsole/jsp/configreseed.jsp @@ -18,14 +18,9 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigReseedHandler" id="formhandler" scope="request" /> -<% formhandler.storeMethod(request.getMethod()); %> -<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> -<jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" /> -<jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" /> -<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> -<jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"><form action="" method="POST"> -<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > +<input type="hidden" name="nonce" value="<%=pageNonce%>" > <h3><%=intl._("Reseeding Configuration")%></h3> <p><%=intl._("Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining.")%> <%=intl._("If reseeding has failed, you should first check your network connection.")%> diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index 303fa4d31cb370be4a1f332d6129ce00fa585902..c6711cc43c54078182cd4372b5cb12f932c09577 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -15,13 +15,10 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigServiceHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <h3><%=intl._("Shutdown the router")%></h3> <p><%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> <%=intl._("If you need to kill the router immediately, that option is available as well.")%></p> diff --git a/apps/routerconsole/jsp/configsidebar.jsp b/apps/routerconsole/jsp/configsidebar.jsp index 074fcfda30049066a95176993fe5df29083179d1..129feaa10701cf0dcf5b1f635ddf6b533a25008a 100644 --- a/apps/routerconsole/jsp/configsidebar.jsp +++ b/apps/routerconsole/jsp/configsidebar.jsp @@ -22,17 +22,10 @@ input.default { <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigSummaryHandler" id="formhandler" scope="request" /> -<% formhandler.storeMethod(request.getMethod()); %> -<jsp:setProperty name="formhandler" property="*" /> -<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> -<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> +<%@include file="formhandler.jsi" %> <% formhandler.setMovingAction(); %> -<jsp:getProperty name="formhandler" property="allMessages" /> -<% - String pageNonce = formhandler.getNewNonce(); -%> <jsp:useBean class="net.i2p.router.web.SummaryHelper" id="summaryhelper" scope="request" /> <jsp:setProperty name="summaryhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 8a70c84bc4d470ee0eaee7f2ce386e5dfb325037..c57479b46eccc9611d2f4625ff611bec7a1072b1 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -66,17 +66,13 @@ function toggleAll(category) <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigStatsHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - +<%@include file="formhandler.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigStatsHelper" id="statshelper" scope="request" /> <jsp:setProperty name="statshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <div class="configure"> <form id="statsForm" name="statsForm" action="" method="POST"> <input type="hidden" name="action" value="foo" > - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <h3><%=intl._("Configure I2P Stat Collection")%></h3> <p><%=intl._("Enable full stats?")%> <input type="checkbox" class="optbox" name="isFull" value="true" <% @@ -101,7 +97,7 @@ Warning - Log with care, stat file grows without limit.<br> while (statshelper.groupRequired()) { %> <tr class="tablefooter"> <td align="left" colspan="3" id=<%=statshelper.getCurrentGroupName()%>> - <b><%=statshelper.getCurrentGroupName()%></b> + <b><%=intl._(statshelper.getCurrentGroupName())%></b> (<a href="javascript:void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._("toggle all")%></a>) </td></tr> <tr class="tablefooter"> diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp index e2eab6658f2c7f23e76bbaefab7f145bb8213c9e..de82f0027d813fa7e9050396f240ea92f42a0a86 100644 --- a/apps/routerconsole/jsp/configtunnels.jsp +++ b/apps/routerconsole/jsp/configtunnels.jsp @@ -17,13 +17,7 @@ <div class="main" id="main"> <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:setProperty name="formhandler" property="shouldsave" value="<%=request.getParameter(\"shouldsave\")%>" /> - <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" /> - <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" /> - <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"><p> <%=intl._("NOTE")%>: <%=intl._("The default settings work for most people.")%> @@ -33,7 +27,7 @@ <%=intl._("Change these settings with care, and adjust them if you have problems.")%> <div class="wideload"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="action" value="blah" > <jsp:getProperty name="tunnelshelper" property="form" /> <%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%> diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index a2f43971373c0282b6d99c3eed7ccbded67b21f0..f1555a8920d1b99430144430c2030555ca810054 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.jsp @@ -6,6 +6,13 @@ <html><head> <%@include file="css.jsi" %> <%=intl.title("config UI")%> +<style type='text/css'> +input.default { + width: 1px; + height: 1px; + visibility: hidden; +} +</style> <script src="/js/ajax.js" type="text/javascript"></script> <%@include file="summaryajax.jsi" %> </head><body onload="initAjax()"> @@ -21,10 +28,7 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigUIHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <div class="configure"><div class="topshimten"><h3><%=uihelper._("Router Console Theme")%></h3></div> <form action="" method="POST"> <% @@ -36,7 +40,7 @@ } %> <input type="hidden" name="consoleNonce" value="<%=consoleNonce%>" > - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <input type="hidden" name="action" value="blah" > <% String userAgent = request.getHeader("User-Agent"); @@ -54,5 +58,17 @@ </p><hr><div class="formaction"> <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" > <input type="submit" name="shouldsave" class="accept" value="<%=intl._("Apply")%>" > -</div></form></div> +</div></form> + +<h3><%=uihelper._("Router Console Password")%></h3> +<form action="" method="POST"> + <input type="hidden" name="nonce" value="<%=pageNonce%>" > + <jsp:getProperty name="uihelper" property="passwordForm" /> + <div class="formaction"> + <input type="submit" name="action" class="default" value="<%=intl._("Add user")%>" > + <input type="submit" name="action" class="delete" value="<%=intl._("Delete selected")%>" > + <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" > + <input type="submit" name="action" class="add" value="<%=intl._("Add user")%>" > + </div> +</form></div> </div></body></html> diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index a792bb07b3f28eb00c01a165c525a77e19d64343..2d2e54d25782046cf2e580f6e137bc8727a277c4 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -16,17 +16,14 @@ <%@include file="confignav.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigUpdateHandler" id="formhandler" scope="request" /> - <% formhandler.storeMethod(request.getMethod()); %> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> +<%@include file="formhandler.jsi" %> <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" /> <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" /> <div class="messages"> <jsp:getProperty name="updatehelper" property="newsStatus" /></div> <div class="configure"> <form action="" method="POST"> - <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" > + <input type="hidden" name="nonce" value="<%=pageNonce%>" > <% /* set hidden default */ %> <input type="submit" name="action" value="" style="display:none" > <% if (updatehelper.canInstall()) { %> diff --git a/apps/routerconsole/jsp/formhandler.jsi b/apps/routerconsole/jsp/formhandler.jsi new file mode 100644 index 0000000000000000000000000000000000000000..dc8c65b304045a15e008756a43131d9e8ab24874 --- /dev/null +++ b/apps/routerconsole/jsp/formhandler.jsi @@ -0,0 +1,43 @@ +<% + /* + * Does the standard setup for all form handlers, then + * displays the message box (which drives the form processing). + * + * Included ~15 times, keep whitespace to a minimum + * + * Include this directly after the line: + * <jsp:useBean class="net.i2p.router.web.xxxHandler" id="formhandler" scope="request" /> + */ + + // This initializes the RouterContext - must be the first thing + formhandler.setContextId((String)session.getAttribute("i2p.contextId")); + + // Prevents any saves via GET + formhandler.storeMethod(request.getMethod()); + + // Store the nonces for verification + String klass = formhandler.getClass().getName(); + String nonceAttr1 = klass + ".nonce"; + String nonceAttr2 = nonceAttr1 + "Prev"; + String nonce1 = (String) session.getAttribute(nonceAttr1); + String nonce2 = (String) session.getAttribute(nonceAttr2); + formhandler.storeNonces(nonce1, nonce2); + + // Put all the params in the map, some handlers use this instead of individual setters + // We also call all of the setters below. + formhandler.setSettings(request.getParameterMap()); + +%> +<jsp:setProperty name="formhandler" property="*" /> +<jsp:getProperty name="formhandler" property="allMessages" /> +<% + + // Only call this once per page, do not getProperty("newNonce") elsewhere, + // use the variable instead. + // This shuffles down the nonces, so it must be after getAllMessages() above, + // since it does the form validation. + String pageNonce = formhandler.getNewNonce(); + session.setAttribute(nonceAttr2, nonce1); + session.setAttribute(nonceAttr1, pageNonce); + +%> diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index 69e060c239fc82972e89881d3fa68db7f6d92aad..83df881b3c6857d8e49fb6c8ae01f7e232f023f5 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -10,20 +10,21 @@ # ducki2p <ducki2p@gmail.com>, 2011. # foo <foo@bar>, 2009. # mixxy, 2011. +# <pirr@tormail.org>, 2012. msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-25 19:27+0000\n" -"PO-Revision-Date: 2012-08-21 22:53+0000\n" -"Last-Translator: blabla <blabla@trash-mail.com>\n" +"POT-Creation-Date: 2012-11-02 19:46+0000\n" +"PO-Revision-Date: 2012-10-27 16:41+0000\n" +"Last-Translator: pirr <pirr@tormail.org>\n" "Language-Team: German (http://www.transifex.com/projects/p/I2P/language/" "de/)\n" "Language: de\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... #. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in @@ -33,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:1387 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1424 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -42,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:1391 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1428 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -51,7 +52,7 @@ msgstr[1] "{0} s" #. minutes #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1395 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -60,64 +61,64 @@ msgstr[1] "{0} Minuten" #. hours #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1399 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1436 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 Stunde" msgstr[1] "{0} Stunden" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1401 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1438 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:341 msgid "n/a" msgstr "k.A." #. days -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1404 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1441 #, java-format msgid "1 day" msgid_plural "{0} days" msgstr[0] "1 Tag" msgstr[1] "{0} Tage" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:127 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 #, java-format msgid "Banned by router hash: {0}" msgstr "Gesperrt über Routerprüfsumme: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:129 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:130 msgid "Banned by router hash" msgstr "Gesperrt über Routerprüfsumme" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:672 -#: ../../../router/java/src/net/i2p/router/Blocklist.java:745 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:653 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:726 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "IP gesperrt wegen blocklist.txt-Eintrags {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:784 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:765 msgid "IPs Banned Until Restart" msgstr "bis zum Neustart gesperrte IP's" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:808 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:789 msgid "IPs Permanently Banned" msgstr "permanent gesperrte IP's" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:810 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:791 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:66 msgid "From" msgstr "Von" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:812 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:793 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 msgid "To" msgstr "An" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:848 -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:829 +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:451 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:454 msgid "none" msgstr "keine" @@ -127,85 +128,85 @@ msgstr "keine" #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:73 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:115 -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:517 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:519 msgid "Rejecting tunnels: Starting up" msgstr "Weise Tunnel ab: Initialisieren" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:168 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:170 msgid "Rejecting tunnels: High message delay" msgstr "Weise Tunnelanfragen zurück: Hohe Nachrichtenlatenz" #. hard to do {0} from here #. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:207 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:209 msgid "Rejecting most tunnels: High number of requests" msgstr "Weise Tunnelanfragen zurück: Hohe Anzahl an Anfragen" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:262 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:264 msgid "Rejecting tunnels: Limit reached" msgstr "Weise Tunnelanfragen zurück: Limit erreicht" #. .067KBps #. * also limited to 90% - see below #. always leave at least 4KBps free when allowing -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:330 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:332 msgid "Rejecting tunnels: Bandwidth limit" msgstr "Weise Tunnelanfragen zurück: Bandbreitenlimit erreicht" #. hard to do {0} from here #. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:400 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:402 msgid "Rejecting most tunnels: Bandwidth limit" msgstr "Weise viele Tunnelanfragen zurück: Bandbreitenlimit erreicht" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:404 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406 msgid "Accepting most tunnels" msgstr "Akzeptiere viele Tunnelanfragen" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:408 msgid "Accepting tunnels" msgstr "Akzeptiere Tunnelanfragen" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:522 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:524 msgid "Rejecting tunnels: Shutting down" msgstr "Weise Tunnelanfragen zurück: Beende Router" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:527 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:529 msgid "Rejecting tunnels" msgstr "Weise Tunnelanfragen zurück" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:155 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 msgid "Reseeding" msgstr "Reseeden" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:163 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:167 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Nur Daten eines Routers per Reseed erhalten" msgstr[1] "Nur {0} Routerinformationen per Reseed erhalten" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:174 msgid "Reseed failed." msgstr "Reseed fehlgeschlagen" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:171 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:175 #, java-format msgid "See {0} for help." msgstr "Für Hilfe, siehe {0}!" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:172 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176 msgid "reseed configuration page" msgstr "Einstellungen für den Reseed" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:313 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317 msgid "Reseeding: fetching seed URL." msgstr "Reseed: Hole die Seed-URL" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:371 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:375 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." @@ -240,7 +241,7 @@ msgstr "Anzahl aktiver Teilnehmer mit denen wir reden" msgid "Known fast peers" msgstr "bekannte schnelle Teilnehmer" -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:529 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:539 msgid "NetDb entry" msgstr "NetzDB-Eintrag" @@ -249,26 +250,26 @@ msgstr "NetzDB-Eintrag" msgid "No transports (hidden or starting up?)" msgstr "Keine Transporte (Versteckter Modus oder Start?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:453 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:455 msgid "Unreachable on any transport" msgstr "Unerreichbar auf allen Transporten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:502 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 msgid "Router Transport Addresses" msgstr "Router-Transport-Adresse" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:507 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} wird nur für ausgehende Verbindungen genutzt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/HomeHelper.java:32 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:154 msgid "Help" msgstr "Hilfe" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "" "Your transport connection limits are automatically set based on your " "configured bandwidth." @@ -276,7 +277,7 @@ msgstr "" "Ihre Verbindungseinstellungen werden, basierend auf der von Ihnen zur " "Verfügung gestellten Bandbreite, automatisch vorgenommen." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "" "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " "i2np.udp.maxConnections=nnn on the advanced configuration page." @@ -285,14 +286,14 @@ msgstr "" "Seite \"Erweiterte Einstellungen\" hinzu: i2np.ntcp.maxConnections=nnn und " "i2np.udp.maxConnections=nnn" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279 msgid "Definitions" msgstr "Definitionen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2061 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:752 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2176 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 @@ -301,79 +302,79 @@ msgstr "Definitionen" msgid "Peer" msgstr "Teilnehmer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 msgid "The remote peer, identified by router hash" msgstr "Der entfernte Teilnehmer, über seine Router-Prüfsumme erkannt" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2065 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 msgid "Dir" msgstr "Richtung" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 msgid "Inbound connection" msgstr "Eingehende Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "Outbound connection" msgstr "Ausgehende Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "" "Sie boten an, uns bekannt zu machen (anderen Teilnehmern helfen, unsere " "Firewall zu überwinden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 msgid "We offered to introduce them (help other peers traverse their firewall)" msgstr "" "Wir bieten an, sie bekannt zu machen (anderen Teilnehmern helfen, ihre " "Firewall zu überwinden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "How long since a packet has been received / sent" msgstr "Vergangene Zeit seit ein Paket empfangen/gesendet wurde" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2066 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 msgid "Idle" msgstr "Untätig" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2071 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 msgid "In/Out" msgstr "Ein-/Ausgehend" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" msgstr "Die geglättete ein-/ausgehende Transferrate (KBytes pro Sekunde)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "How long ago this connection was established" msgstr "Wie lange die Verbindung schon besteht" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2076 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 msgid "Up" msgstr "Verbunden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2078 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2193 msgid "Skew" msgstr "Differenz" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The difference between the peer's clock and your own" msgstr "Der Unterschied zwischen Ihrer und der Uhr des Teilnehmers" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "" "The congestion window, which is how many bytes can be sent without an " "acknowledgement" @@ -381,42 +382,34 @@ msgstr "" "Der Pufferspeicher, der angibt, wieviele Bytes Sie ohne Bestätigung senden " "können" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The number of sent messages awaiting acknowledgement" msgstr "Die Anzahl der gesendeten Nachrichten, die auf Bestätigung warten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The maximum number of concurrent messages to send" msgstr "Die maximale Anzahl von gleichzeitig sendbaren Nachrichten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The number of pending sends which exceed congestion window" msgstr "" "Die Anzahl der ausstehenden Sendeanforderungen, die den Pufferspeicher " "überschreiten." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The slow start threshold" msgstr "Der Grenzwert zum verzögertem Starten" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The round trip time in milliseconds" msgstr "Die Rundenzeit zum Server und zurück in Millisekunden" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2088 -msgid "Dev" -msgstr "Abweichung" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -msgid "The standard deviation of the round trip time in milliseconds" -msgstr "Standardabweichung der Rundenzeit (in Millisekunden)" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The standard deviation of the round trip time in milliseconds")).append("<br>\n" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The retransmit timeout in milliseconds" msgstr "Der Timeout beim erneuten Senden (in Millisekunden)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 msgid "" "Current maximum send packet size / estimated maximum receive packet size " "(bytes)" @@ -424,115 +417,115 @@ msgstr "" "Derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Größe der " "empfangenen Pakete (Bytes)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2095 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 msgid "TX" msgstr "Gesendet" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 msgid "The total number of packets sent to the peer" msgstr "Gesamtanzahl der an den Teilnehmer gesendeten Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2097 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 msgid "RX" msgstr "Empfangen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 msgid "The total number of packets received from the peer" msgstr "Gesamtanzahl der vom Teilnehmer empfangenen Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2100 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 msgid "Dup TX" msgstr "Mehrfach gesendet" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 msgid "The total number of packets retransmitted to the peer" msgstr "Gesamtanzahl der an den Teilnehmer erneut gesendeten Pakete" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2102 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2217 msgid "Dup RX" msgstr "Mehrfach empfangen" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 msgid "The total number of duplicate packets received from the peer" msgstr "Gesamtanzahl der vom Teilnehmer erneut empfangenen Pakete" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:448 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Service" msgstr "Service" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:450 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:454 msgid "WAN Common Interface Configuration" msgstr "Einstellungen des WAN Common Interface" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:451 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:472 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:455 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:471 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:476 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:96 msgid "Status" msgstr "Status" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:468 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:462 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:472 msgid "Type" msgstr "Typ" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:453 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:459 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:463 msgid "Upstream" msgstr "Upstream" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:454 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 msgid "Downstream" msgstr "Downstream" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 msgid "WAN PPP Connection" msgstr "WAN-PPP-Verbindung" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:469 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:465 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 msgid "External IP" msgstr "externe IP" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:463 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 msgid "Layer 3 Forwarding" msgstr "Schicht-3-Weiterleitung" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:468 msgid "Default Connection Service" msgstr "Standardverbingungsservice" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:466 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:470 msgid "WAN IP Connection" msgstr "WAN-IP-Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:471 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 msgid "WAN Ethernet Link Configuration" msgstr "Einstellunfen zur WAN-Ethernet-Verbindung" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:484 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:488 msgid "Found Device" msgstr "Gerät gefunden" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:486 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:490 msgid "Subdevice" msgstr "Untergerät" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:507 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:511 msgid "UPnP Status" msgstr "UPnP-Status" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:510 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:514 msgid "" "UPnP has been disabled; Do you have more than one UPnP Internet Gateway " "Device on your LAN ?" @@ -540,25 +533,25 @@ msgstr "" "UPnP wurde deaktiviert; Hast du mehr als ein UPnP-Internet-Gateway in deinem " "LAN ?" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:513 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:517 msgid "UPnP has not found any UPnP-aware, compatible device on your LAN." msgstr "UPnP hat keine UPnP-fähigen, kompatiblen Geräte in deinem LAN." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:521 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:525 #, java-format msgid "The current external IP address reported by UPnP is {0}" msgstr "Die gegenwärtige von UPnP gemeldete externe IP-Adresse ist {0}." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:523 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527 msgid "The current external IP address is not available." msgstr "Die gegenwärtige externe IP-Adresse steht nicht zur Verfügung." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:531 #, java-format msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec" msgstr "UPnP meldet eine maximale Downstream-Bitrate von {0} bits/s." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:529 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:533 #, java-format msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec" msgstr "UPnP meldet eine maximale Upstream-Bitrate von {0} bits/s." @@ -566,17 +559,17 @@ msgstr "UPnP meldet eine maximale Upstream-Bitrate von {0} bits/s." #. {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:538 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:541 #, java-format msgid "{0} port {1,number,#####} was successfully forwarded by UPnP." msgstr "{0} Port {1,number,#####} wurde erfolgreich durch UPnP weitergeleitet." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:540 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:543 #, java-format msgid "{0} port {1,number,#####} was not forwarded by UPnP." msgstr "{0} Port {1,number,#####} wurde nicht per UPnP weitergeleitet." -#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:162 +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:194 msgid "UPnP is not enabled" msgstr "UPnP ist nicht aktiviert." @@ -586,177 +579,177 @@ msgstr "UPnP ist nicht aktiviert." msgid "Excessive clock skew: {0}" msgstr "Zu hohe Abweichung der Uhrzeit: {0}" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:747 msgid "NTCP connections" msgstr "NTCP-Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2057 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2172 msgid "Limit" msgstr "Obere Grenze" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:750 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2058 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 msgid "Timeout" msgstr "Timeout" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:761 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 msgid "Out Queue" msgstr "Ausgehende Warteschlange" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:762 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:761 msgid "Backlogged?" msgstr "Rückstau" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:776 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2120 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:775 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2235 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Inbound" msgstr "ankommend" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:778 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2122 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:777 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2237 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Outbound" msgstr "abgehend" #. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:827 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:826 msgid "peers" msgstr "Teilnehmer" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2056 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171 msgid "UDP connections" msgstr "UDP-Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2063 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 msgid "Sort by peer hash" msgstr "Nach Router Prüfsumme sortieren" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2065 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 msgid "Direction/Introduction" msgstr "Richtung/Bekanntmachung" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2067 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2182 msgid "Sort by idle inbound" msgstr "Sortieren nach untätigen eingehenden Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2069 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 msgid "Sort by idle outbound" msgstr "Sortieren nach untätigen ausgehenden Verbindungen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2072 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2187 msgid "Sort by inbound rate" msgstr "Sortieren nach eingehender Transferrate" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2074 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 msgid "Sort by outbound rate" msgstr "Sortieren nach ausgehender Transferrate" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2077 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2192 msgid "Sort by connection uptime" msgstr "Sortieren nach Lebensdauer der Verbindung" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2079 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 msgid "Sort by clock skew" msgstr "Sortieren nach Zeitunterschied" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2082 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2197 msgid "Sort by congestion window" msgstr "Sortieren nach Größe des Pufferspeichers" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2084 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 msgid "Sort by slow start threshold" msgstr "Sortieren nach Grenzwert des verzögerten Startens" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2087 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2202 msgid "Sort by round trip time" msgstr "Sortieren nach Rundenzeit" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2089 -msgid "Sort by round trip time deviation" -msgstr "Sortieren nach Abweichung der Rundenzeit" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2091 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 msgid "Sort by retransmission timeout" msgstr "Sortieren nach Timeout beim erneuten Senden" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2094 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 msgid "Sort by outbound maximum transmit unit" msgstr "Sortieren nach maximaler ausgehender Transferpaketgröße" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2096 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2211 msgid "Sort by packets sent" msgstr "Sortieren nach Anzahl gesendeter Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2098 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 msgid "Sort by packets received" msgstr "Sortieren nach Anzahl empfangener Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2101 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2216 msgid "Sort by packets retransmitted" msgstr "Sortieren nach Anzahl erneut gesendeter Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2103 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2218 msgid "Sort by packets received more than once" msgstr "Sortieren nach Anzahl mehrfach empfangener Pakete" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2124 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2239 msgid "We offered to introduce them" msgstr "Wir bieten an, diese bekannt zu machen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2126 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2241 msgid "They offered to introduce us" msgstr "Diese boten an, uns bekannt zu machen" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2130 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2245 msgid "Choked" msgstr "gedrosselt" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2138 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2253 msgid "1 fail" msgstr "1 Fehler" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2140 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2255 #, java-format msgid "{0} fails" msgstr "{0} fehlgeschlagen" #. 1 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2146 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2261 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13 msgid "Banned" msgstr "Gesperrt" +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2313 +msgid "backlogged" +msgstr "im Rückstand" + #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2276 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2393 msgid "SUMMARY" msgstr "ZUSAMMENFASSUNG" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:187 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:191 msgid "Dropping tunnel requests: Too slow" msgstr "Ignoriere Tunnelanfragen: zu langsam" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:330 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:334 msgid "Dropping tunnel requests: Overloaded" msgstr "Ignoriere Tunnelanfragen: überlastet" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:539 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:543 msgid "Rejecting tunnels: Request overload" msgstr "Weise Tunnelanfragen zurück: Ãœberlast an Anfragen" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:570 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:574 msgid "Rejecting tunnels: Connection limit" msgstr "Weise Tunnelanfragen zurück: Verbindungslimit erreicht" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:773 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:794 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:778 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:799 msgid "Dropping tunnel requests: High load" msgstr "Ignoriere Tunnelanfragen: Hohe Last" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:786 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:878 msgid "Dropping tunnel requests: Queue time" msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange" @@ -1750,463 +1743,743 @@ msgstr "Sambia" msgid "Zimbabwe" msgstr "Simbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:118 -#: ../java/src/net/i2p/router/web/HomeHelper.java:33 -#: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:211 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:310 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:214 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:216 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:232 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:234 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:225 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:195 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:197 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:284 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:223 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:211 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:211 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:209 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:211 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:222 -msgid "I2P Router Console" -msgstr "I2P-Routerkonsole" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:682 +#, java-format +msgid "New plugin version {0} is available" +msgstr "Neue Version des Zusatzprogramms ist verfügbar ({0})" -#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:51 -msgid "Error updating the configuration - please see the error logs" -msgstr "" -"Fehler beim Aktualisieren der Einstellungen - Bitte schau in die " -"Fehlerberichte!" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:712 +#, java-format +msgid "Update check failed for plugin {0}" +msgstr "Ãœberprüfung auf neue Version des Zusatzprogramms {0} fehlgeschlagen" -#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:297 -msgid "Configuration saved successfully" -msgstr "Einstellungen erfolgreich gespeichert" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:714 +#, java-format +msgid "No new version is available for plugin {0}" +msgstr "Keine neue Version des Zusatzprogrammes {0} verfügbar" -#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:427 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:299 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:96 -msgid "" -"Error saving the configuration (applied but not saved) - please see the " -"error logs" -msgstr "" -"Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) " -"- Bitte schau in die Fehlerberichte!" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:737 +#, java-format +msgid "{0}B transferred" +msgstr "{0}Bytes übertragen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 -msgid "Save Client Configuration" -msgstr "Speichere Klienteneinstellungen" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:790 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:211 +#, java-format +msgid "Transfer failed from {0}" +msgstr "Ãœbertragung von {0} fehlgeschlagen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:507 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:511 -msgid "Save Interface Configuration" -msgstr "Speichere Interface-Einstellungen" +#. Process the .sud/.su2 file +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:958 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:993 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:672 +msgid "Update downloaded" +msgstr "Aktualisierung heruntergeladen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:527 -msgid "Save WebApp Configuration" -msgstr "Speichere WebApplikations-Einstellungen" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +msgid "Restarting" +msgstr "Starte neu" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:541 -msgid "Save Plugin Configuration" -msgstr "Speichere Einstellungen des Zusatzprogrammes" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +msgid "Update verified" +msgstr "Aktualisierung verifiziert" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:553 -msgid "Install Plugin" -msgstr "Zusatzprogramm installieren" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:982 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:141 +#, java-format +msgid "from {0}" +msgstr "von {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:55 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:555 -msgid "Update All Installed Plugins" -msgstr "Alle installierten Plugins aktualisieren" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:997 +#, java-format +msgid "Unsigned update file from {0} is corrupt" +msgstr "Unsignierte Aktualisierungsdatei von {0} ist fehlerhaft" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:95 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1026 #, java-format -msgid "Error stopping plugin {0}" -msgstr "Fehler beim Stoppen des Zusatzprogramms {0}" +msgid "Failed copy to {0}" +msgstr "Kopieren nach {0} fehlgeschlagen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:100 +#: ../java/src/net/i2p/router/update/PluginUpdateChecker.java:67 #, java-format -msgid "Deleted plugin {0}" -msgstr "Zusatzprogramm {0} gelöscht" +msgid "Checking for update of plugin {0}" +msgstr "Auf Aktualisierungen des Zusatzprogramms {0} prüfen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:102 +#. set status before thread to ensure UI feedback +#: ../java/src/net/i2p/router/update/PluginUpdateHandler.java:79 +#: ../java/src/net/i2p/router/update/UnsignedUpdateHandler.java:92 +#: ../java/src/net/i2p/router/update/UpdateHandler.java:46 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:178 +msgid "Updating" +msgstr "Aktualisiere" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:86 #, java-format -msgid "Error deleting plugin {0}" -msgstr "Fehler beim Löschen des Zusatzprogramms {0}" +msgid "Attempting to install from file {0}" +msgstr "Versuche, von Datei {0} zu installieren" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:122 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:90 #, java-format -msgid "Stopped plugin {0}" -msgstr "Zusatzprogramm {0} angehalten" +msgid "No file specified {0}" +msgstr "Keine Datei angegeben {0}" -#. label (IE) -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:146 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:264 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:97 +#, java-format +msgid "Failed to install from file {0}, copy failed." +msgstr "Installation der Datei {0} fehlgeschlagen, Kopieren fehlgeschlagen" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:101 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:363 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "Lade Zusatzprogramm herunter von {0}" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:127 +msgid "Plugin downloaded" +msgstr "Zusatzprogramm heruntergeladen" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:132 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:368 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "Kann kein Verzeichnis für das Zusatzprogramm {0} anlegen" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:151 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "Zusatzprogramm von {0} ist beschädigt." + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:162 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "" +"Das Zusatzprogramm von {0} enthält nicht die benötigte Konfigurationsdatei" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:175 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "Zusatzprogramm von {0} enthält einen ungültigen Schlüssel" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:199 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:209 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:223 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "Ãœberprüfung der Signatur des Zusatzprogramms {0} ist fehlgeschlagen" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:238 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "Zusatzprogramm von {0} hat einen ungültigen Namen oder Version" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:243 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "Zusatzprogramm {0} hat keine passende Version" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:254 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "Dieses Zusatzprogramm benötigt I2P-Version {0} oder höher" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:262 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "Dieses Zusatzprogramm benötigt Java-Version {0} oder neuer" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:271 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" +"Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist " +"es ist bereits installiert." + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:282 +msgid "Installed plugin does not contain the required configuration file" +msgstr "" +"Das installierte Zusatzprogramm enthält nicht die benötigte " +"Konfigurationsdatei" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:290 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "" +"Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem " +"installierten Zusatzprogramm überein." + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:297 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "" +"Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die " +"installierte Version" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:304 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "" +"Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des " +"Zusatzprogramms" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:311 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "" +"Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder " +"älter des Zusatzprogramms" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:319 +#, java-format +msgid "Plugin requires Jetty version {0} or higher" +msgstr "Plugin benötigt Jetty-Version {0} oder höher" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:326 +#, java-format +msgid "Plugin requires Jetty version {0} or lower" +msgstr "Plugin benötigt Jetty-Version {0} oder geringer" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:335 +#, java-format +msgid "Cannot copy plugin to directory {0}" +msgstr "Kann nicht in Pluginverzeichnis {0} schreiben" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:345 +msgid "Plugin will be installed on next restart." +msgstr "Das Plugin wird beim nächsten Neustart installiert." + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:363 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "" +"Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm " +"ist noch nicht installiert" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:376 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "Installation des Zusatzprogramms in {0} ist fehlgeschlagen" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:383 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:411 +#, java-format +msgid "Plugin {0} installed" +msgstr "Zusatzprogramm {0} wurde installiert" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:402 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "Zusatzprogramm {0} installiert und gestartet" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:405 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "" +"Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. " +"Ãœberprüfen Sie die Berichte!" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:407 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "Zusatzprogramm {0} ist installiert, startet jedoch nicht" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:419 +#, java-format +msgid "Failed to download plugin from {0}" +msgstr "Konnte Zusatzprogramm von {0} nicht herunterladen" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:122 +#, java-format +msgid "Updating from {0}" +msgstr "Aktualisiere von {0}" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:191 +#, java-format +msgid "No new version found at {0}" +msgstr "Keine neue Version unter {0} gefunden" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:64 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "vorübergehende Sperrung endet in {0}" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:66 +#, java-format +msgid "Banned until restart or in {0}" +msgstr "Gesperrt bis zum Neustart oder in {0}" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:78 +msgid "unban now" +msgstr "Bann aufheben" + +#: ../java/src/net/i2p/router/web/CSSHelper.java:118 +#: ../java/src/net/i2p/router/web/HomeHelper.java:33 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:225 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:222 +msgid "I2P Router Console" +msgstr "I2P-Routerkonsole" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:51 +msgid "Error updating the configuration - please see the error logs" +msgstr "" +"Fehler beim Aktualisieren der Einstellungen - Bitte schau in die " +"Fehlerberichte!" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:323 +msgid "Configuration saved successfully" +msgstr "Einstellungen erfolgreich gespeichert" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:431 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:325 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:85 +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" +msgstr "" +"Fehler beim Speichern der Einstellungen (angewendet aber nicht gespeichert) " +"- Bitte schau in die Fehlerberichte!" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:460 +msgid "Save Client Configuration" +msgstr "Speichere Klienteneinstellungen" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:530 +msgid "Save Interface Configuration" +msgstr "Speichere Interface-Einstellungen" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:546 +msgid "Save WebApp Configuration" +msgstr "Speichere WebApplikations-Einstellungen" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:50 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:560 +msgid "Save Plugin Configuration" +msgstr "Speichere Einstellungen des Zusatzprogrammes" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:572 +msgid "Install Plugin" +msgstr "Zusatzprogramm installieren" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:58 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574 +msgid "Update All Installed Plugins" +msgstr "Alle installierten Plugins aktualisieren" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:127 +#, java-format +msgid "Error stopping plugin {0}" +msgstr "Fehler beim Stoppen des Zusatzprogramms {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 +#, java-format +msgid "Deleted plugin {0}" +msgstr "Zusatzprogramm {0} gelöscht" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:105 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "Fehler beim Löschen des Zusatzprogramms {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:125 +#, java-format +msgid "Stopped plugin {0}" +msgstr "Zusatzprogramm {0} angehalten" + +#. label (IE) +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:252 msgid "Start" msgstr "Starten" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:165 -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:106 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:168 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:102 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:35 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:140 msgid "Unsupported" msgstr "Nicht unterstützt" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:211 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 msgid "New client added" msgstr "Neuer Klient hinzugefügt" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:215 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "" -"Klienteninstellungen erfolgreich gespeichert - Neustart zum Ãœbernehmen " -"erforderlich" +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:216 +#, fuzzy +msgid "Client configuration saved successfully" +msgstr "Einstellungen erfolgreich gespeichert" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:230 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:243 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:254 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:217 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:429 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:77 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:101 +#, fuzzy +msgid "Restart required to take effect" +msgstr "Aktivere UPnP, Neustart erforderlich um wirksam zu werden" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 msgid "Bad client index." msgstr "Falscher Index für den Klienten" #. #. What do we do here? #. -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:508 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:425 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:428 msgid "Client" msgstr "Klient" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 msgid "stopped" msgstr "angehalten" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:305 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 msgid "started" msgstr "gestartet" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 msgid "deleted" msgstr "gelöscht" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:275 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:269 msgid "WebApp configuration saved." msgstr "WebApp Einstellungen gespeichert." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:290 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "Plugin configuration saved." msgstr "Einstellungen des Zusatzprogramms gespeichert." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:305 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 msgid "WebApp" msgstr "WebApplikation" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:301 msgid "Failed to start" msgstr "Fehler beim Starten" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:312 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 msgid "Failed to find server." msgstr "Konnte keinen Server finden" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:318 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:312 msgid "No plugin URL specified." msgstr "Keine URL des Zusatzprogramms angegeben" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:328 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:322 #, java-format msgid "No update URL specified for {0}" msgstr "Keine Update-URL angegeben für {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:337 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:350 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:355 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:368 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:373 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:331 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:352 msgid "Plugin or update download already in progress." msgstr "Zusatzprogramm oder Aktualisierung wird bereits heruntergeladen." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:340 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 msgid "Updating all plugins" msgstr "Alle Plugins aktualisieren" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:359 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:140 #, java-format -msgid "Downloading plugin from {0}" -msgstr "Lade Zusatzprogramm herunter von {0}" +msgid "Bad URL {0}" +msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:377 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:379 #, java-format msgid "Checking plugin {0} for updates" msgstr "Zusatzprogramm {0} auf Aktualisierungen prüfen" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389 #, java-format msgid "Started plugin {0}" msgstr "Zusatzprogramm {0} gestartet" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:391 #, java-format msgid "Error starting plugin {0}" msgstr "Fehler beim Starten des Zusatzprogramms {0}" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:425 -msgid "" -"Interface configuration saved successfully - restart required to take effect." +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:413 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:76 +#, java-format +msgid "Added user {0}" msgstr "" -"Interface-Einstellungen erfolgreich gespeichert - Neustart zum Ãœbernehmen " -"erforderlich" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:86 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:428 +#, fuzzy +msgid "Interface configuration saved" +msgstr "Speichere Interface-Einstellungen" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Edit" msgstr "Bearbeiten" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:83 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:456 msgid "Add Client" msgstr "Klienten hinzufügen" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 msgid "Class and arguments" msgstr "Klasse und Argumente" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Control" msgstr "Kontrolle" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Run at Startup?" msgstr "Beim Starten des Systems mitstarten?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:203 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:191 msgid "Description" msgstr "Beschreibung" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Plugin" msgstr "Zusatzprogramm" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:155 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:290 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:319 msgid "Version" msgstr "Version" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:157 msgid "Signed by" msgstr "unterschrieben von" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:174 msgid "Date" msgstr "Datum" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Author" msgstr "Autor" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:208 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 msgid "License" msgstr "Lizenz" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:213 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:201 #: ../java/src/net/i2p/router/web/HomeHelper.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174 msgid "Website" msgstr "Webseite" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:206 msgid "Update link" msgstr "Adresse des Updates" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:269 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:257 msgid "Stop" msgstr "Stopp" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:271 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:381 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:259 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:98 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:420 msgid "Check for updates" msgstr "Auf Aktualisierungen prüfen" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:272 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Update" msgstr "Aktualisierung" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:277 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:265 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "Sind Sie sicher, dass Sie {0} löschen wollen?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 msgid "Delete" msgstr "löschen" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:25 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:855 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:439 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:455 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:18 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:877 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:438 msgid "Delete selected" msgstr "Lösche ausgewähltes" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:26 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:874 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:425 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:445 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:453 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:461 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:24 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:896 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494 msgid "Add item" msgstr "Hinzufügen" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:27 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:443 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:459 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:23 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:492 msgid "Restore defaults" msgstr "Auf Standardwerte zurücksetzen" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:28 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:30 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:405 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:409 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:439 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:478 msgid "Save" msgstr "Speichern" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:33 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:29 msgid "Home page changed" msgstr "Homepage verändert" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:53 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:49 msgid "Restored default settings" msgstr "Einstellungen auf Standardwerte zurückgesetzt" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:65 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:61 msgid "No name entered" msgstr "Kein Name angegeben" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:70 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:66 msgid "No URL entered" msgstr "Keine Adresse eingegeben" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:83 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:85 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:82 msgid "Added" msgstr "Hinzugefügt" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:100 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:111 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:108 msgid "Removed" msgstr "Entfernt" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:461 msgid "Add key" msgstr "Schlüssel hinzufügen" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:459 msgid "Delete key" msgstr "Schlüssel löschen" @@ -2275,7 +2548,7 @@ msgstr "Gültige Stufen sind: DEBUG, INFO, WARN, ERROR, CRIT" #. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm #. but pink instead of yellow for WARN #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:106 +#: ../java/src/net/i2p/router/web/LogsHelper.java:117 msgid "CRIT" msgstr "KRITISCH" @@ -2284,23 +2557,24 @@ msgid "DEBUG" msgstr "DEBUG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:108 +#: ../java/src/net/i2p/router/web/LogsHelper.java:119 msgid "ERROR" msgstr "FEHLER" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:112 +#: ../java/src/net/i2p/router/web/LogsHelper.java:123 msgid "INFO" msgstr "INFO" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:110 +#: ../java/src/net/i2p/router/web/LogsHelper.java:121 msgid "WARN" msgstr "WARNUNG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:104 #: ../java/src/net/i2p/router/web/HomeHelper.java:192 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:809 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:831 msgid "Remove" msgstr "Entfernen" @@ -2324,21 +2598,21 @@ msgid "Network" msgstr "Netzwerk" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:288 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:279 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:284 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:282 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:295 @@ -2383,7 +2657,7 @@ msgid "Clients" msgstr "Klienten" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:433 msgid "Keyring" msgstr "Schlüsselbund" @@ -2408,110 +2682,120 @@ msgstr "Statistiken" msgid "Advanced" msgstr "Erweitert" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:54 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:31 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:53 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:30 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:545 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:482 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:467 msgid "Save changes" msgstr "Änderungen speichern" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:136 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:135 msgid "Rechecking router reachability..." msgstr "Erneutes prüfen der Erreichbarket des Routers ..." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 msgid "Updating IP address" msgstr "Aktualisiere die IP-Adresse" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:195 msgid "Disabling TCP completely" msgstr "Deaktiviere TCP vollständig" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:198 -msgid "Updating inbound TCP address to" -msgstr "Aktualisiere eingehende TCP-Adresse auf" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, java-format +msgid "Updating TCP address to {0}" +msgstr "Aktualisiere TCP Adresse auf {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:203 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:207 msgid "Disabling inbound TCP" msgstr "Deaktiviere eingehenden TCP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:209 msgid "Updating inbound TCP address to auto" msgstr "Aktualisiere eigehende TCP-Adresse auf automatisch" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:216 -msgid "Updating inbound TCP port to" -msgstr "Aktualisiere eingehenden TCP-Port auf" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:222 +#, java-format +msgid "Updating TCP port to {0}" +msgstr "Aktualisiere TCP Port auf {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:219 -msgid "Updating inbound TCP port to auto" -msgstr "Aktualisiere eingehenden TCP-Port auf automatisch" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Warnung - Ports unter 1024 sind nicht empfehlenswert" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "Updating UDP port from" -msgstr "Aktualisiere UDP-Port von" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:255 +msgid "Invalid port" +msgstr "Ungültiger Port" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "to" -msgstr "auf" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:233 +msgid "Updating inbound TCP port to auto" +msgstr "Aktualisiere eingehenden TCP-Port auf automatisch" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +#, java-format +msgid "Updating UDP port to {0}" +msgstr "Aktualisiere UDP Port auf {0}" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:272 msgid "Gracefully restarting into Hidden Router Mode" msgstr "Kontrollierter Neustart in den verborgenen Router-Modus" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:274 msgid "Gracefully restarting to exit Hidden Router Mode" msgstr "Kontrollierter Neustart, um den Verborgener-Router-Modus zu verlassen" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:258 -msgid "Enabling UPnP, restart required to take effect" -msgstr "Aktivere UPnP, Neustart erforderlich um wirksam zu werden" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:283 +#, fuzzy +msgid "Enabling UPnP" +msgstr "UDP aktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:260 -msgid "Disabling UPnP, restart required to take effect" -msgstr "Deaktiviere UPnP, Neustart erforderlich um wirksam zu werden" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:285 +#, fuzzy +msgid "Disabling UPnP" +msgstr "UDP deaktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:294 msgid "Enabling laptop mode" msgstr "Laptop-Modus aktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:270 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:296 msgid "Disabling laptop mode" msgstr "Laptop-Modus deaktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:277 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:303 msgid "Disabling UDP" msgstr "UDP deaktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:305 msgid "Enabling UDP" msgstr "UDP aktivieren" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:312 msgid "Requiring SSU introducers" msgstr "Benötige SSU-Hilfsrouter" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:345 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:370 +msgid "Invalid address" +msgstr "Ungültige Adresse" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:375 #, java-format msgid "The hostname or IP {0} is not publicly routable" msgstr "Hostname oder IP {0} ist nicht öffentlich rutbar." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:348 -#, java-format -msgid "The hostname or IP {0} is invalid" -msgstr "Hostname oder IP {0} ist ungültig." - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:400 msgid "Updating bandwidth share percentage" msgstr "Aktualisiere den Anteil der zur Verfügung gestellten Bandbreite" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:404 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:430 msgid "Updated bandwidth limits" msgstr "Aktualisiere die Bandbreitenlimits" @@ -2533,7 +2817,7 @@ msgid "or {0} bytes per month maximum" msgstr "oder maximal {0} Bytes im Monat" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:452 msgid "Ban peer until restart" msgstr "Den Teilnehmer bis zum Neustart sperren" @@ -2553,7 +2837,7 @@ msgid "Invalid peer" msgstr "ungültiger Teilnehmer" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:454 msgid "Unban peer" msgstr "Sperrung des Teilnehmers aufheben" @@ -2566,7 +2850,7 @@ msgid "is not currently banned" msgstr "ist zur Zeit nicht gesperrt" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:480 msgid "Adjust peer bonuses" msgstr "Teilnehmer-Boni anpassen" @@ -2578,28 +2862,28 @@ msgstr "ungültige Geschwindigkeitsangabe" msgid "Bad capacity value" msgstr "ungültiger Wert für die Kapazität" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:480 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:513 msgid "Save changes and reseed now" msgstr "Änderungen speichern und Reseed beginnen" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:23 msgid "Reseeding is already in progress" msgstr "Reseed läuft bereits" #. skip the nonce checking in ReseedHandler -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:27 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:26 msgid "Starting reseed process" msgstr "Beginne den Reseed" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:83 msgid "Configuration saved successfully." msgstr "Einstellungen erfolgreich gespeichert" #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34 -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:393 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:176 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 msgid "Shutdown immediately" msgstr "Beende I2P sofort" @@ -2620,7 +2904,7 @@ msgstr "Sofortiger Neustart" #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:163 msgid "Restart" msgstr "Neustart" @@ -2646,113 +2930,122 @@ msgstr "Ausschalten in {0}" msgid "Restart in {0}" msgstr "Neustart in {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:169 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:391 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:427 msgid "Shutdown gracefully" msgstr "Kontrolliert ausschalten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:173 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 msgid "Graceful shutdown initiated" msgstr "Kontrolliertes Ausschalten eingeleitet" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Unverzüglich ausschalten! - Und tschüss!" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:395 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 msgid "Cancel graceful shutdown" msgstr "Kontrolliertes Ausschalten abbrechen" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 msgid "Graceful shutdown cancelled" msgstr "Kontrolliertes Ausschalten abgebrochen" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:407 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 msgid "Graceful restart" msgstr "Kontrollierter Neustart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:187 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 msgid "Graceful restart requested" msgstr "Kontrollierter Neustart angefordert" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:409 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:445 msgid "Hard restart" msgstr "Harter Neustart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 msgid "Hard restart requested" msgstr "Harter Neustart angefordert" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 msgid "Rekey and Restart" msgstr "neue RouterID erstellen und neustarten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:197 msgid "Rekeying after graceful restart" msgstr "Neue RouterID nach sanftem Neustart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:198 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 msgid "Rekey and Shutdown" msgstr "neue RouterID generieren und I2P beenden" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:201 msgid "Rekeying after graceful shutdown" msgstr "Neue RouterID nach sanftem Herunterfahren" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 msgid "Run I2P on startup" msgstr "Starte I2P beim Systemstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:473 msgid "Don't run I2P on startup" msgstr "Starte I2P nicht beim Systemstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:497 msgid "Dump threads" msgstr "Threadliste ausgeben" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:213 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 #, java-format msgid "Threads dumped to {0}" msgstr "Thread gespeichert in {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:505 msgid "View console on startup" msgstr "Zeige die Konsole nach dem Starten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 msgid "Console is to be shown on startup" msgstr "Konsole wird nach dem Starten angezeigt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:507 msgid "Do not view console on startup" msgstr "Zeige Konsole beim Starten nicht" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 msgid "Console is not to be shown on startup" msgstr "Konsole wird beim Starten nicht gezeigt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:493 +msgid "Force GC" +msgstr "Erzwinge GC" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:224 +msgid "Full garbage collection requested" +msgstr "Vollständige Garbage Collection angefordert" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:233 msgid "Service installed" msgstr "Service wurde installiert" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:230 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:235 msgid "Warning: unable to install the service" msgstr "Warnung: Service konnte nicht installiert werden" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:242 msgid "Service removed" msgstr "Service wurde entfernt" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:239 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:244 msgid "Warning: unable to remove the service" msgstr "Warnung: Service konnte nicht entfernt werden" @@ -2761,18 +3054,15 @@ msgid "Stat filter and location updated successfully to" msgstr "Statusfilter und Speicherort erfolgreich geändert auf" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:119 -msgid "Full statistics enabled - restart required to take effect" -msgstr "" -"Vollständige Statistiken aktiviert, Neustart erforderlich, um wirksam zu " -"werden" +#, fuzzy +msgid "Full statistics enabled" +msgstr "Statistiken" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 -msgid "Full statistics disabled - restart required to take effect" +msgid "Full statistics disabled" msgstr "" -"Vollständige Statistiken deaktiviert, Neustart erforderlich, um wirksam zu " -"werden" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:125 msgid "" "Graph list updated, may take up to 60s to be reflected here and on the <a " "href=\"graphs.jsp\">Graphs Page</a>" @@ -2780,66 +3070,66 @@ msgstr "" "Liste der Grafiken aktualisiert. Es dauert bis zu 60s, um hier und auf <a " "href=\"graphs.jsp\">Graphenseite</a> angezeigt zu werden." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:28 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:25 msgid "Save order" msgstr "Reihenfolge speichern" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:35 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:32 msgid "Refresh interval changed" msgstr "Auffrischungsverzögerung geändert" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:37 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:34 #, java-format msgid "Refresh interval must be at least {0} seconds" msgstr "Die Auffrischungsverzögerung muss mindestens {0} Sekunden betragen." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:39 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:36 msgid "Refresh interval must be a number" msgstr "Die Auffrischungsverzögerung muss als Zahl angegeben werden" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:417 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:450 msgid "Restore full default" msgstr "Standardeinstellungen wiederherstellen" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:44 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:41 msgid "Full summary bar default restored." msgstr "Vollständige Schnellübersicht wiederhergestellt." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:49 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:141 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:46 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:138 msgid "Summary bar will refresh shortly." msgstr "Die Schnellübersicht wird neu geladen." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:46 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:419 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:452 msgid "Restore minimal default" msgstr "Minimale Standardwerte wiederherstellen" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45 msgid "Minimal summary bar default restored." msgstr "Minimale Schnellübersicht wiederhergestellt." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:65 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:87 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:135 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:62 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:132 msgid "Order must be an integer" msgstr "Die Reihenfolge muss eine natürliche Zahl sein." -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:72 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:69 msgid "No section selected" msgstr "kein Abschnitt ausgewählt" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:77 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:74 msgid "No order entered" msgstr "keine Reihenfolge angegeben" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:130 msgid "Moved" msgstr "verschoben" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:137 msgid "Saved order of sections." msgstr "Reihenfolge der Abschnitte gespeichert" @@ -2854,7 +3144,9 @@ msgid "Exploratory tunnel configuration saved successfully." msgstr "Erkundungstunneleinstellungen erfolgreich gespeichert" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:143 -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:56 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:97 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs." @@ -2935,179 +3227,226 @@ msgstr "Optionen für eingehende Tunnel" msgid "Outbound options" msgstr "Optionen für ausgehende Tunnel" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:46 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:442 +#, fuzzy +msgid "Add user" +msgstr "Schlüssel hinzufügen" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 msgid "Theme change saved." msgstr "Änderung an der grafischen Oberfläche gespeichert" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:53 msgid "Refresh the page to view." msgstr "Laden Sie die Seite neu, damit die Änderungen sichtbar werden!" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:63 +#, fuzzy +msgid "No user name entered" +msgstr "Kein Name angegeben" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:68 +#, fuzzy +msgid "No password entered" +msgstr "keine Reihenfolge angegeben" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:94 +#, fuzzy, java-format +msgid "Removed user {0}" +msgstr "Entfernt" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:26 msgid "Set theme universally across all apps" -msgstr "" +msgstr "selbe Aufmachung für alle gebündelten Anwendungen verwenden?" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Arabic" msgstr "Arabisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Czech" msgstr "Tschechisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Danish" msgstr "Dänisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "English" msgstr "Englisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Estonian" msgstr "Estnisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Finnish" msgstr "Finnisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "German" msgstr "Deutsch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Greek" msgstr "Griechisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Spanish" msgstr "Spanisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Dutch" msgstr "Niederländisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "French" msgstr "Französisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Hungarian" msgstr "Ungarisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Italian" msgstr "Italienisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Polish" msgstr "Polnisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Portuguese" msgstr "Portugiesisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Russian" msgstr "Russisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Swedish" msgstr "Schwedisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Chinese" msgstr "Chinesisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Ukrainian" msgstr "Ukrainisch" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Vietnamese" msgstr "Vietnamesisch" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:103 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:100 +msgid "Add a user and password to enable." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:106 +#, fuzzy +msgid "User Name" +msgstr "Benutzername" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:117 +#: ../java/src/net/i2p/router/web/HomeHelper.java:214 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:879 +msgid "Add" +msgstr "Hinzufügen" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:516 +msgid "Password" +msgstr "Passwort" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 +#, fuzzy +msgid "Update or check already in progress" +msgstr "Zusatzprogramm oder Aktualisierung wird bereits heruntergeladen." + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:114 msgid "Update available, attempting to download now" msgstr "Aktualisierung verfügbar; versuche, diese herunterzuladen" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:116 msgid "Update available, click button on left to download" msgstr "" "Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:122 msgid "No update available" msgstr "Keine Aktualisierung verfügbar" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:134 #, java-format msgid "Updating news URL to {0}" msgstr "Aktualisiere die Adresse für Benachrichtigungen auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:126 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:134 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:52 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:58 msgid "internal" msgstr "intern" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:142 #, java-format msgid "Updating proxy host to {0}" msgstr "Aktualisiere Proxyserver auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:150 #, java-format msgid "Updating proxy port to {0}" msgstr "Aktualisiere den Port des Proxys auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:150 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:162 #, java-format msgid "Updating refresh frequency to {0}" msgstr "Aktualisiere die Häufigkeit des Neuladens auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:151 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:111 #: ../java/src/net/i2p/router/web/GraphHelper.java:361 msgid "Never" msgstr "Nie" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:170 #, java-format msgid "Updating update policy to {0}" msgstr "Aktualisiere die Aktualisierungsrichtlinien auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:179 msgid "Updating update URLs." msgstr "Aktualisiere die Aktualisierungsadressen auf" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190 msgid "Updating trusted keys." msgstr "Aktualisiere die vertrauten Schlüssel" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:186 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198 #, java-format msgid "Updating unsigned update URL to {0}" msgstr "Aktualisiere die Adresse der unsignierten Aktualisierungsdatei auf {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:113 msgid "Every" msgstr "Alle" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131 msgid "Notify only" msgstr "Nur benachrichtigen" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:139 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:138 msgid "Download and verify only" msgstr "Nur herunterladen und überprüfen" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:147 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:146 msgid "Download, verify, and restart" msgstr "Herunterladen, überprüfen und neustarten" -#: ../java/src/net/i2p/router/web/FormHandler.java:176 +#: ../java/src/net/i2p/router/web/FormHandler.java:203 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." @@ -3116,6 +3455,12 @@ msgstr "" "'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte " "erneut senden." +#: ../java/src/net/i2p/router/web/FormHandler.java:205 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + #: ../java/src/net/i2p/router/web/GraphHelper.java:159 msgid "Combined bandwidth graph" msgstr "Graph der kombinierten Bandbreite" @@ -3199,8 +3544,8 @@ msgid "Periods" msgstr "Zeitraum" #: ../java/src/net/i2p/router/web/GraphHelper.java:346 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 msgid "or" msgstr "oder" @@ -3252,7 +3597,7 @@ msgid "Configure Bandwidth" msgstr "Konfiguriere Bandbreite" #: ../java/src/net/i2p/router/web/HomeHelper.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:315 msgid "I2P Bandwidth Configuration" msgstr "I2P-Bandbreiteneinstellung" @@ -3269,7 +3614,7 @@ msgid "Customize Home Page" msgstr "Homepage anpassen" #: ../java/src/net/i2p/router/web/HomeHelper.java:30 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:331 msgid "I2P Home Page Configuration" msgstr "I2P Home Seiten Konfiguration" @@ -3289,7 +3634,7 @@ msgid "I2P Router Help" msgstr "Hilfe zum I2P-Router" #: ../java/src/net/i2p/router/web/HomeHelper.java:33 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 msgid "Router Console" msgstr "I2P-Routerkonsole" @@ -3316,10 +3661,7 @@ msgstr "Fehlerberichte" msgid "Bug tracker" msgstr "Bug Tracker" -#: ../java/src/net/i2p/router/web/HomeHelper.java:40 -msgid "The Italian Bittorrent Resource" -msgstr "Die italienische Bittorrentquelle" - +#. "colombo-bt.i2p" + S + _x("The Italian Bittorrent Resource") + S + "http://colombo-bt.i2p/" + S + I + "colomboicon.png" + S + #: ../java/src/net/i2p/router/web/HomeHelper.java:41 msgid "Dev Forum" msgstr "Entwicklerforum" @@ -3429,7 +3771,7 @@ msgstr "Projektwebsite" #: ../java/src/net/i2p/router/web/HomeHelper.java:56 msgid "I2P Network Statistics" -msgstr "I2P Netzwerk Statistiken" +msgstr "I2P-Netzwerkstatistiken" #: ../java/src/net/i2p/router/web/HomeHelper.java:57 msgid "Technical Docs" @@ -3463,7 +3805,7 @@ msgstr "" "benutzen" #: ../java/src/net/i2p/router/web/HomeHelper.java:194 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:811 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:833 msgid "Name" msgstr "Name" @@ -3471,21 +3813,16 @@ msgstr "Name" msgid "URL" msgstr "URL" -#: ../java/src/net/i2p/router/web/HomeHelper.java:214 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 -msgid "Add" -msgstr "Hinzufügen" - -#: ../java/src/net/i2p/router/web/LogsHelper.java:29 -#: ../java/src/net/i2p/router/web/LogsHelper.java:72 +#: ../java/src/net/i2p/router/web/LogsHelper.java:32 +#: ../java/src/net/i2p/router/web/LogsHelper.java:79 msgid "File location" msgstr "Ort der Datei" -#: ../java/src/net/i2p/router/web/LogsHelper.java:69 +#: ../java/src/net/i2p/router/web/LogsHelper.java:76 msgid "File not found" msgstr "Datei nicht gefunden" -#: ../java/src/net/i2p/router/web/LogsHelper.java:87 +#: ../java/src/net/i2p/router/web/LogsHelper.java:94 msgid "No log messages" msgstr "keine Ereignisse" @@ -3603,8 +3940,8 @@ msgid "Full entry" msgstr "Ganzer Eintrag" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:630 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:666 msgid "Hidden" msgstr "Versteckt" @@ -3656,249 +3993,40 @@ msgstr "NTCP und SSU" msgid "NTCP and SSU with introducers" msgstr "NTCP und SSU mit Hilfsrouter" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:131 +#: ../java/src/net/i2p/router/web/NewsHelper.java:204 #, java-format msgid "News last updated {0} ago." msgstr "Zeit seit letzter Aktualisierung der Benachrichtigungen: {0};" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:137 +#: ../java/src/net/i2p/router/web/NewsHelper.java:210 #, java-format msgid "News last checked {0} ago." msgstr "Zeit seit letzter Prüfung auf neue Benachrichtigungen: {0}" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:146 +#: ../java/src/net/i2p/router/web/NewsHelper.java:219 msgid "Hide news" msgstr "Neuigkeiten verstecken" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:149 +#: ../java/src/net/i2p/router/web/NewsHelper.java:222 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642 msgid "Show news" msgstr "Neuigkeiten anzeigen" -#: ../java/src/net/i2p/router/web/PluginStarter.java:122 +#: ../java/src/net/i2p/router/web/PluginStarter.java:128 msgid "Checking for plugin updates" msgstr "Ãœberprüfe auf Aktualisierungen der Plugins" -#: ../java/src/net/i2p/router/web/PluginStarter.java:160 +#: ../java/src/net/i2p/router/web/PluginStarter.java:170 #, java-format msgid "1 plugin updated" msgid_plural "{0} plugins updated" msgstr[0] "1 Plugin aktualisiert" msgstr[1] "{0} Plugins aktualisiert" -#: ../java/src/net/i2p/router/web/PluginStarter.java:162 +#: ../java/src/net/i2p/router/web/PluginStarter.java:172 msgid "Plugin update check complete" msgstr "Ãœberprüfung auf Aktualisierungen der Plugin abgeschlossen" -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:81 -#, java-format -msgid "Cannot check, plugin {0} is not installed" -msgstr "Kann nicht überprüfen, Zusatzprogramm {0} ist nicht installiert" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:151 -#, java-format -msgid "Checking for update of plugin {0}" -msgstr "Auf Aktualisierungen des Zusatzprogramms {0} prüfen" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:181 -#, java-format -msgid "New plugin version {0} is available" -msgstr "Neue Version des Zusatzprogramms ist verfügbar ({0})" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:184 -#, java-format -msgid "No new version is available for plugin {0}" -msgstr "Keine neue Version des Zusatzprogrammes {0} verfügbar" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:194 -#, java-format -msgid "Update check failed for plugin {0}" -msgstr "Ãœberprüfung auf neue Version des Zusatzprogramms {0} fehlgeschlagen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:125 -#, java-format -msgid "Attempting to install from file {0}" -msgstr "Versuche, von Datei {0} zu installieren" - -#. This is actually what String.isEmpty() does, so it should be safe. -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:129 -#, java-format -msgid "No file specified {0}" -msgstr "Keine Datei angegeben {0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:136 -#, java-format -msgid "Failed to install from file {0}, copy failed." -msgstr "Installation der Datei {0} fehlgeschlagen, Kopieren fehlgeschlagen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:162 -msgid "Downloading plugin" -msgstr "Lade Zusatzprogramm herunter" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:169 -#, java-format -msgid "{0}B transferred" -msgstr "{0}Bytes übertragen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 -msgid "Plugin downloaded" -msgstr "Zusatzprogramm heruntergeladen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:182 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:415 -#, java-format -msgid "Cannot create plugin directory {0}" -msgstr "Kann kein Verzeichnis für das Zusatzprogramm {0} anlegen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:191 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:302 -#, java-format -msgid "from {0}" -msgstr "von {0}" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 -#, java-format -msgid "Plugin from {0} is corrupt" -msgstr "Zusatzprogramm von {0} ist beschädigt." - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:212 -#, java-format -msgid "Plugin from {0} does not contain the required configuration file" -msgstr "" -"Das Zusatzprogramm von {0} enthält nicht die benötigte Konfigurationsdatei" - -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 -#, java-format -msgid "Plugin from {0} contains an invalid key" -msgstr "Zusatzprogramm von {0} enthält einen ungültigen Schlüssel" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:259 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 -#, java-format -msgid "Plugin signature verification of {0} failed" -msgstr "Ãœberprüfung der Signatur des Zusatzprogramms {0} ist fehlgeschlagen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:288 -#, java-format -msgid "Plugin from {0} has invalid name or version" -msgstr "Zusatzprogramm von {0} hat einen ungültigen Namen oder Version" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -#, java-format -msgid "Plugin {0} has mismatched versions" -msgstr "Zusatzprogramm {0} hat keine passende Version" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 -#, java-format -msgid "This plugin requires I2P version {0} or higher" -msgstr "Dieses Zusatzprogramm benötigt I2P-Version {0} oder höher" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 -#, java-format -msgid "This plugin requires Java version {0} or higher" -msgstr "Dieses Zusatzprogramm benötigt Java-Version {0} oder neuer" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:318 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "" -"Heruntergeladenes Zusatzprogramm lässt sich nur neu installieren, jedoch ist " -"es ist bereits installiert." - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:329 -msgid "Installed plugin does not contain the required configuration file" -msgstr "" -"Das installierte Zusatzprogramm enthält nicht die benötigte " -"Konfigurationsdatei" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:337 -msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" -"Die Signatur des heruntergeladenen Zusatzprogramms stimmt nicht mit dem " -"installierten Zusatzprogramm überein." - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 -#, java-format -msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" -"Version {0} des heruntergeladenen Zusatzprogramms ist nicht neuer als die " -"installierte Version" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 -#, java-format -msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" -"Aktualisierung des Zusatzprogramms benötigt Version {0} oder höher des " -"Zusatzprogramms" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358 -#, java-format -msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" -"Aktualisierung des Zusatzprogramms benötigt installierte Version {0} oder " -"älter des Zusatzprogramms" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:366 -#, java-format -msgid "Plugin requires Jetty version {0} or higher" -msgstr "Plugin benötigt Jetty-Version {0} oder höher" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 -#, java-format -msgid "Plugin requires Jetty version {0} or lower" -msgstr "Plugin benötigt Jetty-Version {0} oder geringer" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 -#, java-format -msgid "Cannot copy plugin to directory {0}" -msgstr "Kann nicht in Pluginverzeichnis {0} schreiben" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:392 -msgid "Plugin will be installed on next restart." -msgstr "Das Plugin wird beim nächsten Neustart installiert." - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:410 -msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"Dieses Zusatzprogramm ist nur für Aktualisierungen, aber das Zusatzprogramm " -"ist noch nicht installiert" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:423 -#, java-format -msgid "Failed to install plugin in {0}" -msgstr "Installation des Zusatzprogramms in {0} ist fehlgeschlagen" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:430 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:458 -#, java-format -msgid "Plugin {0} installed" -msgstr "Zusatzprogramm {0} wurde installiert" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:449 -#, java-format -msgid "Plugin {0} installed and started" -msgstr "Zusatzprogramm {0} installiert und gestartet" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:452 -#, java-format -msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" -"Zusatzprogramm {0} wurde installiert konnte jedoch nicht gestartet werden. " -"Ãœberprüfen Sie die Berichte!" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:454 -#, java-format -msgid "Plugin {0} installed but failed to start" -msgstr "Zusatzprogramm {0} ist installiert, startet jedoch nicht" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:466 -#, java-format -msgid "Failed to download plugin from {0}" -msgstr "Konnte Zusatzprogramm von {0} nicht herunterladen" - #. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>"); #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 #, java-format @@ -3927,13 +4055,13 @@ msgstr "Gruppen (Kategorien)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:93 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:472 msgid "Speed" msgstr "Geschwindigkeit" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:94 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:476 msgid "Capacity" msgstr "Kapazität" @@ -4127,63 +4255,49 @@ msgstr "Alle" msgid "Select search engine" msgstr "Wähle eine Suchmaschine aus" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 -#, java-format -msgid "Temporary ban expiring in {0}" -msgstr "vorübergehende Sperrung endet in {0}" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:66 -#, java-format -msgid "Banned until restart or in {0}" -msgstr "Gesperrt bis zum Neustart oder in {0}" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:78 -msgid "unban now" -msgstr "Bann aufheben" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:313 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:312 msgid "Bandwidth usage" msgstr "Bandbreitennutzung" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:323 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:322 msgid "Outbound Bytes/sec" msgstr "Ausgehende Bytes/Sek." #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:325 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 msgid "Inbound Bytes/sec" msgstr "Eingehende Bytes/Sek." +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 #: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:329 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 msgid "Bps" msgstr "B/s" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 msgid "Out average" msgstr "Mittelwert ausgehend" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:150 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 msgid "max" msgstr "Max" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 msgid "In average" msgstr "Mittelwert eingehend" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 msgid "GO" msgstr "OK" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 msgid "Statistics gathered during this router's uptime" msgstr "Zur Laufzeit dieses Routers gesammelte Statistiken" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "" "The data gathered is quantized over a 1 minute period, so should just be " "used as an estimate." @@ -4191,7 +4305,7 @@ msgstr "" "Die Daten werden über jeweils 1 Minute erhoben und repräsentieren daher nur " "eine Näherung." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:65 msgid "These statistics are primarily used for development and debugging." msgstr "" "Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung." @@ -4366,7 +4480,7 @@ msgid "Textual router performance statistics" msgstr "Statistiken über die Leistung des Routers in Textform" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:411 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 msgid "Local Destinations" msgstr "lokale Ziele" @@ -4580,50 +4694,54 @@ msgstr "Anfragenrückstau" msgid "News & Updates" msgstr "Benachrichtigungen & Aktualisierungen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-Client Manager I2CP Error - check logs" msgstr "FEHLER: Fehler des Klienten-Managers von I2CP - Sieh in die Berichte!" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:150 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:151 #, java-format msgid "ERR-Clock Skew of {0}" msgstr "FEHLER: Uhrzeitdifferenz von {0}" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:155 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:188 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:626 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:156 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 msgid "Testing" msgstr "Teste" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:162 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:606 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 msgid "OK" msgstr "OK" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:163 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:164 msgid "ERR-Private TCP Address" msgstr "FEHLER: Private TCP-Adresse" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:165 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:166 msgid "ERR-SymmetricNAT" msgstr "FEHLER: Symmetrisches NAT" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:168 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:169 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "WARNUNG: Eingehendes TCP aktiviert aber Firewall aktiv" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:170 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:171 msgid "WARN-Firewalled and Floodfill" msgstr "WARNUNG: Firewall aktiv und Floodfill aktiviert" #. if (_context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0) #. return _("WARN-Firewalled and Fast"); -#: ../java/src/net/i2p/router/web/SummaryHelper.java:173 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:610 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:174 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 msgid "Firewalled" msgstr "Firewall aktiv" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:175 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:176 +msgid "Disconnected - check network cable" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:178 msgid "" "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " "restart" @@ -4631,57 +4749,57 @@ msgstr "" "FEHLER: UDP Port ist belegt. Setze i2np.udp.internalPort=xxxx in der " "Konfiguration für Profis und starte I2P neu!" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:181 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:184 msgid "ERR-No Active Peers, Check Network Connection and Firewall" msgstr "" "FEHLER: Keine aktiven Teilnehmer. Ãœberprüfen Sie Firewall und " "Netzwekrverbindung!" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:184 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:187 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" msgstr "FEHLER: UDP deaktiviert und eingehender TCP/IP-Port nicht gesetzt" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:186 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:189 msgid "WARN-Firewalled with UDP Disabled" msgstr "WARNUNG: Firewall aktiv und UDP deaktiviert" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:411 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 msgid "Add/remove/edit & control your client and server tunnels" msgstr "Klienten- und Servertunnel hinzufügen, löschen oder bearbeiten" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:423 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:426 msgid "Server" msgstr "Server" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:427 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:430 msgid "Show tunnels" msgstr "Zeige Tunnel" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:438 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 msgid "Leases expired" msgstr "Leases abgelaufen" #. red or yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:438 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:439 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 msgid "Rebuilding" msgstr "Baue wieder auf" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:439 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 msgid "ago" msgstr "vor" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:445 msgid "Ready" msgstr "Bereit" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:446 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 msgid "Building" msgstr "Baue auf" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:446 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 msgid "Building tunnels" msgstr "Baue Tunnel auf" @@ -4694,8 +4812,21 @@ msgstr "Baue Tunnel auf" msgid "shared clients" msgstr "versch. Klienten" -#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:674 +msgid "Click Restart to install" +msgstr "Klicken Sie auf Neustart zum Installieren der" + #: ../java/src/net/i2p/router/web/SummaryHelper.java:676 +msgid "Click Shutdown and restart to install" +msgstr "Klicken Sie zum Installieren auf Herunterfahren und Neustarten" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:677 +#, java-format +msgid "Version {0}" +msgstr "Version {0}" + +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:699 #, java-format msgid "Download {0} Update" msgstr "Aktualisierung herunterladen ({0})" @@ -4703,62 +4834,62 @@ msgstr "Aktualisierung herunterladen ({0})" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #. <br> is optional, to help the browser make the lines even in the button #. If the translation is shorter than the English, you should probably not include <br> -#: ../java/src/net/i2p/router/web/SummaryHelper.java:684 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:707 #, java-format msgid "Download Unsigned<br>Update {0}" msgstr "unsignierte Aktualisierung herunterladen: {0}" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:709 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:731 msgid "Help with firewall configuration" msgstr "Hilfe bei der Firewalleinstellung" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:711 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:733 msgid "Check network connection and NAT/firewall" msgstr "Ãœberprüfe die Netzwerkverbindung und deine NAT/Firewall" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:730 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:752 msgid "Reseed" msgstr "Hole neue Teilnehmerinformationen" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:813 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 msgid "Order" msgstr "Reihenfolge" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:830 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:852 msgid "Top" msgstr "ganz oben" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:843 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:865 msgid "Down" msgstr "runter" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:848 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:870 msgid "Bottom" msgstr "ganz unten" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:860 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:882 msgid "Select a section to add" msgstr "Markiere eine Sektion zum hinzuzufügen" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:118 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:121 #, java-format msgid "events in {0}" msgstr "Ereignisse in {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:120 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:123 #, java-format msgid "averaged for {0}" msgstr "gemittelt für {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:130 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:133 msgid "Events per period" msgstr "Ereignisse je Zeitintervall" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:149 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154 msgid "avg" msgstr "Durchschnitt" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:151 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:156 msgid "now" msgstr "Jetzt" @@ -4873,75 +5004,6 @@ msgstr "eingehend" msgid "out" msgstr "ausgehend" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:146 -msgid "Updating" -msgstr "Aktualisiere" - -#. Process the .sud/.su2 file -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:266 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 -msgid "Update downloaded" -msgstr "Aktualisierung heruntergeladen" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 -#, java-format -msgid "Unsigned update file from {0} is corrupt" -msgstr "Unsignierte Aktualisierungsdatei von {0} ist fehlerhaft" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:285 -msgid "Restarting" -msgstr "Starte neu" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 -msgid "Click Restart to install" -msgstr "Klicken Sie auf Neustart zum Installieren der" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:294 -msgid "Click Shutdown and restart to install" -msgstr "Klicken Sie zum Installieren auf Herunterfahren und Neustarten" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:296 -#, java-format -msgid "Version {0}" -msgstr "Version {0}" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 -#, java-format -msgid "Failed copy to {0}" -msgstr "Kopieren nach {0} fehlgeschlagen" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:187 -#, java-format -msgid "Updating from {0}" -msgstr "Aktualisiere von {0}" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:243 -#, java-format -msgid "{0} downloaded" -msgstr "{0} heruntergeladen" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:258 -#, java-format -msgid "No new version found at {0}" -msgstr "Keine neue Version unter {0} gefunden" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:285 -msgid "Update verified" -msgstr "Aktualisierung verifiziert" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:311 -#, java-format -msgid "Transfer failed from {0}" -msgstr "Ãœbertragung von {0} fehlgeschlagen" - #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:154 @@ -5169,25 +5231,25 @@ msgstr "itag1" msgid "itag2" msgstr "itag2" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:138 msgid "configure bandwidth" msgstr "Bandbreite einstellen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:140 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:141 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:144 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:157 @@ -5218,21 +5280,21 @@ msgid "Router is down" msgstr "Router ist offline" #. We have intl defined when this is included, but not when compiled standalone. -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:292 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:297 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:295 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:308 @@ -5263,21 +5325,21 @@ msgid "Refresh (s)" msgstr "Auffrischen (s)" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:296 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:301 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:299 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:312 @@ -5307,11 +5369,11 @@ msgstr "Auffrischen (s)" msgid "Enable" msgstr "Aktiviere" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 msgid "Bandwidth limiter" msgstr "Bandbreitenbegrenzer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:396 msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." @@ -5319,34 +5381,34 @@ msgstr "" "I2P funktioniert am besten, wenn Sie die Werte so konfigurieren, \n" "dass die Geschwindigkeit zu Ihrer Internetverbindung passt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:400 msgid "KBps In" msgstr "kByte/s eingehend" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:414 msgid "KBps Out" msgstr "kByte/s ausgehend" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 msgid "Share" msgstr "für andere zur Benutzung freigegeben" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:363 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:431 msgid "NOTE" msgstr "HINWEIS" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "Sie haben I2P angewiesen, nur {0} kbit/s mit anderen zu teilen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "I2P benötigt mindestens 12 kbit/s, um das Durchleiten zu ermöglichen. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " @@ -5354,19 +5416,19 @@ msgstr "" "Bitte aktivieren Sie die gemeinsame Nutzung (Teilnahme an Tunneln),\n" "indem Sie mehr Bandbreite freigeben. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 msgid "" "It improves your anonymity by creating cover traffic, and helps the network." msgstr "" "Es verbessert Ihre Anonymität durch Herstellen von s. g. Rauschen und \n" "es hilft zudem dem Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "Sie haben I2P konfiguriert, {0} kBytes/s durchzuleiten. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:448 msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." @@ -5375,61 +5437,62 @@ msgstr "" "sich \n" "Ihre Anonymität, und darüber hinaus hilft es dem Netz. " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:452 msgid "Advanced network configuration page" msgstr "Erweiterte Netzwerkeinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:359 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:539 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:551 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:441 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:457 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:393 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:543 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:476 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:544 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:476 msgid "Cancel" msgstr "Abbruch" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:138 msgid "config advanced" msgstr "Erweiterte Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:315 msgid "I2P Advanced Configuration" msgstr "I2P - Erweiterte Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:394 msgid "Advanced I2P Configuration" msgstr "Erweiterte I2P-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:404 msgid "Some changes may require a restart to take effect." msgstr "" "Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:140 msgid "config clients" msgstr "Klienten einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 msgid "I2P Client Configuration" msgstr "Konfiguration der I2P-Klienten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:435 msgid "Client Configuration" msgstr "Klienten-Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:414 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." @@ -5438,83 +5501,79 @@ msgstr "" "der \n" "selben JVM." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:443 msgid "To change other client options, edit the file" msgstr "Bearbeiten Sie diese Datei, um andere Klienten-Optionen zu ändern:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:505 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:542 msgid "All changes require restart to take effect." msgstr "Alle Änderungen erfordern einen Neustart, um aktiv zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:462 msgid "Advanced Client Interface Configuration" msgstr "Erweiterte Einstellungen des Klienten-Interfaces" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:466 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "Eintellungen des externen I2CP-Interfaces (I2P-Klienten-Protokoll)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:472 msgid "Enabled without SSL" msgstr "Aktiviert; ohne SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:478 msgid "Enabled with SSL required" msgstr "Aktiviert, SSL erforderlich" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:484 msgid "Disabled - Clients outside this Java process may not connect" msgstr "" "Deaktiviert - Klienten außerhalb dieses Javaprozesses können sich nicht " "verbinden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:486 msgid "I2CP Port" msgstr "I2CP-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:490 msgid "I2CP Interface" msgstr "I2CP-Interface" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:483 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:506 msgid "Authorization" msgstr "Autorisation" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:512 msgid "Require username and password" msgstr "Zugangskontrolle per Benutzername und Passwort aktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:514 msgid "Username" msgstr "Benutzername" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:495 -msgid "Password" -msgstr "Passwort" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:499 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:400 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:439 msgid "The default settings will work for most people." msgstr "Die Standardeinstellungen funktionieren für die meisten Anwender." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:520 msgid "Any changes made here must also be configured in the external client." msgstr "" "Alle hier vorgenommenen Änderungen müssen auch in den externen Klienten " "vorgenommen werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:503 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:522 msgid "Many clients do not support SSL or authorization." msgstr "Vielle Klienten unterstützen kein SSL und/oder keine Authentifikation." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:513 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:532 msgid "WebApp Configuration" msgstr "WebApp-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:534 msgid "" "The Java web applications listed below are started by the webConsole client " "and run in the same JVM as the router. They are usually web applications " @@ -5530,7 +5589,7 @@ msgstr "" "Klienten, Anwendungen, die separat aktiviert werden müssen (z.B. susidns, " "i2ptunnel), oder Anwendungen ohne Oberfläche (Adressbuch) sein." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:536 msgid "" "A web app may also be disabled by removing the .war file from the webapps " "directory; however the .war file and web app will reappear when you update " @@ -5542,131 +5601,131 @@ msgstr "" "Aktualisierung des Routers wieder erscheinen. Somit ist das Deaktivieren der " "Web-Anwendung hier die bevorzugte Methode." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:550 msgid "Plugin Configuration" msgstr "Konfiguration der Zusatzprogramme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:552 msgid "The plugins listed below are started by the webConsole client." msgstr "" "Die unten aufgelisteten Zusatzprogramme werden vom WebKonsolen-Klienten " "gestartet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:562 msgid "Plugin Installation" msgstr "Installation von Zusatzprogrammen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:564 msgid "To install a plugin, enter the download URL:" msgstr "" "Für die Installation eines Zusatzprogramms bitte die Download-URL eingeben:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:140 msgid "config home" msgstr "Einstellungen der Hauptseite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:430 msgid "Default Home Page" msgstr "Standardhomepage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:436 msgid "Use old home page" msgstr "Benutze die alte Homepage" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:444 msgid "Search Engines" msgstr "Suchmaschinen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:464 msgid "Recommended Eepsites" msgstr "Empfohlene Eepseiten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:480 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:386 msgid "Local Services" msgstr "Lokale Dienste" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:140 msgid "config keyring" msgstr "Schlüsselbund einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "I2P Keyring Configuration" msgstr "Einstellungen des I2P-Schlüsselbunds" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:435 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" "Der Router-Schlüsselbund wird zum Entschlüsseln verschlüsselter LeaseSets " "verwendet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:438 msgid "" "The keyring may contain keys for local or remote encrypted destinations." msgstr "" "Der Schlüsselbund kann Schlüssel für lokale oder entfernte verschlüsselte " "Leasesets enthalten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:444 msgid "Manual Keyring Addition" msgstr "Manuelles Hinzufügen zum Schlüsselbund" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:446 msgid "Enter keys for encrypted remote destinations here." msgstr "Geben Sie hier die Schlüssel für entfernte verschlüsselte Ziele ein!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:449 msgid "Keys for local destinations must be entered on the" msgstr "Schlüssel für lokale Ziele müssen dort eingegeben werden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:451 msgid "I2PTunnel page" msgstr "I2PTunnel-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:453 msgid "Dest. name, hash, or full key" msgstr "Name des Ziels, Prüfsumme oder ganzer Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:455 msgid "Encryption Key" msgstr "Schlüssel zum Kodieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:138 msgid "config logging" msgstr "Berichte einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "I2P Logging Configuration" msgstr "Einstellungen der I2P-Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:394 msgid "Configure I2P Logging Options" msgstr "Richte I2P-Berichte ein" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:396 msgid "Log file" msgstr "Logdatei" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:400 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "(Das Zeichen '@' wird bei der Rotation der Berichtedatei ersetzt)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:402 msgid "Log record format" msgstr "Format der Berichtedatei" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:406 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "" "(Benutzen Sie 'd' = Datum, 'c' = Klasse, 't' = Thread, 'p' = Priorität, 'm' " "= Nachricht)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:408 msgid "Log date format" msgstr "Datumsformat der Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:412 msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" @@ -5674,15 +5733,15 @@ msgstr "" "('MM' = Monat, 'dd' = Tag, 'HH' = Stunde, 'mm' = Minute, 'ss' = Sekunde, " "'SSS' = Millisekunde)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:414 msgid "Max log file size" msgstr "max. Dateigröße der Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:418 msgid "Default log level" msgstr "Standardlevel für Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:422 msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" @@ -5690,89 +5749,89 @@ msgstr "" "(DEBUG und INFO sind nicht empfohlen, da diese den Router drastisch " "verlangsamen)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:424 msgid "Log level overrides" msgstr "Berichtelevel - Sonderoptionen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:428 msgid "New override" msgstr "Neue Zusatzoption" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:140 msgid "config networking" msgstr "Netzwerkeinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:344 msgid "I2P Network Configuration" msgstr "I2P-Netzwerkeinstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:434 msgid "IP and Transport Configuration" msgstr "IP- und Transport-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:438 msgid "There is help below." msgstr "Weiter unten finden Sie eine Hilfe." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 msgid "UPnP Configuration" msgstr "UPnP-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:444 msgid "Enable UPnP to open firewall ports" msgstr "Aktiviere UPnP, um Ports in der Firewall freizuschalten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:446 msgid "UPnP status" msgstr "UPnP-Status" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:448 msgid "IP Configuration" msgstr "IP-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:414 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:526 msgid "Externally reachable hostname or IP address" msgstr "Extern erreichbarer Hostname oder IP-Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:418 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:454 msgid "Use all auto-detect methods" msgstr "Alle automatisch erkannten Modi benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:458 msgid "Disable UPnP IP address detection" msgstr "UPnP IP-Adresserkennung deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:462 msgid "Ignore local interface IP address" msgstr "IP-Adresse der lokalen Schnittstelle ignorieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:466 msgid "Use SSU IP address detection only" msgstr "Nur die SSU-Adresserkennung benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:434 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:544 msgid "Specify hostname or IP" msgstr "Hostnamen oder IP angeben" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 msgid "Select Interface" msgstr "Schnittstelle auswählen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:490 msgid "Hidden mode - do not publish IP" msgstr "Versteckter Modus - veröffentlicht die IP-Adresse nicht" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:492 msgid "(prevents participating traffic)" msgstr "(verhindert die Teilnahme an fremden Tunneln)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:494 msgid "Action when IP changes" msgstr "Aktion wenn sich die IP-Adresse ändert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:498 msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" @@ -5780,55 +5839,55 @@ msgstr "" "Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation " "und den UDP-Port, wenn sich Ihre IP ändert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:500 msgid "Experimental" msgstr "experimentell" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:502 msgid "UDP Configuration:" msgstr "UDP-Einstellungen:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 msgid "UDP port:" msgstr "UDP-Port:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:474 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:554 msgid "Completely disable" msgstr "Komplett deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:512 msgid "(select only if behind a firewall that blocks outbound UDP)" msgstr "" "(Nur auswählen wenn hinter einer Firewall, welche ausgehendes UDP blockiert)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:524 msgid "TCP Configuration" msgstr "TCP-Einstellungen:" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:530 msgid "Use auto-detected IP address" msgstr "Automatisch erkannte IP-Adresse benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:496 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:564 msgid "currently" msgstr "derzeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:500 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536 msgid "if we are not firewalled" msgstr "wenn keine Firewall aktiv ist" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:540 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "" "Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:550 msgid "Disable inbound (Firewalled)" msgstr "Deaktiviere eingehende Verbindungen (Firewall ist aktiv)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:556 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" @@ -5836,23 +5895,23 @@ msgstr "" "ausgehenden \n" "TCP-Verkehr blokiertt oder begrenzt)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:558 msgid "Externally reachable TCP port" msgstr "Extern erreichbarer TCP-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:562 msgid "Use the same port configured for UDP" msgstr "Den selben Port wie für UDP benutzen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 msgid "Specify Port" msgstr "Gib den Port an" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:574 msgid "Notes" msgstr "Hinweise" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:577 msgid "" "a) Do not reveal your port numbers to anyone! b) Changing these settings " "will restart your router." @@ -5860,12 +5919,12 @@ msgstr "" "a) Gib deine Portnummern nie bekannt! b) Veränderungen dieser Werten " "bewirken einen Neustart des Routers." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:583 msgid "Configuration Help" msgstr "Konfigurationshilfe" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:598 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 msgid "" "While I2P will work fine behind most firewalls, your speeds and network " "integration will generally improve if the I2P port is forwarded for both UDP " @@ -5875,7 +5934,7 @@ msgstr "" "und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall " "für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:587 msgid "" "If you can, please poke a hole in your firewall to allow unsolicited UDP and " "TCP packets to reach you." @@ -5883,7 +5942,7 @@ msgstr "" "Falls es Ihnen möglich ist, richten Sie bitte Ihre Firewall so ein, dass \n" "TCP- und UDP-Pakete Ihren Computer unverändert erreichen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:589 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." @@ -5893,7 +5952,7 @@ msgstr "" "Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ " "eingebaut." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:591 msgid "" "Most of the options above are for special situations, for example where UPnP " "does not work correctly, or a firewall not under your control is doing harm." @@ -5903,13 +5962,13 @@ msgstr "" "werden \n" "kann und Probleme bereitet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:593 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" "Bestimmte Firewalls, wie auch symmetrische NATs, arbeiten unter Umständen\n" "nicht gut mit I2P zusammen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:566 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:602 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." @@ -5918,41 +5977,41 @@ msgstr "" "um \n" "die extern erreichbare IP-Adresse zu ermitteln und die Ports weiterzuleiten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" "Die Unterstützung für UPnP ist noch in der Testphase und kann aus vielen\n" "Gründen nicht funktionieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:606 msgid "No UPnP-compatible device present" msgstr "Kein UPnP-fähiges Gerät gefunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 msgid "UPnP disabled on the device" msgstr "UPnP ist für dieses Gerät deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:574 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:610 msgid "Software firewall interference with UPnP" msgstr "Die Software-Firewall stört UPnP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:612 msgid "Bugs in the device's UPnP implementation" msgstr "Fehlerhafte UPnP-Integration im Gerät" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:578 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:614 msgid "Multiple firewall/routers in the internet connection path" msgstr "Mehrere Firewalls / Router in der Verbindung zum Internet" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 msgid "UPnP device change, reset, or address change" msgstr "UPnP-Gerät geändert, neugestartet oder mit geänderter Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:582 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 msgid "Review the UPnP status here." msgstr "Ãœberprüfen Sie hier den UPnP-Status." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." @@ -5960,23 +6019,23 @@ msgstr "" "UPnP kann aktiviert oder deaktiviert werden, aber ein wechseln \n" "erfordert einen Routerneustart um wirksam zu werden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:586 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 msgid "Hostnames entered above will be published in the network database." msgstr "" "Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 msgid "They are <b>not private</b>." msgstr "Sie sind <b>nicht geheim</b>." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:590 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:626 msgid "" "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." msgstr "" "Geben Sie auch <b>keine IP-Adresse für den privaten Gebrauch</b> wie\n" "127.0.0.1 oder 192.168.1.1 an!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:592 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 msgid "" "If you specify the wrong IP address or hostname, or do not properly " "configure your NAT or firewall, your network performance will degrade " @@ -5986,16 +6045,16 @@ msgstr "" "Ihre Firewall oder NAT nicht richtig konfigurieren, \n" "wird sich Ihre Netzwerk-Performance erheblich verschlechtern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:594 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:630 msgid "When in doubt, leave the settings at the defaults." msgstr "" "Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:596 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 msgid "Reachability Help" msgstr "Hilfe zur Erreichbarkeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:637 msgid "" "If you think you have opened up your firewall and I2P still thinks you are " "firewalled, remember that you may have multiple firewalls, for example both " @@ -6007,7 +6066,7 @@ msgstr "" "Firewalls\n" "- zum Beispiel sowohl Software- als auch externer Hardware-Router - haben." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 msgid "" "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " "diagnose the problem." @@ -6016,15 +6075,15 @@ msgstr "" "helfen, \n" "das Problem zu diagnostizieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 msgid "Your UDP port does not appear to be firewalled." msgstr "Ihr UDP-Port wird anscheinend nicht von der Firewall geblockt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:612 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 msgid "Your UDP port appears to be firewalled." msgstr "Ihr UDP-Port wird anscheinend von der Firewall geblockt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:650 msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." @@ -6032,7 +6091,7 @@ msgstr "" "Da die Firewall-Nachweismethoden nicht zu 100% zuverlässig sind, ist die \n" "Anzeige gelegentlich fehlerhaft." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." @@ -6041,7 +6100,7 @@ msgstr "" "Ports,\n" "sowohl der externen wie auch der internen Firewall, geöffnet sind." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." @@ -6051,7 +6110,7 @@ msgstr "" "Grund zur Besorgnis. Bei geschlossener Firewall verwendet der Router \n" "\"Hilfsrouter\", um eingehende Verbindungen zu übertragen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." @@ -6060,7 +6119,7 @@ msgstr "" "gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden " "Tunneln." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:658 msgid "" "If you think you have already done so, remember that you may have both a " "hardware and a software firewall, or be behind an additional, institutional " @@ -6070,7 +6129,7 @@ msgstr "" "Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer " "Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:660 msgid "" "Also, some routers cannot correctly forward both TCP and UDP on a single " "port, or may have other limitations or bugs that prevent them from passing " @@ -6080,11 +6139,11 @@ msgstr "" "weiterleiten, oder haben andere Beschränkungen oder Fehler, die die " "Portweiterleitung an den I2P-Router behindern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:664 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "Der Router testet gerade, ob Ihr UDP-Port offen ist." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." @@ -6092,7 +6151,7 @@ msgstr "" "Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, " "deswegen akzeptiert er keine eingehenden Verbindungen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:670 msgid "" "Hidden mode is automatically enabled for added protection in certain " "countries." @@ -6100,11 +6159,11 @@ msgstr "" "Versteckter Modus ist für extra Sicherheit automatisch in bestimmten Ländern " "aktiviert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:636 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:672 msgid "WARN - Firewalled and Fast" msgstr "WARNUNG: Firewall aktiv und schnell" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:638 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 msgid "" "You have configured I2P to share more than 128KBps of bandwidth, but you are " "firewalled." @@ -6112,7 +6171,7 @@ msgstr "" "Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber " "leider sind Sie hinter einer Firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:676 msgid "" "While I2P will work fine in this configuration, if you really have over " "128KBps of bandwidth to share, it will be much more helpful to the network " @@ -6122,29 +6181,29 @@ msgstr "" "über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer " "offenen Firewall viel hilfreicher für das Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:678 msgid "WARN - Firewalled and Floodfill" msgstr "WARNUNG: Firewall und Floodfillfunktion aktiv" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:680 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" "Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter " "einer Firewall." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 msgid "" "For best participation as a floodfill router, you should open your firewall." msgstr "" "Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall " "öffnen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "WARNUNG: von Firewall geblockt und ankommendes TCP aktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:686 msgid "" "You have configured inbound TCP, however your UDP port is firewalled, and " "therefore it is likely that your TCP port is firewalled as well." @@ -6153,7 +6212,7 @@ msgstr "" "Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter " "einer Firewall ist." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 msgid "" "If your TCP port is firewalled with inbound TCP enabled, routers will not be " "able to contact you via TCP, which will hurt the network." @@ -6162,20 +6221,20 @@ msgstr "" "werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem " "Netzwerk." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 msgid "Please open your firewall or disable inbound TCP above." msgstr "" "Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 msgid "WARN - Firewalled with UDP Disabled" msgstr "WARNUNG: Firewall aktiv und UDP deaktiviert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:658 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "Sie haben eingehendes TCP aktiviert, jedoch UDP deaktiviert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:660 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." @@ -6183,15 +6242,15 @@ msgstr "" "Sie scheinen auf TCP eine Firewall zu haben, deswegen kann Ihr Router keine " "eingehenden Verbindungen entgegennehmen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:698 msgid "Please open your firewall or enable UDP." msgstr "Bitte öffnen Sie Ihre Firewall oder aktivieren Sie UDP!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:700 msgid "ERR - Clock Skew" msgstr "FEHLER: Uhr nicht synchron" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:666 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." @@ -6199,15 +6258,15 @@ msgstr "" "Ihre Uhrzeit ist nicht synchron mit dem Netzwerk, dies macht es schwierig, " "am Netzwerk teilzunehmen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 msgid "Correct your clock setting if this error persists." msgstr "Korrigieren Sie Ihre Uhrzeit falls dieser Fehler bestehen bleibt!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:670 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:706 msgid "ERR - Private TCP Address" msgstr "FEHLER: Private TCP-Adresse" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:672 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:708 msgid "" "You must never advertise an unroutable IP address such as 127.0.0.1 or " "192.168.1.1 as your external address." @@ -6215,21 +6274,21 @@ msgstr "" "Sie dürfen nie eine nicht routebare IP wie 127.0.0.1 oder 192.168.1.1 als " "Ihre extern erreichbare Adresse angeben." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:710 msgid "Correct the address or disable inbound TCP above." msgstr "" "Korrigieren Sie die Adresse oder deaktivieren Sie eingehendes TCP oben!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:676 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:712 msgid "ERR - SymmetricNAT" msgstr "FEHLER: symmetrische NAT" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:678 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:714 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" "I2P hat erkannt, dass Sie hinter einer symmetrischen NAT gesperrt sind." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:680 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:716 msgid "" "I2P does not work well behind this type of firewall. You will probably not " "be able to accept inbound connections, which will limit your participation " @@ -6239,7 +6298,7 @@ msgstr "" "wahrscheinlich keine eingehenden Verbindungen akzeptieren, was Ihre " "Teilnahme am Netzwerk beeinträchtigt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:718 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" @@ -6247,11 +6306,11 @@ msgstr "" "FEHLER: UDP-Port wird schon benutzt. Setzen Sie i2np.udp.internalPort=xxxx " "in den erweiterten Einstellungen und starten Sie neu!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:720 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "I2P konnte sich nicht auf den konfigurierten Port binden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:686 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:722 msgid "" "Check to see if another program is using the configured port. If so, stop " "that program or configure I2P to use a different port." @@ -6260,7 +6319,7 @@ msgstr "" "Falls ja, beenden Sie dieses Programm oder wählen Sie einen anderen Port für " "I2P!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:724 msgid "" "This may be a transient error, if the other program is no longer using the " "port." @@ -6268,16 +6327,16 @@ msgstr "" "Dies kann ein vorübergehender Fehler sein, falls das andere Programm diesen " "Port nicht mehr nutzt." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726 msgid "However, a restart is always required after this error." msgstr "Jedoch ist nach diesem Fehler immer ein Neustart erforderlich." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:728 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" "FEHLER: UDP deaktiviert und eingehende TCP-Adresse/Port nicht konfiguriert" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:730 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." @@ -6285,27 +6344,27 @@ msgstr "" "Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und " "dennoch UDP deaktiviert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:732 msgid "Therefore your router cannot accept inbound connections." msgstr "Somit kann Ihr Router keine eigehenden Verbindungen akzeptieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:698 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:734 msgid "Please configure a TCP host and port above or enable UDP." msgstr "" "Bitte konfigurieren Sie eine Adresse und einen Port im oberen Bereich für " "TCP oder aktivieren Sie UDP!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:700 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:736 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "FEHLER: Klientenmanager I2CP Fehler - Schauen Sie in die Berichte!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:738 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" "Dies geschieht für gewöhnlich wegen eines Konflikts auf Port 7654. Prüfen " "Sie die Berichte, um dies zu verifizieren!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:740 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." @@ -6313,38 +6372,38 @@ msgstr "" "Haben Sie eine zweite I2P-Instanz laufen? Beenden Sie das störende Programm " "und starten Sie I2P neu!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:140 msgid "config peers" msgstr "Teilnehmer einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "I2P Peer Configuration" msgstr "Einstellungen zu I2P-Teilnehmern" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:442 msgid "Manual Peer Controls" msgstr "Manuelles Verwalten der Teilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:444 msgid "Router Hash" msgstr "Router-Prüfsumme" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:448 msgid "Manually Ban / Unban a Peer" msgstr "Einen Teilnehmer manuell sperren/entsperren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:450 msgid "" "Banning will prevent the participation of this peer in tunnels you create." msgstr "" "Eine Sperrung verhindert, dass der Teilnehmer in von Ihnen aufgebauten " "Tunneln partizipiert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:460 msgid "Adjust Profile Bonuses" msgstr "Profilboni anpassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:462 msgid "" "Bonuses may be positive or negative, and affect the peer's inclusion in Fast " "and High Capacity tiers. Fast peers are used for client tunnels, and High " @@ -6357,31 +6416,31 @@ msgstr "" "Kapazität für einige Erkundungstunnel. Derzeitige Boni werden dargestellt " "auf der " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:464 msgid "profiles page" msgstr "Profile-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:482 msgid "Banned Peers" msgstr "Gesperrte Teilnehmer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:503 msgid "Banned IPs" msgstr "Gesperrte IPs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:140 msgid "config reseeding" msgstr "Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 msgid "I2P Reseeding Configuration" msgstr "I2P-Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:433 msgid "Reseeding Configuration" msgstr "Reseed-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:435 msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " @@ -6392,14 +6451,14 @@ msgstr "" "gefunden. Dies ist nötig nach der Installation oder wenn der Router aus " "anderen Gründen nur noch sehr wenige Kontakte gespeichert hat." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:437 msgid "" "If reseeding has failed, you should first check your network connection." msgstr "" "Schlägt der Reseed fehl, solltest du zuallererst deine Internetverbindung " "überprüfen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:441 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." @@ -6408,96 +6467,96 @@ msgstr "" "blockiert wird, der Reseed fehlschlägt, und dir ein HTTP-Proxy zur Verfügung " "steht." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "Für einen manuellen Reseed, lies die Anleitung unter {0}!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 msgid "the FAQ" msgstr "die FAQ" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:445 msgid "Reseed URL Selection" msgstr "Auswahl der Reseed-URL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:449 msgid "Try SSL first then non-SSL" msgstr "Probiere zunächst SSL, dann nicht-SSL" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:453 msgid "Use SSL only" msgstr "nur SSL verwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:457 msgid "Use non-SSL only" msgstr "kein SSL verwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:459 msgid "Reseed URLs" msgstr "Reseed-URLs" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:463 msgid "Enable HTTP Proxy?" msgstr "HTTP-Proxy aktivieren?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:467 msgid "HTTP Proxy Host" msgstr "IP der HTTP-Brücke" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:471 msgid "HTTP Proxy Port" msgstr "Port der HTTP-Brücke" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:475 msgid "Use HTTP Proxy Authorization?" msgstr "Authorisierung für HTTP-Proxy benutzen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:446 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:479 msgid "HTTP Proxy Username" msgstr "Benutzername für den HTTP-Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:483 msgid "HTTP Proxy Password" msgstr "Passwort für den HTTP-Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:487 msgid "Enable HTTPS Proxy?" msgstr "HTTPS-Proxy aktivieren?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491 msgid "HTTPS Proxy Host" msgstr "Host des HTTPS-Proxys" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:495 msgid "HTTPS Proxy Port" msgstr "Port des HTTPS-Proxys" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:499 msgid "Use HTTPS Proxy Authorization?" msgstr "Authorisierung für HTTPS-Proxy benutzen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503 msgid "HTTPS Proxy Username" msgstr "Benutzername für den HTTPs-Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:507 msgid "HTTPS Proxy Password" msgstr "Passwort für den HTTPS-Proxy" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:140 msgid "config service" msgstr "Dienste einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 msgid "I2P Service Configuration" msgstr "I2P-Dienste-Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 msgid "Shutdown the router" msgstr "Router herunterfahren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 msgid "" "Graceful shutdown lets the router satisfy the agreements it has already made " "before shutting down, but may take a few minutes." @@ -6505,14 +6564,14 @@ msgstr "" "Das kontrollierte Herunterfahren lässt dem Router Zeit, alle Zusagen, die er " "gemacht hat, noch zu erfüllen. Dafür benötigt er bis zu 11 Minuten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:425 msgid "" "If you need to kill the router immediately, that option is available as well." msgstr "" "Es gibt auch eine Option zum sofortigen Beenden des Routers, falls Sie diese " "benötigen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 msgid "" "If you want the router to restart itself after shutting down, you can choose " "one of the following." @@ -6520,7 +6579,7 @@ msgstr "" "Falls Sie den Router nach dem Herunterfahren automatisch wieder starten " "lassen wollen, wählen Sie eine der folgenden Optionen aus." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 msgid "" "This is useful in some situations - for example, if you changed some " "settings that client applications only read at startup, such as the " @@ -6530,7 +6589,7 @@ msgstr "" "Optionen geändert haben, die die Klienten-Anwendung nur beim Starten " "einliest (Routerkonsolen-Passwort oder das Interface auf dem es arbeitet)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:439 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." @@ -6538,7 +6597,7 @@ msgstr "" "Ein kontrollierter Neustart benötigt bis zu 11 Minuten (Ihre Teilnehmer sind " "für Ihre Geduld dankbar); ein harter Neustart erfolgt sofort." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 msgid "" "After tearing down the router, it will wait 1 minute before starting back up " "again." @@ -6546,11 +6605,11 @@ msgstr "" "Nachdem der Router heruntergefahren ist, wartet er eine Minute, bevor er " "wieder startet." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:451 msgid "Systray integration" msgstr "Systemtray-Integration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 msgid "" "On the windows platform, there is a small application to sit in the system " "tray, allowing you to view the router's status" @@ -6558,7 +6617,7 @@ msgstr "" "Auf Windows-Systemen gibt es eine kleine Anwendung, die es Ihnen ermöglicht, " "den Routerstatus im Systemtray zu sehen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." @@ -6566,25 +6625,25 @@ msgstr "" "(Später werden I2P-Anwendungen auch ihre eigenen Funktionen in den " "Systemtray integrieren können)" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "" "Falls Sie Windows nutzen, können Sie hier dieses Symbol aktiveren oder " "deaktivieren." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 msgid "Show systray icon" msgstr "Systemtray-Icon anzeigen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 msgid "Hide systray icon" msgstr "Systemtray-Icon deaktivieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 msgid "Run on startup" msgstr "Beim Hochfahren starten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 msgid "" "You can control whether I2P is run on startup or not by selecting one of the " "following options - I2P will install (or remove) a service accordingly." @@ -6593,18 +6652,18 @@ msgstr "" "gestartet wird oder nicht - I2P wird dementsprechend einen Service " "einrichten (oder ggf. entfernen)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 msgid "If you prefer the command line, you can also run the " msgstr "" "Falls Sie die Eingabeaufforderung bevorzugen, können Sie auch folgendes " "ausführen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:439 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:453 msgid "Note" msgstr "Hinweis" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:477 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." @@ -6612,7 +6671,7 @@ msgstr "" "Falls Sie I2P zurzeit als Service gestartet haben, wird ein Entfernen des " "Services den Router sofort beenden." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:479 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." @@ -6620,15 +6679,15 @@ msgstr "" "Sie sollten I2P, wie oben beschrieben, kontrolliert herunterfahren und dann " "uninstall_i2p_service_winnt.bat ausführen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:483 msgid "Debugging" msgstr "Debuggen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:485 msgid "View the job queue" msgstr "Die Auftragswarteschlange ansehen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:489 msgid "" "At times, it may be helpful to debug I2P by getting a thread dump. To do so, " "please select the following option and review the thread dumped to <a href=" @@ -6639,11 +6698,11 @@ msgstr "" "überprüfen die Liste der aktiven Prozesse in der <a href=\"logs." "jsp#servicelogs\">wrapper.log Datei</a>!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:501 msgid "Launch browser on router startup?" msgstr "Beim Starten einen Browser aufrufen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:503 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" @@ -6652,90 +6711,90 @@ msgstr "" "für Sie beim Starten einen Browser öffnen und die Routerkonsole anzeigen, " "unter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:140 msgid "config summary bar" msgstr "Konfiguriere Schnellübersicht" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:331 msgid "I2P Summary Bar Configuration" msgstr "Einstellungen zur I2P-Schnellübersicht" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:434 msgid "Refresh Interval" msgstr "Auffrischungsverzögerung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:440 msgid "seconds" msgstr "Sekunden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:444 msgid "Customize Summary Bar" msgstr "Schnellübersicht anpassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:138 msgid "config stats" msgstr "Statistiken einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:305 msgid "I2P Stats Configuration" msgstr "I2P - Einstellungen zu den Statistiken" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:394 msgid "Configure I2P Stat Collection" msgstr "I2P-Statistiken anpassen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:396 msgid "Enable full stats?" msgstr "Vollständige Statistiken aktivieren?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 msgid "change requires restart to take effect" msgstr "Änderungen erfordern einen Routerneustart" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:412 msgid "Stat file" msgstr "Status Datei" #. shouldShowLog -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:421 msgid "Filter" msgstr "Filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:384 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:434 msgid "toggle all" msgstr "Wähle alle" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:442 msgid "Log" msgstr "Berichte" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:450 msgid "Graph" msgstr "Graphen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:505 msgid "Advanced filter" msgstr "Erweiterte Filter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:140 msgid "config tunnels" msgstr "Tunnel einrichten" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "I2P Tunnel Configuration" msgstr "Einstellungen der I2P-Tunnel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 msgid "The default settings work for most people." msgstr "Die Standardeinstellungen funktionieren für die meisten." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:414 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:437 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "" "Es gibt einen grundsätzlichen Kompromiss zwischen Anonymität und Performance." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:440 msgid "" "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " "hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " @@ -6745,56 +6804,56 @@ msgstr "" "eine große Anzahl an Tunneln + Ersatztunneln kann die Performance oder " "Zuverlässigkeit erheblich verringern." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:443 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "" "Eine hohe CPU-Last und/oder hohe ausgehende Bandbreite können die Folge sein." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:446 msgid "Change these settings with care, and adjust them if you have problems." msgstr "" "Ändern Sie diese Einstellungen nur, wenn Sie Probleme haben, und stets mit " "besonderer Vorsicht!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:456 msgid "" "Exploratory tunnel setting changes are stored in the router.config file." msgstr "" "Einstellungen der Erkundungstunnel sind in der Datei router.config " "gespeichert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:459 msgid "Client tunnel changes are temporary and are not saved." msgstr "" "Änderungen an den Kliententunneln sind nur temporär und werden nicht " "gespeichert." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:461 msgid "To make permanent client tunnel changes see the" msgstr "" "Um permanente Änderungen an den Kliententunneln zu machen, gehen Sie auf die " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:463 msgid "i2ptunnel page" msgstr "I2PTunnel-Seite" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:138 msgid "config UI" msgstr "konfiguriere UI" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 msgid "I2P UI Configuration" msgstr "I2P UI-Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:392 msgid "Router Console Theme" msgstr "Thema der Routerkonsole" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:413 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "Themenauswahl für den Internet Explorer ist ausgeschaltet, bedauere." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:415 msgid "" "If you're not using IE, it's likely that your browser is pretending to be " "IE; please configure your browser (or proxy) to use a different User Agent " @@ -6805,11 +6864,11 @@ msgstr "" "ändern Sie bitte Ihren Browser (oder Proxy) so, dass er einen anderen User-" "Agenten sendet!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:418 msgid "Router Console Language" msgstr "Sprache der Routerkonsole" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:424 msgid "" "Please contribute to the router console translation project! Contact the " "developers in #i2p-dev on IRC to help." @@ -6817,79 +6876,84 @@ msgstr "" "Bitte hilf bei der Ãœbersetzung der Routerkonsole mit, und kontaktiere dazu " "die Entwickler im IRC-Kanal #i2p-dev!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:428 msgid "Apply" msgstr "Anwenden" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:430 +#, fuzzy +msgid "Router Console Password" +msgstr "I2P-Routerkonsole" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:138 msgid "config update" msgstr "Aktualisierung der Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 msgid "I2P Update Configuration" msgstr "Einstellungen zu Aktualisierungen von I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:400 msgid "Check for I2P and news updates" msgstr "Ãœberprüfe auf Aktualisierungen von I2P und auf Benachrichtigungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:402 msgid "News & I2P Updates" msgstr "Neuigkeiten & Aktualisierungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:406 msgid "Check for news updates" msgstr "Auf Aktualisierungen der Benachrichtigungen prüfen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:408 msgid "News Updates" msgstr "Aktualisierung der Benachrichtigungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:416 msgid "Update In Progress" msgstr "Aktualisierung wird vorgenommen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:424 msgid "News URL" msgstr "Adresse für Benachrichtigungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:428 msgid "Refresh frequency" msgstr "Aktualisierungshäufigkeit" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:434 msgid "Update policy" msgstr "Aktualisierungsregeln" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:440 msgid "Update through the eepProxy?" msgstr "Aktualisierung durch den eepProxy?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:444 msgid "eepProxy host" msgstr "eepProxy-Host" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:448 msgid "eepProxy port" msgstr "eepProxy-Port" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:454 msgid "Update URLs" msgstr "URLs aktualisieren" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:458 msgid "Trusted keys" msgstr "Vertraute Schlüssel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:462 msgid "Update with unsigned development builds?" msgstr "Aktualisieren mit unsignierten Entwicklerversionen?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:466 msgid "Unsigned Build URL" msgstr "URL für nicht signierte Aktualisierungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:472 msgid "Updates will be dispatched via your package manager." msgstr "Aktualisierungen erfolgen durch Ihren Paketmanager." @@ -6928,26 +6992,26 @@ msgstr "Dein Browser unterstützt keine iFrames." msgid "Click here to continue." msgstr "Klicke hier, um fortzufahren!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 msgid "Internal Error" msgstr "interner Fehler" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 msgid "Configuration" msgstr "Einstellungen" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:160 msgid "Sorry! There has been an internal error." msgstr "Entschuldigung! es gab einen internen Fehler." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:161 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:335 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Bitte melden Sie Fehler unter {0} oder {1}!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:339 msgid "" "You may use the username \"guest\" and password \"guest\" if you do not wish " @@ -6956,26 +7020,26 @@ msgstr "" "Sie können hierfür den Benutzernamen \"guest\" und das Passwort \"guest\" " "verwenden, wenn Sie sich nicht registrieren wollen." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:341 msgid "Please include this information in bug reports" msgstr "Bitte fügen Sie folgende Informationen dem Bugreport bei!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 msgid "Error Details" msgstr "Fehlerdetails" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:174 #, java-format msgid "Error {0}" msgstr "Fehler {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:194 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:331 msgid "I2P Version and Running Environment" msgstr "I2P-Version & Laufzeitumgebung" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:241 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:390 msgid "" "Note that system information, log timestamps, and log messages may provide " @@ -7161,3 +7225,38 @@ msgstr "Webmail" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:321 msgid "I2P Webmail" msgstr "I2P-Webmail" + +#~ msgid "" +#~ "Client configuration saved successfully - restart required to take effect." +#~ msgstr "" +#~ "Klienteninstellungen erfolgreich gespeichert - Neustart zum Ãœbernehmen " +#~ "erforderlich" + +#~ msgid "" +#~ "Interface configuration saved successfully - restart required to take " +#~ "effect." +#~ msgstr "" +#~ "Interface-Einstellungen erfolgreich gespeichert - Neustart zum Ãœbernehmen " +#~ "erforderlich" + +#~ msgid "Disabling UPnP, restart required to take effect" +#~ msgstr "Deaktiviere UPnP, Neustart erforderlich um wirksam zu werden" + +#~ msgid "Full statistics enabled - restart required to take effect" +#~ msgstr "" +#~ "Vollständige Statistiken aktiviert, Neustart erforderlich, um wirksam zu " +#~ "werden" + +#~ msgid "Full statistics disabled - restart required to take effect" +#~ msgstr "" +#~ "Vollständige Statistiken deaktiviert, Neustart erforderlich, um wirksam " +#~ "zu werden" + +#~ msgid "Cannot check, plugin {0} is not installed" +#~ msgstr "Kann nicht überprüfen, Zusatzprogramm {0} ist nicht installiert" + +#~ msgid "Downloading plugin" +#~ msgstr "Lade Zusatzprogramm herunter" + +#~ msgid "{0} downloaded" +#~ msgstr "{0} heruntergeladen" diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po index 4fc63cef0614aa5da43a67c1649a35172b757c63..b02e6df83b372371315b6cdc4babd66ce9635015 100644 --- a/apps/routerconsole/locale/messages_en.po +++ b/apps/routerconsole/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"POT-Creation-Date: 2012-11-02 19:51+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -26,7 +26,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:1415 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1424 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -35,7 +35,7 @@ msgstr[1] "" #. seconds #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1419 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1428 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -44,7 +44,7 @@ msgstr[1] "" #. minutes #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1423 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -53,20 +53,20 @@ msgstr[1] "" #. hours #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1427 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1436 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "" msgstr[1] "" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1429 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1438 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:341 msgid "n/a" msgstr "" #. days -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1441 #, java-format msgid "1 day" msgid_plural "{0} days" @@ -108,9 +108,9 @@ msgid "To" msgstr "" #: ../../../router/java/src/net/i2p/router/Blocklist.java:829 -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:451 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:454 msgid "none" msgstr "" @@ -120,85 +120,85 @@ msgstr "" #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:73 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:115 -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:517 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:519 msgid "Rejecting tunnels: Starting up" msgstr "" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:168 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:170 msgid "Rejecting tunnels: High message delay" msgstr "" #. hard to do {0} from here #. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:207 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:209 msgid "Rejecting most tunnels: High number of requests" msgstr "" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:262 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:264 msgid "Rejecting tunnels: Limit reached" msgstr "" #. .067KBps #. * also limited to 90% - see below #. always leave at least 4KBps free when allowing -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:330 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:332 msgid "Rejecting tunnels: Bandwidth limit" msgstr "" #. hard to do {0} from here #. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:400 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:402 msgid "Rejecting most tunnels: Bandwidth limit" msgstr "" #. hard to do {0} from here #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:404 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406 msgid "Accepting most tunnels" msgstr "" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:408 msgid "Accepting tunnels" msgstr "" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:522 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:524 msgid "Rejecting tunnels: Shutting down" msgstr "" -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:527 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:529 msgid "Rejecting tunnels" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:155 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 msgid "Reseeding" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:163 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:167 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "" msgstr[1] "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:174 msgid "Reseed failed." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:171 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:175 #, java-format msgid "See {0} for help." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:172 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176 msgid "reseed configuration page" msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:313 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317 msgid "Reseeding: fetching seed URL." msgstr "" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:371 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:375 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." @@ -231,7 +231,7 @@ msgstr "" msgid "Known fast peers" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:530 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:539 msgid "NetDb entry" msgstr "" @@ -278,7 +278,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:752 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2176 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 @@ -293,7 +293,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 msgid "Dir" msgstr "" @@ -319,13 +319,13 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 msgid "Idle" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2183 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 msgid "In/Out" msgstr "" @@ -340,14 +340,14 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2188 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 msgid "Up" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2190 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2193 msgid "Skew" msgstr "" @@ -394,7 +394,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2207 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 msgid "TX" msgstr "" @@ -404,7 +404,7 @@ msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 msgid "RX" msgstr "" @@ -413,7 +413,7 @@ msgid "The total number of packets received from the peer" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 msgid "Dup TX" msgstr "" @@ -422,7 +422,7 @@ msgid "The total number of packets retransmitted to the peer" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2214 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2217 msgid "Dup RX" msgstr "" @@ -542,7 +542,7 @@ msgstr "" msgid "{0} port {1,number,#####} was not forwarded by UPnP." msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:200 +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:194 msgid "UPnP is not enabled" msgstr "" @@ -557,12 +557,12 @@ msgid "NTCP connections" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2172 msgid "Limit" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 msgid "Timeout" msgstr "" @@ -575,13 +575,13 @@ msgid "Backlogged?" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:775 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2232 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2235 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Inbound" msgstr "" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:777 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2234 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2237 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Outbound" msgstr "" @@ -591,138 +591,138 @@ msgstr "" msgid "peers" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171 msgid "UDP connections" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2175 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 msgid "Sort by peer hash" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 msgid "Direction/Introduction" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2179 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2182 msgid "Sort by idle inbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 msgid "Sort by idle outbound" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2187 msgid "Sort by inbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 msgid "Sort by outbound rate" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2192 msgid "Sort by connection uptime" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 msgid "Sort by clock skew" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2197 msgid "Sort by congestion window" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2196 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 msgid "Sort by slow start threshold" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2202 msgid "Sort by round trip time" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2203 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 msgid "Sort by retransmission timeout" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 msgid "Sort by outbound maximum transmit unit" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2208 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2211 msgid "Sort by packets sent" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 msgid "Sort by packets received" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2216 msgid "Sort by packets retransmitted" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2218 msgid "Sort by packets received more than once" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2236 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2239 msgid "We offered to introduce them" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2238 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2241 msgid "They offered to introduce us" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2242 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2245 msgid "Choked" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2250 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2253 msgid "1 fail" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2252 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2255 #, java-format msgid "{0} fails" msgstr "" #. 1 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2258 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2261 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13 msgid "Banned" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2310 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2313 msgid "backlogged" msgstr "" #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2390 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2393 msgid "SUMMARY" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:190 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:191 msgid "Dropping tunnel requests: Too slow" msgstr "" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:333 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:334 msgid "Dropping tunnel requests: Overloaded" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:542 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:543 msgid "Rejecting tunnels: Request overload" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:573 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:574 msgid "Rejecting tunnels: Connection limit" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:777 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:798 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:778 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:799 msgid "Dropping tunnel requests: High load" msgstr "" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:877 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:878 msgid "Dropping tunnel requests: Queue time" msgstr "" @@ -1716,39 +1716,292 @@ msgstr "" msgid "Zimbabwe" msgstr "" +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:682 +#, java-format +msgid "New plugin version {0} is available" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:712 +#, java-format +msgid "Update check failed for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:714 +#, java-format +msgid "No new version is available for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:737 +#, java-format +msgid "{0}B transferred" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:790 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:211 +#, java-format +msgid "Transfer failed from {0}" +msgstr "" + +#. Process the .sud/.su2 file +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:958 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:993 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:672 +msgid "Update downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +msgid "Restarting" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +msgid "Update verified" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:982 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:141 +#, java-format +msgid "from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:997 +#, java-format +msgid "Unsigned update file from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1026 +#, java-format +msgid "Failed copy to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateChecker.java:67 +#, java-format +msgid "Checking for update of plugin {0}" +msgstr "" + +#. set status before thread to ensure UI feedback +#: ../java/src/net/i2p/router/update/PluginUpdateHandler.java:79 +#: ../java/src/net/i2p/router/update/UnsignedUpdateHandler.java:92 +#: ../java/src/net/i2p/router/update/UpdateHandler.java:46 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:178 +msgid "Updating" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:86 +#, java-format +msgid "Attempting to install from file {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:90 +#, java-format +msgid "No file specified {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:97 +#, java-format +msgid "Failed to install from file {0}, copy failed." +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:101 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:363 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:127 +msgid "Plugin downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:132 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:368 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:151 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:162 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:175 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:199 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:209 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:223 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:238 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:243 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:254 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:262 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:271 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:282 +msgid "Installed plugin does not contain the required configuration file" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:290 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:297 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:304 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:311 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:319 +#, java-format +msgid "Plugin requires Jetty version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:326 +#, java-format +msgid "Plugin requires Jetty version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:335 +#, java-format +msgid "Cannot copy plugin to directory {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:345 +msgid "Plugin will be installed on next restart." +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:363 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:376 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:383 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:411 +#, java-format +msgid "Plugin {0} installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:402 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:405 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:407 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:419 +#, java-format +msgid "Failed to download plugin from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:122 +#, java-format +msgid "Updating from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:191 +#, java-format +msgid "No new version found at {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:64 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:66 +#, java-format +msgid "Banned until restart or in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:78 +msgid "unban now" +msgstr "" + #: ../java/src/net/i2p/router/web/CSSHelper.java:118 #: ../java/src/net/i2p/router/web/HomeHelper.java:33 #: ../java/strings/Strings.java:29 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:213 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:210 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:212 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:206 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:209 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:211 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:310 @@ -1814,357 +2067,368 @@ msgid "Error updating the configuration - please see the error logs" msgstr "" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:322 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:323 msgid "Configuration saved successfully" msgstr "" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:427 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:324 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:431 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:325 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:85 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:460 msgid "Save Client Configuration" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:507 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:511 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:530 msgid "Save Interface Configuration" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:527 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:546 msgid "Save WebApp Configuration" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:541 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:50 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:560 msgid "Save Plugin Configuration" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:553 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:572 msgid "Install Plugin" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:55 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:555 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:58 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574 msgid "Update All Installed Plugins" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:95 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:127 #, java-format msgid "Error stopping plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:100 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 #, java-format msgid "Deleted plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:102 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:105 #, java-format msgid "Error deleting plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:125 #, java-format msgid "Stopped plugin {0}" msgstr "" #. label (IE) -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:146 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:264 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:252 msgid "Start" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:165 -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:106 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:168 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:102 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:35 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:140 msgid "Unsupported" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:211 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 msgid "New client added" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:215 -msgid "" -"Client configuration saved successfully - restart required to take effect." +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:216 +msgid "Client configuration saved successfully" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:230 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:243 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:254 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:217 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:429 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:77 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:101 +msgid "Restart required to take effect" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 msgid "Bad client index." msgstr "" #. #. What do we do here? #. -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:508 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:425 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:428 msgid "Client" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 msgid "stopped" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:305 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 msgid "started" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 msgid "deleted" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:275 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:269 msgid "WebApp configuration saved." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:290 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 msgid "Plugin configuration saved." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:305 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 msgid "WebApp" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:307 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:301 msgid "Failed to start" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:312 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 msgid "Failed to find server." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:318 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:312 msgid "No plugin URL specified." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:328 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:322 #, java-format msgid "No update URL specified for {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:337 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:350 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:355 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:368 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:373 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:331 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:352 msgid "Plugin or update download already in progress." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:340 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 msgid "Updating all plugins" msgstr "" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:359 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:140 #, java-format -msgid "Downloading plugin from {0}" +msgid "Bad URL {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:377 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:379 #, java-format msgid "Checking plugin {0} for updates" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389 #, java-format msgid "Started plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:391 #, java-format msgid "Error starting plugin {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:425 -msgid "" -"Interface configuration saved successfully - restart required to take effect." +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:413 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:76 +#, java-format +msgid "Added user {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:86 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:428 +msgid "Interface configuration saved" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 msgid "Edit" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:83 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:456 msgid "Add Client" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 msgid "Class and arguments" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Control" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:103 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Run at Startup?" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:130 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:203 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:191 msgid "Description" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:154 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 msgid "Plugin" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:167 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:155 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:290 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:319 msgid "Version" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:169 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:157 msgid "Signed by" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:186 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:174 msgid "Date" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 msgid "Author" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:208 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 msgid "License" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:213 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:201 #: ../java/src/net/i2p/router/web/HomeHelper.java:35 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174 msgid "Website" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:218 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:206 msgid "Update link" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:269 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:257 msgid "Stop" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:271 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:381 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:259 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:98 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:420 msgid "Check for updates" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:272 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Update" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:277 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:265 #, java-format msgid "Are you sure you want to delete {0}?" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:279 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 msgid "Delete" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:25 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:855 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:419 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:439 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:455 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:18 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:877 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:438 msgid "Delete selected" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:26 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:874 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:425 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:437 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:445 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:453 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:461 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:24 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:896 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494 msgid "Add item" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:27 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:423 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:443 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:459 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:23 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:492 msgid "Restore defaults" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:28 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:30 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:405 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:409 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:439 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:478 msgid "Save" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:33 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:29 msgid "Home page changed" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:53 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:49 msgid "Restored default settings" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:65 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:61 msgid "No name entered" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:70 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:66 msgid "No URL entered" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:83 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:85 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:82 msgid "Added" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:100 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:111 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:108 msgid "Removed" msgstr "" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:461 msgid "Add key" msgstr "" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:459 msgid "Delete key" msgstr "" @@ -2229,7 +2493,7 @@ msgstr "" #. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm #. but pink instead of yellow for WARN #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:114 +#: ../java/src/net/i2p/router/web/LogsHelper.java:117 msgid "CRIT" msgstr "" @@ -2238,23 +2502,24 @@ msgid "DEBUG" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:116 +#: ../java/src/net/i2p/router/web/LogsHelper.java:119 msgid "ERROR" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:120 +#: ../java/src/net/i2p/router/web/LogsHelper.java:123 msgid "INFO" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:118 +#: ../java/src/net/i2p/router/web/LogsHelper.java:121 msgid "WARN" msgstr "" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:104 #: ../java/src/net/i2p/router/web/HomeHelper.java:192 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:809 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:831 msgid "Remove" msgstr "" @@ -2278,21 +2543,21 @@ msgid "Network" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:288 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:278 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:279 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:284 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:282 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:295 @@ -2337,7 +2602,7 @@ msgid "Clients" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:433 msgid "Keyring" msgstr "" @@ -2363,15 +2628,15 @@ msgid "Advanced" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:53 -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:31 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:30 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:545 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:482 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:467 msgid "Save changes" msgstr "" @@ -2433,47 +2698,47 @@ msgid "Gracefully restarting to exit Hidden Router Mode" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:283 -msgid "Enabling UPnP, restart required to take effect" +msgid "Enabling UPnP" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:285 -msgid "Disabling UPnP, restart required to take effect" +msgid "Disabling UPnP" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:293 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:294 msgid "Enabling laptop mode" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:295 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:296 msgid "Disabling laptop mode" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:302 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:303 msgid "Disabling UDP" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:304 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:305 msgid "Enabling UDP" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:312 msgid "Requiring SSU introducers" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:370 msgid "Invalid address" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:375 #, java-format msgid "The hostname or IP {0} is not publicly routable" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:399 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:400 msgid "Updating bandwidth share percentage" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:429 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:430 msgid "Updated bandwidth limits" msgstr "" @@ -2495,7 +2760,7 @@ msgid "or {0} bytes per month maximum" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:452 msgid "Ban peer until restart" msgstr "" @@ -2515,7 +2780,7 @@ msgid "Invalid peer" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:454 msgid "Unban peer" msgstr "" @@ -2528,7 +2793,7 @@ msgid "is not currently banned" msgstr "" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:480 msgid "Adjust peer bonuses" msgstr "" @@ -2540,28 +2805,28 @@ msgstr "" msgid "Bad capacity value" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:21 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:480 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:513 msgid "Save changes and reseed now" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:23 msgid "Reseeding is already in progress" msgstr "" #. skip the nonce checking in ReseedHandler -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:27 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:26 msgid "Starting reseed process" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:83 msgid "Configuration saved successfully." msgstr "" #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34 -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:393 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:176 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 msgid "Shutdown immediately" msgstr "" @@ -2608,122 +2873,122 @@ msgstr "" msgid "Restart in {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:170 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:391 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:427 msgid "Shutdown gracefully" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 msgid "Graceful shutdown initiated" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:395 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 msgid "Cancel graceful shutdown" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 msgid "Graceful shutdown cancelled" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:407 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 msgid "Graceful restart" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 msgid "Graceful restart requested" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:409 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:445 msgid "Hard restart" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 msgid "Hard restart requested" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 msgid "Rekey and Restart" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:197 msgid "Rekeying after graceful restart" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 msgid "Rekey and Shutdown" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:201 msgid "Rekeying after graceful shutdown" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:203 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 msgid "Run I2P on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:205 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:473 msgid "Don't run I2P on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:207 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:497 msgid "Dump threads" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 #, java-format msgid "Threads dumped to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:505 msgid "View console on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 msgid "Console is to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:507 msgid "Do not view console on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:220 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 msgid "Console is not to be shown on startup" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:493 msgid "Force GC" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:224 msgid "Full garbage collection requested" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:232 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:233 msgid "Service installed" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:234 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:235 msgid "Warning: unable to install the service" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:241 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:242 msgid "Service removed" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:243 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:244 msgid "Warning: unable to remove the service" msgstr "" @@ -2732,79 +2997,79 @@ msgid "Stat filter and location updated successfully to" msgstr "" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:119 -msgid "Full statistics enabled - restart required to take effect" +msgid "Full statistics enabled" msgstr "" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 -msgid "Full statistics disabled - restart required to take effect" +msgid "Full statistics disabled" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:124 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:125 msgid "" "Graph list updated, may take up to 60s to be reflected here and on the <a " "href=\"graphs.jsp\">Graphs Page</a>" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:28 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:25 msgid "Save order" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:35 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:32 msgid "Refresh interval changed" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:37 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:34 #, java-format msgid "Refresh interval must be at least {0} seconds" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:39 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:36 msgid "Refresh interval must be a number" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:417 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:450 msgid "Restore full default" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:44 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:41 msgid "Full summary bar default restored." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:49 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:141 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:46 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:138 msgid "Summary bar will refresh shortly." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:46 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:419 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:452 msgid "Restore minimal default" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45 msgid "Minimal summary bar default restored." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:65 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:87 -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:135 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:62 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:132 msgid "Order must be an integer" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:72 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:69 msgid "No section selected" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:77 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:74 msgid "No order entered" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:133 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:130 msgid "Moved" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:140 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:137 msgid "Saved order of sections." msgstr "" @@ -2819,7 +3084,9 @@ msgid "Exploratory tunnel configuration saved successfully." msgstr "" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:143 -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:56 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:97 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs." @@ -2895,157 +3162,199 @@ msgstr "" msgid "Outbound options" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:46 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:442 +msgid "Add user" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 msgid "Theme change saved." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:53 msgid "Refresh the page to view." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:63 +msgid "No user name entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:68 +msgid "No password entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:94 +#, java-format +msgid "Removed user {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:26 msgid "Set theme universally across all apps" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Arabic" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Czech" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Danish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "English" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Estonian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Finnish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "German" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Greek" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Spanish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Dutch" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "French" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Hungarian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Italian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Polish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Portuguese" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Russian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Swedish" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Chinese" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Ukrainian" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 msgid "Vietnamese" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:103 -msgid "Update available, attempting to download now" +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:100 +msgid "Add a user and password to enable." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:106 +msgid "User Name" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:117 +#: ../java/src/net/i2p/router/web/HomeHelper.java:214 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:879 +msgid "Add" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:516 +msgid "Password" msgstr "" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 +msgid "Update or check already in progress" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:114 +msgid "Update available, attempting to download now" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:116 msgid "Update available, click button on left to download" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:122 msgid "No update available" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:134 #, java-format msgid "Updating news URL to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:126 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:134 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:52 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:58 msgid "internal" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:142 #, java-format msgid "Updating proxy host to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:150 #, java-format msgid "Updating proxy port to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:150 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:162 #, java-format msgid "Updating refresh frequency to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:151 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:111 #: ../java/src/net/i2p/router/web/GraphHelper.java:361 msgid "Never" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:170 #, java-format msgid "Updating update policy to {0}" msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:179 msgid "Updating update URLs." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190 msgid "Updating trusted keys." msgstr "" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:186 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198 #, java-format msgid "Updating unsigned update URL to {0}" msgstr "" @@ -3066,12 +3375,18 @@ msgstr "" msgid "Download, verify, and restart" msgstr "" -#: ../java/src/net/i2p/router/web/FormHandler.java:176 +#: ../java/src/net/i2p/router/web/FormHandler.java:203 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." msgstr "" +#: ../java/src/net/i2p/router/web/FormHandler.java:205 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + #: ../java/src/net/i2p/router/web/GraphHelper.java:159 msgid "Combined bandwidth graph" msgstr "" @@ -3155,8 +3470,8 @@ msgid "Periods" msgstr "" #: ../java/src/net/i2p/router/web/GraphHelper.java:346 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 msgid "or" msgstr "" @@ -3208,7 +3523,7 @@ msgid "Configure Bandwidth" msgstr "" #: ../java/src/net/i2p/router/web/HomeHelper.java:28 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:315 msgid "I2P Bandwidth Configuration" msgstr "" @@ -3225,7 +3540,7 @@ msgid "Customize Home Page" msgstr "" #: ../java/src/net/i2p/router/web/HomeHelper.java:30 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:331 msgid "I2P Home Page Configuration" msgstr "" @@ -3412,7 +3727,7 @@ msgid "Your browser is not properly configured to use the HTTP proxy at {0}" msgstr "" #: ../java/src/net/i2p/router/web/HomeHelper.java:194 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:811 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:833 msgid "Name" msgstr "" @@ -3420,11 +3735,6 @@ msgstr "" msgid "URL" msgstr "" -#: ../java/src/net/i2p/router/web/HomeHelper.java:214 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 -msgid "Add" -msgstr "" - #: ../java/src/net/i2p/router/web/LogsHelper.java:32 #: ../java/src/net/i2p/router/web/LogsHelper.java:79 msgid "File location" @@ -3552,8 +3862,8 @@ msgid "Full entry" msgstr "" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:630 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:666 msgid "Hidden" msgstr "" @@ -3605,232 +3915,40 @@ msgstr "" msgid "NTCP and SSU with introducers" msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:131 +#: ../java/src/net/i2p/router/web/NewsHelper.java:204 #, java-format msgid "News last updated {0} ago." msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:137 +#: ../java/src/net/i2p/router/web/NewsHelper.java:210 #, java-format msgid "News last checked {0} ago." msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:146 +#: ../java/src/net/i2p/router/web/NewsHelper.java:219 msgid "Hide news" msgstr "" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:149 +#: ../java/src/net/i2p/router/web/NewsHelper.java:222 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642 msgid "Show news" msgstr "" -#: ../java/src/net/i2p/router/web/PluginStarter.java:122 +#: ../java/src/net/i2p/router/web/PluginStarter.java:128 msgid "Checking for plugin updates" msgstr "" -#: ../java/src/net/i2p/router/web/PluginStarter.java:160 +#: ../java/src/net/i2p/router/web/PluginStarter.java:170 #, java-format msgid "1 plugin updated" msgid_plural "{0} plugins updated" msgstr[0] "" msgstr[1] "" -#: ../java/src/net/i2p/router/web/PluginStarter.java:162 +#: ../java/src/net/i2p/router/web/PluginStarter.java:172 msgid "Plugin update check complete" msgstr "" -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:81 -#, java-format -msgid "Cannot check, plugin {0} is not installed" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:151 -#, java-format -msgid "Checking for update of plugin {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:181 -#, java-format -msgid "New plugin version {0} is available" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:184 -#, java-format -msgid "No new version is available for plugin {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:194 -#, java-format -msgid "Update check failed for plugin {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:125 -#, java-format -msgid "Attempting to install from file {0}" -msgstr "" - -#. This is actually what String.isEmpty() does, so it should be safe. -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:129 -#, java-format -msgid "No file specified {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:136 -#, java-format -msgid "Failed to install from file {0}, copy failed." -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:162 -msgid "Downloading plugin" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:169 -#, java-format -msgid "{0}B transferred" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177 -msgid "Plugin downloaded" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:182 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:415 -#, java-format -msgid "Cannot create plugin directory {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:191 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:302 -#, java-format -msgid "from {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201 -#, java-format -msgid "Plugin from {0} is corrupt" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:212 -#, java-format -msgid "Plugin from {0} does not contain the required configuration file" -msgstr "" - -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 -#, java-format -msgid "Plugin from {0} contains an invalid key" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:259 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273 -#, java-format -msgid "Plugin signature verification of {0} failed" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:288 -#, java-format -msgid "Plugin from {0} has invalid name or version" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293 -#, java-format -msgid "Plugin {0} has mismatched versions" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301 -#, java-format -msgid "This plugin requires I2P version {0} or higher" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:309 -#, java-format -msgid "This plugin requires Java version {0} or higher" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:318 -msgid "" -"Downloaded plugin is for new installs only, but the plugin is already " -"installed" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:329 -msgid "Installed plugin does not contain the required configuration file" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:337 -msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 -#, java-format -msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 -#, java-format -msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358 -#, java-format -msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:366 -#, java-format -msgid "Plugin requires Jetty version {0} or higher" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373 -#, java-format -msgid "Plugin requires Jetty version {0} or lower" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382 -#, java-format -msgid "Cannot copy plugin to directory {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:392 -msgid "Plugin will be installed on next restart." -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:410 -msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:423 -#, java-format -msgid "Failed to install plugin in {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:430 -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:458 -#, java-format -msgid "Plugin {0} installed" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:449 -#, java-format -msgid "Plugin {0} installed and started" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:452 -#, java-format -msgid "Plugin {0} installed but failed to start, check logs" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:454 -#, java-format -msgid "Plugin {0} installed but failed to start" -msgstr "" - -#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:466 -#, java-format -msgid "Failed to download plugin from {0}" -msgstr "" - #. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>"); #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 #, java-format @@ -3859,13 +3977,13 @@ msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:93 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:472 msgid "Speed" msgstr "" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:94 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:476 msgid "Capacity" msgstr "" @@ -4052,51 +4170,37 @@ msgstr "" msgid "Select search engine" msgstr "" -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64 -#, java-format -msgid "Temporary ban expiring in {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:66 -#, java-format -msgid "Banned until restart or in {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:78 -msgid "unban now" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatSummarizer.java:314 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:312 msgid "Bandwidth usage" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:322 msgid "Outbound Bytes/sec" msgstr "" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:326 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 msgid "Inbound Bytes/sec" msgstr "" +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:329 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 msgid "Bps" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 msgid "Out average" msgstr "" +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 msgid "max" msgstr "" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 msgid "In average" msgstr "" @@ -4285,7 +4389,7 @@ msgid "Textual router performance statistics" msgstr "" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:411 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 msgid "Local Destinations" msgstr "" @@ -4481,104 +4585,108 @@ msgstr "" msgid "News & Updates" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:143 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 msgid "ERR-Client Manager I2CP Error - check logs" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:150 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:151 #, java-format msgid "ERR-Clock Skew of {0}" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:155 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:188 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:626 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:156 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 msgid "Testing" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:162 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:606 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 msgid "OK" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:163 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:164 msgid "ERR-Private TCP Address" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:165 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:166 msgid "ERR-SymmetricNAT" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:168 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:169 msgid "WARN-Firewalled with Inbound TCP Enabled" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:170 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:171 msgid "WARN-Firewalled and Floodfill" msgstr "" #. if (_context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0) #. return _("WARN-Firewalled and Fast"); -#: ../java/src/net/i2p/router/web/SummaryHelper.java:173 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:610 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:174 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 msgid "Firewalled" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:175 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:176 +msgid "Disconnected - check network cable" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:178 msgid "" "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " "restart" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:181 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:184 msgid "ERR-No Active Peers, Check Network Connection and Firewall" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:184 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:187 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:186 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:189 msgid "WARN-Firewalled with UDP Disabled" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:411 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 msgid "Add/remove/edit & control your client and server tunnels" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:423 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:426 msgid "Server" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:427 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:430 msgid "Show tunnels" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:438 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 msgid "Leases expired" msgstr "" #. red or yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:438 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:439 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 msgid "Rebuilding" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:439 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 msgid "ago" msgstr "" #. green light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:445 msgid "Ready" msgstr "" #. yellow light -#: ../java/src/net/i2p/router/web/SummaryHelper.java:446 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 msgid "Building" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:446 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 msgid "Building tunnels" msgstr "" @@ -4591,8 +4699,21 @@ msgstr "" msgid "shared clients" msgstr "" -#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:674 +msgid "Click Restart to install" +msgstr "" + #: ../java/src/net/i2p/router/web/SummaryHelper.java:676 +msgid "Click Shutdown and restart to install" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:677 +#, java-format +msgid "Version {0}" +msgstr "" + +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:699 #, java-format msgid "Download {0} Update" msgstr "" @@ -4600,40 +4721,40 @@ msgstr "" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #. <br> is optional, to help the browser make the lines even in the button #. If the translation is shorter than the English, you should probably not include <br> -#: ../java/src/net/i2p/router/web/SummaryHelper.java:684 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:707 #, java-format msgid "Download Unsigned<br>Update {0}" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:709 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:731 msgid "Help with firewall configuration" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:711 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:733 msgid "Check network connection and NAT/firewall" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:730 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:752 msgid "Reseed" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:813 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 msgid "Order" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:830 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:852 msgid "Top" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:843 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:865 msgid "Down" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:848 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:870 msgid "Bottom" msgstr "" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:860 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:882 msgid "Select a section to add" msgstr "" @@ -4770,75 +4891,6 @@ msgstr "" msgid "out" msgstr "" -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:146 -msgid "Updating" -msgstr "" - -#. Process the .sud/.su2 file -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89 -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:266 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:290 -msgid "Update downloaded" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92 -#, java-format -msgid "Unsigned update file from {0} is corrupt" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:285 -msgid "Restarting" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:292 -msgid "Click Restart to install" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:294 -msgid "Click Shutdown and restart to install" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121 -#: ../java/src/net/i2p/router/web/UpdateHandler.java:296 -#, java-format -msgid "Version {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126 -#, java-format -msgid "Failed copy to {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:187 -#, java-format -msgid "Updating from {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:243 -#, java-format -msgid "{0} downloaded" -msgstr "" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:258 -#, java-format -msgid "No new version found at {0}" -msgstr "" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:285 -msgid "Update verified" -msgstr "" - -#: ../java/src/net/i2p/router/web/UpdateHandler.java:311 -#, java-format -msgid "Transfer failed from {0}" -msgstr "" - #. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:154 @@ -5066,25 +5118,25 @@ msgstr "" msgid "itag2" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:138 msgid "configure bandwidth" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:142 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:140 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:140 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:141 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:139 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:144 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:157 @@ -5115,21 +5167,21 @@ msgid "Router is down" msgstr "" #. We have intl defined when this is included, but not when compiled standalone. -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:317 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:292 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:297 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:295 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:308 @@ -5160,21 +5212,21 @@ msgid "Refresh (s)" msgstr "" #. ditto -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:321 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:295 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:296 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:301 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:299 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:312 @@ -5204,197 +5256,194 @@ msgstr "" msgid "Enable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 msgid "Bandwidth limiter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:396 msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:400 msgid "KBps In" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:414 msgid "KBps Out" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:390 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 msgid "Share" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:363 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:431 msgid "NOTE" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438 #, java-format msgid "You have configured I2P to share only {0} KBps." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 msgid "I2P requires at least 12KBps to enable sharing. " msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 msgid "" "It improves your anonymity by creating cover traffic, and helps the network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 #, java-format msgid "You have configured I2P to share {0} KBps." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:448 msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:452 msgid "Advanced network configuration page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:415 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:359 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:429 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:509 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:539 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:551 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:441 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:457 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:421 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:393 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:543 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:476 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:442 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:387 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:437 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:544 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:476 msgid "Cancel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:138 msgid "config advanced" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:315 msgid "I2P Advanced Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:394 msgid "Advanced I2P Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:404 msgid "Some changes may require a restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:140 msgid "config clients" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 msgid "I2P Client Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:435 msgid "Client Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:414 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:443 msgid "To change other client options, edit the file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:505 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:523 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:542 msgid "All changes require restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:462 msgid "Advanced Client Interface Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:466 msgid "External I2CP (I2P Client Protocol) Interface Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:472 msgid "Enabled without SSL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:478 msgid "Enabled with SSL required" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:484 msgid "Disabled - Clients outside this Java process may not connect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:463 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:486 msgid "I2CP Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:490 msgid "I2CP Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:483 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:506 msgid "Authorization" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:512 msgid "Require username and password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:491 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:514 msgid "Username" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:495 -msgid "Password" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:499 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:400 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:439 msgid "The default settings will work for most people." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:520 msgid "Any changes made here must also be configured in the external client." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:503 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:522 msgid "Many clients do not support SSL or authorization." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:513 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:532 msgid "WebApp Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:534 msgid "" "The Java web applications listed below are started by the webConsole client " "and run in the same JVM as the router. They are usually web applications " @@ -5404,7 +5453,7 @@ msgid "" "all (e.g. addressbook)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:536 msgid "" "A web app may also be disabled by removing the .war file from the webapps " "directory; however the .war file and web app will reappear when you update " @@ -5412,683 +5461,683 @@ msgid "" "preferred method." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:550 msgid "Plugin Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:552 msgid "The plugins listed below are started by the webConsole client." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:562 msgid "Plugin Installation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:564 msgid "To install a plugin, enter the download URL:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:140 msgid "config home" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:397 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:430 msgid "Default Home Page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:436 msgid "Use old home page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:444 msgid "Search Engines" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:464 msgid "Recommended Eepsites" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:480 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:386 msgid "Local Services" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:140 msgid "config keyring" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 msgid "I2P Keyring Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:435 msgid "The router keyring is used to decrypt encrypted leaseSets." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:438 msgid "" "The keyring may contain keys for local or remote encrypted destinations." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:444 msgid "Manual Keyring Addition" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:446 msgid "Enter keys for encrypted remote destinations here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:449 msgid "Keys for local destinations must be entered on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:451 msgid "I2PTunnel page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:453 msgid "Dest. name, hash, or full key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:455 msgid "Encryption Key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:138 msgid "config logging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 msgid "I2P Logging Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:394 msgid "Configure I2P Logging Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:396 msgid "Log file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:400 msgid "(the symbol '@' will be replaced during log rotation)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:402 msgid "Log record format" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:406 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:408 msgid "Log date format" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:412 msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:414 msgid "Max log file size" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:418 msgid "Default log level" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:422 msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:424 msgid "Log level overrides" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:428 msgid "New override" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:140 msgid "config networking" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:344 msgid "I2P Network Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:434 msgid "IP and Transport Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:438 msgid "There is help below." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 msgid "UPnP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:444 msgid "Enable UPnP to open firewall ports" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:446 msgid "UPnP status" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:448 msgid "IP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:414 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:526 msgid "Externally reachable hostname or IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:418 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:454 msgid "Use all auto-detect methods" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:422 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:458 msgid "Disable UPnP IP address detection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:462 msgid "Ignore local interface IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:466 msgid "Use SSU IP address detection only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:434 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:544 msgid "Specify hostname or IP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 msgid "Select Interface" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:490 msgid "Hidden mode - do not publish IP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:492 msgid "(prevents participating traffic)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:494 msgid "Action when IP changes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:498 msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:500 msgid "Experimental" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:502 msgid "UDP Configuration:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 msgid "UDP port:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:474 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:554 msgid "Completely disable" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:512 msgid "(select only if behind a firewall that blocks outbound UDP)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:524 msgid "TCP Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:530 msgid "Use auto-detected IP address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:496 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:564 msgid "currently" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:500 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536 msgid "if we are not firewalled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:540 msgid "Always use auto-detected IP address (Not firewalled)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:514 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:550 msgid "Disable inbound (Firewalled)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:520 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:556 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:522 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:558 msgid "Externally reachable TCP port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:562 msgid "Use the same port configured for UDP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 msgid "Specify Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:538 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:574 msgid "Notes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:577 msgid "" "a) Do not reveal your port numbers to anyone! b) Changing these settings " "will restart your router." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:547 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:583 msgid "Configuration Help" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:598 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 msgid "" "While I2P will work fine behind most firewalls, your speeds and network " "integration will generally improve if the I2P port is forwarded for both UDP " "and TCP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:551 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:587 msgid "" "If you can, please poke a hole in your firewall to allow unsolicited UDP and " "TCP packets to reach you." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:589 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:555 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:591 msgid "" "Most of the options above are for special situations, for example where UPnP " "does not work correctly, or a firewall not under your control is doing harm." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:557 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:593 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:566 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:602 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 msgid "UPnP support is beta, and may not work for any number of reasons" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:606 msgid "No UPnP-compatible device present" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:572 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 msgid "UPnP disabled on the device" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:574 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:610 msgid "Software firewall interference with UPnP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:612 msgid "Bugs in the device's UPnP implementation" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:578 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:614 msgid "Multiple firewall/routers in the internet connection path" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 msgid "UPnP device change, reset, or address change" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:582 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 msgid "Review the UPnP status here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:586 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 msgid "Hostnames entered above will be published in the network database." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 msgid "They are <b>not private</b>." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:590 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:626 msgid "" "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:592 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 msgid "" "If you specify the wrong IP address or hostname, or do not properly " "configure your NAT or firewall, your network performance will degrade " "substantially." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:594 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:630 msgid "When in doubt, leave the settings at the defaults." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:596 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 msgid "Reachability Help" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:601 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:637 msgid "" "If you think you have opened up your firewall and I2P still thinks you are " "firewalled, remember that you may have multiple firewalls, for example both " "software packages and external hardware routers." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 msgid "" "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " "diagnose the problem." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 msgid "Your UDP port does not appear to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:612 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 msgid "Your UDP port appears to be firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:650 msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:658 msgid "" "If you think you have already done so, remember that you may have both a " "hardware and a software firewall, or be behind an additional, institutional " "firewall you cannot control." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:660 msgid "" "Also, some routers cannot correctly forward both TCP and UDP on a single " "port, or may have other limitations or bugs that prevent them from passing " "traffic through to I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:664 msgid "The router is currently testing whether your UDP port is firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:670 msgid "" "Hidden mode is automatically enabled for added protection in certain " "countries." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:636 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:672 msgid "WARN - Firewalled and Fast" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:638 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 msgid "" "You have configured I2P to share more than 128KBps of bandwidth, but you are " "firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:676 msgid "" "While I2P will work fine in this configuration, if you really have over " "128KBps of bandwidth to share, it will be much more helpful to the network " "if you open your firewall." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:678 msgid "WARN - Firewalled and Floodfill" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:680 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 msgid "" "For best participation as a floodfill router, you should open your firewall." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 msgid "WARN - Firewalled with Inbound TCP Enabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:686 msgid "" "You have configured inbound TCP, however your UDP port is firewalled, and " "therefore it is likely that your TCP port is firewalled as well." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 msgid "" "If your TCP port is firewalled with inbound TCP enabled, routers will not be " "able to contact you via TCP, which will hurt the network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 msgid "Please open your firewall or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 msgid "WARN - Firewalled with UDP Disabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:658 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 msgid "You have configured inbound TCP, however you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:660 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:698 msgid "Please open your firewall or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:700 msgid "ERR - Clock Skew" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:666 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 msgid "Correct your clock setting if this error persists." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:670 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:706 msgid "ERR - Private TCP Address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:672 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:708 msgid "" "You must never advertise an unroutable IP address such as 127.0.0.1 or " "192.168.1.1 as your external address." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:710 msgid "Correct the address or disable inbound TCP above." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:676 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:712 msgid "ERR - SymmetricNAT" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:678 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:714 msgid "I2P detected that you are firewalled by a Symmetric NAT." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:680 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:716 msgid "" "I2P does not work well behind this type of firewall. You will probably not " "be able to accept inbound connections, which will limit your participation " "in the network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:718 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:720 msgid "I2P was unable to bind to port 8887 or other configured port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:686 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:722 msgid "" "Check to see if another program is using the configured port. If so, stop " "that program or configure I2P to use a different port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:724 msgid "" "This may be a transient error, if the other program is no longer using the " "port." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726 msgid "However, a restart is always required after this error." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:728 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:730 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:732 msgid "Therefore your router cannot accept inbound connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:698 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:734 msgid "Please configure a TCP host and port above or enable UDP." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:700 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:736 msgid "ERR - Client Manager I2CP Error - check logs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:738 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:740 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:140 msgid "config peers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 msgid "I2P Peer Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:442 msgid "Manual Peer Controls" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:444 msgid "Router Hash" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:448 msgid "Manually Ban / Unban a Peer" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:450 msgid "" "Banning will prevent the participation of this peer in tunnels you create." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:460 msgid "Adjust Profile Bonuses" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:462 msgid "" "Bonuses may be positive or negative, and affect the peer's inclusion in Fast " "and High Capacity tiers. Fast peers are used for client tunnels, and High " @@ -6096,477 +6145,481 @@ msgid "" "displayed on the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:464 msgid "profiles page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:445 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:482 msgid "Banned Peers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:503 msgid "Banned IPs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:140 msgid "config reseeding" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 msgid "I2P Reseeding Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:433 msgid "Reseeding Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:435 msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " "remaining." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:437 msgid "" "If reseeding has failed, you should first check your network connection." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:441 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 #, java-format msgid "See {0} for instructions on reseeding manually." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 msgid "the FAQ" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:445 msgid "Reseed URL Selection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:416 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:449 msgid "Try SSL first then non-SSL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:453 msgid "Use SSL only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:457 msgid "Use non-SSL only" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:459 msgid "Reseed URLs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:463 msgid "Enable HTTP Proxy?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:467 msgid "HTTP Proxy Host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:471 msgid "HTTP Proxy Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:475 msgid "Use HTTP Proxy Authorization?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:446 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:479 msgid "HTTP Proxy Username" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:483 msgid "HTTP Proxy Password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:487 msgid "Enable HTTPS Proxy?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491 msgid "HTTPS Proxy Host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:495 msgid "HTTPS Proxy Port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:499 msgid "Use HTTPS Proxy Authorization?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503 msgid "HTTPS Proxy Username" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:507 msgid "HTTPS Proxy Password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:140 msgid "config service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 msgid "I2P Service Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 msgid "Shutdown the router" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 msgid "" "Graceful shutdown lets the router satisfy the agreements it has already made " "before shutting down, but may take a few minutes." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:425 msgid "" "If you need to kill the router immediately, that option is available as well." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 msgid "" "If you want the router to restart itself after shutting down, you can choose " "one of the following." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 msgid "" "This is useful in some situations - for example, if you changed some " "settings that client applications only read at startup, such as the " "routerconsole password or the interface it listens on." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:439 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 msgid "" "After tearing down the router, it will wait 1 minute before starting back up " "again." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:451 msgid "Systray integration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 msgid "" "On the windows platform, there is a small application to sit in the system " "tray, allowing you to view the router's status" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 msgid "If you are on windows, you can either enable or disable that icon here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 msgid "Show systray icon" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 msgid "Hide systray icon" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 msgid "Run on startup" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 msgid "" "You can control whether I2P is run on startup or not by selecting one of the " "following options - I2P will install (or remove) a service accordingly." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 msgid "If you prefer the command line, you can also run the " msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:439 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:453 msgid "Note" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:477 msgid "" "If you are running I2P as service right now, removing it will shut down your " "router immediately." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:479 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:483 msgid "Debugging" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:449 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:485 msgid "View the job queue" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:489 msgid "" "At times, it may be helpful to debug I2P by getting a thread dump. To do so, " "please select the following option and review the thread dumped to <a href=" "\"logs.jsp#servicelogs\">wrapper.log</a>." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:501 msgid "Launch browser on router startup?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:503 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:140 msgid "config summary bar" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:331 msgid "I2P Summary Bar Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:434 msgid "Refresh Interval" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:440 msgid "seconds" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:444 msgid "Customize Summary Bar" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:138 msgid "config stats" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:305 msgid "I2P Stats Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:355 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:394 msgid "Configure I2P Stat Collection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:396 msgid "Enable full stats?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 msgid "change requires restart to take effect" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:412 msgid "Stat file" msgstr "" #. shouldShowLog -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:421 msgid "Filter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:384 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:434 msgid "toggle all" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:442 msgid "Log" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:450 msgid "Graph" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:505 msgid "Advanced filter" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:140 msgid "config tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 msgid "I2P Tunnel Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:410 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 msgid "The default settings work for most people." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:414 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:437 msgid "There is a fundamental tradeoff between anonymity and performance." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:440 msgid "" "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " "hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " "reduce performance or reliability." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:443 msgid "High CPU and/or high outbound bandwidth usage may result." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:446 msgid "Change these settings with care, and adjust them if you have problems." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:456 msgid "" "Exploratory tunnel setting changes are stored in the router.config file." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:459 msgid "Client tunnel changes are temporary and are not saved." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:461 msgid "To make permanent client tunnel changes see the" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:463 msgid "i2ptunnel page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:138 msgid "config UI" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 msgid "I2P UI Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:392 msgid "Router Console Theme" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:413 msgid "Theme selection disabled for Internet Explorer, sorry." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:415 msgid "" "If you're not using IE, it's likely that your browser is pretending to be " "IE; please configure your browser (or proxy) to use a different User Agent " "string if you'd like to access the console themes." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:418 msgid "Router Console Language" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:424 msgid "" "Please contribute to the router console translation project! Contact the " "developers in #i2p-dev on IRC to help." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:428 msgid "Apply" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:137 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:430 +msgid "Router Console Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:138 msgid "config update" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 msgid "I2P Update Configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:361 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:400 msgid "Check for I2P and news updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:402 msgid "News & I2P Updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:406 msgid "Check for news updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:408 msgid "News Updates" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:416 msgid "Update In Progress" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:385 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:424 msgid "News URL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:389 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:428 msgid "Refresh frequency" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:395 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:434 msgid "Update policy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:440 msgid "Update through the eepProxy?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:444 msgid "eepProxy host" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:448 msgid "eepProxy port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:415 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:454 msgid "Update URLs" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:458 msgid "Trusted keys" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:462 msgid "Update with unsigned development builds?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:427 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:466 msgid "Unsigned Build URL" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:472 msgid "Updates will be dispatched via your package manager." msgstr "" diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po index fdb129e04341b7d2f8044d5bdec85c05eb9010e3..889845f709b57384b17474f5c852eb206425e45f 100644 --- a/apps/routerconsole/locale/messages_es.po +++ b/apps/routerconsole/locale/messages_es.po @@ -2,10 +2,11 @@ # Copyright (C) 2009 The I2P Project # This file is distributed under the same license as the routerconsole package. # To contribute translations, see http://www.i2p2.de/newdevelopers -# +# # Translators: # "blabla", 2011. # <blabla@trash-mail.com>, 2011, 2012. +# Daniel Mustieles <daniel.mustieles@gmail.com>, 2012. # ducki2p <ducki2p@gmail.com>, 2011. # foo <foo@bar>, 2009. # mixxy, 2011. @@ -14,27 +15,29 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-28 21:17+0000\n" -"PO-Revision-Date: 2012-07-27 23:19+0000\n" -"Last-Translator: blabla <blabla@trash-mail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/" -"es/)\n" -"Language: es\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"PO-Revision-Date: 2012-10-18 08:53+0000\n" +"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/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" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there +#. are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it +#. is used in #. a lot of tables. #. milliseconds #. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. {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:1370 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1415 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -43,7 +46,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1374 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1419 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -52,7 +55,7 @@ msgstr[1] "{0} s" #. minutes #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1378 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1423 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -61,61 +64,61 @@ msgstr[1] "{0} min" #. hours #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1382 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1427 #, 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:1384 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1429 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:341 msgid "n/a" msgstr "n/d" #. days -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1387 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 #, 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:127 +#: ../../../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:129 +#: ../../../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:672 -#: ../../../router/java/src/net/i2p/router/Blocklist.java:745 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:653 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:726 #, 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:784 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:765 msgid "IPs Banned Until Restart" msgstr "IPs prohibidas hasta el reinicio" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:808 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:789 msgid "IPs Permanently Banned" msgstr "IPs permanentemente prohibidas" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:810 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:791 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:66 msgid "From" msgstr "De" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:812 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:793 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 msgid "To" msgstr "A" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:848 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:829 #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647 #: ../java/src/net/i2p/router/web/SummaryHelper.java:451 @@ -124,7 +127,8 @@ msgstr "ninguno" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) -#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too +#. low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:73 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:115 @@ -137,7 +141,8 @@ msgid "Rejecting tunnels: High message delay" msgstr "rechazando túneles: alta tardanza de los mensajes" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); +#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of +#. tunnels: High number of requests"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:207 msgid "Rejecting most tunnels: High number of requests" msgstr "rechazando la mayorÃa de túneles: alto número de peticiones" @@ -154,13 +159,15 @@ msgid "Rejecting tunnels: Bandwidth limit" msgstr "rechazando túneles: lÃmite de ancho de banda" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); +#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: +#. Bandwidth limit"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:400 msgid "Rejecting most tunnels: Bandwidth limit" msgstr "rechazando la mayor parte de los túneles: lÃmite de ancho de banda" #. hard to do {0} from here -#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of +#. tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:404 msgid "Accepting most tunnels" msgstr "aceptando la mayorÃa de los túneles" @@ -177,44 +184,43 @@ msgstr "rechazando túneles: apagando" msgid "Rejecting tunnels" msgstr "Rechazando túneles" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 msgid "Reseeding" msgstr "Resembrando" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:161 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:163 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "El proceso de resembrar ha encontrado un solo router." msgstr[1] "El proceso de resembrar ha encontrado sólo {0} routers." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:168 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 msgid "Reseed failed." msgstr "El proceso de resembrar ha fallado" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:169 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:171 #, java-format msgid "See {0} for help." msgstr "Consulta {0} para obtener ayuda." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:172 msgid "reseed configuration page" msgstr "Página de configuración del proceso de resembrar" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:311 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:313 msgid "Reseeding: fetching seed URL." msgstr "Resembrar: Buscando URL sembradora" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:369 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:371 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." -msgstr "" -"Resembrar: buscando informaciones de routers desde la URL sembradora ({0} " -"exitosas, {1} errores)." +msgstr "Resembrar: buscando informaciones de routers desde la URL sembradora ({0} exitosas, {1} errores)." -#. NOTE TO TRANSLATORS - each of these phrases is a description for a statistic +#. NOTE TO TRANSLATORS - each of these phrases is a description for a +#. statistic #. to be displayed on /stats.jsp and in the graphs on /graphs.jsp. #. Please keep relatively short so it will fit on the graphs. #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:33 @@ -241,59 +247,55 @@ msgstr "Con cuántos pares estamos hablando activamente" msgid "Known fast peers" msgstr "pares rápidos conocidos" -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:529 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:530 msgid "NetDb entry" msgstr "Entrada de la NetDb" -#. This used to be "no common transports" but it is almost always no transports at all +#. This used to be "no common transports" but it is almost always no +#. transports at all #: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 msgid "No transports (hidden or starting up?)" msgstr "No hay transportes (oculto o iniciando?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:453 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:455 msgid "Unreachable on any transport" msgstr "Inalcanzable en cualquier transporte" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:502 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 msgid "Router Transport Addresses" msgstr "Direcciones de transporte del router " -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:507 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509 #, 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:521 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/HomeHelper.java:32 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:154 msgid "Help" msgstr "Ayuda" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "" "Your transport connection limits are automatically set based on your " "configured bandwidth." -msgstr "" -"Los lÃmites de conexiones de transporte se ajustan automáticamente basándose " -"en el ancho de banda configurado." +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:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "" "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " "i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"Para sobreescribir estos lÃmites, se deben agregar los comandos i2np.ntcp." -"maxConnections = nnn y i2np.udp.maxConnections = nnn en la página de " -"configuración avanzada." +msgstr "Para sobreescribir estos lÃmites, se deben agregar los comandos i2np.ntcp.maxConnections = nnn y i2np.udp.maxConnections = nnn en la página de configuración avanzada." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279 msgid "Definitions" msgstr "Definiciones" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:752 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1958 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 @@ -302,281 +304,266 @@ msgstr "Definiciones" msgid "Peer" msgstr "Par" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 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:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 msgid "Dir" msgstr "Dir" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 msgid "Inbound connection" msgstr "Conexión entrante" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "Outbound connection" msgstr "Conexión saliente" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 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)" +msgstr "Se han ofrecido a introducirnos (a ayudar a otros pares a atravesar nuestro cortafuegos)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -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:537 +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:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 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:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1963 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 msgid "Idle" msgstr "inactivo" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1968 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2183 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 msgid "In/Out" msgstr "Entrante/Saliente" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 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:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 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:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:834 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2188 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 msgid "Up" msgstr "Subida" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2190 msgid "Skew" msgstr "Desincronización" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 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:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "" "The congestion window, which is how many bytes can be sent without an " "acknowledgement" -msgstr "" -"El rango de congestión, que es la cantidad de bytes que se pueden enviar sin " -"recibir confirmación" +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:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 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:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 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:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 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:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The slow start threshold" msgstr "El umbral de incicio lento" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 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:546 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1985 -msgid "Dev" -msgstr "Desv" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -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:547 +#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The +#. standard deviation of the round trip time in +#. milliseconds")).append("<br>\n" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 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:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 msgid "" "Current maximum send packet size / estimated maximum receive packet size " "(bytes)" -msgstr "" -"Tamaño máximo actual de envÃo de paquetes / tamaño máximo estimado de " -"paquetes entrantes (bytes)" +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:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1992 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2207 msgid "TX" msgstr "TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 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:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1994 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 msgid "RX" msgstr "RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 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:551 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1997 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 msgid "Dup TX" msgstr "TX dup" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 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:552 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1999 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2214 msgid "Dup RX" msgstr "RX dup" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 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:437 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Service" msgstr "Servicio" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:439 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:454 msgid "WAN Common Interface Configuration" msgstr "Configuración de la interfaz común WAN" -#: ../../../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:455 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:471 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:476 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:96 msgid "Status" msgstr "Estado" -#: ../../../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 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:462 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:472 msgid "Type" msgstr "Tipo" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:442 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:448 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:463 msgid "Upstream" msgstr "Corriente de subida" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:443 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:449 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 msgid "Downstream" msgstr "Corriente de descarga" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:445 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 msgid "WAN PPP Connection" msgstr "Conexión WAN PPP" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:450 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:465 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 msgid "External IP" msgstr "IP externa" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 msgid "Layer 3 Forwarding" msgstr "Transmisión en capa 3" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:453 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:468 msgid "Default Connection Service" msgstr "Servicio de conexión por defecto" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:455 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:470 msgid "WAN IP Connection" msgstr "Conexión IP WAN" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 msgid "WAN Ethernet Link Configuration" msgstr "Configuración del link Ethernet WAN" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:488 msgid "Found Device" msgstr "Dispositivo encontrado" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:490 msgid "Subdevice" msgstr "Subdispositivo" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:496 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:511 msgid "UPnP Status" msgstr "Estado UPnP" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:499 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:514 msgid "" "UPnP has been disabled; Do you have more than one UPnP Internet Gateway " "Device on your LAN ?" -msgstr "" -"UPnP se ha deshabilitado; ¿Tienes más de un dispositivo pasarela UPnP en tu " -"red local?" +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:502 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:517 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." +msgstr "UPnP no ha encontrado ningún dispositivo UPnP compatible en tu red local." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:510 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:525 #, 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:512 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527 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:516 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:531 #, 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:518 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:533 #, 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." #. {0} is TCP or UDP -#. {1,number,#####} prevents 12345 from being output as 12,345 in the English locale. +#. {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:527 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:541 #, 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:529 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:543 #, java-format msgid "{0} port {1,number,#####} was not forwarded by UPnP." msgstr "{0} puerto {1,number,#####} no fue transmitido por UPnP." -#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:162 +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:200 msgid "UPnP is not enabled" msgstr "UPnP no está habilitado." @@ -591,12 +578,12 @@ msgid "NTCP connections" msgstr "Conexiones NTCP" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169 msgid "Limit" msgstr "LÃmite" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170 msgid "Timeout" msgstr "Tiempo de espera" @@ -609,13 +596,13 @@ msgid "Backlogged?" msgstr "Atrasadas?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:775 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2017 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2232 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Inbound" msgstr "Entrante" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:777 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2019 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2234 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Outbound" msgstr "Saliente" @@ -625,143 +612,144 @@ msgstr "Saliente" msgid "peers" msgstr "pares" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168 msgid "UDP connections" msgstr "conexiones UDP" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1960 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2175 msgid "Sort by peer hash" msgstr "Ordenar por hash" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 msgid "Direction/Introduction" msgstr "Dirección/Introducción" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2179 msgid "Sort by idle inbound" msgstr "Ordenar por inactividad de entrada" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1966 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 msgid "Sort by idle outbound" msgstr "Ordenar por inactividad de salida" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 msgid "Sort by inbound rate" msgstr "Ordenar por tasa de entrada" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1971 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 msgid "Sort by outbound rate" msgstr "Ordenar por tasa de salida" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1974 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 msgid "Sort by connection uptime" msgstr "Ordenar por el tiempo de actividad" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1976 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 msgid "Sort by clock skew" msgstr "Ordenar por desviación de reloj" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1979 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 msgid "Sort by congestion window" msgstr "Ordenar por ventana de congestión" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1981 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2196 msgid "Sort by slow start threshold" msgstr "Ordenar por umbral de inicio lento" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1984 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 msgid "Sort by round trip time" msgstr "Ordenar por el tiempo de ida y vuelta" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1986 -msgid "Sort by round trip time deviation" -msgstr "Ordenar por desviación de tiempo de ida y vuelta" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1988 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2203 msgid "Sort by retransmission timeout" msgstr "Ordenar por tiempo de espera de retransmisión" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1991 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 msgid "Sort by outbound maximum transmit unit" msgstr "Ordenar por unidad de transmisión máxima de salida" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1993 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2208 msgid "Sort by packets sent" msgstr "Ordenar por paquetes enviados" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1995 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 msgid "Sort by packets received" msgstr "Ordenar por paquetes recibidos" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1998 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 msgid "Sort by packets retransmitted" msgstr "Ordenar por paquetes retransmitidos" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2000 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 msgid "Sort by packets received more than once" msgstr "Ordenar por paquetes recibidos más de una vez" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2021 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2236 msgid "We offered to introduce them" msgstr "Nos hemos ofrecido a introducirlos" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2023 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2238 msgid "They offered to introduce us" msgstr "Se han ofrecido a introducirnos" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2027 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2242 msgid "Choked" msgstr "Atascado" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2035 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2250 msgid "1 fail" msgstr "1 fallado" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2037 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2252 #, java-format msgid "{0} fails" msgstr "{0} fallados" #. 1 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2043 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2258 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13 msgid "Banned" msgstr "Baneado" +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2310 +msgid "backlogged" +msgstr "atrasados" + #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2390 msgid "SUMMARY" msgstr "RESUMEN" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:187 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:190 msgid "Dropping tunnel requests: Too slow" msgstr "Descartando solicitudes de túneles: Demasiado lento" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:330 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:333 msgid "Dropping tunnel requests: Overloaded" msgstr "Descartando solicitudes de túnel: sobrecarga" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:539 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:542 msgid "Rejecting tunnels: Request overload" msgstr "Rechazando túneles: Sobrecarga de solicitudes" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:570 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:573 msgid "Rejecting tunnels: Connection limit" msgstr "Rechazando túneles: LÃmite de conexión" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:773 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:794 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:777 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:798 msgid "Dropping tunnel requests: High load" msgstr "Descartando solicitudes de túnel: Carga alta" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:786 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:877 msgid "Dropping tunnel requests: Queue time" msgstr "Descartando solicitudes de túnel: Tiempo de cola" #. Automatically generated pseudo-java for xgettext - do not edit -#. Translators may wish to translate a few of these, do not bother to translate all of them!! +#. Translators may wish to translate a few of these, do not bother to +#. translate all of them!! #: ../java/build/Countries.java:3 msgid "Anonymous Proxy" msgstr "Proxy anónimo" @@ -1750,7 +1738,7 @@ msgstr "Zambia" msgid "Zimbabwe" msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:117 +#: ../java/src/net/i2p/router/web/CSSHelper.java:118 #: ../java/src/net/i2p/router/web/HomeHelper.java:33 #: ../java/strings/Strings.java:29 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:203 @@ -1790,7 +1778,7 @@ msgstr "Zimbabwe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:209 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:214 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:232 @@ -1845,25 +1833,21 @@ msgstr "Consola del Router I2P" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:51 msgid "Error updating the configuration - please see the error logs" -msgstr "" -"Error al actualizar la configuración - ¡por favor consulta los registros de " -"errores!" +msgstr "Error al actualizar la configuración - ¡por favor consulta los registros de errores!" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:297 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:322 msgid "Configuration saved successfully" msgstr "Configuración guardada con éxito" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:427 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:299 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:324 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:96 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs" -msgstr "" -"Error al guardar la configuración (aplicada pero no guardada) - ¡por favor " -"consulta los registros de errores!" +msgstr "Error al guardar la configuración (aplicada pero no guardada) - ¡por favor consulta los registros de errores!" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 @@ -1940,9 +1924,7 @@ msgstr "Nuevo cliente añadido" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:215 msgid "" "Client configuration saved successfully - restart required to take effect." -msgstr "" -"Configuración de cliente guardada - Es necesario reiniciar para que los " -"cambios surtan efecto." +msgstr "Configuración de cliente guardada - Es necesario reiniciar para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:230 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:243 @@ -1950,9 +1932,8 @@ msgstr "" msgid "Bad client index." msgstr "Ãndice de clientes en mal estado." -#. #. What do we do here? -#. +#. #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 @@ -2040,10 +2021,9 @@ msgstr "Error al iniciar el complemento {0}" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:425 msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"Configuración de interfaz guardada - Es necesario reiniciar para que los " -"cambios surtan efecto." +"Interface configuration saved successfully - restart required to take " +"effect." +msgstr "Configuración de interfaz guardada - Es necesario reiniciar para que los cambios surtan efecto." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:86 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 @@ -2140,7 +2120,7 @@ msgstr "Borrar" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:25 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:854 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:855 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:419 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:439 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:455 @@ -2149,7 +2129,7 @@ msgstr "Eliminar seleccionados" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:26 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:873 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:874 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:417 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:425 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:437 @@ -2255,17 +2235,13 @@ msgstr "Guardados los ajustes de los registros" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "" "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" -"Añadir nuevos argumentos para el registro arriba. Ejemplo: net.i2p.router." -"tunnel=WARN" +msgstr "Añadir nuevos argumentos para el registro arriba. Ejemplo: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 msgid "" -"Or put entries in the logger.config file. Example: logger.record.net.i2p." -"router.tunnel=WARN" -msgstr "" -"O añadir nuevos argumentos en el archivo logger.config Ejemplo: logger." -"record.net.i2p.router.tunnel =WARN" +"Or put entries in the logger.config file. Example: " +"logger.record.net.i2p.router.tunnel=WARN" +msgstr "O añadir nuevos argumentos en el archivo logger.config Ejemplo: logger.record.net.i2p.router.tunnel =WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2275,7 +2251,7 @@ msgstr "Los niveles válidos son DEBUG, INFO, WARN, ERROR, CRIT" #. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm #. but pink instead of yellow for WARN #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:106 +#: ../java/src/net/i2p/router/web/LogsHelper.java:114 msgid "CRIT" msgstr "CRIT" @@ -2284,23 +2260,23 @@ msgid "DEBUG" msgstr "DEBUG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:108 +#: ../java/src/net/i2p/router/web/LogsHelper.java:116 msgid "ERROR" msgstr "ERROR" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:112 +#: ../java/src/net/i2p/router/web/LogsHelper.java:120 msgid "INFO" msgstr "INFO" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:110 +#: ../java/src/net/i2p/router/web/LogsHelper.java:118 msgid "WARN" msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 #: ../java/src/net/i2p/router/web/HomeHelper.java:192 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:808 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:809 msgid "Remove" msgstr "Quitar" @@ -2408,7 +2384,7 @@ msgstr "EstadÃsticas" msgid "Advanced" msgstr "Avanzado" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:54 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:53 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:31 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 @@ -2421,100 +2397,105 @@ msgstr "Avanzado" msgid "Save changes" msgstr "Guardar cambios" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:136 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:135 msgid "Rechecking router reachability..." msgstr "Repitida verificación de la accesibilidad del router ..." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 msgid "Updating IP address" msgstr "Actualizando dirección IP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:195 msgid "Disabling TCP completely" msgstr "Desactivando TCP por completo" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:198 -msgid "Updating inbound TCP address to" -msgstr "Actualizando las direcciones de entrada TCP a " +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, java-format +msgid "Updating TCP address to {0}" +msgstr "Actualizando la dirección TCP a {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:203 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:207 msgid "Disabling inbound TCP" msgstr "Desactivando TCP entrante" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:209 msgid "Updating inbound TCP address to auto" msgstr "Actualizando la dirección TCP de entrada a automático" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:216 -msgid "Updating inbound TCP port to" -msgstr "Actualizando el puerto de entrada TCP a " +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:222 +#, java-format +msgid "Updating TCP port to {0}" +msgstr "Actualizando el puerto TCP a {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:219 -msgid "Updating inbound TCP port to auto" -msgstr "Actualizando el puerto de entrada TCP a automático" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Advertencia: no se recomienda usar puertos inferiores al 1024" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "Updating UDP port from" -msgstr "Actualizando el puerto UDP desde" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:255 +msgid "Invalid port" +msgstr "Puerto no válido" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "to" -msgstr "a" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:233 +msgid "Updating inbound TCP port to auto" +msgstr "Actualizando el puerto de entrada TCP a automático" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +#, java-format +msgid "Updating UDP port to {0}" +msgstr "Actualizando el puerto UDP a {0}" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:272 msgid "Gracefully restarting into Hidden Router Mode" msgstr "Reiniciando de forma controlada en modo router oculto" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:274 msgid "Gracefully restarting to exit Hidden Router Mode" msgstr "Reiniciando de forma controlada para salir del modo router oculto" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:258 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:283 msgid "Enabling UPnP, restart required to take effect" -msgstr "" -"Activando UPnP, se requiere un reinicio para que los cambios surtan efecto." +msgstr "Activando UPnP, se requiere un reinicio para que los cambios surtan efecto." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:260 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:285 msgid "Disabling UPnP, restart required to take effect" -msgstr "" -"Deshabilitando UPnP, se requiere un reinicio para que los cambios surtan " -"efecto." +msgstr "Deshabilitando UPnP, se requiere un reinicio para que los cambios surtan efecto." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:293 msgid "Enabling laptop mode" msgstr "Activando el modo ordenador portátil" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:270 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:295 msgid "Disabling laptop mode" msgstr "Desactivando el modo ordenador portátil" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:277 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:302 msgid "Disabling UDP" msgstr "Deshabilitando UDP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:304 msgid "Enabling UDP" msgstr "Habilitando UDP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311 msgid "Requiring SSU introducers" msgstr "Requeriendo introductores SSU" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:345 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369 +msgid "Invalid address" +msgstr "Dirección no válida" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 #, java-format msgid "The hostname or IP {0} is not publicly routable" msgstr "El nombre de host o IP {0} no es enrutable públicamente" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:348 -#, java-format -msgid "The hostname or IP {0} is invalid" -msgstr "El nombre de host o IP {0} no es válido" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:399 msgid "Updating bandwidth share percentage" msgstr "Actualizando el porcentaje de compartición del ancho de banda" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:404 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:429 msgid "Updated bandwidth limits" msgstr "LÃmites del ancho de banda actualizados" @@ -2601,7 +2582,7 @@ msgstr "Configuración guardada con éxito." #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34 -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:393 msgid "Shutdown immediately" msgstr "Apagar en seguida" @@ -2623,7 +2604,7 @@ msgstr "Reiniciar inmediatamente" #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:163 msgid "Restart" msgstr "Reiniciar" @@ -2649,113 +2630,122 @@ msgstr "Apagando en {0}" msgid "Restart in {0}" msgstr "Reiniciando en {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:169 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:391 msgid "Shutdown gracefully" msgstr "Apagar de forma controlada" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:173 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 msgid "Graceful shutdown initiated" msgstr "Iniciado el apagado controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Apagar inmediatamente! Boom adiós chico malo" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:395 msgid "Cancel graceful shutdown" msgstr "Cancelar el apagado controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 msgid "Graceful shutdown cancelled" msgstr "Cancelado el apagado controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:407 msgid "Graceful restart" msgstr "Reinicio controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:187 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 msgid "Graceful restart requested" msgstr "Ha sido solicitado el reinicio controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:409 msgid "Hard restart" msgstr "Reinicio brusco" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 msgid "Hard restart requested" msgstr "Reinicio brusco solicitado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 msgid "Rekey and Restart" msgstr "Cambiar claves y reiniciar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 msgid "Rekeying after graceful restart" msgstr "Reinicio de claves después del reinicio controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:198 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 msgid "Rekey and Shutdown" msgstr "Cambiar claves y apagar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 msgid "Rekeying after graceful shutdown" msgstr "Reinicio de claves después del apagado controlado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:202 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:203 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 msgid "Run I2P on startup" msgstr "Ejecutar I2P al arrancar el sistema" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:205 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 msgid "Don't run I2P on startup" msgstr "No ejecutar I2P al arrancar el sistema" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 msgid "Dump threads" msgstr "Deshechar threads" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:213 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 #, java-format msgid "Threads dumped to {0}" msgstr "hilos desechados a {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 msgid "View console on startup" msgstr "Mostrar consola al iniciar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 msgid "Console is to be shown on startup" msgstr "La consola se mostrará al iniciar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 msgid "Do not view console on startup" msgstr "No mostrar consola al iniciar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:220 msgid "Console is not to be shown on startup" msgstr "La consola no se mostrará al iniciar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 +msgid "Force GC" +msgstr "Forzar GC" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223 +msgid "Full garbage collection requested" +msgstr "Solicitada recolección completa" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:232 msgid "Service installed" msgstr "Servicio instalado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:230 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:234 msgid "Warning: unable to install the service" msgstr "Advertencia: no se puede instalar el servicio" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:241 msgid "Service removed" msgstr "Servicio quitado" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:239 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:243 msgid "Warning: unable to remove the service" msgstr "Advertencia: no se puede quitar el servicio" @@ -2765,23 +2755,17 @@ msgstr "Filtro de estadÃsticas y ubicación actualizados correctamente a " #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:119 msgid "Full statistics enabled - restart required to take effect" -msgstr "" -"EstadÃsticas completas habilitadas - Es necesario reiniciar para que surtan " -"efecto." +msgstr "EstadÃsticas completas habilitadas - Es necesario reiniciar para que surtan efecto." #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 msgid "Full statistics disabled - restart required to take effect" -msgstr "" -"EstadÃsticas completas deshabilitadas - Es necesario reiniciar para que " -"surtan efecto." +msgstr "EstadÃsticas completas deshabilitadas - Es necesario reiniciar para que surtan efecto." #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:124 msgid "" "Graph list updated, may take up to 60s to be reflected here and on the <a " "href=\"graphs.jsp\">Graphs Page</a>" -msgstr "" -"Lista de los gráficos actualizada, puede tardar hasta 60s en reflejarse aquà " -"y en la <a href=\"graphs.jsp\">Página de Gráficos</a>" +msgstr "Lista de los gráficos actualizada, puede tardar hasta 60s en reflejarse aquà y en la <a href=\"graphs.jsp\">Página de Gráficos</a>" #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:28 msgid "Save order" @@ -2846,7 +2830,8 @@ msgstr "movido" msgid "Saved order of sections." msgstr "sucesión de secciones guardada" -#. the count isn't really correct anyway, since we don't check for actual changes +#. the count isn't really correct anyway, since we don't check for actual +#. changes #. addFormNotice("Updated settings for " + updated + " pools."); #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:136 msgid "Updated settings for all pools." @@ -2857,13 +2842,11 @@ msgid "Exploratory tunnel configuration saved successfully." msgstr "Ajustes de los túneles exploratorios guardados con éxito" #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:143 -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:37 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs." -msgstr "" -"Error al guardar la configuración (aplicada pero no guardada) - ¡por favor " -"consulta los registros de errores!" +msgstr "Error al guardar la configuración (aplicada pero no guardada) - ¡por favor consulta los registros de errores!" #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2896,19 +2879,15 @@ msgstr "ADVERTENCIA DE ANONIMATO - Los ajustes incluyen túneles de 0 saltos." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "" -"ADVERTENCIA DE ANONIMATO - Los ajustes incluyen los túneles de 1 salto." +msgstr "ADVERTENCIA DE ANONIMATO - Los ajustes incluyen los túneles de 1 salto." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:83 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" -"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen túneles de gran longitud." +msgstr "ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen túneles de gran longitud." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:86 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "" -"ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen grandes cantidades de " -"túneles." +msgstr "ADVERTENCIA DE RENDIMIENTO - Los ajustes incluyen grandes cantidades de túneles." #. buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n"); #. tunnel depth @@ -2939,91 +2918,95 @@ msgstr "Opciones de Entrada" msgid "Outbound options" msgstr "Opciones de Salida" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:32 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:46 msgid "Theme change saved." msgstr "Cambio del tema guardado." -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:48 msgid "Refresh the page to view." msgstr "Actualiza la página para ver." -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25 +msgid "Set theme universally across all apps" +msgstr "Establecer el tema para todas las aplicaciones" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Arabic" msgstr "Ãrabe" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Czech" msgstr "Checo" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Danish" msgstr "Danés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "English" msgstr "Inglés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Estonian" msgstr "Estoniano" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Finnish" msgstr "Finlandés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "German" msgstr "Alemán" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Greek" msgstr "Griego" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Spanish" msgstr "Español" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Dutch" msgstr "Neerlandés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "French" msgstr "Francés" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Hungarian" msgstr "Húngaro" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Italian" msgstr "Italiano" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Polish" msgstr "Polaco" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Portuguese" msgstr "Portugués" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Russian" msgstr "Ruso" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Swedish" msgstr "Sueco" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Chinese" msgstr "Chino" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Ukrainian" msgstr "Ucraniano" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Vietnamese" msgstr "Vietnamita" @@ -3033,9 +3016,7 @@ msgstr "Actualización disponible; tratando de descargarla" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 msgid "Update available, click button on left to download" -msgstr "" -"Actualización disponible; ¡presiona el botón al lado izquierdo para " -"descargarla!" +msgstr "Actualización disponible; ¡presiona el botón al lado izquierdo para descargarla!" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 msgid "No update available" @@ -3069,7 +3050,7 @@ msgid "Updating refresh frequency to {0}" msgstr "Actualizando la frecuencia de refresco a {0}" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:151 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:111 #: ../java/src/net/i2p/router/web/GraphHelper.java:361 msgid "Never" msgstr "Nunca" @@ -3092,19 +3073,19 @@ msgstr "Actualizando claves de confianza." msgid "Updating unsigned update URL to {0}" msgstr "Actualizando URL de actualización sin firma a {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:113 msgid "Every" msgstr "cada" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131 msgid "Notify only" msgstr "Sólo notificar" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:139 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:138 msgid "Download and verify only" msgstr "Sólo descargar y verificar" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:147 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:146 msgid "Download, verify, and restart" msgstr "Descargar, verificar y reiniciar" @@ -3112,9 +3093,7 @@ msgstr "Descargar, verificar y reiniciar" msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." -msgstr "" -"El formulario introducido es inválido, probablemente por haber utilizado el " -"botón 'atrás' ó 'refrescar' del navegador. Por favor, reinténtelo." +msgstr "El formulario introducido es inválido, probablemente por haber utilizado el botón 'atrás' ó 'refrescar' del navegador. Por favor, reinténtelo." #: ../java/src/net/i2p/router/web/GraphHelper.java:159 msgid "Combined bandwidth graph" @@ -3245,9 +3224,7 @@ msgstr "Libreta de direcciones" #: ../java/src/net/i2p/router/web/HomeHelper.java:27 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:250 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "" -"Administrar el archivo hosts de I2P aquà (resolución de nombres de dominio " -"I2P)" +msgstr "Administrar el archivo hosts de I2P aquà (resolución de nombres de dominio I2P)" #: ../java/src/net/i2p/router/web/HomeHelper.java:28 msgid "Configure Bandwidth" @@ -3291,7 +3268,7 @@ msgid "I2P Router Help" msgstr "Ayuda de Router I2P" #: ../java/src/net/i2p/router/web/HomeHelper.java:33 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 msgid "Router Console" msgstr "Consola del Router" @@ -3318,10 +3295,8 @@ msgstr "Informes de errores" msgid "Bug tracker" msgstr "Rastreador de errores" -#: ../java/src/net/i2p/router/web/HomeHelper.java:40 -msgid "The Italian Bittorrent Resource" -msgstr "El Recurso Bittorrent Italiano" - +#. "colombo-bt.i2p" + S + _x("The Italian Bittorrent Resource") + S + "http +#. ://colombo-bt.i2p/" + S + I + "colomboicon.png" + S + #: ../java/src/net/i2p/router/web/HomeHelper.java:41 msgid "Dev Forum" msgstr "Foro de desarrollo" @@ -3363,9 +3338,7 @@ msgstr "Foro" msgid "" "A public anonymous Git hosting site - supports pulling via Git and HTTP and " "pushing via SSH" -msgstr "" -"un sitio anfitrión git anónimo y público - soporta halar a través de Git y " -"HTTP, y empujar a través de SSH" +msgstr "un sitio anfitrión git anónimo y público - soporta halar a través de Git y HTTP, y empujar a través de SSH" #: ../java/src/net/i2p/router/web/HomeHelper.java:46 msgid "Anonymous Git Hosting" @@ -3392,7 +3365,8 @@ msgstr "Documentación técnica" msgid "Debian and Tahoe-LAFS repositories" msgstr "Repositorios de Debian y Tahoe-LAFS" -#. _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "education.png" + S + +#. _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S +#. + I + "education.png" + S + #: ../java/src/net/i2p/router/web/HomeHelper.java:50 msgid "killyourtv.i2p" msgstr "killyourtv.i2p" @@ -3431,7 +3405,7 @@ msgstr "Sitio web del proyecto" #: ../java/src/net/i2p/router/web/HomeHelper.java:56 msgid "I2P Network Statistics" -msgstr "EstadÃsticas de red I2P" +msgstr "EstadÃsticas de redes I2P" #: ../java/src/net/i2p/router/web/HomeHelper.java:57 msgid "Technical Docs" @@ -3460,12 +3434,10 @@ msgstr "El proxy HTTP no está activo" #: ../java/src/net/i2p/router/web/HomeHelper.java:103 #, java-format msgid "Your browser is not properly configured to use the HTTP proxy at {0}" -msgstr "" -"Tu navegador no está correctamente configurado para utilizar el proxy HTTP " -"en {0}" +msgstr "Tu navegador no está correctamente configurado para utilizar el proxy HTTP en {0}" #: ../java/src/net/i2p/router/web/HomeHelper.java:194 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:810 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:811 msgid "Name" msgstr "Nombre" @@ -3474,20 +3446,20 @@ msgid "URL" msgstr "URL" #: ../java/src/net/i2p/router/web/HomeHelper.java:214 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:856 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 msgid "Add" msgstr "Añadir" -#: ../java/src/net/i2p/router/web/LogsHelper.java:29 -#: ../java/src/net/i2p/router/web/LogsHelper.java:72 +#: ../java/src/net/i2p/router/web/LogsHelper.java:32 +#: ../java/src/net/i2p/router/web/LogsHelper.java:79 msgid "File location" msgstr "Ubicación del archivo" -#: ../java/src/net/i2p/router/web/LogsHelper.java:69 +#: ../java/src/net/i2p/router/web/LogsHelper.java:76 msgid "File not found" msgstr "Archivo no encontrado" -#: ../java/src/net/i2p/router/web/LogsHelper.java:87 +#: ../java/src/net/i2p/router/web/LogsHelper.java:94 msgid "No log messages" msgstr "No hay mensajes de registro" @@ -3766,10 +3738,10 @@ msgstr "El complemento de {0} está dañado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:212 #, java-format msgid "Plugin from {0} does not contain the required configuration file" -msgstr "" -"El complemento de {0} no contiene el archivo de configuración necesario." +msgstr "El complemento de {0} no contiene el archivo de configuración necesario." -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' +#. + signer + "</b>"); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 #, java-format msgid "Plugin from {0} contains an invalid key" @@ -3806,14 +3778,11 @@ msgstr "Este complemento requiere la versión {0} o superior de Java." msgid "" "Downloaded plugin is for new installs only, but the plugin is already " "installed" -msgstr "" -"El complemento descargado es sólo para instalaciones nuevas, pero el " -"complemento ya está instalado." +msgstr "El complemento descargado es sólo para instalaciones nuevas, pero el complemento ya está instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:329 msgid "Installed plugin does not contain the required configuration file" -msgstr "" -"El complemento instalado no contiene el archivo de configuración necesario." +msgstr "El complemento instalado no contiene el archivo de configuración necesario." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:337 msgid "Signature of downloaded plugin does not match installed plugin" @@ -3822,23 +3791,17 @@ msgstr "La firma del complemento descargado no coincide con la del instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 #, java-format msgid "Downloaded plugin version {0} is not newer than installed plugin" -msgstr "" -"El complemento descargado con versión {0} no es más reciente que la versión " -"ya instalada." +msgstr "El complemento descargado con versión {0} no es más reciente que la versión ya instalada." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351 #, java-format msgid "Plugin update requires installed plugin version {0} or higher" -msgstr "" -"La actualización del complemento requiere tener instalada la versión {0} o " -"superior de este complemento." +msgstr "La actualización del complemento requiere tener instalada la versión {0} o superior de este complemento." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358 #, java-format msgid "Plugin update requires installed plugin version {0} or lower" -msgstr "" -"La actualización del complemento requiere tener instalada la versión {0} o " -"inferior de este complemento." +msgstr "La actualización del complemento requiere tener instalada la versión {0} o inferior de este complemento." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:366 #, java-format @@ -3861,9 +3824,7 @@ msgstr "El complemento se instalará al siguiente reinicio." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:410 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"El complemento es sólo para actualizaciones, pero el complemento aún no está " -"instalado." +msgstr "El complemento es sólo para actualizaciones, pero el complemento aún no está instalado." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:423 #, java-format @@ -4073,9 +4034,7 @@ msgstr "capacidades" msgid "" "peak throughput (bytes per second) over a 1 minute period that the peer has " "sustained in a single tunnel" -msgstr "" -"rendimiento máximo (bytes por segundo) durante un perÃodo de 1 minuto que el " -"par ha sostenido en un solo túnel" +msgstr "rendimiento máximo (bytes por segundo) durante un perÃodo de 1 minuto que el par ha sostenido en un solo túnel" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:282 msgid "speed" @@ -4133,61 +4092,57 @@ msgstr "Baneado hasta el reinicio o en {0}" msgid "unban now" msgstr "Desbanear ahora" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:313 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:314 msgid "Bandwidth usage" msgstr "Uso de ancho de banda" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:323 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 msgid "Outbound Bytes/sec" msgstr "bytes/seg de salida" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:325 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:326 msgid "Inbound Bytes/sec" msgstr "bytes/seg de entrada" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:329 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 #: ../java/src/net/i2p/router/web/StatSummarizer.java:331 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 msgid "Bps" msgstr "B/seg." -#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 msgid "Out average" msgstr "Promedio de salida" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:150 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 msgid "max" msgstr "max" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 msgid "In average" msgstr "Promedio de entrada" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 msgid "GO" msgstr "¡Adelante!" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 msgid "Statistics gathered during this router's uptime" msgstr "EstadÃsticas recopiladas durante el funcionamiento de este router" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "" "The data gathered is quantized over a 1 minute period, so should just be " "used as an estimate." -msgstr "" -"Los datos recogidos se cuantifican en un perÃodo de 1 minuto, por lo que " -"sólo deben utilizarse como estimación." +msgstr "Los datos recogidos se cuantifican en un perÃodo de 1 minuto, por lo que sólo deben utilizarse como estimación." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:65 msgid "These statistics are primarily used for development and debugging." -msgstr "" -"Estas estadÃsticas se utilizan principalmente para el desarrollo y " -"depuración." +msgstr "Estas estadÃsticas se utilizan principalmente para el desarrollo y depuración." #: ../java/src/net/i2p/router/web/StatsGenerator.java:106 #: ../java/src/net/i2p/router/web/StatsGenerator.java:157 @@ -4206,12 +4161,14 @@ msgstr "Promedio de eventos móviles por perÃodo" msgid "Highest events per period" msgstr "Más altos eventos por perÃodo" -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && +#. (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); #. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); #. buf.append(" of max)"); #. } -#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(" <i>avg interval between updates:</i> +#. (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" @@ -4295,9 +4252,7 @@ msgstr "Ayuda" msgid "" "Configure startup of clients and webapps (services); manually start dormant " "services" -msgstr "" -"Configura el arranque de clientes y servicios (webapps) o lanza servicios no " -"activados" +msgstr "Configura el arranque de clientes y servicios (webapps) o lanza servicios no activados" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 msgid "I2P Services" @@ -4375,9 +4330,7 @@ msgstr "General" msgid "" "Your Local Identity is your unique I2P router identity, similar to an ip " "address but tailored to I2P. " -msgstr "" -"La identidad local es la identidad única de tu router, similar a una " -"dirección ip, pero en el ámbito de i2p." +msgstr "La identidad local es la identidad única de tu router, similar a una dirección ip, pero en el ámbito de i2p." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 msgid "Never disclose this to anyone, as it can reveal your real world ip." @@ -4417,9 +4370,7 @@ msgstr "Tiempo de servicio" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341 msgid "" "Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Ayuda con la configuración de cortafuegos y router para un rendimiento " -"óptimo de I2P" +msgstr "Ayuda con la configuración de cortafuegos y router para un rendimiento óptimo de I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:356 msgid "Configure I2P Updates" @@ -4431,8 +4382,7 @@ msgstr "Actualización de I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:383 msgid "Peers we've been talking to in the last few minutes/last hour" -msgstr "" -"pares con los que hemos comunicado en los últimos minutos / la última hora" +msgstr "pares con los que hemos comunicado en los últimos minutos / la última hora" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Active" @@ -4456,8 +4406,7 @@ msgstr "Alta capacidad" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413 msgid "The number of peers available for network database inquiries" -msgstr "" -"cantidad de pares disponibles para consultas a la base de datos sobre la red" +msgstr "El número de pares disponibles para las consultas de la base de datos de redes" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 msgid "The total number of peers in our network database" @@ -4485,7 +4434,8 @@ msgstr "Usado" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:496 msgid "" -"Used for building and testing tunnels, and communicating with floodfill peers" +"Used for building and testing tunnels, and communicating with floodfill " +"peers" msgstr "para crear y probar túneles, y para comunicar con los pares floodfill" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:499 @@ -4500,9 +4450,7 @@ msgstr "túneles que usas para acceder o provisionar servicios en la red" msgid "" "Tunnels we are participating in, directly contributing bandwith to the " "network" -msgstr "" -"Túneles en los que tomamos parte, asà aportando de forma directa ancho de " -"banda a la red. " +msgstr "Túneles en los que tomamos parte, asà aportando de forma directa ancho de banda a la red. " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:517 msgid "Participating" @@ -4512,9 +4460,7 @@ msgstr "Participando en" msgid "" "The ratio of tunnel hops we provide to tunnel hops we use - a value greater " "than 1.00 indicates a positive contribution to the network" -msgstr "" -"La relación de saltos de túnel que proporcionamos y los que usamos - un " -"valor mayor de 1,00 indica una aportación positiva a la red." +msgstr "La relación de saltos de túnel que proporcionamos y los que usamos - un valor mayor de 1,00 indica una aportación positiva a la red." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:526 msgid "Share ratio" @@ -4611,9 +4557,7 @@ msgstr "Bloqueado por un cortafuegos" msgid "" "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " "restart" -msgstr "" -"ERR-puerto UDP en uso - ¡establece i2np.udp.internalPort=xxxx = en la " -"configuración avanzada y reinicia!" +msgstr "ERR-puerto UDP en uso - ¡establece i2np.udp.internalPort=xxxx = en la configuración avanzada y reinicia!" #: ../java/src/net/i2p/router/web/SummaryHelper.java:181 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -4621,8 +4565,7 @@ msgstr "ERR-No hay pares activos, Compruebe la conexión de red y cortafuegos" #: ../java/src/net/i2p/router/web/SummaryHelper.java:184 msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ERR-UDP deshabilitado y el puerto/host de entrada TCP no ha sido establecido" +msgstr "ERR-UDP deshabilitado y el puerto/host de entrada TCP no ha sido establecido" #: ../java/src/net/i2p/router/web/SummaryHelper.java:186 msgid "WARN-Firewalled with UDP Disabled" @@ -4630,8 +4573,7 @@ msgstr "AVISO-Tras cortafuegos con UDP deshabilitado" #: ../java/src/net/i2p/router/web/SummaryHelper.java:411 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "" -"Agregar/quitar/editar & controlar tus túneles de cliente y servidor" +msgstr "Agregar/quitar/editar & controlar tus túneles de cliente y servidor" #: ../java/src/net/i2p/router/web/SummaryHelper.java:423 msgid "Server" @@ -4686,7 +4628,8 @@ msgstr "Descargar actualización ( {0} )" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #. <br> is optional, to help the browser make the lines even in the button -#. If the translation is shorter than the English, you should probably not include <br> +#. If the translation is shorter than the English, you should probably not +#. include <br> #: ../java/src/net/i2p/router/web/SummaryHelper.java:684 #, java-format msgid "Download Unsigned<br>Update {0}" @@ -4704,45 +4647,45 @@ msgstr "Comprobar conexión de red y NAT/cortafuegos" msgid "Reseed" msgstr "Resembrar" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:812 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:813 msgid "Order" msgstr "orden" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:829 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:830 msgid "Top" msgstr "cabeza" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:842 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:843 msgid "Down" msgstr "abajo" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:847 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:848 msgid "Bottom" msgstr "fondo" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:859 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:860 msgid "Select a section to add" msgstr "elegir una sección a añadir" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:118 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:121 #, java-format msgid "events in {0}" msgstr "eventos en {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:120 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:123 #, java-format msgid "averaged for {0}" msgstr "promedio por {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:130 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:133 msgid "Events per period" msgstr "Eventos por perÃodo" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:149 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154 msgid "avg" msgstr "promedio" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:151 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:156 msgid "now" msgstr "ahora" @@ -5201,7 +5144,8 @@ msgstr "Configurar ancho de banda" msgid "Router is down" msgstr "Router está caÃdo" -#. We have intl defined when this is included, but not when compiled standalone. +#. We have intl defined when this is included, but not when compiled +#. standalone. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:291 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:291 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 @@ -5299,9 +5243,7 @@ msgstr "Limitador de ancho de banda" msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." -msgstr "" -"I2P funcionará mejor si configuras tus tasas de modo que coincidan con la " -"velocidad de tu conexión a Internet." +msgstr "I2P funcionará mejor si configuras tus tasas de modo que coincidan con la velocidad de tu conexión a Internet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 msgid "KBps In" @@ -5334,15 +5276,12 @@ msgstr "I2P requiere al menos 12KBps para permitir el intercambio." msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " -msgstr "" -"Por favor, ¡activa la compartición (participación en túneles) configurando " -"un mayor ancho de banda." +msgstr "Por favor, ¡activa la compartición (participación en túneles) configurando un mayor ancho de banda." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:404 msgid "" "It improves your anonymity by creating cover traffic, and helps the network." -msgstr "" -"Esto mejorará tu anonimato creando tráfico de cobertura, y ayuda a la red." +msgstr "Esto mejorará tu anonimato creando tráfico de cobertura, y ayuda a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 #, java-format @@ -5353,9 +5292,7 @@ msgstr "Has configurado I2P para compartir {0} KBps." msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." -msgstr "" -"Cuanto mayor sea el ancho de banda compartido, mayor es el anonimato y más " -"ayudas a la red." +msgstr "Cuanto mayor sea el ancho de banda compartido, mayor es el anonimato y más ayudas a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Advanced network configuration page" @@ -5414,9 +5351,7 @@ msgstr "Configuración Clientes" msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." -msgstr "" -"Los clientes de Java que se enumeran a continuación son iniciados por el " -"router y se ejecutan en la misma JVM." +msgstr "Los clientes de Java que se enumeran a continuación son iniciados por el router y se ejecutan en la misma JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:420 msgid "To change other client options, edit the file" @@ -5446,9 +5381,7 @@ msgstr "Habilitada con SSL obligatorio" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461 msgid "Disabled - Clients outside this Java process may not connect" -msgstr "" -"Deshabilitada - Los clientes fuera de este proceso Java podrÃan no fallar en " -"conectarse" +msgstr "Deshabilitada - Los clientes fuera de este proceso Java podrÃan no fallar en conectarse" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:463 msgid "I2CP Port" @@ -5482,9 +5415,7 @@ msgstr "La configuración por defecto funcionará para la mayorÃa de la gente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:501 msgid "Any changes made here must also be configured in the external client." -msgstr "" -"Cualquier cambio realizado aquà también debe configurarse en el cliente " -"externo." +msgstr "Cualquier cambio realizado aquà también debe configurarse en el cliente externo." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:503 msgid "Many clients do not support SSL or authorization." @@ -5498,18 +5429,11 @@ msgstr "Configuración de las Applicaciones Web" msgid "" "The Java web applications listed below are started by the webConsole client " "and run in the same JVM as the router. They are usually web applications " -"accessible through the router console. They may be complete applications (e." -"g. i2psnark),front-ends to another client or application which must be " +"accessible through the router console. They may be complete applications " +"(e.g. i2psnark),front-ends to another client or application which must be " "separately enabled (e.g. susidns, i2ptunnel), or have no web interface at " "all (e.g. addressbook)." -msgstr "" -"Las aplicaciones web Java que se enumeran a continuación son iniciadas por " -"el cliente de consola web y se ejecutan en la misma JVM que el router. Por " -"lo general son aplicaciones web, accesibles a través de la consola del " -"router. Pueden ser aplicaciones completas (i2psnark por ejemplo), interfaces " -"de otro cliente o aplicaciónes que deben ser habilitadas por separado (por " -"ejemplo, susidns, i2ptunnel), o que no tienen interfaz web en absoluto (por " -"ejemplo, la libreta de direcciones)." +msgstr "Las aplicaciones web Java que se enumeran a continuación son iniciadas por el cliente de consola web y se ejecutan en la misma JVM que el router. Por lo general son aplicaciones web, accesibles a través de la consola del router. Pueden ser aplicaciones completas (i2psnark por ejemplo), interfaces de otro cliente o aplicaciónes que deben ser habilitadas por separado (por ejemplo, susidns, i2ptunnel), o que no tienen interfaz web en absoluto (por ejemplo, la libreta de direcciones)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:517 msgid "" @@ -5517,11 +5441,7 @@ msgid "" "directory; however the .war file and web app will reappear when you update " "your router to a newer version, so disabling the web app here is the " "preferred method." -msgstr "" -"Una aplicación web también se puede desactivar quitando el archivo .war del " -"directorio de aplicaciones web; Sin embargo, el archivo .war y la aplicación " -"web volverán a aparecer al actualizar el router a una nueva versión, asà que " -"el método preferido es deshabilitar la aplicación web aquÃ." +msgstr "Una aplicación web también se puede desactivar quitando el archivo .war del directorio de aplicaciones web; Sin embargo, el archivo .war y la aplicación web volverán a aparecer al actualizar el router a una nueva versión, asà que el método preferido es deshabilitar la aplicación web aquÃ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:531 msgid "Plugin Configuration" @@ -5529,9 +5449,7 @@ msgstr "Configuración de Complementos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:533 msgid "The plugins listed below are started by the webConsole client." -msgstr "" -"Los complementos enumerados a continuación son iniciados por el cliente de " -"consola web." +msgstr "Los complementos enumerados a continuación son iniciados por el cliente de consola web." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:543 msgid "Plugin Installation" @@ -5581,9 +5499,7 @@ msgstr "El llavero del router se utiliza para descifrar leaseSets encriptados." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:402 msgid "" "The keyring may contain keys for local or remote encrypted destinations." -msgstr "" -"El llavero puede contener claves de cifrado para los destinos locales o " -"remotos." +msgstr "El llavero puede contener claves de cifrado para los destinos locales o remotos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:408 msgid "Manual Keyring Addition" @@ -5636,8 +5552,7 @@ msgstr "Formato de escritura del registro" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "" -"(usa 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" +msgstr "(usa 'd' = fecha, 'c' = clase, 't' = hilo, 'p' = prioridad, 'm' = mensaje)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 msgid "Log date format" @@ -5647,9 +5562,7 @@ msgstr "Formato de fecha del registro" msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" -msgstr "" -"('MM' = mes, 'dd' = dÃa, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = " -"milisegundo)" +msgstr "('MM' = mes, 'dd' = dÃa, 'HH' = hora, 'mm' = minuto, 'ss' = segundo, 'SSS' = milisegundo)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:375 msgid "Max log file size" @@ -5663,9 +5576,7 @@ msgstr "Nivel predeterminado de registro" msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" -msgstr "" -"(DEBUG e INFO no se recomiendan por defecto, ya que ralentizaran " -"drásticamente el router)" +msgstr "(DEBUG e INFO no se recomiendan por defecto, ya que ralentizaran drásticamente el router)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:385 msgid "Log level overrides" @@ -5753,9 +5664,7 @@ msgstr "Acción al cambiar de IP" msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" -msgstr "" -"Modo Portátil - cambia la identidad del router y el puerto UDP cuando cambia " -"la IP para aumentar el anonimato" +msgstr "Modo Portátil - cambia la identidad del router y el puerto UDP cuando cambia la IP para aumentar el anonimato" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:464 msgid "Experimental" @@ -5776,8 +5685,7 @@ msgstr "Desactivar por completo" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 msgid "(select only if behind a firewall that blocks outbound UDP)" -msgstr "" -"(seleccionar sólo si se encuentra tras un firewall que bloquea UDP saliente)" +msgstr "(seleccionar sólo si se encuentra tras un firewall que bloquea UDP saliente)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:488 msgid "TCP Configuration" @@ -5798,9 +5706,7 @@ msgstr "si no estamos bloqueados por el cortafuegos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "" -"Siempre utilizar la dirección IP detectada automáticamente (no bloqueado por " -"cortafuegos)" +msgstr "Siempre utilizar la dirección IP detectada automáticamente (no bloqueado por cortafuegos)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:514 msgid "Disable inbound (Firewalled)" @@ -5809,9 +5715,7 @@ msgstr "Deshabilitar entrada (bloqueado por cortafuegos)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:520 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "" -"(Selecciona sólo si estás detrás de un cortafuegos que regule o bloquee la " -"salida por TCP)" +msgstr "(Selecciona sólo si estás detrás de un cortafuegos que regule o bloquee la salida por TCP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:522 msgid "Externally reachable TCP port" @@ -5833,9 +5737,7 @@ msgstr "Notas" msgid "" "a) Do not reveal your port numbers to anyone! b) Changing these settings " "will restart your router." -msgstr "" -"a) ¡No reveles tus números de puerto a nadie! b) La modificación de estos " -"ajustes reiniciará el router." +msgstr "a) ¡No reveles tus números de puerto a nadie! b) La modificación de estos ajustes reiniciará el router." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:547 msgid "Configuration Help" @@ -5845,57 +5747,42 @@ msgstr "Ayuda de Configuración" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:598 msgid "" "While I2P will work fine behind most firewalls, your speeds and network " -"integration will generally improve if the I2P port is forwarded for both UDP " -"and TCP." -msgstr "" -"Mientras I2P funcionará bien incluso bloqueado por la mayorÃa de " -"cotrafuegos, las velocidades y la integración en la red mejorarán " -"generalmente si el puerto de I2P está abierto tanto para UDP como para TCP." +"integration will generally improve if the I2P port is forwarded for both UDP" +" and TCP." +msgstr "Mientras I2P funcionará bien incluso bloqueado por la mayorÃa de cotrafuegos, las velocidades y la integración en la red mejorarán generalmente si el puerto de I2P está abierto tanto para UDP como para TCP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:551 msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." -msgstr "" -"Si es posible, ¡por favor permite el paso de los paquetes TCP y UDP no " -"solicitados por el cortafuegos!" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and" +" TCP packets to reach you." +msgstr "Si es posible, ¡por favor permite el paso de los paquetes TCP y UDP no solicitados por el cortafuegos!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:553 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." -msgstr "" -"Si no puede ser, I2P soporta UPnP (Universal Plug and Play) y UDP hole " -"punching con \"introducciones SSU\" para transmitir tráfico." +msgstr "Si no puede ser, I2P soporta UPnP (Universal Plug and Play) y UDP hole punching con \"introducciones SSU\" para transmitir tráfico." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:555 msgid "" -"Most of the options above are for special situations, for example where UPnP " -"does not work correctly, or a firewall not under your control is doing harm." -msgstr "" -"La mayorÃa de las opciones anteriores son para situaciones especiales, por " -"ejemplo, cuando UPnP no funciona correctamente, o un cortafuegos que no está " -"bajo tu control está haciendo daño." +"Most of the options above are for special situations, for example where UPnP" +" does not work correctly, or a firewall not under your control is doing " +"harm." +msgstr "La mayorÃa de las opciones anteriores son para situaciones especiales, por ejemplo, cuando UPnP no funciona correctamente, o un cortafuegos que no está bajo tu control está haciendo daño." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:557 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "" -"Puede que algunos cortafuegos como NATs simétricos no funcionen bien con I2P." +msgstr "Puede que algunos cortafuegos como NATs simétricos no funcionen bien con I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:566 msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." -msgstr "" -"UPnP se utiliza para comunicarse con dispositivos de puerta de enlace a " -"Internet (IGDs) para detectar la dirección IP externa y los puertos que se " -"deben abrir." +msgstr "UPnP se utiliza para comunicarse con dispositivos de puerta de enlace a Internet (IGDs) para detectar la dirección IP externa y los puertos que se deben abrir." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:568 msgid "UPnP support is beta, and may not work for any number of reasons" -msgstr "" -"El soporte de UPnP está en fase beta, y puede no funcionar correctamente por " -"varias razones" +msgstr "El soporte de UPnP está en fase beta, y puede no funcionar correctamente por varias razones" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 msgid "No UPnP-compatible device present" @@ -5919,8 +5806,7 @@ msgstr "Múltiples cotrafuegos/routers en la ruta de conexión a Internet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:580 msgid "UPnP device change, reset, or address change" -msgstr "" -"El dispositivo UPnP ha cambiado, reiniciado, o ha cambiado de dirección" +msgstr "El dispositivo UPnP ha cambiado, reiniciado, o ha cambiado de dirección" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:582 msgid "Review the UPnP status here." @@ -5930,15 +5816,11 @@ msgstr "Revisar el estado de UPnP aquÃ." msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." -msgstr "" -"Encima de esto UPnP puede ser activado o desactivado, pero un cambio " -"requiere un reinicio del router para que surta efecto." +msgstr "Encima de esto UPnP puede ser activado o desactivado, pero un cambio requiere un reinicio del router para que surta efecto." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:586 msgid "Hostnames entered above will be published in the network database." -msgstr "" -"Los nombres de host introducidos arriba se publicarán en la base de datos de " -"red." +msgstr "Los nombres de host introducidos arriba se publicarán en la base de datos de red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:588 msgid "They are <b>not private</b>." @@ -5946,20 +5828,16 @@ msgstr "<b>No son privados.</b>" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:590 msgid "" -"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." -msgstr "" -"Además, <b>no se debe introducir una dirección IP privada</b> como 127.0.0.1 " -"o 192.168.1.1." +"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or " +"192.168.1.1." +msgstr "Además, <b>no se debe introducir una dirección IP privada</b> como 127.0.0.1 o 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:592 msgid "" "If you specify the wrong IP address or hostname, or do not properly " "configure your NAT or firewall, your network performance will degrade " "substantially." -msgstr "" -"Si se especifica una dirección IP o nombre de host incorrectos, o no se " -"configura correctamente el NAT o cortafuegos, el rendimiento de la red se " -"degradará considerablemente." +msgstr "Si se especifica una dirección IP o nombre de host incorrectos, o no se configura correctamente el NAT o cortafuegos, el rendimiento de la red se degradará considerablemente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:594 msgid "When in doubt, leave the settings at the defaults." @@ -5974,18 +5852,13 @@ msgid "" "If you think you have opened up your firewall and I2P still thinks you are " "firewalled, remember that you may have multiple firewalls, for example both " "software packages and external hardware routers." -msgstr "" -"Si crees que has abierto el cortafuegos y I2P todavÃa piensa que sigue " -"bloqueado por uno, recuerda que podrÃas tener múltiples cortafuegos, por " -"ejemplo, en paquetes de software o en routers externos." +msgstr "Si crees que has abierto el cortafuegos y I2P todavÃa piensa que sigue bloqueado por uno, recuerda que podrÃas tener múltiples cortafuegos, por ejemplo, en paquetes de software o en routers externos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 msgid "" "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " "diagnose the problem." -msgstr "" -"Si hay un error, el <a href=\"logs.jsp\">registro</a> también puede ayudar a " -"diagnosticar el problema." +msgstr "Si hay un error, el <a href=\"logs.jsp\">registro</a> también puede ayudar a diagnosticar el problema." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 msgid "Your UDP port does not appear to be firewalled." @@ -5999,75 +5872,55 @@ msgstr "El puerto UDP parece estar bloqueado por un cortafuegos." msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." -msgstr "" -"Como los métodos de detección de cortafuegos no son 100% fiables, esto puede " -"aparecer por error." +msgstr "Como los métodos de detección de cortafuegos no son 100% fiables, esto puede aparecer por error." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." -msgstr "" -"Sin embargo, si aparece constantemente, deberÃas comprobar si tanto el " -"cortafuegos interno como externo tienen los puertos abiertos." +msgstr "Sin embargo, si aparece constantemente, deberÃas comprobar si tanto el cortafuegos interno como externo tienen los puertos abiertos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." -msgstr "" -"I2P funcionará bien aún bloqueado por un cortafuegos, no hay motivo de " -"preocupación. Si se está detrás de un cortafuegos, el router utiliza " -"\"introductores\" para transmitir las conexiones entrantes." +msgstr "I2P funcionará bien aún bloqueado por un cortafuegos, no hay motivo de preocupación. Si se está detrás de un cortafuegos, el router utiliza \"introductores\" para transmitir las conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." -msgstr "" -"No obstante, obtendrás más tráfico participante y ayudará más a la red si " -"puedes abrir el/los cortafuegos." +msgstr "No obstante, obtendrás más tráfico participante y ayudará más a la red si puedes abrir el/los cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 msgid "" "If you think you have already done so, remember that you may have both a " "hardware and a software firewall, or be behind an additional, institutional " "firewall you cannot control." -msgstr "" -"Si crees que ya lo has hecho, recuerda que podrÃas tener tanto un " -"cortafuegos de hardware como un cortafuegos por software, o podrÃas estar " -"detrás de otro cortafuegos institucional fuera de tu control." +msgstr "Si crees que ya lo has hecho, recuerda que podrÃas tener tanto un cortafuegos de hardware como un cortafuegos por software, o podrÃas estar detrás de otro cortafuegos institucional fuera de tu control." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 msgid "" "Also, some routers cannot correctly forward both TCP and UDP on a single " "port, or may have other limitations or bugs that prevent them from passing " "traffic through to I2P." -msgstr "" -"Además, algunos routers no pueden encaminar correctamente TCP y UDP por el " -"mismo puerto, o pueden tener otras limitaciones o bugs que les impidan pasar " -"tráfico a través de I2P." +msgstr "Además, algunos routers no pueden encaminar correctamente TCP y UDP por el mismo puerto, o pueden tener otras limitaciones o bugs que les impidan pasar tráfico a través de I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 msgid "The router is currently testing whether your UDP port is firewalled." -msgstr "" -"El router está probando si tu puerto UDP está bloqueado por un cortafuegos." +msgstr "El router está probando si tu puerto UDP está bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." -msgstr "" -"El router no está configurado para publicar su dirección, por lo tanto, no " -"espera conexiones entrantes." +msgstr "El router no está configurado para publicar su dirección, por lo tanto, no espera conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 msgid "" "Hidden mode is automatically enabled for added protection in certain " "countries." -msgstr "" -"El modo oculto se activa automáticamente para mayor protección en algunos " -"paÃses." +msgstr "El modo oculto se activa automáticamente para mayor protección en algunos paÃses." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:636 msgid "WARN - Firewalled and Fast" @@ -6075,21 +5928,16 @@ msgstr "AVISO - Bloqueado por cortafuegos y rápido" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:638 msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." -msgstr "" -"Has configurado I2P para compartir más de 128 kbps de ancho de banda, pero " -"te encuentras bloqueado por un cortafuegos" +"You have configured I2P to share more than 128KBps of bandwidth, but you are" +" firewalled." +msgstr "Has configurado I2P para compartir más de 128 kbps de ancho de banda, pero te encuentras bloqueado por un cortafuegos" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 msgid "" "While I2P will work fine in this configuration, if you really have over " "128KBps of bandwidth to share, it will be much more helpful to the network " "if you open your firewall." -msgstr "" -"Aunque I2P funcionará bien con esta configuración, si realmente tiene más de " -"128 kbps de ancho de banda para compartir, será mucho más útil a la red si " -"abre los puertos de su router." +msgstr "Aunque I2P funcionará bien con esta configuración, si realmente tiene más de 128 kbps de ancho de banda para compartir, será mucho más útil a la red si abre los puertos de su router." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 msgid "WARN - Firewalled and Floodfill" @@ -6098,16 +5946,12 @@ msgstr "AVISO - Bloqueado por cortafuegos y Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "" -"Has configurado I2P ser un router floodfill, pero estás bloqueado por un " -"cortafuegos." +msgstr "Has configurado I2P ser un router floodfill, pero estás bloqueado por un cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 msgid "" "For best participation as a floodfill router, you should open your firewall." -msgstr "" -"Para mejorar la participación como router floodfill, deberÃas abrir tu " -"cortafuegos." +msgstr "Para mejorar la participación como router floodfill, deberÃas abrir tu cortafuegos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 msgid "WARN - Firewalled with Inbound TCP Enabled" @@ -6117,24 +5961,17 @@ msgstr "AVISO - Bloqueado por cortafuegos con TCP entrante activado" msgid "" "You have configured inbound TCP, however your UDP port is firewalled, and " "therefore it is likely that your TCP port is firewalled as well." -msgstr "" -"Has configurado TCP entrante, sin embargo el puerto UDP está bloqueado por " -"un cortafuegos, y por lo tanto es probable que el puerto TCP esté bloqueado " -"también." +msgstr "Has configurado TCP entrante, sin embargo el puerto UDP está bloqueado por un cortafuegos, y por lo tanto es probable que el puerto TCP esté bloqueado también." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 msgid "" -"If your TCP port is firewalled with inbound TCP enabled, routers will not be " -"able to contact you via TCP, which will hurt the network." -msgstr "" -"Si el puerto TCP está bloqueado por un cortafuegos con TCP entrante " -"habilitado, los routers no podrán ponerse en contacto con el tuyo a través " -"de TCP, lo que perjudicará a la red." +"If your TCP port is firewalled with inbound TCP enabled, routers will not be" +" able to contact you via TCP, which will hurt the network." +msgstr "Si el puerto TCP está bloqueado por un cortafuegos con TCP entrante habilitado, los routers no podrán ponerse en contacto con el tuyo a través de TCP, lo que perjudicará a la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 msgid "Please open your firewall or disable inbound TCP above." -msgstr "" -"Por favor, ¡abre los puertos del cortafuegos o desactiva TCP entrante arriba!" +msgstr "Por favor, ¡abre los puertos del cortafuegos o desactiva TCP entrante arriba!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 msgid "WARN - Firewalled with UDP Disabled" @@ -6148,9 +5985,7 @@ msgstr "Has configurado TCP entrante, sin embargo has deshabilitado UDP." msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." -msgstr "" -"Parece que estás siendo bloqueado por un cortafuegos en TCP, por lo tanto el " -"router no puede aceptar conexiones entrantes." +msgstr "Parece que estás siendo bloqueado por un cortafuegos en TCP, por lo tanto el router no puede aceptar conexiones entrantes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 msgid "Please open your firewall or enable UDP." @@ -6164,8 +5999,7 @@ msgstr "ERR - desviación de reloj" msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." -msgstr "" -"El reloj del sistema está desviado, lo que hará difÃcil participar en la red." +msgstr "El reloj del sistema está desviado, lo que hará difÃcil participar en la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 msgid "Correct your clock setting if this error persists." @@ -6179,9 +6013,7 @@ msgstr "ERR - Dirección TCP privada" msgid "" "You must never advertise an unroutable IP address such as 127.0.0.1 or " "192.168.1.1 as your external address." -msgstr "" -"Nunca debes anunciar una dirección IP no enrutable, como 127.0.0.1 o " -"192.168.1.1 como tu dirección externa." +msgstr "Nunca debes anunciar una dirección IP no enrutable, como 127.0.0.1 o 192.168.1.1 como tu dirección externa." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 msgid "Correct the address or disable inbound TCP above." @@ -6200,18 +6032,13 @@ msgid "" "I2P does not work well behind this type of firewall. You will probably not " "be able to accept inbound connections, which will limit your participation " "in the network." -msgstr "" -"I2P no funciona bien detrás de este tipo de cortafuegos. Probablemente no " -"serás capaz de aceptar conexiones entrantes, lo que limitará tu " -"participación en la red." +msgstr "I2P no funciona bien detrás de este tipo de cortafuegos. Probablemente no serás capaz de aceptar conexiones entrantes, lo que limitará tu participación en la red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" -msgstr "" -"ERR - el puerto UDP está en uso - ¡Establece i2np.udp.internalPort=xxxx en " -"configuración avanzada reinicia!" +msgstr "ERR - el puerto UDP está en uso - ¡Establece i2np.udp.internalPort=xxxx en configuración avanzada reinicia!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 msgid "I2P was unable to bind to port 8887 or other configured port." @@ -6221,37 +6048,27 @@ msgstr "I2P no pudo enlazar con el puerto 8887 o el otro puerto configurado." msgid "" "Check to see if another program is using the configured port. If so, stop " "that program or configure I2P to use a different port." -msgstr "" -"Comprueba si otro programa está utilizando el puerto configurado. Si es asÃ, " -"cierra el programa o configura I2P para utilizar un puerto diferente." +msgstr "Comprueba si otro programa está utilizando el puerto configurado. Si es asÃ, cierra el programa o configura I2P para utilizar un puerto diferente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 msgid "" "This may be a transient error, if the other program is no longer using the " "port." -msgstr "" -"Esto puede ser un error transitorio, si el otro programa ya no utiliza el " -"puerto." +msgstr "Esto puede ser un error transitorio, si el otro programa ya no utiliza el puerto." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 msgid "However, a restart is always required after this error." -msgstr "" -"Sin embargo, siempre es necesario reiniciar después de que aparezca este " -"error." +msgstr "Sin embargo, siempre es necesario reiniciar después de que aparezca este error." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 msgid "ERR - UDP Disabled and Inbound TCP host/port not set" -msgstr "" -"ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido " -"establecido" +msgstr "ERR - UDP deshabilitado y el host/puerto de entrada TCP no ha sido establecido" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." -msgstr "" -"Arriba no has configurado TCP entrante con un nombre de host y puerto, sin " -"embargo has deshabilitado UDP." +msgstr "Arriba no has configurado TCP entrante con un nombre de host y puerto, sin embargo has deshabilitado UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 msgid "Therefore your router cannot accept inbound connections." @@ -6267,17 +6084,13 @@ msgstr "ERR - Error Client Manager I2CP - verificar los registros" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "" -"Esto se debe generalmente a un conflicto en el puerto 7654. ¡Revisa los " -"registros para verificarlo!" +msgstr "Esto se debe generalmente a un conflicto en el puerto 7654. ¡Revisa los registros para verificarlo!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." -msgstr "" -"¿Tienes otra instancia I2P funcionando? ¡Deten el programa en conflicto y " -"reinicia I2P!" +msgstr "¿Tienes otra instancia I2P funcionando? ¡Deten el programa en conflicto y reinicia I2P!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:139 msgid "config peers" @@ -6302,9 +6115,7 @@ msgstr "Banear / Desbanear manualmente a un par" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:413 msgid "" "Banning will prevent the participation of this peer in tunnels you create." -msgstr "" -"Banear evitará que este par participe en cualquiera de los túneles que vayas " -"crear." +msgstr "Banear evitará que este par participe en cualquiera de los túneles que vayas crear." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:423 msgid "Adjust Profile Bonuses" @@ -6312,15 +6123,11 @@ msgstr "Ajustar Perfil de Bonus" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:425 msgid "" -"Bonuses may be positive or negative, and affect the peer's inclusion in Fast " -"and High Capacity tiers. Fast peers are used for client tunnels, and High " +"Bonuses may be positive or negative, and affect the peer's inclusion in Fast" +" and High Capacity tiers. Fast peers are used for client tunnels, and High " "Capacity peers are used for some exploratory tunnels. Current bonuses are " "displayed on the" -msgstr "" -"Los bonus pueden ser positivos o negativos, y afectan a la inclusión de un " -"par en los niveles 'Rápido' y 'de alta capacidad'. Los pares rápidos se " -"utilizan para los túneles de clientes, los par de alta capacidad se utilizan " -"para algunos túneles exploratorios. Los bonus actuales se muestran en la" +msgstr "Los bonus pueden ser positivos o negativos, y afectan a la inclusión de un par en los niveles 'Rápido' y 'de alta capacidad'. Los pares rápidos se utilizan para los túneles de clientes, los par de alta capacidad se utilizan para algunos túneles exploratorios. Los bonus actuales se muestran en la" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:427 msgid "profiles page" @@ -6351,26 +6158,18 @@ msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " "remaining." -msgstr "" -"Resembrar es el proceso de bootstrapping para encontrar otros routers cuando " -"I2P se instala por primera vez o cuando al router le quedan muy pocas " -"referencias de otros routers." +msgstr "Resembrar es el proceso de bootstrapping para encontrar otros routers cuando I2P se instala por primera vez o cuando al router le quedan muy pocas referencias de otros routers." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:404 msgid "" "If reseeding has failed, you should first check your network connection." -msgstr "" -"El proceso de resembrar ha fallado, primero debes comprobar la conexión de " -"red." +msgstr "El proceso de resembrar ha fallado, primero debes comprobar la conexión de red." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:408 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." -msgstr "" -"¡Cambia estos parámetros solamente si HTTP está bloqueado por un cortafuegos " -"restrictivo, el proceso de resembrar ha fracasado, y si tienes acceso a un " -"proxy HTTP!" +msgstr "¡Cambia estos parámetros solamente si HTTP está bloqueado por un cortafuegos restrictivo, el proceso de resembrar ha fracasado, y si tienes acceso a un proxy HTTP!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 #, java-format @@ -6463,51 +6262,40 @@ msgstr "Apagar el router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:387 msgid "" -"Graceful shutdown lets the router satisfy the agreements it has already made " -"before shutting down, but may take a few minutes." -msgstr "" -"El apagado controlado permite al router cumplir los acuerdos que ya ha hecho " -"antes de apagar, pero puede tardar unos minutos." +"Graceful shutdown lets the router satisfy the agreements it has already made" +" before shutting down, but may take a few minutes." +msgstr "El apagado controlado permite al router cumplir los acuerdos que ya ha hecho antes de apagar, pero puede tardar unos minutos." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:389 msgid "" -"If you need to kill the router immediately, that option is available as well." -msgstr "" -"Si tienes que apagar el router inmediatamente, también tienes esa opción" +"If you need to kill the router immediately, that option is available as " +"well." +msgstr "Si tienes que apagar el router inmediatamente, también tienes esa opción" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:399 msgid "" -"If you want the router to restart itself after shutting down, you can choose " -"one of the following." -msgstr "" -"Si deseas que el router se reinicie después del apagado, puedes elegir una " -"de las siguientes opciones." +"If you want the router to restart itself after shutting down, you can choose" +" one of the following." +msgstr "Si deseas que el router se reinicie después del apagado, puedes elegir una de las siguientes opciones." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:401 msgid "" "This is useful in some situations - for example, if you changed some " "settings that client applications only read at startup, such as the " "routerconsole password or the interface it listens on." -msgstr "" -"Esto es útil en algunas situaciones - por ejemplo, si has cambiado algunas " -"opciones de aplicaciones cliente que sólo se leen al iniciar, como la " -"contraseña de la consola del router o tu interfaz de escucha." +msgstr "Esto es útil en algunas situaciones - por ejemplo, si has cambiado algunas opciones de aplicaciones cliente que sólo se leen al iniciar, como la contraseña de la consola del router o tu interfaz de escucha." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:403 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." -msgstr "" -"Un reinicio controlado tardará unos minutos (pero tus pares te agradecerán " -"tu paciencia), mientras que un reinicio duro lo hace inmediatamente." +msgstr "Un reinicio controlado tardará unos minutos (pero tus pares te agradecerán tu paciencia), mientras que un reinicio duro lo hace inmediatamente." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:405 msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." -msgstr "" -"Después de apagarse completamente, el router esperará 1 minuto antes de " -"volverse a iniciar." +"After tearing down the router, it will wait 1 minute before starting back up" +" again." +msgstr "Después de apagarse completamente, el router esperará 1 minuto antes de volverse a iniciar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:415 msgid "Systray integration" @@ -6517,20 +6305,17 @@ msgstr "integración con la bandeja del sistema" msgid "" "On the windows platform, there is a small application to sit in the system " "tray, allowing you to view the router's status" -msgstr "" -"En la plataforma Windows, hay una pequeña aplicación que se queda en la " -"bandeja del sistema, lo que le permite ver el estado del router" +msgstr "En la plataforma Windows, hay una pequeña aplicación que se queda en la bandeja del sistema, lo que le permite ver el estado del router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:419 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." -msgstr "" -"(Más adelante, las aplicaciones I2P de clientes serán capaces de integrar su " -"propia funcionalidad en la bandeja de sistema también)." +msgstr "(Más adelante, las aplicaciones I2P de clientes serán capaces de integrar su propia funcionalidad en la bandeja de sistema también)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 -msgid "If you are on windows, you can either enable or disable that icon here." +msgid "" +"If you are on windows, you can either enable or disable that icon here." msgstr "Si estás en Windows, puedes activar o desactivar ese icono aquÃ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 @@ -6547,12 +6332,9 @@ msgstr "Lanzar al iniciar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 msgid "" -"You can control whether I2P is run on startup or not by selecting one of the " -"following options - I2P will install (or remove) a service accordingly." -msgstr "" -"Puedes controlar si I2P se ejecuta automaticamente al arrancar el equipo o " -"no, seleccionando una de las siguientes opciones - I2P instalará (o " -"eliminará) un servicio en consecuencia." +"You can control whether I2P is run on startup or not by selecting one of the" +" following options - I2P will install (or remove) a service accordingly." +msgstr "Puedes controlar si I2P se ejecuta automaticamente al arrancar el equipo o no, seleccionando una de las siguientes opciones - I2P instalará (o eliminará) un servicio en consecuencia." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 msgid "If you prefer the command line, you can also run the " @@ -6565,19 +6347,15 @@ msgstr "Nota" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 msgid "" -"If you are running I2P as service right now, removing it will shut down your " -"router immediately." -msgstr "" -"Si estás ejecutando I2p como servicio en este momento, quitarlo hará que se " -"apague el router de inmediato." +"If you are running I2P as service right now, removing it will shut down your" +" router immediately." +msgstr "Si estás ejecutando I2p como servicio en este momento, quitarlo hará que se apague el router de inmediato." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." -msgstr "" -"Es recomendable que consideres el apagado controlado como se indica arriba, " -"para ello, ejecuta uninstall_i2p_service_winnt.bat." +msgstr "Es recomendable que consideres el apagado controlado como se indica arriba, para ello, ejecuta uninstall_i2p_service_winnt.bat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:447 msgid "Debugging" @@ -6589,25 +6367,20 @@ msgstr "Ver cola de tareas" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 msgid "" -"At times, it may be helpful to debug I2P by getting a thread dump. To do so, " -"please select the following option and review the thread dumped to <a href=" -"\"logs.jsp#servicelogs\">wrapper.log</a>." -msgstr "" -"A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para " -"ello, selecciona la opción siguiente y revisa el dump en <a href=\"logs." -"jsp#servicelogs\">wrapper.log</a> ." +"At times, it may be helpful to debug I2P by getting a thread dump. To do so," +" please select the following option and review the thread dumped to <a " +"href=\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "A veces, puede ser útil depurar I2P consiguiendo un volcado de hilo. Para ello, selecciona la opción siguiente y revisa el dump en <a href=\"logs.jsp#servicelogs\">wrapper.log</a> ." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 msgid "Launch browser on router startup?" msgstr "Iniciar el navegador al arrancar el router?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" -msgstr "" -"La interfaz de configuración principal de I2P es esta consola Web. Para tu " -"comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" +msgstr "La interfaz de configuración principal de I2P es esta consola Web. Para tu comodidad I2P puede lanzar el navegador web en al iniciar apuntando a" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:139 msgid "config summary bar" @@ -6694,35 +6467,26 @@ msgstr "Hay un equilibrio fundamental entre el anonimato y el rendimiento." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:417 msgid "" "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " -"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " -"reduce performance or reliability." -msgstr "" -"Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ " -"0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad incluyendo túneles " -"de respaldo, pueden reducir severamente el rendimiento o la fiabilidad." +"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely" +" reduce performance or reliability." +msgstr "Los túneles de más de tres saltos (por ejemplo, 2 + 0-2 saltos, 3 saltos+ 0-1 saltos, 3 saltos + 0-2 saltos), o una alta cantidad incluyendo túneles de respaldo, pueden reducir severamente el rendimiento o la fiabilidad." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:420 msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "" -"Puede resultar en un uso alto de CPU y/o un uso de gran ancho de banda de " -"salida " +msgstr "Puede resultar en un uso alto de CPU y/o un uso de gran ancho de banda de salida " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:423 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "" -"Cambia esta configuración con cuidado, y ajústala en caso de tener problemas." +msgstr "Cambia esta configuración con cuidado, y ajústala en caso de tener problemas." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 msgid "" "Exploratory tunnel setting changes are stored in the router.config file." -msgstr "" -"Los cambios en los túneles exploratorios se almacenan en el archivo router." -"config." +msgstr "Los cambios en los túneles exploratorios se almacenan en el archivo router.config." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:436 msgid "Client tunnel changes are temporary and are not saved." -msgstr "" -"Los cambios en túnel de cliente son de carácter temporal y no se guardarán." +msgstr "Los cambios en túnel de cliente son de carácter temporal y no se guardarán." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:438 msgid "To make permanent client tunnel changes see the" @@ -6746,20 +6510,14 @@ msgstr "Tema de la Consola del Router" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:374 msgid "Theme selection disabled for Internet Explorer, sorry." -msgstr "" -"Lo sentimos, pero la selección de temas está deshabilitada para Internet " -"Explorer." +msgstr "Lo sentimos, pero la selección de temas está deshabilitada para Internet Explorer." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:376 msgid "" "If you're not using IE, it's likely that your browser is pretending to be " "IE; please configure your browser (or proxy) to use a different User Agent " "string if you'd like to access the console themes." -msgstr "" -"Si no estás utilizando Internet Explorer, es probable que tu navegador se " -"esté haciendo pasar por el IE, por favor, configura tu navegador (o proxy) " -"para utilizar un agente de usuario diferente si deseas acceder a los temas " -"de la consola." +msgstr "Si no estás utilizando Internet Explorer, es probable que tu navegador se esté haciendo pasar por el IE, por favor, configura tu navegador (o proxy) para utilizar un agente de usuario diferente si deseas acceder a los temas de la consola." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:379 msgid "Router Console Language" @@ -6769,10 +6527,7 @@ msgstr "Idioma de la Consola del Router" msgid "" "Please contribute to the router console translation project! Contact the " "developers in #i2p-dev on IRC to help." -msgstr "" -"Por favor, ¡contribuye al proyecto de traducción de la consola del router! " -"Ponte en contacto con los desarrolladores en los canales #i2p-dev y #i2p-es " -"del IRC para ayudar." +msgstr "Por favor, ¡contribuye al proyecto de traducción de la consola del router! Ponte en contacto con los desarrolladores en los canales #i2p-dev y #i2p-es del IRC para ayudar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:389 msgid "Apply" @@ -6885,63 +6640,58 @@ msgstr "Tu navegador no soporta iFrames." msgid "Click here to continue." msgstr "Pincha aquà para continuar." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 msgid "Internal Error" msgstr "Error interno" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 msgid "Configuration" msgstr "Configuración" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:160 msgid "Sorry! There has been an internal error." msgstr "Lo sentimos. Se ha producido un error interno." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:161 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:335 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Por favor, ¡informa sobre errores en {0} o {1}!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:339 msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Puedes utilizar el nombre de usuario \"guest\" y contraseña \"guest\" si no " -"deseas registrarte." +"You may use the username \"guest\" and password \"guest\" if you do not wish" +" to register." +msgstr "Puedes utilizar el nombre de usuario \"guest\" y contraseña \"guest\" si no deseas registrarte." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:341 msgid "Please include this information in bug reports" msgstr "Por favor, ¡incluye esta información en los informes de error!" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 msgid "Error Details" msgstr "Detalles del error" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:174 #, java-format msgid "Error {0}" msgstr "Error {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:194 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:331 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:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:241 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:390 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." -msgstr "" -"Ten en cuenta que la información del sistema, las marcas de tiempo del " -"registro y los mensajes del registro pueden proporcionar pistas sobre tu " -"ubicación. Por favor, ¡revisa todos los datos antes de incliurlos en un " -"informe de error!" +"clues to your location; please review everything you include in a bug " +"report." +msgstr "Ten en cuenta que la información del sistema, las marcas de tiempo del registro y los mensajes del registro pueden proporcionar pistas sobre tu ubicación. Por favor, ¡revisa todos los datos antes de incliurlos en un informe de error!" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:148 msgid "Page Not Found" @@ -6951,9 +6701,7 @@ msgstr "Página no encontrada" msgid "" "Sorry! You appear to be requesting a non-existent Router Console page or " "resource." -msgstr "" -"Lo sentimos! Pareces estar intentando entrar en una página de la consola del " -"router o un recurso inexistentes." +msgstr "Lo sentimos! Pareces estar intentando entrar en una página de la consola del router o un recurso inexistentes." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:321 msgid "Error 404" @@ -6977,9 +6725,7 @@ msgstr "Gráficos de rendimiento de I2P" msgid "" "Click a flag to select a language. Click 'configure language' below to " "change it later." -msgstr "" -"Haga click en una bandera para elegir idioma. Click en 'configurar idioma' a " -"continuación para cambiarlo después." +msgstr "Haga click en una bandera para elegir idioma. Click en 'configurar idioma' a continuación para cambiarlo después." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:362 msgid "Search I2P" @@ -7051,11 +6797,9 @@ msgstr "La aplicación web solicitada no se está ejecutando" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:337 msgid "" -"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" -"a> to start it." -msgstr "" -"Por favor visita la <a href=\"/configclients.jsp#webapp\">página de " -"configuración de clientes</a> para iniciarla." +"Please visit the <a href=\"/configclients.jsp#webapp\">config clients " +"page</a> to start it." +msgstr "Por favor visita la <a href=\"/configclients.jsp#webapp\">página de configuración de clientes</a> para iniciarla." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:136 msgid "peer connections" diff --git a/apps/routerconsole/locale/messages_it.po b/apps/routerconsole/locale/messages_it.po index 6c0e3ced08edbf50b3a52b0cc4e4fde3a60fb484..ff5a9c6171f7f846c482e525557512f1fb8cd391 100644 --- a/apps/routerconsole/locale/messages_it.po +++ b/apps/routerconsole/locale/messages_it.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-12 00:46+0000\n" -"PO-Revision-Date: 2012-10-12 00:44+0000\n" +"POT-Creation-Date: 2012-10-15 17:57+0000\n" +"PO-Revision-Date: 2012-10-12 00:50+0000\n" "Last-Translator: BadCluster <badcluster@i2pmail.org>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/" "it/)\n" @@ -361,7 +361,7 @@ msgstr "Quanto è passato dall'inizio di questa connessione" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2188 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:836 msgid "Up" msgstr "Su" @@ -722,7 +722,7 @@ msgstr "Bannato" #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2310 msgid "backlogged" -msgstr "" +msgstr "ritardi" #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2390 @@ -2134,7 +2134,7 @@ msgstr "Cancella" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:25 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:855 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:856 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:419 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:439 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:455 @@ -2143,7 +2143,7 @@ msgstr "Elimina selezionati" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:26 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:874 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:875 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:417 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:425 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:437 @@ -2294,7 +2294,7 @@ msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 #: ../java/src/net/i2p/router/web/HomeHelper.java:192 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:809 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:810 msgid "Remove" msgstr "Rimuovi" @@ -2448,12 +2448,12 @@ msgstr "Aggiornamento porta TCP a {0}" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:224 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 msgid "Warning - ports less than 1024 are not recommended" -msgstr "" +msgstr "Attenzione - è meglio non utilizzare le porte da 0 a 1024!" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:228 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:255 msgid "Invalid port" -msgstr "" +msgstr "Porta non valida" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:233 msgid "Updating inbound TCP port to auto" @@ -2462,7 +2462,7 @@ msgstr "Aggiornando le porte TCP entranti a automatiche" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 #, java-format msgid "Updating UDP port to {0}" -msgstr "" +msgstr "Aggiornamento porta UDP a {0}" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:272 msgid "Gracefully restarting into Hidden Router Mode" @@ -2502,7 +2502,7 @@ msgstr "Introduttori SSU richiesti" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369 msgid "Invalid address" -msgstr "" +msgstr "Indirizzo non valido" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 #, java-format @@ -2745,11 +2745,11 @@ msgstr "La console non verrà mostrata all'avvio" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 msgid "Force GC" -msgstr "" +msgstr "Forza GC" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223 msgid "Full garbage collection requested" -msgstr "" +msgstr "Richieste totali" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:232 msgid "Service installed" @@ -3468,7 +3468,7 @@ msgstr "" "Il tuo browser non è configurato correttamente per usare il proxy HTTP al {0}" #: ../java/src/net/i2p/router/web/HomeHelper.java:194 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:811 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:812 msgid "Name" msgstr "Nome" @@ -3477,7 +3477,7 @@ msgid "URL" msgstr "URL" #: ../java/src/net/i2p/router/web/HomeHelper.java:214 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:858 msgid "Add" msgstr "Aggiungi" @@ -4135,37 +4135,37 @@ msgstr "Bannato fino al riavvio o in {0}" msgid "unban now" msgstr "riammissione istantanea" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:314 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:312 msgid "Bandwidth usage" msgstr "Utilizzo di larghezza di banda" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:322 msgid "Outbound Bytes/sec" msgstr "Bytes/s In Uscita" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:326 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 msgid "Inbound Bytes/sec" msgstr "Bytes/s In Entrata" +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:329 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 msgid "Bps" msgstr "Bps" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 msgid "Out average" msgstr "Media In Uscita" +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 msgid "max" msgstr "massimo" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 msgid "In average" msgstr "Media In Entrata" @@ -4678,13 +4678,13 @@ msgstr "Costruendo i tunnel" #. nicely under 'local destinations' in the summary bar #. note that if the wording changes in i2ptunnel.config, we have to #. keep the old string here as well for existing installs -#: ../java/src/net/i2p/router/web/SummaryHelper.java:462 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:459 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "client condivisi" #. Note to translators: parameter is a version, e.g. "0.8.4" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:676 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:677 #, java-format msgid "Download {0} Update" msgstr "Scaricamento {0} Aggiornamento" @@ -4692,40 +4692,40 @@ msgstr "Scaricamento {0} Aggiornamento" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #. <br> is optional, to help the browser make the lines even in the button #. If the translation is shorter than the English, you should probably not include <br> -#: ../java/src/net/i2p/router/web/SummaryHelper.java:684 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:685 #, java-format msgid "Download Unsigned<br>Update {0}" msgstr "Scaricamento Aggiornamento {0} Non Firmato<br>" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:709 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:710 msgid "Help with firewall configuration" msgstr "Aiuto con la configurazione del firewall" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:711 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:712 msgid "Check network connection and NAT/firewall" msgstr "Controlla la connessione di rete e il NAT/firewall" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:730 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:731 msgid "Reseed" msgstr "Reseed" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:813 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:814 msgid "Order" msgstr "Ordine" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:830 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:831 msgid "Top" msgstr "Sopra" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:843 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:844 msgid "Down" msgstr "Sotto" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:848 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:849 msgid "Bottom" msgstr "Basso" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:860 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:861 msgid "Select a section to add" msgstr "Seleziona una sezione da aggiungere" diff --git a/apps/routerconsole/locale/messages_pt.po b/apps/routerconsole/locale/messages_pt.po new file mode 100644 index 0000000000000000000000000000000000000000..6e217c324d7a5abfb7461a302e799e1b179a7d23 --- /dev/null +++ b/apps/routerconsole/locale/messages_pt.po @@ -0,0 +1,6933 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the routerconsole package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# <rutweiller@hotmail.com>, 2012. +# <wicked@riseup.net>, 2012. +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-11-02 19:48+0000\n" +"PO-Revision-Date: 2012-10-25 22:19+0000\n" +"Last-Translator: Ruthein <rutweiller@hotmail.com>\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/" +"pt/)\n" +"Language: pt\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" + +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. a lot of tables. +#. milliseconds +#. Note to translators, may be negative or zero, 2999 maximum. +#. {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:1424 +#, java-format +msgid "1 ms" +msgid_plural "{0,number,####} ms" +msgstr[0] "1 ms" +msgstr[1] "{0,number,####} ms" + +#. seconds +#. alternates: secs, sec. 'seconds' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1428 +#, java-format +msgid "1 sec" +msgid_plural "{0} sec" +msgstr[0] "1 seg" +msgstr[1] "{0} seg" + +#. minutes +#. alternates: mins, min. 'minutes' is probably too long. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 +#, java-format +msgid "1 min" +msgid_plural "{0} min" +msgstr[0] "1 min" +msgstr[1] "{0} min" + +#. hours +#. alternates: hrs, hr., hrs. +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1436 +#, 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:1438 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:341 +msgid "n/a" +msgstr "n/a" + +#. days +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1441 +#, java-format +msgid "1 day" +msgid_plural "{0} days" +msgstr[0] "1 dia" +msgstr[1] "{0} dias" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "Banido pelo router: {0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:130 +msgid "Banned by router hash" +msgstr "Banido pelo router" + +#. Temporary reason, until the job finishes +#: ../../../router/java/src/net/i2p/router/Blocklist.java:653 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:726 +#, java-format +msgid "IP banned by blocklist.txt entry {0}" +msgstr "IP banido pela definição na blocklist.txt {0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:765 +msgid "IPs Banned Until Restart" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:789 +msgid "IPs Permanently Banned" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:791 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:66 +msgid "From" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:793 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 +msgid "To" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:829 +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:47 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:454 +msgid "none" +msgstr "" + +#. NPE, too early +#. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. else +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:73 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:115 +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:519 +msgid "Rejecting tunnels: Starting up" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:170 +msgid "Rejecting tunnels: High message delay" +msgstr "A rejeitar túneis: Grande atraso nas mensagens" + +#. hard to do {0} from here +#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:209 +msgid "Rejecting most tunnels: High number of requests" +msgstr "A rejeitar a maioria dos túneis: Grande numero de pedidos" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:264 +msgid "Rejecting tunnels: Limit reached" +msgstr "A rejeitar túneis: Limite atingido" + +#. .067KBps +#. * also limited to 90% - see below +#. always leave at least 4KBps free when allowing +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:332 +msgid "Rejecting tunnels: Bandwidth limit" +msgstr "A rejeitar túneis: Limite de largura de banda" + +#. hard to do {0} from here +#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:402 +msgid "Rejecting most tunnels: Bandwidth limit" +msgstr "A rejeitar a maioria dos túneis: Limite de largura de banda" + +#. hard to do {0} from here +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406 +msgid "Accepting most tunnels" +msgstr "Aceitar a maioria dos túneis" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:408 +msgid "Accepting tunnels" +msgstr "A aceitar túneis" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:524 +msgid "Rejecting tunnels: Shutting down" +msgstr "A rejeitar túneis: A Desligar" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:529 +msgid "Rejecting tunnels" +msgstr "A rejeitar túneis" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:155 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 +msgid "Reseeding" +msgstr "Propagar" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:167 +#, java-format +msgid "Reseed fetched only 1 router." +msgid_plural "Reseed fetched only {0} routers." +msgstr[0] "A propagação encontrou apenas 1 router." +msgstr[1] "A propagação encontrou {0} routers." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:174 +msgid "Reseed failed." +msgstr "A propagação falhou." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:175 +#, java-format +msgid "See {0} for help." +msgstr "Ver {0} para ajuda." + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176 +msgid "reseed configuration page" +msgstr "página de configuração de propagação" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317 +msgid "Reseeding: fetching seed URL." +msgstr "Propagação: procurar semente de URL" + +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:375 +#, java-format +msgid "" +"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." +msgstr "" +"Propagação: procurar informação do router apartir da semente do URL ({0} com " +"sucesso, {1} erros)." + +#. NOTE TO TRANSLATORS - each of these phrases is a description for a statistic +#. to be displayed on /stats.jsp and in the graphs on /graphs.jsp. +#. Please keep relatively short so it will fit on the graphs. +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:33 +msgid "Message receive rate (bytes/sec)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:34 +msgid "Message send rate (bytes/sec)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:35 +msgid "Low-level send rate (bytes/sec)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:36 +msgid "Low-level receive rate (bytes/sec)" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:37 +msgid "How many peers we are actively talking with" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:40 +msgid "Known fast peers" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:539 +msgid "NetDb entry" +msgstr "Entrada na NetDb" + +#. This used to be "no common transports" but it is almost always no transports at all +#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 +msgid "No transports (hidden or starting up?)" +msgstr "Sem transportes (escondidos ou a iniciar?)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:455 +msgid "Unreachable on any transport" +msgstr "Inalcançável em qualquer transporte" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 +msgid "Router Transport Addresses" +msgstr "Endereço de Transporte do Router" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509 +#, java-format +msgid "{0} is used for outbound connections only" +msgstr "{0} é usado para conexões de saÃda apenas" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 +#: ../java/src/net/i2p/router/web/HomeHelper.java:32 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:154 +msgid "Help" +msgstr "Ajuda" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +msgid "" +"Your transport connection limits are automatically set based on your " +"configured bandwidth." +msgstr "" +"O limite da tua conexão de transporte foi definido automaticamente baseado " +"na configuração de largura de banda." + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +msgid "" +"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " +"i2np.udp.maxConnections=nnn on the advanced configuration page." +msgstr "" +"Para substituir esses limites, adiciona as definições i2np.ntcp." +"maxConnections=nnn e i2np.udp.maxConnections=nnn na página de configuração " +"avançada." + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279 +msgid "Definitions" +msgstr "Definições" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:752 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2176 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204 +msgid "Peer" +msgstr "Peer" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +msgid "The remote peer, identified by router hash" +msgstr "A peer remota, identificada pelo router" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 +msgid "Dir" +msgstr "Dir" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +msgid "Inbound connection" +msgstr "Conexões de entrada" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "Outbound connection" +msgstr "Conexões de saÃda" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "" +"Eles ofereceram-se para nos apresentar (ajudar outras peers atravessar a " +"nossa firewall)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "" +"Oferecemos-nos para os apresentar (ajudar outros atravessar a firewall deles)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "How long since a packet has been received / sent" +msgstr "Quanto tempo desde que o ultimo pacote foi recebido / enviado" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 +msgid "Idle" +msgstr "Inativo" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 +msgid "In/Out" +msgstr "Entrada/SaÃda" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "" +"A suavizada taxa de transferência de entrada / saÃda (KBytes por segundo)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "How long ago this connection was established" +msgstr "A quanto tempo foi estabelecida esta conexão" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 +msgid "Up" +msgstr "Cima" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2193 +msgid "Skew" +msgstr "Skew" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "The difference between the peer's clock and your own" +msgstr "A diferença entre o relógio do peer e o teu" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "" +"The congestion window, which is how many bytes can be sent without an " +"acknowledgement" +msgstr "" +"A janela de congestionamento, que é quantos bytes podem ser enviados sem " +"reconhecimento" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "O numero de mensagens enviadas que aguardam reconhecimento" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The maximum number of concurrent messages to send" +msgstr "O numero máximo de mensagens para enviar em simultâneo" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "The number of pending sends which exceed congestion window" +msgstr "O numero de envios pendentes que excede a janela de congestionamento" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +msgid "The slow start threshold" +msgstr "O limitador de inicio lento " + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +msgid "The round trip time in milliseconds" +msgstr "O tempo de ida e volta em milisegundos" + +#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The standard deviation of the round trip time in milliseconds")).append("<br>\n" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +msgid "The retransmit timeout in milliseconds" +msgstr "O tempo limite de retransmissão de milisegundos" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +msgid "" +"Current maximum send packet size / estimated maximum receive packet size " +"(bytes)" +msgstr "" +"Limite máximo actual de tamanho de pacotes / máximo estimado de tamanho de " +"pacotes (bytes)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 +msgid "TX" +msgstr "TX" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +msgid "The total number of packets sent to the peer" +msgstr "O numero total de pacotes enviados pela peer" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 +msgid "RX" +msgstr "RX" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +msgid "The total number of packets received from the peer" +msgstr "O numero total de pacotes recebidos pela peer" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 +msgid "Dup TX" +msgstr "Dup TX" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +msgid "The total number of packets retransmitted to the peer" +msgstr "O numero total de pacotes retrasmitidos pela peer" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2217 +msgid "Dup RX" +msgstr "Dup RX" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +msgid "The total number of duplicate packets received from the peer" +msgstr "O numero total de pacotes recebidos em duplicado pela peer" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Service" +msgstr "Service" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:454 +msgid "WAN Common Interface Configuration" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:455 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:471 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:476 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:96 +msgid "Status" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:462 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:472 +msgid "Type" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:463 +msgid "Upstream" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 +msgid "Downstream" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 +msgid "WAN PPP Connection" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:465 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 +msgid "External IP" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 +msgid "Layer 3 Forwarding" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:468 +msgid "Default Connection Service" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:470 +msgid "WAN IP Connection" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 +msgid "WAN Ethernet Link Configuration" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:488 +msgid "Found Device" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:490 +msgid "Subdevice" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:511 +msgid "UPnP Status" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:514 +msgid "" +"UPnP has been disabled; Do you have more than one UPnP Internet Gateway " +"Device on your LAN ?" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:517 +msgid "UPnP has not found any UPnP-aware, compatible device on your LAN." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:525 +#, java-format +msgid "The current external IP address reported by UPnP is {0}" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527 +msgid "The current external IP address is not available." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:531 +#, java-format +msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:533 +#, java-format +msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec" +msgstr "" + +#. {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:541 +#, java-format +msgid "{0} port {1,number,#####} was successfully forwarded by UPnP." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:543 +#, java-format +msgid "{0} port {1,number,#####} was not forwarded by UPnP." +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:194 +msgid "UPnP is not enabled" +msgstr "" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:401 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:618 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "Desacertar excessivo do relógio: {0}" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:747 +msgid "NTCP connections" +msgstr "Conexões NTCP" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2172 +msgid "Limit" +msgstr "Limite" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 +msgid "Timeout" +msgstr "Tempo Limite" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760 +msgid "Out Queue" +msgstr "Fila de SaÃda" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:761 +msgid "Backlogged?" +msgstr "Voltar Logado?" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:775 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2235 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 +msgid "Inbound" +msgstr "Entrada" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:777 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2237 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 +msgid "Outbound" +msgstr "SaÃda" + +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:826 +msgid "peers" +msgstr "peers" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171 +msgid "UDP connections" +msgstr "Conexões UDP" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 +msgid "Sort by peer hash" +msgstr "Ordenar por tipos de peers" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180 +msgid "Direction/Introduction" +msgstr "Direcção/Introdução" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2182 +msgid "Sort by idle inbound" +msgstr "Ordenar por entrada inactiva" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 +msgid "Sort by idle outbound" +msgstr "Ordenar por saÃda inactiva" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2187 +msgid "Sort by inbound rate" +msgstr "Ordenar por taxa de entrada" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 +msgid "Sort by outbound rate" +msgstr "Ordenar por taxa de saÃda" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2192 +msgid "Sort by connection uptime" +msgstr "Ordenar por tempo de conexão ligada" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 +msgid "Sort by clock skew" +msgstr "Ordenar por desajustamento do relógio" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2197 +msgid "Sort by congestion window" +msgstr "Ordenar por janela de congestionamento" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 +msgid "Sort by slow start threshold" +msgstr "Ordenar por limitador de inicio lento " + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2202 +msgid "Sort by round trip time" +msgstr "Ordenar por tempo de ida e volta" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 +msgid "Sort by retransmission timeout" +msgstr "Ordenar por tempo limite de retransmissão" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 +msgid "Sort by outbound maximum transmit unit" +msgstr "Ordenar por unidade de transmissão de saÃda máxima" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2211 +msgid "Sort by packets sent" +msgstr "Ordenar por envio de pacotes" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 +msgid "Sort by packets received" +msgstr "Ordenar por pacotes recebidos" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2216 +msgid "Sort by packets retransmitted" +msgstr "Ordenar por pacotes retransmitidos" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2218 +msgid "Sort by packets received more than once" +msgstr "Ordenar por pacotes recebidos mais que uma vez" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2239 +msgid "We offered to introduce them" +msgstr "Oferecemos-nos para os apresentar" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2241 +msgid "They offered to introduce us" +msgstr "Eles oferecem-se para nos apresentar" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2245 +msgid "Choked" +msgstr "Sufocada" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2253 +msgid "1 fail" +msgstr "1 falha" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2255 +#, java-format +msgid "{0} fails" +msgstr "{0} falhas" + +#. 1 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2261 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 +#: ../java/src/net/i2p/router/web/ProfilesHelper.java:13 +msgid "Banned" +msgstr "Banido" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2313 +msgid "backlogged" +msgstr "" + +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2393 +msgid "SUMMARY" +msgstr "SUMARIO" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:191 +msgid "Dropping tunnel requests: Too slow" +msgstr "A cancelar pedidos de túneis: Demasiado lento" + +#. don't even bother, since we are so overloaded locally +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:334 +msgid "Dropping tunnel requests: Overloaded" +msgstr "A descartar pedidos de túnel: Sobrecarregado" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:543 +msgid "Rejecting tunnels: Request overload" +msgstr "A rejeitar túneis: Sobrecarga de pedidos" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:574 +msgid "Rejecting tunnels: Connection limit" +msgstr "A rejeitar túneis: Limite de conexão" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:778 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:799 +msgid "Dropping tunnel requests: High load" +msgstr "A rejeitar pedidos de túneis: Carga elevada" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:878 +msgid "Dropping tunnel requests: Queue time" +msgstr "A descartar pedidos de túneis: Tempo de fila" + +#. Automatically generated pseudo-java for xgettext - do not edit +#. Translators may wish to translate a few of these, do not bother to translate all of them!! +#: ../java/build/Countries.java:3 +msgid "Anonymous Proxy" +msgstr "" + +#: ../java/build/Countries.java:4 +msgid "Satellite Provider" +msgstr "" + +#: ../java/build/Countries.java:5 +msgid "Andorra" +msgstr "Andorra" + +#: ../java/build/Countries.java:6 +msgid "United Arab Emirates" +msgstr "Emirados Ãrabes Unidos" + +#: ../java/build/Countries.java:7 +msgid "Afghanistan" +msgstr "Afeganistão" + +#: ../java/build/Countries.java:8 +msgid "Antigua and Barbuda" +msgstr "AntÃgua e Barbuda" + +#: ../java/build/Countries.java:9 +msgid "Anguilla" +msgstr "Anguilla" + +#: ../java/build/Countries.java:10 +msgid "Albania" +msgstr "Albânia" + +#: ../java/build/Countries.java:11 +msgid "Armenia" +msgstr "Armênia" + +#: ../java/build/Countries.java:12 +msgid "Netherlands Antilles" +msgstr "Antilhas Holandesas" + +#: ../java/build/Countries.java:13 +msgid "Angola" +msgstr "Angola" + +#: ../java/build/Countries.java:14 +msgid "Antarctica" +msgstr "Antártica" + +#: ../java/build/Countries.java:15 +msgid "Argentina" +msgstr "Argentina" + +#: ../java/build/Countries.java:16 +msgid "American Samoa" +msgstr "Samoa Americana" + +#: ../java/build/Countries.java:17 +msgid "Austria" +msgstr "Ãustria" + +#: ../java/build/Countries.java:18 +msgid "Australia" +msgstr "Austrália" + +#: ../java/build/Countries.java:19 +msgid "Aruba" +msgstr "Aruba" + +#: ../java/build/Countries.java:20 +msgid "Ã…land Islands" +msgstr "" + +#: ../java/build/Countries.java:21 +msgid "Azerbaijan" +msgstr "Azerbaijão" + +#: ../java/build/Countries.java:22 +msgid "Bosnia and Herzegovina" +msgstr "Bósnia e Herzegovina" + +#: ../java/build/Countries.java:23 +msgid "Barbados" +msgstr "Barbados" + +#: ../java/build/Countries.java:24 +msgid "Bangladesh" +msgstr "Bangladesh" + +#: ../java/build/Countries.java:25 +msgid "Belgium" +msgstr "Bélgica" + +#: ../java/build/Countries.java:26 +msgid "Burkina Faso" +msgstr "Burkina Faso" + +#: ../java/build/Countries.java:27 +msgid "Bulgaria" +msgstr "Bulgária" + +#: ../java/build/Countries.java:28 +msgid "Bahrain" +msgstr "Bahrain" + +#: ../java/build/Countries.java:29 +msgid "Burundi" +msgstr "Burundi" + +#: ../java/build/Countries.java:30 +msgid "Benin" +msgstr "Benin" + +#: ../java/build/Countries.java:31 +msgid "Bermuda" +msgstr "Bermudas" + +#: ../java/build/Countries.java:32 +msgid "Brunei Darussalam" +msgstr "Brunei Darussalam" + +#: ../java/build/Countries.java:33 +msgid "Bolivia" +msgstr "BolÃvia" + +#: ../java/build/Countries.java:34 +msgid "Brazil" +msgstr "Brasil" + +#: ../java/build/Countries.java:35 +msgid "Bahamas" +msgstr "Bahamas" + +#: ../java/build/Countries.java:36 +msgid "Bhutan" +msgstr "Butão" + +#: ../java/build/Countries.java:37 +msgid "Bouvet Island" +msgstr "Ilha Bouvet " + +#: ../java/build/Countries.java:38 +msgid "Botswana" +msgstr "Botswana" + +#: ../java/build/Countries.java:39 +msgid "Belarus" +msgstr "Bielorrússia" + +#: ../java/build/Countries.java:40 +msgid "Belize" +msgstr "Belize" + +#: ../java/build/Countries.java:41 +msgid "Canada" +msgstr "Canadá" + +#: ../java/build/Countries.java:42 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#: ../java/build/Countries.java:43 +msgid "The Democratic Republic of the Congo" +msgstr "A Republica Democrata do Congo" + +#: ../java/build/Countries.java:44 +msgid "Central African Republic" +msgstr "Republica Central Africana" + +#: ../java/build/Countries.java:45 +msgid "Congo" +msgstr "Congo" + +#: ../java/build/Countries.java:46 +msgid "Switzerland" +msgstr "SuÃça" + +#: ../java/build/Countries.java:47 +msgid "Cote D'Ivoire" +msgstr "Cote D'Ivoire" + +#: ../java/build/Countries.java:48 +msgid "Cook Islands" +msgstr "Ilhas Cook" + +#: ../java/build/Countries.java:49 +msgid "Chile" +msgstr "Chile" + +#: ../java/build/Countries.java:50 +msgid "Cameroon" +msgstr "Camarões" + +#: ../java/build/Countries.java:51 +msgid "China" +msgstr "China" + +#: ../java/build/Countries.java:52 +msgid "Colombia" +msgstr "Colombia" + +#: ../java/build/Countries.java:53 +msgid "Costa Rica" +msgstr "Costa Rica" + +#: ../java/build/Countries.java:54 +msgid "Serbia and Montenegro" +msgstr "" + +#: ../java/build/Countries.java:55 +msgid "Cuba" +msgstr "Cuba" + +#: ../java/build/Countries.java:56 +msgid "Cape Verde" +msgstr "Cabo Verde" + +#: ../java/build/Countries.java:57 +msgid "Christmas Island" +msgstr "" + +#: ../java/build/Countries.java:58 +msgid "Cyprus" +msgstr "Chipre" + +#: ../java/build/Countries.java:59 +msgid "Czech Republic" +msgstr "Republica Checa" + +#: ../java/build/Countries.java:60 +msgid "Germany" +msgstr "Alemanha" + +#: ../java/build/Countries.java:61 +msgid "Djibouti" +msgstr "Djibouti" + +#: ../java/build/Countries.java:62 +msgid "Denmark" +msgstr "Dinamarca" + +#: ../java/build/Countries.java:63 +msgid "Dominica" +msgstr "Dominica" + +#: ../java/build/Countries.java:64 +msgid "Dominican Republic" +msgstr "Republica Dominicana" + +#: ../java/build/Countries.java:65 +msgid "Algeria" +msgstr "Argélia" + +#: ../java/build/Countries.java:66 +msgid "Ecuador" +msgstr "Equador" + +#: ../java/build/Countries.java:67 +msgid "Estonia" +msgstr "Estônia" + +#: ../java/build/Countries.java:68 +msgid "Egypt" +msgstr "Egito" + +#: ../java/build/Countries.java:69 +msgid "Western Sahara" +msgstr "" + +#: ../java/build/Countries.java:70 +msgid "Eritrea" +msgstr "Eritreia" + +#: ../java/build/Countries.java:71 +msgid "Spain" +msgstr "Espanha" + +#: ../java/build/Countries.java:72 +msgid "Ethiopia" +msgstr "Etiópia" + +#: ../java/build/Countries.java:73 +msgid "European Union" +msgstr "" + +#: ../java/build/Countries.java:74 +msgid "Finland" +msgstr "Finlândia" + +#: ../java/build/Countries.java:75 +msgid "Fiji" +msgstr "Fiji" + +#: ../java/build/Countries.java:76 +msgid "Falkland Islands (Malvinas)" +msgstr "Ilhas Falkland (Malvinas)" + +#: ../java/build/Countries.java:77 +msgid "Federated States of Micronesia" +msgstr "Estados Federados da Micronésia" + +#: ../java/build/Countries.java:78 +msgid "Faroe Islands" +msgstr "Ilhas Faroe" + +#: ../java/build/Countries.java:79 +msgid "France" +msgstr "França" + +#: ../java/build/Countries.java:80 +msgid "Gabon" +msgstr "Gabão" + +#: ../java/build/Countries.java:81 +msgid "United Kingdom" +msgstr "Reino Unido" + +#: ../java/build/Countries.java:82 +msgid "Grenada" +msgstr "Granada" + +#: ../java/build/Countries.java:83 +msgid "Georgia" +msgstr "Geórgia" + +#: ../java/build/Countries.java:84 +msgid "French Guiana" +msgstr "Guiana Francesa" + +#: ../java/build/Countries.java:85 +msgid "Guernsey" +msgstr "" + +#: ../java/build/Countries.java:86 +msgid "Ghana" +msgstr "Gana" + +#: ../java/build/Countries.java:87 +msgid "Gibraltar" +msgstr "Gibraltar" + +#: ../java/build/Countries.java:88 +msgid "Greenland" +msgstr "Greenland" + +#: ../java/build/Countries.java:89 +msgid "Gambia" +msgstr "Gambia" + +#: ../java/build/Countries.java:90 +msgid "Guinea" +msgstr "Guinea" + +#: ../java/build/Countries.java:91 +msgid "Guadeloupe" +msgstr "Guadeloupe" + +#: ../java/build/Countries.java:92 +msgid "Equatorial Guinea" +msgstr "Equatorial Guinea" + +#: ../java/build/Countries.java:93 +msgid "Greece" +msgstr "Greece" + +#: ../java/build/Countries.java:94 +msgid "South Georgia and the South Sandwich Islands" +msgstr "South Georgia and the South Sandwich Islands" + +#: ../java/build/Countries.java:95 +msgid "Guatemala" +msgstr "Guatemala" + +#: ../java/build/Countries.java:96 +msgid "Guam" +msgstr "Guam" + +#: ../java/build/Countries.java:97 +msgid "Guinea-Bissau" +msgstr "Guiné-Bissau" + +#: ../java/build/Countries.java:98 +msgid "Guyana" +msgstr "Guiana" + +#: ../java/build/Countries.java:99 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: ../java/build/Countries.java:100 +msgid "Honduras" +msgstr "Honduras" + +#: ../java/build/Countries.java:101 +msgid "Croatia" +msgstr "Croácia" + +#: ../java/build/Countries.java:102 +msgid "Haiti" +msgstr "Haiti" + +#: ../java/build/Countries.java:103 +msgid "Hungary" +msgstr "Hungria" + +#: ../java/build/Countries.java:104 +msgid "Indonesia" +msgstr "Indonesia" + +#: ../java/build/Countries.java:105 +msgid "Ireland" +msgstr "Irlanda" + +#: ../java/build/Countries.java:106 +msgid "Israel" +msgstr "Israel" + +#: ../java/build/Countries.java:107 +msgid "Isle of Man" +msgstr "" + +#: ../java/build/Countries.java:108 +msgid "India" +msgstr "Ãndia" + +#: ../java/build/Countries.java:109 +msgid "British Indian Ocean Territory" +msgstr "Território Oceânico Indiano Britânico" + +#: ../java/build/Countries.java:110 +msgid "Iraq" +msgstr "Iraque" + +#: ../java/build/Countries.java:111 +msgid "Islamic Republic of Iran" +msgstr "Republica Islâmica do Irão" + +#: ../java/build/Countries.java:112 +msgid "Iceland" +msgstr "Islândia" + +#: ../java/build/Countries.java:113 +msgid "Italy" +msgstr "Itália" + +#: ../java/build/Countries.java:114 +msgid "Jersey" +msgstr "" + +#: ../java/build/Countries.java:115 +msgid "Jamaica" +msgstr "Jamaica" + +#: ../java/build/Countries.java:116 +msgid "Jordan" +msgstr "Jordânia" + +#: ../java/build/Countries.java:117 +msgid "Japan" +msgstr "Japão" + +#: ../java/build/Countries.java:118 +msgid "Kenya" +msgstr "Quénia" + +#: ../java/build/Countries.java:119 +msgid "Kyrgyzstan" +msgstr "Quirguistão" + +#: ../java/build/Countries.java:120 +msgid "Cambodia" +msgstr "Cambodja" + +#: ../java/build/Countries.java:121 +msgid "Kiribati" +msgstr "Kiribati" + +#: ../java/build/Countries.java:122 +msgid "Comoros" +msgstr "Comores" + +#: ../java/build/Countries.java:123 +msgid "Saint Kitts and Nevis" +msgstr "São Cristóvão e Nevis" + +#: ../java/build/Countries.java:124 +msgid "The Democratic People's Republic of Korea" +msgstr "" + +#: ../java/build/Countries.java:125 +msgid "Republic of Korea" +msgstr "República da Koreia" + +#: ../java/build/Countries.java:126 +msgid "Kuwait" +msgstr "Kuweit" + +#: ../java/build/Countries.java:127 +msgid "Cayman Islands" +msgstr "Ilhas Caimão" + +#: ../java/build/Countries.java:128 +msgid "Kazakhstan" +msgstr "Cazaquistão" + +#: ../java/build/Countries.java:129 +msgid "Lao People's Democratic Republic" +msgstr "República Democrática Popular do Laos" + +#: ../java/build/Countries.java:130 +msgid "Lebanon" +msgstr "Libâno" + +#: ../java/build/Countries.java:131 +msgid "Saint Lucia" +msgstr "Santa Lúcia" + +#: ../java/build/Countries.java:132 +msgid "Liechtenstein" +msgstr "Liechtenstein" + +#: ../java/build/Countries.java:133 +msgid "Sri Lanka" +msgstr "Sri Lanka" + +#: ../java/build/Countries.java:134 +msgid "Liberia" +msgstr "Libéria" + +#: ../java/build/Countries.java:135 +msgid "Lesotho" +msgstr "Lesoto" + +#: ../java/build/Countries.java:136 +msgid "Lithuania" +msgstr "Lituânia" + +#: ../java/build/Countries.java:137 +msgid "Luxembourg" +msgstr "Luxemburgo" + +#: ../java/build/Countries.java:138 +msgid "Latvia" +msgstr "Látvia" + +#: ../java/build/Countries.java:139 +msgid "Libyan Arab Jamahiriya" +msgstr "LÃbia" + +#: ../java/build/Countries.java:140 +msgid "Morocco" +msgstr "Marrocos" + +#: ../java/build/Countries.java:141 +msgid "Monaco" +msgstr "Mónaco" + +#: ../java/build/Countries.java:142 +msgid "Republic of Moldova" +msgstr "República da Moldávia" + +#: ../java/build/Countries.java:143 +msgid "Montenegro" +msgstr "" + +#: ../java/build/Countries.java:144 +msgid "Saint Martin" +msgstr "" + +#: ../java/build/Countries.java:145 +msgid "Madagascar" +msgstr "Madagascar" + +#: ../java/build/Countries.java:146 +msgid "Marshall Islands" +msgstr "Ilhas Marshall" + +#: ../java/build/Countries.java:147 +msgid "The Former Yugoslav Republic of Macedonia" +msgstr " Antiga República Jugoslava da Macedónia" + +#: ../java/build/Countries.java:148 +msgid "Mali" +msgstr "Mali" + +#: ../java/build/Countries.java:149 +msgid "Myanmar" +msgstr "Mianmar" + +#: ../java/build/Countries.java:150 +msgid "Mongolia" +msgstr "Mongolia" + +#: ../java/build/Countries.java:151 +msgid "Macao" +msgstr "Macau" + +#: ../java/build/Countries.java:152 +msgid "Northern Mariana Islands" +msgstr "Ilhas Marianas do Norte" + +#: ../java/build/Countries.java:153 +msgid "Martinique" +msgstr "Martinica" + +#: ../java/build/Countries.java:154 +msgid "Mauritania" +msgstr "Mauritânia" + +#: ../java/build/Countries.java:155 +msgid "Montserrat" +msgstr "Montserrat" + +#: ../java/build/Countries.java:156 +msgid "Malta" +msgstr "Malta" + +#: ../java/build/Countries.java:157 +msgid "Mauritius" +msgstr "MaurÃcio" + +#: ../java/build/Countries.java:158 +msgid "Maldives" +msgstr "Maldivas" + +#: ../java/build/Countries.java:159 +msgid "Malawi" +msgstr "Malai" + +#: ../java/build/Countries.java:160 +msgid "Mexico" +msgstr "México" + +#: ../java/build/Countries.java:161 +msgid "Malaysia" +msgstr "Malásia" + +#: ../java/build/Countries.java:162 +msgid "Mozambique" +msgstr "Mocambique" + +#: ../java/build/Countries.java:163 +msgid "Namibia" +msgstr "NamÃbia" + +#: ../java/build/Countries.java:164 +msgid "New Caledonia" +msgstr "Nova Caledônia" + +#: ../java/build/Countries.java:165 +msgid "Niger" +msgstr "NÃger" + +#: ../java/build/Countries.java:166 +msgid "Norfolk Island" +msgstr "Ilha Norfolk" + +#: ../java/build/Countries.java:167 +msgid "Nigeria" +msgstr "Nigéria" + +#: ../java/build/Countries.java:168 +msgid "Nicaragua" +msgstr "Nicarágua" + +#: ../java/build/Countries.java:169 +msgid "Netherlands" +msgstr "Holanda" + +#: ../java/build/Countries.java:170 +msgid "Norway" +msgstr "Noruega" + +#: ../java/build/Countries.java:171 +msgid "Nepal" +msgstr "Nepal" + +#: ../java/build/Countries.java:172 +msgid "Nauru" +msgstr "Nauru" + +#: ../java/build/Countries.java:173 +msgid "Niue" +msgstr "Niue" + +#: ../java/build/Countries.java:174 +msgid "New Zealand" +msgstr "Nova Zelândia" + +#: ../java/build/Countries.java:175 +msgid "Oman" +msgstr "Omã" + +#: ../java/build/Countries.java:176 +msgid "Panama" +msgstr "Panamá" + +#: ../java/build/Countries.java:177 +msgid "Peru" +msgstr "Peru" + +#: ../java/build/Countries.java:178 +msgid "French Polynesia" +msgstr "Polinésia Francesa" + +#: ../java/build/Countries.java:179 +msgid "Papua New Guinea" +msgstr "Papua Nova Guiné" + +#: ../java/build/Countries.java:180 +msgid "Philippines" +msgstr "Filipinas" + +#: ../java/build/Countries.java:181 +msgid "Pakistan" +msgstr "Paquistão" + +#: ../java/build/Countries.java:182 +msgid "Poland" +msgstr "Polónia" + +#: ../java/build/Countries.java:183 +msgid "Saint Pierre and Miquelon" +msgstr "Saint Pierre e Miquelon" + +#: ../java/build/Countries.java:184 +msgid "Pitcairn Islands" +msgstr "" + +#: ../java/build/Countries.java:185 +msgid "Puerto Rico" +msgstr "Porto Rico" + +#: ../java/build/Countries.java:186 +msgid "Palestinian Territory" +msgstr "Território Palestiniano" + +#: ../java/build/Countries.java:187 +msgid "Portugal" +msgstr "Portugal" + +#: ../java/build/Countries.java:188 +msgid "Palau" +msgstr "Palau" + +#: ../java/build/Countries.java:189 +msgid "Paraguay" +msgstr "Paraguai" + +#: ../java/build/Countries.java:190 +msgid "Qatar" +msgstr "Qatar" + +#: ../java/build/Countries.java:191 +msgid "Réunion" +msgstr "" + +#: ../java/build/Countries.java:192 +msgid "Romania" +msgstr "Roménia" + +#: ../java/build/Countries.java:193 +msgid "Serbia" +msgstr "Sérvia" + +#: ../java/build/Countries.java:194 +msgid "Russian Federation" +msgstr "Rússia" + +#: ../java/build/Countries.java:195 +msgid "Rwanda" +msgstr "Ruanda" + +#: ../java/build/Countries.java:196 +msgid "Saudi Arabia" +msgstr "Arábia Saudita" + +#: ../java/build/Countries.java:197 +msgid "Solomon Islands" +msgstr "Ilhas Salomão" + +#: ../java/build/Countries.java:198 +msgid "Seychelles" +msgstr "Seicheles" + +#: ../java/build/Countries.java:199 +msgid "Sudan" +msgstr "Sudão" + +#: ../java/build/Countries.java:200 +msgid "Sweden" +msgstr "Suécia" + +#: ../java/build/Countries.java:201 +msgid "Singapore" +msgstr "Singapura" + +#: ../java/build/Countries.java:202 +msgid "Saint Helena" +msgstr "" + +#: ../java/build/Countries.java:203 +msgid "Slovenia" +msgstr "Eslovénia" + +#: ../java/build/Countries.java:204 +msgid "Svalbard and Jan Mayen" +msgstr "" + +#: ../java/build/Countries.java:205 +msgid "Slovakia" +msgstr "Eslováquia" + +#: ../java/build/Countries.java:206 +msgid "Sierra Leone" +msgstr "Serra Leoa" + +#: ../java/build/Countries.java:207 +msgid "San Marino" +msgstr "São Marino" + +#: ../java/build/Countries.java:208 +msgid "Senegal" +msgstr "Senegal" + +#: ../java/build/Countries.java:209 +msgid "Somalia" +msgstr "Somália" + +#: ../java/build/Countries.java:210 +msgid "Suriname" +msgstr "Suriname" + +#: ../java/build/Countries.java:211 +msgid "Sao Tome and Principe" +msgstr "São Tomé e PrincÃpe" + +#: ../java/build/Countries.java:212 +msgid "El Salvador" +msgstr "São Salvador" + +#: ../java/build/Countries.java:213 +msgid "Syrian Arab Republic" +msgstr "Siria" + +#: ../java/build/Countries.java:214 +msgid "Swaziland" +msgstr "Suazilândia" + +#: ../java/build/Countries.java:215 +msgid "Turks and Caicos Islands" +msgstr "Ilhas Turks e Caicos" + +#: ../java/build/Countries.java:216 +msgid "Chad" +msgstr "Chade" + +#: ../java/build/Countries.java:217 +msgid "French Southern Territories" +msgstr "Territórios Franceses do Sul" + +#: ../java/build/Countries.java:218 +msgid "Togo" +msgstr "Togo" + +#: ../java/build/Countries.java:219 +msgid "Thailand" +msgstr "Tailândia" + +#: ../java/build/Countries.java:220 +msgid "Tajikistan" +msgstr "Tajiquistão" + +#: ../java/build/Countries.java:221 +msgid "Tokelau" +msgstr "Tokelau" + +#: ../java/build/Countries.java:222 +msgid "Timor-Leste" +msgstr "Timor-Leste" + +#: ../java/build/Countries.java:223 +msgid "Turkmenistan" +msgstr "Turcomenistão" + +#: ../java/build/Countries.java:224 +msgid "Tunisia" +msgstr "TunÃsia" + +#: ../java/build/Countries.java:225 +msgid "Tonga" +msgstr "Tonga" + +#: ../java/build/Countries.java:226 +msgid "Turkey" +msgstr "Turquia" + +#: ../java/build/Countries.java:227 +msgid "Trinidad and Tobago" +msgstr "Trindade e Tobago" + +#: ../java/build/Countries.java:228 +msgid "Tuvalu" +msgstr "Tuvalu" + +#: ../java/build/Countries.java:229 +msgid "Taiwan" +msgstr "Taiwan" + +#: ../java/build/Countries.java:230 +msgid "United Republic of Tanzania" +msgstr "República Unida da Tanzânia" + +#: ../java/build/Countries.java:231 +msgid "Ukraine" +msgstr "Ucrânia" + +#: ../java/build/Countries.java:232 +msgid "Uganda" +msgstr "Uganda" + +#: ../java/build/Countries.java:233 +msgid "United States Minor Outlying Islands" +msgstr "Estados Unidos das Distantes Ilhas Menores " + +#: ../java/build/Countries.java:234 +msgid "United States" +msgstr "Estados Unidos" + +#: ../java/build/Countries.java:235 +msgid "Uruguay" +msgstr "UruguaÃ" + +#: ../java/build/Countries.java:236 +msgid "Uzbekistan" +msgstr "Uzbequistão" + +#: ../java/build/Countries.java:237 +msgid "Holy See (Vatican City State)" +msgstr "Santa Sé (Vaticano)" + +#: ../java/build/Countries.java:238 +msgid "Saint Vincent and the Grenadines" +msgstr "São Vicente e Granadinas" + +#: ../java/build/Countries.java:239 +msgid "Venezuela" +msgstr "Venezuela" + +#: ../java/build/Countries.java:240 ../java/build/Countries.java:241 +msgid "Virgin Islands" +msgstr "Ilhas Virgens" + +#: ../java/build/Countries.java:242 +msgid "Viet Nam" +msgstr "Vietnam" + +#: ../java/build/Countries.java:243 +msgid "Vanuatu" +msgstr "Vanuatu" + +#: ../java/build/Countries.java:244 +msgid "Wallis and Futuna" +msgstr "Wallis e Futuna" + +#: ../java/build/Countries.java:245 +msgid "Samoa" +msgstr "Samoa" + +#: ../java/build/Countries.java:246 +msgid "Yemen" +msgstr "Yemen" + +#: ../java/build/Countries.java:247 +msgid "Mayotte" +msgstr "Mayotte" + +#: ../java/build/Countries.java:248 +msgid "South Africa" +msgstr "Ãfrica do Sul" + +#: ../java/build/Countries.java:249 +msgid "Zambia" +msgstr "Zambia" + +#: ../java/build/Countries.java:250 +msgid "Zimbabwe" +msgstr "Zimbabué" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:682 +#, java-format +msgid "New plugin version {0} is available" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:712 +#, java-format +msgid "Update check failed for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:714 +#, java-format +msgid "No new version is available for plugin {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:737 +#, java-format +msgid "{0}B transferred" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:790 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:211 +#, java-format +msgid "Transfer failed from {0}" +msgstr "" + +#. Process the .sud/.su2 file +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:958 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:993 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:672 +msgid "Update downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1017 +msgid "Restarting" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:973 +msgid "Update verified" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:982 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:141 +#, java-format +msgid "from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:997 +#, java-format +msgid "Unsigned update file from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1026 +#, java-format +msgid "Failed copy to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateChecker.java:67 +#, java-format +msgid "Checking for update of plugin {0}" +msgstr "" + +#. set status before thread to ensure UI feedback +#: ../java/src/net/i2p/router/update/PluginUpdateHandler.java:79 +#: ../java/src/net/i2p/router/update/UnsignedUpdateHandler.java:92 +#: ../java/src/net/i2p/router/update/UpdateHandler.java:46 +#: ../java/src/net/i2p/router/update/UpdateRunner.java:178 +msgid "Updating" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:86 +#, java-format +msgid "Attempting to install from file {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:90 +#, java-format +msgid "No file specified {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:97 +#, java-format +msgid "Failed to install from file {0}, copy failed." +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:101 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:363 +#, java-format +msgid "Downloading plugin from {0}" +msgstr "Baixando plugin {0}" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:127 +msgid "Plugin downloaded" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:132 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:368 +#, java-format +msgid "Cannot create plugin directory {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:151 +#, java-format +msgid "Plugin from {0} is corrupt" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:162 +#, java-format +msgid "Plugin from {0} does not contain the required configuration file" +msgstr "" + +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:175 +#, java-format +msgid "Plugin from {0} contains an invalid key" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:199 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:209 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:223 +#, java-format +msgid "Plugin signature verification of {0} failed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:238 +#, java-format +msgid "Plugin from {0} has invalid name or version" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:243 +#, java-format +msgid "Plugin {0} has mismatched versions" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:254 +#, java-format +msgid "This plugin requires I2P version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:262 +#, java-format +msgid "This plugin requires Java version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:271 +msgid "" +"Downloaded plugin is for new installs only, but the plugin is already " +"installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:282 +msgid "Installed plugin does not contain the required configuration file" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:290 +msgid "Signature of downloaded plugin does not match installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:297 +#, java-format +msgid "Downloaded plugin version {0} is not newer than installed plugin" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:304 +#, java-format +msgid "Plugin update requires installed plugin version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:311 +#, java-format +msgid "Plugin update requires installed plugin version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:319 +#, java-format +msgid "Plugin requires Jetty version {0} or higher" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:326 +#, java-format +msgid "Plugin requires Jetty version {0} or lower" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:335 +#, java-format +msgid "Cannot copy plugin to directory {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:345 +msgid "Plugin will be installed on next restart." +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:363 +msgid "Plugin is for upgrades only, but the plugin is not installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:376 +#, java-format +msgid "Failed to install plugin in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:383 +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:411 +#, java-format +msgid "Plugin {0} installed" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:402 +#, java-format +msgid "Plugin {0} installed and started" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:405 +#, java-format +msgid "Plugin {0} installed but failed to start, check logs" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:407 +#, java-format +msgid "Plugin {0} installed but failed to start" +msgstr "" + +#: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:419 +#, java-format +msgid "Failed to download plugin from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:122 +#, java-format +msgid "Updating from {0}" +msgstr "" + +#: ../java/src/net/i2p/router/update/UpdateRunner.java:191 +#, java-format +msgid "No new version found at {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:64 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:66 +#, java-format +msgid "Banned until restart or in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/BanlistRenderer.java:78 +msgid "unban now" +msgstr "" + +#: ../java/src/net/i2p/router/web/CSSHelper.java:118 +#: ../java/src/net/i2p/router/web/HomeHelper.java:33 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:214 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:225 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:195 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:209 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:211 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:213 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:202 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:222 +msgid "I2P Router Console" +msgstr "I2P Router Console" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:51 +msgid "Error updating the configuration - please see the error logs" +msgstr "Erro ao atualizar a configuração - consulte os logs de erros" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:323 +msgid "Configuration saved successfully" +msgstr "Configuração salva com sucesso" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:431 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:325 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:85 +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" +msgstr "" +"Erro ao salvar a configuração (aplicada, mas não salva) - consulte os logs " +"de erros" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:460 +msgid "Save Client Configuration" +msgstr "Guardar configuração do cliente" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:526 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:530 +msgid "Save Interface Configuration" +msgstr "Guardar configuração de interface" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:546 +msgid "Save WebApp Configuration" +msgstr "Guardar configuração WebApp" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:50 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:560 +msgid "Save Plugin Configuration" +msgstr "Guardar configuração Plugin" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:572 +msgid "Install Plugin" +msgstr "Instalar Plugin" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:58 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574 +msgid "Update All Installed Plugins" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:127 +#, java-format +msgid "Error stopping plugin {0}" +msgstr "parar erro de Plugin {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:103 +#, java-format +msgid "Deleted plugin {0}" +msgstr "Plugin apagado {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:105 +#, java-format +msgid "Error deleting plugin {0}" +msgstr "excluir erro de Plugin {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:125 +#, java-format +msgid "Stopped plugin {0}" +msgstr "Plugin parou {0}" + +#. label (IE) +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:149 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:252 +msgid "Start" +msgstr "Começar" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:168 +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:102 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:140 +msgid "Unsupported" +msgstr "não suportado" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:212 +msgid "New client added" +msgstr "Novo cliente adicionado" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:216 +#, fuzzy +msgid "Client configuration saved successfully" +msgstr "Configuração salva com sucesso" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:217 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:429 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:122 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:77 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:101 +#, fuzzy +msgid "Restart required to take effect" +msgstr "Ativar UPnP, é necessário reiniciar para ter efeito" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 +msgid "Bad client index." +msgstr "Ãndice cliente ruim." + +#. +#. What do we do here? +#. +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:508 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:428 +msgid "Client" +msgstr "Cliente" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:231 +msgid "stopped" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:242 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 +msgid "started" +msgstr "começado" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:253 +msgid "deleted" +msgstr "Apagado" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:269 +msgid "WebApp configuration saved." +msgstr "salva configuração WebApp" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:284 +msgid "Plugin configuration saved." +msgstr "Salva configuração de Plugin" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:299 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +msgid "WebApp" +msgstr "WebApp" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:301 +msgid "Failed to start" +msgstr "Falha ao iniciar" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306 +msgid "Failed to find server." +msgstr "Falha ao localizar o servidor." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:312 +msgid "No plugin URL specified." +msgstr "Sem URL do plugin especificado." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:322 +#, java-format +msgid "No update URL specified for {0}" +msgstr "Sem URL de atualização especificado para {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:331 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:352 +msgid "Plugin or update download already in progress." +msgstr "Plugin ou atualização a baixar já em andamento." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334 +msgid "Updating all plugins" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:359 +#, java-format +msgid "Bad URL {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:379 +#, java-format +msgid "Checking plugin {0} for updates" +msgstr "Plugin de verificação de {0} para atualizações" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389 +#, java-format +msgid "Started plugin {0}" +msgstr "Plugin começou {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:391 +#, java-format +msgid "Error starting plugin {0}" +msgstr "Erro de Plugin ao iniciar {0}" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:413 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:76 +#, java-format +msgid "Added user {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:428 +#, fuzzy +msgid "Interface configuration saved" +msgstr "Guardar configuração de interface" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:74 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:255 +msgid "Edit" +msgstr "Editar" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:83 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:456 +msgid "Add Client" +msgstr "Adicionar cliente" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +msgid "Class and arguments" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +msgid "Control" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:91 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +msgid "Run at Startup?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:191 +msgid "Description" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:142 +msgid "Plugin" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:155 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:290 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:319 +msgid "Version" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:157 +msgid "Signed by" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:174 +msgid "Date" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:180 +msgid "Author" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 +msgid "License" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:201 +#: ../java/src/net/i2p/router/web/HomeHelper.java:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174 +msgid "Website" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:206 +msgid "Update link" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:257 +msgid "Stop" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:259 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:98 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:420 +msgid "Check for updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:260 +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Update" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:265 +#, java-format +msgid "Are you sure you want to delete {0}?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 +msgid "Delete" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:18 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:877 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:472 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:488 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:438 +msgid "Delete selected" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:24 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:896 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:478 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:486 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494 +msgid "Add item" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:23 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:492 +msgid "Restore defaults" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:478 +msgid "Save" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:29 +msgid "Home page changed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:49 +msgid "Restored default settings" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:61 +msgid "No name entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:66 +msgid "No URL entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:82 +msgid "Added" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:96 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:108 +msgid "Removed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:461 +msgid "Add key" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:459 +msgid "Delete key" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 +msgid "You must enter a destination" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 +msgid "You must enter a key" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 +msgid "Key for" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 +msgid "added to keyring" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 +msgid "Invalid destination or key" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 +msgid "removed from keyring" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 +msgid "not found in keyring" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 +msgid "Invalid destination" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82 +msgid "Log overrides updated" +msgstr "Substituições de registros atualizadas" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:161 +msgid "Log configuration saved" +msgstr "Log de configuração salva" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "" +"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" +"Adicione outras declarações de registo acima. Exemplo: net.i2p.router.tunnel " +"= WARN" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 +msgid "" +"Or put entries in the logger.config file. Example: logger.record.net.i2p." +"router.tunnel=WARN" +msgstr "" +" colocar entradas no arquivo, logger.config. Exemplo: logger.record.net.i2p." +"router.tunnel = WARN" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "NÃveis válidos são DEBUG, INFO, WARN, ERROR, CRIT" + +#. Homeland Security Advisory System +#. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm +#. but pink instead of yellow for WARN +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +#: ../java/src/net/i2p/router/web/LogsHelper.java:117 +msgid "CRIT" +msgstr "CRIT" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +msgid "DEBUG" +msgstr "DEBUG" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +#: ../java/src/net/i2p/router/web/LogsHelper.java:119 +msgid "ERROR" +msgstr "ERRO" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +#: ../java/src/net/i2p/router/web/LogsHelper.java:123 +msgid "INFO" +msgstr "INFO." + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 +#: ../java/src/net/i2p/router/web/LogsHelper.java:121 +msgid "WARN" +msgstr "WARN" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:104 +#: ../java/src/net/i2p/router/web/HomeHelper.java:192 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:831 +msgid "Remove" +msgstr "Remover" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:125 +msgid "Select a class to add" +msgstr "Selecione uma classe para adicionar" + +#. stat groups for stats.jsp +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../java/strings/Strings.java:57 +msgid "Bandwidth" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +msgid "Home Page" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343 +msgid "Network" +msgstr "Network" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:284 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:282 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:277 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:295 +msgid "Summary Bar" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +msgid "UI" +msgstr "UI" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491 +#: ../java/strings/Strings.java:72 +msgid "Tunnels" +msgstr "Tunnels" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 +msgid "Clients" +msgstr "Clientes" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:433 +msgid "Keyring" +msgstr "Keyring " + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 +msgid "Logging" +msgstr "Logging" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:377 +#: ../java/strings/Strings.java:67 +msgid "Peers" +msgstr "Peers" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:21 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:410 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 +msgid "Stats" +msgstr "Stats" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 +msgid "Advanced" +msgstr "Advanced " + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:53 +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:30 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:434 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:581 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:467 +msgid "Save changes" +msgstr "Salvar alterações" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:135 +msgid "Rechecking router reachability..." +msgstr "Reverificação acessibilidade do router ..." + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 +msgid "Updating IP address" +msgstr "Atualizando endereço de IP" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:195 +msgid "Disabling TCP completely" +msgstr "Desativação completa do TCP " + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, java-format +msgid "Updating TCP address to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:207 +msgid "Disabling inbound TCP" +msgstr "Desativando TCP de entrada" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:209 +msgid "Updating inbound TCP address to auto" +msgstr "Atualizando endereço TCP de entrada para auto" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:222 +#, java-format +msgid "Updating TCP port to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:255 +msgid "Invalid port" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:233 +msgid "Updating inbound TCP port to auto" +msgstr "Atualizando porta TCP de entrada para auto" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +#, java-format +msgid "Updating UDP port to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:272 +msgid "Gracefully restarting into Hidden Router Mode" +msgstr "Graciosamente reiniciar em Modo Router InvisÃvel" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:274 +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "Graciosamente reiniciar para sair do Modo Router InvisÃvel" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:283 +msgid "Enabling UPnP" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:285 +#, fuzzy +msgid "Disabling UPnP" +msgstr "Desativando TCP de entrada" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:294 +msgid "Enabling laptop mode" +msgstr "Ativar o modo de laptop" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:296 +msgid "Disabling laptop mode" +msgstr "Desativar o modo de laptop" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:303 +msgid "Disabling UDP" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:305 +msgid "Enabling UDP" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:312 +msgid "Requiring SSU introducers" +msgstr "Exigir introdutores de SSU " + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:370 +msgid "Invalid address" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:375 +#, java-format +msgid "The hostname or IP {0} is not publicly routable" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:400 +msgid "Updating bandwidth share percentage" +msgstr "Actualizando participação percentual de banda larga" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:430 +msgid "Updated bandwidth limits" +msgstr "Actualizado limites de banda larga" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:38 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:46 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:56 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:59 +msgid "unknown" +msgstr "Desconhecido" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:171 +msgid "bits per second" +msgstr "bits por segundo" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:172 +#, java-format +msgid "or {0} bytes per month maximum" +msgstr "ou {0} bytes por mês no máximo" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:452 +msgid "Ban peer until restart" +msgstr " Ban peer até reiniciar" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 +#, java-format +msgid "Manually banned via {0}" +msgstr "Manualmente banido via {0}" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 +msgid "banned until restart" +msgstr "banido até iniciar" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59 +msgid "Invalid peer" +msgstr " peer invalido" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:454 +msgid "Unban peer" +msgstr "Unban peer" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 +msgid "unbanned" +msgstr "desbanido" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 +msgid "is not currently banned" +msgstr "actualmente não é banido" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:480 +msgid "Adjust peer bonuses" +msgstr "Adjust peer bonuses" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 +msgid "Bad speed value" +msgstr "Valor de velocidade ruim" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 +msgid "Bad capacity value" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:513 +msgid "Save changes and reseed now" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:23 +msgid "Reseeding is already in progress" +msgstr "" + +#. skip the nonce checking in ReseedHandler +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:26 +msgid "Starting reseed process" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:83 +msgid "Configuration saved successfully." +msgstr "" + +#. Normal browsers send value, IE sends button label +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:176 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 +msgid "Shutdown immediately" +msgstr "" + +#. ctx.router().shutdown(Router.EXIT_HARD); // never returns +#. give the UI time to respond +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 +msgid "Cancel shutdown" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:40 +msgid "Cancel restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:42 +msgid "Restart immediately" +msgstr "" + +#. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns +#. give the UI time to respond +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:163 +msgid "Restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:51 +msgid "Shutdown" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 +msgid "Restart imminent" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:67 +msgid "Shutdown imminent" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:71 +#, java-format +msgid "Shutdown in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:76 +#, java-format +msgid "Restart in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:427 +msgid "Shutdown gracefully" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 +msgid "Graceful shutdown initiated" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 +msgid "Shutdown immediately! boom bye bye bad bwoy" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 +msgid "Cancel graceful shutdown" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 +msgid "Graceful shutdown cancelled" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:184 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 +msgid "Graceful restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 +msgid "Graceful restart requested" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:445 +msgid "Hard restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 +msgid "Hard restart requested" +msgstr "DifÃcil reiniciar solicitado" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 +msgid "Rekey and Restart" +msgstr "Recodificar e Reiniciar" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:197 +msgid "Rekeying after graceful restart" +msgstr "Recodificando após o reinÃcio com sucesso" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 +msgid "Rekey and Shutdown" +msgstr "Encerrado e recodificado" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:201 +msgid "Rekeying after graceful shutdown" +msgstr "Recodificando após encerramento" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 +msgid "Run I2P on startup" +msgstr "Executar I2P na inicialização" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:473 +msgid "Don't run I2P on startup" +msgstr "Não executar I2P ao iniciar" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:208 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:497 +msgid "Dump threads" +msgstr "tópicos de despejo" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 +#, java-format +msgid "Threads dumped to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:505 +msgid "View console on startup" +msgstr "Ver consola na inicialização" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 +msgid "Console is to be shown on startup" +msgstr "Mostrar consola ao iniciar" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:507 +msgid "Do not view console on startup" +msgstr "Não visualizar consola na inicialização" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 +msgid "Console is not to be shown on startup" +msgstr "Consola não é para ser visualizada na inicialização" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:493 +msgid "Force GC" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:224 +msgid "Full garbage collection requested" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:233 +msgid "Service installed" +msgstr "serviço instalado" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:235 +msgid "Warning: unable to install the service" +msgstr "Aviso: não é possÃvel instalar o serviço" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:242 +msgid "Service removed" +msgstr "Serviço removido" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:244 +msgid "Warning: unable to remove the service" +msgstr "Aviso: não é possÃvel remover o serviço" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:116 +msgid "Stat filter and location updated successfully to" +msgstr "Stat filtro e localização atualizada com sucesso para" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:119 +msgid "Full statistics enabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 +msgid "Full statistics disabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:125 +msgid "" +"Graph list updated, may take up to 60s to be reflected here and on the <a " +"href=\"graphs.jsp\">Graphs Page</a>" +msgstr "" +"Lista gráfico actualizado, pode levar até 60 seg para ser reflectida, aqui " +"<a href=\"graphs.jsp\">Graphs Page</a>" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:25 +msgid "Save order" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:32 +msgid "Refresh interval changed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:34 +#, java-format +msgid "Refresh interval must be at least {0} seconds" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:36 +msgid "Refresh interval must be a number" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:450 +msgid "Restore full default" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:41 +msgid "Full summary bar default restored." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:46 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:138 +msgid "Summary bar will refresh shortly." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:43 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:452 +msgid "Restore minimal default" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45 +msgid "Minimal summary bar default restored." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:62 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:84 +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:132 +msgid "Order must be an integer" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:69 +msgid "No section selected" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:74 +msgid "No order entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:130 +msgid "Moved" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:137 +msgid "Saved order of sections." +msgstr "" + +#. the count isn't really correct anyway, since we don't check for actual changes +#. addFormNotice("Updated settings for " + updated + " pools."); +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:136 +msgid "Updated settings for all pools." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:141 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "Explorada Configuração de túnnel salva com sucesso" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:56 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:79 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:97 +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." +msgstr "" +"Erro ao salvar a configuração (aplicada, mas não salva) - consulte os logs " +"de erros." + +#. * dummies for translation +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "1 hop" +msgstr[1] "{0} hops" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, java-format +msgid "1 tunnel" +msgid_plural "{0} tunnels" +msgstr[0] "1 tunnel" +msgstr[1] "{0} tunnels" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:35 +msgid "Exploratory tunnels" +msgstr "Explorador de tunnels" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51 +#, java-format +msgid "Client tunnels for {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:75 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "AVISO ANONIMATO - As configurações incluem 0-hop túneis." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "AVISO ANONIMATO - As configurações incluem 1- hop túneis." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:83 +msgid "PERFORMANCE WARNING - Settings include very long tunnels." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:86 +msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." +msgstr "" +"AVISO DE DESEMPENHO - As configurações incluem grandes quantidades de tunnels" + +#. buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n"); +#. tunnel depth +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:93 +msgid "Length" +msgstr "comprimento" + +#. tunnel depth variance +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:110 +msgid "Randomization" +msgstr "randomização" + +#. tunnel quantity +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:134 +msgid "Quantity" +msgstr "Quantidade" + +#. tunnel backup quantity +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:151 +msgid "Backup quantity" +msgstr "Quantidade de backup" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:173 +msgid "Inbound options" +msgstr "opções de entrada" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:186 +msgid "Outbound options" +msgstr "opções de saÃda" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:442 +msgid "Add user" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 +msgid "Theme change saved." +msgstr "Skin salvo" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:53 +msgid "Refresh the page to view." +msgstr "Actualize a página para visualizar." + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:63 +msgid "No user name entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:68 +msgid "No password entered" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:94 +#, java-format +msgid "Removed user {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:26 +msgid "Set theme universally across all apps" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +msgid "Arabic" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +msgid "Czech" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 +msgid "Danish" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "English" +msgstr "Inglês" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "Estonian" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "Finnish" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "German" +msgstr "Alemão" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "Greek" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 +msgid "Spanish" +msgstr "Espanhol" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +msgid "Dutch" +msgstr "Holandês" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +msgid "French" +msgstr "Francês" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +msgid "Hungarian" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +msgid "Italian" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 +msgid "Polish" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +msgid "Portuguese" +msgstr "Português" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +msgid "Russian" +msgstr "Russo" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 +msgid "Swedish" +msgstr "Sueco" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 +msgid "Chinese" +msgstr "Chinês" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 +msgid "Ukrainian" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:74 +msgid "Vietnamese" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:100 +msgid "Add a user and password to enable." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:106 +msgid "User Name" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:117 +#: ../java/src/net/i2p/router/web/HomeHelper.java:214 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:879 +msgid "Add" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:120 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:516 +msgid "Password" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 +#, fuzzy +msgid "Update or check already in progress" +msgstr "Plugin ou atualização a baixar já em andamento." + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:114 +msgid "Update available, attempting to download now" +msgstr "Atualização disponÃvel, tentando baixar agora" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:116 +msgid "Update available, click button on left to download" +msgstr "Atualização disponÃvel, clique no botão à esquerda para baixar" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:122 +msgid "No update available" +msgstr "Nenhuma atualização disponÃvel" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:134 +#, java-format +msgid "Updating news URL to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:138 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:52 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:58 +msgid "internal" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:142 +#, java-format +msgid "Updating proxy host to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:150 +#, java-format +msgid "Updating proxy port to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:162 +#, java-format +msgid "Updating refresh frequency to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:111 +#: ../java/src/net/i2p/router/web/GraphHelper.java:361 +msgid "Never" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:170 +#, java-format +msgid "Updating update policy to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:179 +msgid "Updating update URLs." +msgstr "Actualizando actualização de URL ." + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190 +msgid "Updating trusted keys." +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198 +#, java-format +msgid "Updating unsigned update URL to {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:113 +msgid "Every" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131 +msgid "Notify only" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:138 +msgid "Download and verify only" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:146 +msgid "Download, verify, and restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/FormHandler.java:203 +msgid "" +"Invalid form submission, probably because you used the 'back' or 'reload' " +"button on your browser. Please resubmit." +msgstr "" + +#: ../java/src/net/i2p/router/web/FormHandler.java:205 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:159 +msgid "Combined bandwidth graph" +msgstr "" + +#. e.g. "statname for 60m" +#: ../java/src/net/i2p/router/web/GraphHelper.java:172 +#: ../java/src/net/i2p/router/web/GraphHelper.java:221 +#, java-format +msgid "{0} for {1}" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:223 +#, java-format +msgid "ending {0} ago" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:238 +msgid "Larger" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:244 +msgid "Smaller" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:250 +msgid "Taller" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:256 +msgid "Shorter" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:262 +msgid "Wider" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:268 +msgid "Narrower" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:275 +msgid "Larger interval" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:281 +msgid "Smaller interval" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:288 +msgid "Previous interval" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:299 +msgid "Next interval" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:305 +#: ../java/src/net/i2p/router/web/GraphHelper.java:345 +msgid "Plot averages" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:305 +#: ../java/src/net/i2p/router/web/GraphHelper.java:346 +msgid "plot events" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:308 +msgid "All times are UTC." +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:340 +msgid "Configure Graph Display" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:340 +msgid "Select Stats" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:344 +msgid "Periods" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 +msgid "or" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:347 +msgid "Image sizes" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:347 +msgid "width" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:348 +msgid "height" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:348 +#: ../java/src/net/i2p/router/web/GraphHelper.java:349 +msgid "pixels" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:350 +msgid "Refresh delay" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:365 +msgid "Store graph data on disk?" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:371 +msgid "Save settings and redraw graphs" +msgstr "" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:426 +msgid "Graph settings saved" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:27 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:252 +msgid "Addressbook" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:27 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:250 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:28 +msgid "Configure Bandwidth" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:28 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:315 +msgid "I2P Bandwidth Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:29 +msgid "Configure Language" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:29 +msgid "Console Language Selection" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:30 +msgid "Customize Home Page" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:30 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:331 +msgid "I2P Home Page Configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:31 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 +msgid "Anonymous webmail client" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:31 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162 +msgid "Email" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:32 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +msgid "I2P Router Help" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:33 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 +msgid "Router Console" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:34 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 +msgid "Built-in anonymous BitTorrent Client" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:34 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:168 +msgid "Torrents" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:35 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172 +msgid "Local web server" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:39 +msgid "Bug Reports" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:39 +msgid "Bug tracker" +msgstr "" + +#. "colombo-bt.i2p" + S + _x("The Italian Bittorrent Resource") + S + "http://colombo-bt.i2p/" + S + I + "colomboicon.png" + S + +#: ../java/src/net/i2p/router/web/HomeHelper.java:41 +msgid "Dev Forum" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:41 +msgid "Development forum" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:42 +#: ../java/src/net/i2p/router/web/HomeHelper.java:54 +msgid "Bittorrent tracker" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:42 +msgid "diftracker" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:43 +msgid "I2P Applications" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:44 +msgid "FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:44 +msgid "Frequently Asked Questions" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:45 +msgid "Community forum" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:45 +msgid "Forum" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:46 +msgid "" +"A public anonymous Git hosting site - supports pulling via Git and HTTP and " +"pushing via SSH" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:46 +msgid "Anonymous Git Hosting" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:47 +msgid "Microblog" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:47 +msgid "Your premier microblogging service on I2P" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:48 +msgid "Javadocs" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:48 +#: ../java/src/net/i2p/router/web/HomeHelper.java:57 +msgid "Technical documentation" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:50 +msgid "Debian and Tahoe-LAFS repositories" +msgstr "" + +#. _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "education.png" + S + +#: ../java/src/net/i2p/router/web/HomeHelper.java:50 +msgid "killyourtv.i2p" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:51 +msgid "I2P Pastebin" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:51 +msgid "Pastebin" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:52 +msgid "I2P News" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:53 +msgid "Add-on directory" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:53 +msgid "Plugins" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:54 +msgid "Postman's Tracker" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:55 +msgid "I2P home page" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:55 +msgid "Project Website" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:56 +msgid "I2P Network Statistics" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:57 +msgid "Technical Docs" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:58 +msgid "Trac Wiki" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:59 +msgid "Ugha's Wiki" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:60 +msgid "Seedless and the Robert BitTorrent applications" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:60 +msgid "Sponge's main site" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:101 +msgid "The HTTP proxy is not up" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:103 +#, java-format +msgid "Your browser is not properly configured to use the HTTP proxy at {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:194 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:833 +msgid "Name" +msgstr "" + +#: ../java/src/net/i2p/router/web/HomeHelper.java:196 +msgid "URL" +msgstr "" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:32 +#: ../java/src/net/i2p/router/web/LogsHelper.java:79 +msgid "File location" +msgstr "" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:76 +msgid "File not found" +msgstr "" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:94 +msgid "No log messages" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbHelper.java:19 +msgid "Summary" +msgstr "" + +#. 0 +#: ../java/src/net/i2p/router/web/NetDbHelper.java:20 +msgid "Local Router" +msgstr "" + +#. 1 +#: ../java/src/net/i2p/router/web/NetDbHelper.java:21 +msgid "Router Lookup" +msgstr "" + +#. 2 +#: ../java/src/net/i2p/router/web/NetDbHelper.java:22 +msgid "All Routers" +msgstr "" + +#. 3 +#: ../java/src/net/i2p/router/web/NetDbHelper.java:23 +msgid "All Routers with Full Stats" +msgstr "" + +#. 4 +#. 5 +#: ../java/src/net/i2p/router/web/NetDbHelper.java:25 +msgid "LeaseSets" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 +msgid "not found in network database" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "LeaseSet" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:137 +msgid "Local" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139 +msgid "Unpublished" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:140 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:147 +msgid "Destination" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:157 +#, java-format +msgid "Expires in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159 +#, java-format +msgid "Expired {0} ago" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:174 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 +msgid "Gateway" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:174 +msgid "Lease" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176 +msgid "Tunnel" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:232 +msgid "Not initialized" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:283 +msgid "Network Database Router Statistics" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:290 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:304 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:322 +msgid "Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:304 +msgid "Transports" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:322 +msgid "Country" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:367 +msgid "Our info" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:369 +msgid "Peer info for" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:371 +msgid "Full entry" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:153 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:666 +msgid "Hidden" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378 +msgid "Updated" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:379 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:382 +#, java-format +msgid "{0} ago" +msgstr "" + +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:381 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:385 +msgid "Published" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:387 +msgid "Address(es)" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:400 +msgid "cost" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425 +msgid "Hidden or starting up" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425 +msgid "SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426 +msgid "NTCP and SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426 +msgid "NTCP and SSU with introducers" +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsHelper.java:204 +#, java-format +msgid "News last updated {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsHelper.java:210 +#, java-format +msgid "News last checked {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsHelper.java:219 +msgid "Hide news" +msgstr "" + +#: ../java/src/net/i2p/router/web/NewsHelper.java:222 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642 +msgid "Show news" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginStarter.java:128 +msgid "Checking for plugin updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/PluginStarter.java:170 +#, java-format +msgid "1 plugin updated" +msgid_plural "{0} plugins updated" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/PluginStarter.java:172 +msgid "Plugin update check complete" +msgstr "" + +#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>"); +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 +#, java-format +msgid "Showing 1 recent profile." +msgid_plural "Showing {0} recent profiles." +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 +#, java-format +msgid "Hiding 1 older profile." +msgid_plural "Hiding {0} older profiles." +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:87 +#, java-format +msgid "Hiding 1 standard profile." +msgid_plural "Hiding {0} standard profiles." +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92 +msgid "Groups (Caps)" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:93 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:472 +msgid "Speed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:94 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:476 +msgid "Capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:95 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277 +msgid "Integration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135 +msgid "Fast, High Capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:136 +#: ../java/src/net/i2p/router/web/ProfilesHelper.java:11 +msgid "High Capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:137 +msgid "Standard" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:138 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:172 +msgid "Failing" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:140 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:416 +msgid "Integrated" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:173 +msgid "Unreachable" +msgstr "" + +#. hide if < 10% +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:180 +msgid "Test Fails" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186 +msgid "profile" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:205 +msgid "Caps" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:206 +msgid "Integ. Value" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:207 +msgid "Last Heard About" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:208 +msgid "Last Heard From" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:209 +msgid "Last Good Send" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:210 +msgid "Last Bad Send" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:211 +msgid "10m Resp. Time" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:212 +msgid "1h Resp. Time" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:213 +msgid "1d Resp. Time" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:214 +msgid "Last Good Lookup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:215 +msgid "Last Bad Lookup" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:216 +msgid "Last Good Store" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:217 +msgid "Last Bad Store" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:218 +msgid "1h Fail Rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:219 +msgid "1d Fail Rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272 +msgid "Thresholds" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274 +msgid "fast peers" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276 +msgid "high capacity peers" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278 +msgid " well integrated peers" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280 +msgid "as determined by the profile organizer" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280 +msgid "groups" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281 +msgid "capabilities in the netDb, not used to determine profiles" +msgstr "" + +#. capabilities +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281 +#: ../java/strings/Strings.java:81 +msgid "caps" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:282 +msgid "" +"peak throughput (bytes per second) over a 1 minute period that the peer has " +"sustained in a single tunnel" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:282 +msgid "speed" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:283 +msgid "capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:283 +msgid "how many tunnels can we ask them to join in an hour?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:284 +msgid "how many new peers have they told us about lately?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:284 +msgid "integration" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:285 +msgid "is the peer banned, or unreachable, or failing tunnel tests?" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:285 +msgid "status" +msgstr "" + +#. 0 +#: ../java/src/net/i2p/router/web/ProfilesHelper.java:12 +msgid "Floodfill " +msgstr "" + +#. 2 +#: ../java/src/net/i2p/router/web/ProfilesHelper.java:14 +msgid "All" +msgstr "" + +#: ../java/src/net/i2p/router/web/SearchHelper.java:74 +msgid "Select search engine" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:312 +msgid "Bandwidth usage" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:322 +msgid "Outbound Bytes/sec" +msgstr "" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 +msgid "Inbound Bytes/sec" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +msgid "Bps" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:327 +msgid "Out average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 +msgid "max" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 +msgid "In average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 +msgid "GO" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 +msgid "Statistics gathered during this router's uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +msgid "" +"The data gathered is quantized over a 1 minute period, so should just be " +"used as an estimate." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:65 +msgid "These statistics are primarily used for development and debugging." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:106 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:157 +msgid "No lifetime events" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:117 +msgid "frequency" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:121 +msgid "Rolling average events per period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:125 +msgid "Highest events per period" +msgstr "" + +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. buf.append("(current is "); +#. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); +#. buf.append(" of max)"); +#. } +#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); +#: ../java/src/net/i2p/router/web/StatsGenerator.java:136 +msgid "Lifetime average events per period" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 +msgid "Lifetime average frequency" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:144 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:233 +#, java-format +msgid "1 event" +msgid_plural "{0} events" +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:169 +msgid "rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:171 +msgid "Average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:174 +msgid "Highest average" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:201 +#, java-format +msgid "There was 1 event in this period." +msgid_plural "There were {0} events in this period." +msgstr[0] "" +msgstr[1] "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:203 +#, java-format +msgid "The period ended {0} ago." +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:205 +msgid "No events" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:210 +msgid "Average event count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:212 +msgid "Events in peak period" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:220 +msgid "Graph Data" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:222 +msgid "Graph Event Count" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:225 +msgid "Export Data as XML" +msgstr "" + +#. Display the strict average +#: ../java/src/net/i2p/router/web/StatsGenerator.java:230 +msgid "Lifetime average value" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142 +msgid "I2P Router Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144 +msgid "Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152 +msgid "" +"Configure startup of clients and webapps (services); manually start dormant " +"services" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 +msgid "I2P Services" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186 +msgid "Configure I2P Router" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:188 +msgid "I2P Internals" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:194 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489 +msgid "View existing tunnels and tunnel build status" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:200 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:375 +msgid "Show all current peer connections" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:206 +msgid "Show recent peer performance profiles" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:208 +msgid "Profiles" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:212 +msgid "Show list of all known I2P routers" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214 +msgid "NetDB" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218 +msgid "Health Report" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:220 +msgid "Logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231 +msgid "Graph router performance" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233 +msgid "Graphs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238 +msgid "Textual router performance statistics" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 +msgid "Local Destinations" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:268 +msgid "General" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273 +msgid "" +"Your Local Identity is your unique I2P router identity, similar to an ip " +"address but tailored to I2P. " +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 +msgid "Never disclose this to anyone, as it can reveal your real world ip." +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 +msgid "Local Identity" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280 +msgid "Your unique I2P router identity is" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:284 +msgid "never reveal it to anyone" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:286 +msgid "show" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:290 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:316 +msgid "The version of the I2P software we are running" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:300 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326 +msgid "How long we've been running for this session" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:329 +msgid "Uptime" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341 +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:356 +msgid "Configure I2P Updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:358 +msgid "I2P Update" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:383 +msgid "Peers we've been talking to in the last few minutes/last hour" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +msgid "Active" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:395 +msgid "The number of peers available for building client tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398 +msgid "Fast" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404 +msgid "The number of peers available for building exploratory tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407 +msgid "High capacity" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413 +msgid "The number of peers available for network database inquiries" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 +msgid "The total number of peers in our network database" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:425 +msgid "Known" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:445 +msgid "Configure router bandwidth allocation" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:447 +msgid "Bandwidth in/out" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:467 +msgid "Total" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:474 +msgid "Used" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:496 +msgid "" +"Used for building and testing tunnels, and communicating with floodfill peers" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:499 +msgid "Exploratory" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:505 +msgid "Tunnels we are using to provide or access services on the network" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:514 +msgid "" +"Tunnels we are participating in, directly contributing bandwith to the " +"network" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:517 +msgid "Participating" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:523 +msgid "" +"The ratio of tunnel hops we provide to tunnel hops we use - a value greater " +"than 1.00 indicates a positive contribution to the network" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:526 +msgid "Share ratio" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539 +msgid "What's in the router's job queue?" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541 +msgid "Congestion" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:546 +msgid "Indicates router performance" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:549 +msgid "Job lag" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555 +msgid "Indicates how quickly outbound messages to other I2P routers are sent" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558 +msgid "Message delay" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565 +msgid "Round trip time for a tunnel test" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568 +msgid "Tunnel lag" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:575 +msgid "Queued requests from other routers to participate in tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:578 +msgid "Backlog" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:613 +msgid "News & Updates" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:144 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:151 +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:156 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 +msgid "Testing" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:163 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 +msgid "OK" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:164 +msgid "ERR-Private TCP Address" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:166 +msgid "ERR-SymmetricNAT" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:169 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:171 +msgid "WARN-Firewalled and Floodfill" +msgstr "" + +#. if (_context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0) +#. return _("WARN-Firewalled and Fast"); +#: ../java/src/net/i2p/router/web/SummaryHelper.java:174 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 +msgid "Firewalled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:176 +msgid "Disconnected - check network cable" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:178 +msgid "" +"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " +"restart" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:184 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:187 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:189 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:414 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:426 +msgid "Server" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:430 +msgid "Show tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 +msgid "Leases expired" +msgstr "" + +#. red or yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:441 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 +msgid "Rebuilding" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:442 +msgid "ago" +msgstr "" + +#. green light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:445 +msgid "Ready" +msgstr "" + +#. yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 +msgid "Building" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:449 +msgid "Building tunnels" +msgstr "" + +#. tunnel nicknames, taken from i2ptunnel.config so they will display +#. nicely under 'local destinations' in the summary bar +#. note that if the wording changes in i2ptunnel.config, we have to +#. keep the old string here as well for existing installs +#: ../java/src/net/i2p/router/web/SummaryHelper.java:462 +#: ../java/strings/Strings.java:36 +msgid "shared clients" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:674 +msgid "Click Restart to install" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:676 +msgid "Click Shutdown and restart to install" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:677 +#, java-format +msgid "Version {0}" +msgstr "" + +#. Note to translators: parameter is a version, e.g. "0.8.4" +#: ../java/src/net/i2p/router/web/SummaryHelper.java:699 +#, java-format +msgid "Download {0} Update" +msgstr "" + +#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" +#. <br> is optional, to help the browser make the lines even in the button +#. If the translation is shorter than the English, you should probably not include <br> +#: ../java/src/net/i2p/router/web/SummaryHelper.java:707 +#, java-format +msgid "Download Unsigned<br>Update {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:731 +msgid "Help with firewall configuration" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:733 +msgid "Check network connection and NAT/firewall" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:752 +msgid "Reseed" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 +msgid "Order" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:852 +msgid "Top" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:865 +msgid "Down" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:870 +msgid "Bottom" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:882 +msgid "Select a section to add" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:121 +#, java-format +msgid "events in {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:123 +#, java-format +msgid "averaged for {0}" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:133 +msgid "Events per period" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154 +msgid "avg" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:156 +msgid "now" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:35 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:57 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:398 +msgid "configure" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:55 +msgid "Client tunnels for" +msgstr "túneis para Cliente " + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:59 +msgid "dead" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 +msgid "Participating tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:66 +msgid "Receive on" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 +msgid "Expiration" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 +msgid "Send on" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:68 +msgid "Rate" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:68 +msgid "Role" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:68 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 +msgid "Usage" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:106 +msgid "grace period" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:116 +msgid "Outbound Endpoint" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:118 +msgid "Inbound Gateway" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:120 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:163 +msgid "Participant" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:125 +#, java-format +msgid "Limited display to the {0} tunnels with the highest usage" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 +msgid "Inactive participating tunnels" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219 +msgid "Lifetime bandwidth usage" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 +msgid "Expiry" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:160 +msgid "Participants" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:166 +msgid "Endpoint" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:206 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:213 +msgid "Build in progress" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:206 +msgid "inbound" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:213 +msgid "outbound" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 +msgid "No tunnels; waiting for the grace period to end." +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:220 +msgid "in" +msgstr "" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:221 +msgid "out" +msgstr "" + +#. wars for ConfigClientsHelper +#: ../java/strings/Strings.java:12 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:154 +msgid "addressbook" +msgstr "" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "" + +#. clients, taken from clients.config, for ConfigClientsHelper +#. note that if the wording changes in clients.config, we have to +#. keep the old string here as well for existing installs +#: ../java/strings/Strings.java:22 +msgid "Web console" +msgstr "" + +#: ../java/strings/Strings.java:23 +msgid "SAM application bridge" +msgstr "" + +#: ../java/strings/Strings.java:24 +msgid "Application tunnels" +msgstr "" + +#: ../java/strings/Strings.java:25 +msgid "My eepsite web server" +msgstr "" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "" + +#: ../java/strings/Strings.java:28 +msgid "BOB application bridge" +msgstr "" + +#: ../java/strings/Strings.java:30 +msgid "Open Router Console in web browser at startup" +msgstr "" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "" + +#: ../java/strings/Strings.java:40 +msgid "HTTP Proxy" +msgstr "" + +#. older names for pre-0.7.4 installs +#: ../java/strings/Strings.java:42 +msgid "eepProxy" +msgstr "" + +#: ../java/strings/Strings.java:43 +msgid "ircProxy" +msgstr "" + +#. hardcoded in i2psnark +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "" + +#. hardcoded in iMule? +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#. standard themes for ConfigUIHelper +#: ../java/strings/Strings.java:51 +msgid "classic" +msgstr "" + +#: ../java/strings/Strings.java:52 +msgid "dark" +msgstr "" + +#: ../java/strings/Strings.java:53 +msgid "light" +msgstr "" + +#: ../java/strings/Strings.java:54 +msgid "midnight" +msgstr "" + +#: ../java/strings/Strings.java:58 +msgid "BandwidthLimiter" +msgstr "" + +#: ../java/strings/Strings.java:59 +msgid "ClientMessages" +msgstr "" + +#: ../java/strings/Strings.java:60 +msgid "Encryption" +msgstr "" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "" + +#: ../java/strings/Strings.java:73 +msgid "udp" +msgstr "" + +#. parameters in transport addresses (netdb.jsp) +#. may or may not be worth translating +#: ../java/strings/Strings.java:77 +msgid "host" +msgstr "" + +#: ../java/strings/Strings.java:78 +msgid "key" +msgstr "" + +#: ../java/strings/Strings.java:79 +msgid "port" +msgstr "" + +#. introducer host +#: ../java/strings/Strings.java:83 +msgid "ihost0" +msgstr "" + +#: ../java/strings/Strings.java:84 +msgid "ihost1" +msgstr "" + +#: ../java/strings/Strings.java:85 +msgid "ihost2" +msgstr "" + +#. introducer port +#: ../java/strings/Strings.java:87 +msgid "iport0" +msgstr "" + +#: ../java/strings/Strings.java:88 +msgid "iport1" +msgstr "" + +#: ../java/strings/Strings.java:89 +msgid "iport2" +msgstr "" + +#. introducer key +#: ../java/strings/Strings.java:91 +msgid "ikey0" +msgstr "" + +#: ../java/strings/Strings.java:92 +msgid "ikey1" +msgstr "" + +#: ../java/strings/Strings.java:93 +msgid "ikey2" +msgstr "" + +#. introducer tag +#: ../java/strings/Strings.java:95 +msgid "itag0" +msgstr "" + +#: ../java/strings/Strings.java:96 +msgid "itag1" +msgstr "" + +#: ../java/strings/Strings.java:97 +msgid "itag2" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:138 +msgid "configure bandwidth" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:143 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:151 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:164 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:160 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:141 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:145 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:139 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:157 +msgid "Router is down" +msgstr "" + +#. We have intl defined when this is included, but not when compiled standalone. +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:297 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:316 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:295 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:288 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:290 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:308 +msgid "Refresh (s)" +msgstr "" + +#. ditto +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:301 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005ffr_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:313 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:299 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:312 +msgid "Enable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394 +msgid "Bandwidth limiter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:396 +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:400 +msgid "KBps In" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:414 +msgid "KBps Out" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +msgid "Share" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:402 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:431 +msgid "NOTE" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438 +#, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442 +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443 +msgid "" +"It improves your anonymity by creating cover traffic, and helps the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:448 +msgid "" +"The higher the share bandwidth the more you improve your anonymity and help " +"the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:452 +msgid "Advanced network configuration page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:528 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:544 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:474 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:490 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:457 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:579 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:511 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:476 +msgid "Cancel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:138 +msgid "config advanced" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:315 +msgid "I2P Advanced Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:394 +msgid "Advanced I2P Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:404 +msgid "Some changes may require a restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:140 +msgid "config clients" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347 +msgid "I2P Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:435 +msgid "Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:443 +msgid "To change other client options, edit the file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:542 +msgid "All changes require restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:462 +msgid "Advanced Client Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:466 +msgid "External I2CP (I2P Client Protocol) Interface Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:472 +msgid "Enabled without SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:478 +msgid "Enabled with SSL required" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:484 +msgid "Disabled - Clients outside this Java process may not connect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:486 +msgid "I2CP Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:490 +msgid "I2CP Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:506 +msgid "Authorization" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:512 +msgid "Require username and password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:514 +msgid "Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:518 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:439 +msgid "The default settings will work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:520 +msgid "Any changes made here must also be configured in the external client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:522 +msgid "Many clients do not support SSL or authorization." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:532 +msgid "WebApp Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:534 +msgid "" +"The Java web applications listed below are started by the webConsole client " +"and run in the same JVM as the router. They are usually web applications " +"accessible through the router console. They may be complete applications (e." +"g. i2psnark),front-ends to another client or application which must be " +"separately enabled (e.g. susidns, i2ptunnel), or have no web interface at " +"all (e.g. addressbook)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:536 +msgid "" +"A web app may also be disabled by removing the .war file from the webapps " +"directory; however the .war file and web app will reappear when you update " +"your router to a newer version, so disabling the web app here is the " +"preferred method." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:550 +msgid "Plugin Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:552 +msgid "The plugins listed below are started by the webConsole client." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:562 +msgid "Plugin Installation" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:564 +msgid "To install a plugin, enter the download URL:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:140 +msgid "config home" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:430 +msgid "Default Home Page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:436 +msgid "Use old home page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:444 +msgid "Search Engines" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:464 +msgid "Recommended Eepsites" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:480 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:386 +msgid "Local Services" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:140 +msgid "config keyring" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 +msgid "I2P Keyring Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:435 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:438 +msgid "" +"The keyring may contain keys for local or remote encrypted destinations." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:444 +msgid "Manual Keyring Addition" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:446 +msgid "Enter keys for encrypted remote destinations here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:449 +msgid "Keys for local destinations must be entered on the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:451 +msgid "I2PTunnel page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:453 +msgid "Dest. name, hash, or full key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:455 +msgid "Encryption Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:138 +msgid "config logging" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:315 +msgid "I2P Logging Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:394 +msgid "Configure I2P Logging Options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:396 +msgid "Log file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:400 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:402 +msgid "Log record format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:406 +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:408 +msgid "Log date format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:412 +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:414 +msgid "Max log file size" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:418 +msgid "Default log level" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:422 +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:424 +msgid "Log level overrides" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:428 +msgid "New override" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:140 +msgid "config networking" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:344 +msgid "I2P Network Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:434 +msgid "IP and Transport Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:438 +msgid "There is help below." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:440 +msgid "UPnP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:444 +msgid "Enable UPnP to open firewall ports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:446 +msgid "UPnP status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:448 +msgid "IP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:526 +msgid "Externally reachable hostname or IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:454 +msgid "Use all auto-detect methods" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:458 +msgid "Disable UPnP IP address detection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:462 +msgid "Ignore local interface IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:466 +msgid "Use SSU IP address detection only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:544 +msgid "Specify hostname or IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:476 +msgid "Select Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:490 +msgid "Hidden mode - do not publish IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:492 +msgid "(prevents participating traffic)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:494 +msgid "Action when IP changes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:498 +msgid "" +"Laptop mode - Change router identity and UDP port when IP changes for " +"enhanced anonymity" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:500 +msgid "Experimental" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:502 +msgid "UDP Configuration:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 +msgid "UDP port:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:554 +msgid "Completely disable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:512 +msgid "(select only if behind a firewall that blocks outbound UDP)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:524 +msgid "TCP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:530 +msgid "Use auto-detected IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:532 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:564 +msgid "currently" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536 +msgid "if we are not firewalled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:540 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:550 +msgid "Disable inbound (Firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:556 +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:558 +msgid "Externally reachable TCP port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:562 +msgid "Use the same port configured for UDP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:570 +msgid "Specify Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:574 +msgid "Notes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:577 +msgid "" +"a) Do not reveal your port numbers to anyone! b) Changing these settings " +"will restart your router." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:583 +msgid "Configuration Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:585 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 +msgid "" +"While I2P will work fine behind most firewalls, your speeds and network " +"integration will generally improve if the I2P port is forwarded for both UDP " +"and TCP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:587 +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:589 +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:591 +msgid "" +"Most of the options above are for special situations, for example where UPnP " +"does not work correctly, or a firewall not under your control is doing harm." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:593 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:602 +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:606 +msgid "No UPnP-compatible device present" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 +msgid "UPnP disabled on the device" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:610 +msgid "Software firewall interference with UPnP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:612 +msgid "Bugs in the device's UPnP implementation" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:614 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 +msgid "UPnP device change, reset, or address change" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 +msgid "Review the UPnP status here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 +msgid "Hostnames entered above will be published in the network database." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 +msgid "They are <b>not private</b>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:626 +msgid "" +"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 +msgid "" +"If you specify the wrong IP address or hostname, or do not properly " +"configure your NAT or firewall, your network performance will degrade " +"substantially." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:630 +msgid "When in doubt, leave the settings at the defaults." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:632 +msgid "Reachability Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:637 +msgid "" +"If you think you have opened up your firewall and I2P still thinks you are " +"firewalled, remember that you may have multiple firewalls, for example both " +"software packages and external hardware routers." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 +msgid "" +"If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " +"diagnose the problem." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 +msgid "Your UDP port does not appear to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:648 +msgid "Your UDP port appears to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:650 +msgid "" +"As the firewall detection methods are not 100% reliable, this may " +"occasionally be displayed in error." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open for your port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 +msgid "" +"I2P will work fine when firewalled, there is no reason for concern. When " +"firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:656 +msgid "" +"However, you will get more participating traffic and help the network more " +"if you can open your firewall(s)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:658 +msgid "" +"If you think you have already done so, remember that you may have both a " +"hardware and a software firewall, or be behind an additional, institutional " +"firewall you cannot control." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:660 +msgid "" +"Also, some routers cannot correctly forward both TCP and UDP on a single " +"port, or may have other limitations or bugs that prevent them from passing " +"traffic through to I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:664 +msgid "The router is currently testing whether your UDP port is firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:670 +msgid "" +"Hidden mode is automatically enabled for added protection in certain " +"countries." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:672 +msgid "WARN - Firewalled and Fast" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:676 +msgid "" +"While I2P will work fine in this configuration, if you really have over " +"128KBps of bandwidth to share, it will be much more helpful to the network " +"if you open your firewall." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:678 +msgid "WARN - Firewalled and Floodfill" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:680 +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 +msgid "" +"For best participation as a floodfill router, you should open your firewall." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:686 +msgid "" +"You have configured inbound TCP, however your UDP port is firewalled, and " +"therefore it is likely that your TCP port is firewalled as well." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 +msgid "" +"If your TCP port is firewalled with inbound TCP enabled, routers will not be " +"able to contact you via TCP, which will hurt the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:692 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:694 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 +msgid "" +"You appear to be firewalled on TCP, therefore your router cannot accept " +"inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:698 +msgid "Please open your firewall or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:700 +msgid "ERR - Clock Skew" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 +msgid "" +"Your system's clock is skewed, which will make it difficult to participate " +"in the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 +msgid "Correct your clock setting if this error persists." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:706 +msgid "ERR - Private TCP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:708 +msgid "" +"You must never advertise an unroutable IP address such as 127.0.0.1 or " +"192.168.1.1 as your external address." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:710 +msgid "Correct the address or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:712 +msgid "ERR - SymmetricNAT" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:714 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:716 +msgid "" +"I2P does not work well behind this type of firewall. You will probably not " +"be able to accept inbound connections, which will limit your participation " +"in the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:718 +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:720 +msgid "I2P was unable to bind to port 8887 or other configured port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:722 +msgid "" +"Check to see if another program is using the configured port. If so, stop " +"that program or configure I2P to use a different port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:724 +msgid "" +"This may be a transient error, if the other program is no longer using the " +"port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726 +msgid "However, a restart is always required after this error." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:728 +msgid "ERR - UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:730 +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:732 +msgid "Therefore your router cannot accept inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:734 +msgid "Please configure a TCP host and port above or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:736 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:738 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:740 +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:140 +msgid "config peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:331 +msgid "I2P Peer Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:442 +msgid "Manual Peer Controls" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:444 +msgid "Router Hash" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:448 +msgid "Manually Ban / Unban a Peer" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:450 +msgid "" +"Banning will prevent the participation of this peer in tunnels you create." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:460 +msgid "Adjust Profile Bonuses" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:462 +msgid "" +"Bonuses may be positive or negative, and affect the peer's inclusion in Fast " +"and High Capacity tiers. Fast peers are used for client tunnels, and High " +"Capacity peers are used for some exploratory tunnels. Current bonuses are " +"displayed on the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:464 +msgid "profiles page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:482 +msgid "Banned Peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:503 +msgid "Banned IPs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:140 +msgid "config reseeding" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:344 +msgid "I2P Reseeding Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:433 +msgid "Reseeding Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:435 +msgid "" +"Reseeding is the bootstrapping process used to find other routers when you " +"first install I2P, or when your router has too few router references " +"remaining." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:437 +msgid "" +"If reseeding has failed, you should first check your network connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:441 +msgid "" +"Change these only if HTTP is blocked by a restrictive firewall, reseed has " +"failed, and you have access to an HTTP proxy." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 +#, java-format +msgid "See {0} for instructions on reseeding manually." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:443 +msgid "the FAQ" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:445 +msgid "Reseed URL Selection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:449 +msgid "Try SSL first then non-SSL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:453 +msgid "Use SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:457 +msgid "Use non-SSL only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:459 +msgid "Reseed URLs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:463 +msgid "Enable HTTP Proxy?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:467 +msgid "HTTP Proxy Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:471 +msgid "HTTP Proxy Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:475 +msgid "Use HTTP Proxy Authorization?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:479 +msgid "HTTP Proxy Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:483 +msgid "HTTP Proxy Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:487 +msgid "Enable HTTPS Proxy?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491 +msgid "HTTPS Proxy Host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:495 +msgid "HTTPS Proxy Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:499 +msgid "Use HTTPS Proxy Authorization?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503 +msgid "HTTPS Proxy Username" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:507 +msgid "HTTPS Proxy Password" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:140 +msgid "config service" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:331 +msgid "I2P Service Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 +msgid "Shutdown the router" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 +msgid "" +"Graceful shutdown lets the router satisfy the agreements it has already made " +"before shutting down, but may take a few minutes." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:425 +msgid "" +"If you need to kill the router immediately, that option is available as well." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 +msgid "" +"This is useful in some situations - for example, if you changed some " +"settings that client applications only read at startup, such as the " +"routerconsole password or the interface it listens on." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:439 +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:451 +msgid "Systray integration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 +msgid "" +"On the windows platform, there is a small application to sit in the system " +"tray, allowing you to view the router's status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 +msgid "Hide systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 +msgid "Run on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 +msgid "" +"You can control whether I2P is run on startup or not by selecting one of the " +"following options - I2P will install (or remove) a service accordingly." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 +msgid "If you prefer the command line, you can also run the " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:475 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:453 +msgid "Note" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:477 +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:479 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:483 +msgid "Debugging" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:485 +msgid "View the job queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:489 +msgid "" +"At times, it may be helpful to debug I2P by getting a thread dump. To do so, " +"please select the following option and review the thread dumped to <a href=" +"\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:501 +msgid "Launch browser on router startup?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:503 +msgid "" +"I2P's main configuration interface is this web console, so for your " +"convenience I2P can launch a web browser on startup pointing at" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:140 +msgid "config summary bar" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:331 +msgid "I2P Summary Bar Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:434 +msgid "Refresh Interval" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:440 +msgid "seconds" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:444 +msgid "Customize Summary Bar" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:138 +msgid "config stats" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:305 +msgid "I2P Stats Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:394 +msgid "Configure I2P Stat Collection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:396 +msgid "Enable full stats?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 +msgid "change requires restart to take effect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:412 +msgid "Stat file" +msgstr "" + +#. shouldShowLog +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:421 +msgid "Filter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:423 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:434 +msgid "toggle all" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:442 +msgid "Log" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:450 +msgid "Graph" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:505 +msgid "Advanced filter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:140 +msgid "config tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344 +msgid "I2P Tunnel Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 +msgid "The default settings work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:437 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:440 +msgid "" +"Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " +"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " +"reduce performance or reliability." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:443 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:446 +msgid "Change these settings with care, and adjust them if you have problems." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:456 +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:459 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:461 +msgid "To make permanent client tunnel changes see the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:463 +msgid "i2ptunnel page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:138 +msgid "config UI" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 +msgid "I2P UI Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:392 +msgid "Router Console Theme" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:413 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:415 +msgid "" +"If you're not using IE, it's likely that your browser is pretending to be " +"IE; please configure your browser (or proxy) to use a different User Agent " +"string if you'd like to access the console themes." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:418 +msgid "Router Console Language" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:424 +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers in #i2p-dev on IRC to help." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:428 +msgid "Apply" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:430 +#, fuzzy +msgid "Router Console Password" +msgstr "I2P Router Console" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:138 +msgid "config update" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:305 +msgid "I2P Update Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:400 +msgid "Check for I2P and news updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:402 +msgid "News & I2P Updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:406 +msgid "Check for news updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:408 +msgid "News Updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:416 +msgid "Update In Progress" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:424 +msgid "News URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:428 +msgid "Refresh frequency" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:434 +msgid "Update policy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:440 +msgid "Update through the eepProxy?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:444 +msgid "eepProxy host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:448 +msgid "eepProxy port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:454 +msgid "Update URLs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:458 +msgid "Trusted keys" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:462 +msgid "Update with unsigned development builds?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:466 +msgid "Unsigned Build URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:472 +msgid "Updates will be dispatched via your package manager." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:136 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:136 +msgid "home" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:354 +msgid "Welcome to I2P" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:321 +msgid "I2P Addressbook" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:323 +msgid "Open in new tab" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:327 +msgid "Your browser does not support iFrames." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:329 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:329 +msgid "Click here to continue." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 +msgid "Internal Error" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 +msgid "Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:160 +msgid "Sorry! There has been an internal error." +msgstr "" + +#. note to translators - both parameters are URLs +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:335 +#, java-format +msgid "Please report bugs on {0} or {1}." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:339 +msgid "" +"You may use the username \"guest\" and password \"guest\" if you do not wish " +"to register." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:341 +msgid "Please include this information in bug reports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 +msgid "Error Details" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:174 +#, java-format +msgid "Error {0}" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:194 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:331 +msgid "I2P Version and Running Environment" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:390 +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." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:148 +msgid "Page Not Found" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:319 +msgid "" +"Sorry! You appear to be requesting a non-existent Router Console page or " +"resource." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:321 +msgid "Error 404" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:326 +msgid "not found" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:138 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:136 +msgid "graphs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:352 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:324 +msgid "I2P Performance Graphs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:312 +msgid "" +"Click a flag to select a language. Click 'configure language' below to " +"change it later." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:362 +msgid "Search I2P" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:382 +msgid "Eepsites of Interest" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:154 +msgid "i2p tunnel manager" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:322 +msgid "I2P Tunnel Manager" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jars_jsp.java:138 +msgid "Jar File Dump" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:136 +msgid "job queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:303 +msgid "I2P Router Job Queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:138 +msgid "logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:329 +msgid "I2P Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:392 +msgid "Critical Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:396 +msgid "Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:402 +msgid "Service (Wrapper) Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:136 +msgid "network database" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:303 +msgid "I2P Network Database" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:142 +msgid "WebApp Not Found" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:333 +msgid "Web Application Not Running" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:335 +msgid "The requested web application is not running." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:337 +msgid "" +"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" +"a> to start it." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:136 +msgid "peer connections" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:303 +msgid "I2P Network Peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:136 +msgid "peer profiles" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:303 +msgid "I2P Network Peer Profiles" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:136 +msgid "statistics" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:316 +msgid "I2P Router Statistics" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:301 +#, java-format +msgid "Disable {0} Refresh" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:154 +msgid "torrents" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:321 +msgid "I2P Torrent Downloader" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:136 +msgid "tunnel summary" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:303 +msgid "I2P Tunnel Summary" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:136 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:303 +msgid "Peer Profile" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:326 +#, java-format +msgid "Profile for peer {0}" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:154 +msgid "webmail" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:321 +msgid "I2P Webmail" +msgstr "" + +#~ msgid "" +#~ "Client configuration saved successfully - restart required to take effect." +#~ msgstr "" +#~ "A configuração do cliente salva com sucesso - é necessário reiniciar para " +#~ "ter efeito." + +#~ msgid "" +#~ "Interface configuration saved successfully - restart required to take " +#~ "effect." +#~ msgstr "" +#~ "Configuração de interface salva com sucesso - é necessário reiniciar para " +#~ "ter efeito." + +#~ msgid "Disabling UPnP, restart required to take effect" +#~ msgstr "Desativar UPnP, é necessário reiniciar para ter efeito" diff --git a/apps/routerconsole/locale/messages_sv.po b/apps/routerconsole/locale/messages_sv.po index 570a490b8618897c325f4f96cbb86333968812b9..121939ef645895135b89c103f3997a7b635619b2 100644 --- a/apps/routerconsole/locale/messages_sv.po +++ b/apps/routerconsole/locale/messages_sv.po @@ -2,36 +2,38 @@ # Copyright (C) 2009 The I2P Project # This file is distributed under the same license as the routerconsole package. # To contribute translations, see http://www.i2p2.de/newdevelopers -# +# # Translators: # 123hund123 <M8R-ra4r1r@mailinator.com>, 2011. # hottuna <i2p@robertfoss.se>, 2011. # <i2p@robertfoss.se>, 2011. -# Martin Svensson <digitalmannen@gmail.com>, 2011, 2012. +# Martin Svensson <digitalmannen@gmail.com>, 2011-2012. msgid "" msgstr "" "Project-Id-Version: I2P\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:10+0000\n" -"PO-Revision-Date: 2012-07-25 19:16+0000\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2012-10-12 00:38+0000\n" +"PO-Revision-Date: 2012-10-31 14:22+0000\n" "Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n" -"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/" -"language/sv_SE/)\n" -"Language: sv_SE\n" +"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\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" +"Language: sv_SE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options... -#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in +#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there +#. are several options... +#. spaces or not, '.' or not, plural or not. Try not to make it too long, it +#. is used in #. a lot of tables. #. milliseconds #. Note to translators, may be negative or zero, 2999 maximum. -#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale. +#. {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:1370 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1415 #, java-format msgid "1 ms" msgid_plural "{0,number,####} ms" @@ -40,7 +42,7 @@ msgstr[1] "{0,number,####} ms" #. seconds #. alternates: secs, sec. 'seconds' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1374 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1419 #, java-format msgid "1 sec" msgid_plural "{0} sec" @@ -49,7 +51,7 @@ msgstr[1] "{0} sek" #. minutes #. alternates: mins, min. 'minutes' is probably too long. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1378 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1423 #, java-format msgid "1 min" msgid_plural "{0} min" @@ -58,61 +60,61 @@ msgstr[1] "{0} min" #. hours #. alternates: hrs, hr., hrs. -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1382 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1427 #, java-format msgid "1 hour" msgid_plural "{0} hours" msgstr[0] "1 timme" msgstr[1] "{0} timmar" -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1384 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1429 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:341 msgid "n/a" msgstr "n/a" #. days -#: ../../../core/java/src/net/i2p/data/DataHelper.java:1387 +#: ../../../core/java/src/net/i2p/data/DataHelper.java:1432 #, java-format msgid "1 day" msgid_plural "{0} days" msgstr[0] "1 dag" msgstr[1] "{0} dagar" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:127 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:128 #, java-format msgid "Banned by router hash: {0}" msgstr "Bannad med hjälp av routerhash: {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:129 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:130 msgid "Banned by router hash" msgstr "Bannad med hjälp av routerhash" #. Temporary reason, until the job finishes -#: ../../../router/java/src/net/i2p/router/Blocklist.java:672 -#: ../../../router/java/src/net/i2p/router/Blocklist.java:745 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:653 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:726 #, java-format msgid "IP banned by blocklist.txt entry {0}" msgstr "IP bannad med hjälp av blocklist.txt post {0}" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:784 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:765 msgid "IPs Banned Until Restart" msgstr "IP blockerade tills omstart " -#: ../../../router/java/src/net/i2p/router/Blocklist.java:808 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:789 msgid "IPs Permanently Banned" msgstr "IP permanent blockerat" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:810 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:791 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:66 msgid "From" msgstr "FrÃ¥n" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:812 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:793 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:67 msgid "To" msgstr "Till" -#: ../../../router/java/src/net/i2p/router/Blocklist.java:848 +#: ../../../router/java/src/net/i2p/router/Blocklist.java:829 #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647 #: ../java/src/net/i2p/router/web/SummaryHelper.java:451 @@ -121,7 +123,8 @@ msgstr "ingen" #. NPE, too early #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) -#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too +#. low"); #. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:73 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:115 @@ -134,7 +137,8 @@ msgid "Rejecting tunnels: High message delay" msgstr "Avvisar tunnlar: Hög meddelandefördröjning" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); +#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of +#. tunnels: High number of requests"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:207 msgid "Rejecting most tunnels: High number of requests" msgstr "Avvisar tunnlar: Högt antal förfrÃ¥gningar" @@ -151,13 +155,15 @@ msgid "Rejecting tunnels: Bandwidth limit" msgstr "Avvisar tunnlar: Bandbreddsgräns" #. hard to do {0} from here -#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); +#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: +#. Bandwidth limit"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:400 msgid "Rejecting most tunnels: Bandwidth limit" msgstr "Avvisar de flesta tunnlarna: Bandbreddsgräns" #. hard to do {0} from here -#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of +#. tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:404 msgid "Accepting most tunnels" msgstr "Accepterar de flesta tunnlarna" @@ -174,42 +180,43 @@ msgstr "Avvisar tunnlar: Stänger ner" msgid "Rejecting tunnels" msgstr "Avvisar tunnlar" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:22 msgid "Reseeding" msgstr "Reseedar" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:161 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:163 #, java-format msgid "Reseed fetched only 1 router." msgid_plural "Reseed fetched only {0} routers." msgstr[0] "Reseed hämtad endast en router." msgstr[1] "Reseed hämtad endast {0} routrar." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:168 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 msgid "Reseed failed." msgstr "Reseed misslyckades." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:169 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:171 #, java-format msgid "See {0} for help." msgstr "Se {0} för hjälp" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:170 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:172 msgid "reseed configuration page" msgstr "sida för konfiguration av omseedning" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:311 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:313 msgid "Reseeding: fetching seed URL." msgstr "Reseed: hämtar seed URL." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:369 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:371 #, java-format msgid "" "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "Reseed: hämtar router info frÃ¥n seed URL ({0} lyckade, {1} fel)" -#. NOTE TO TRANSLATORS - each of these phrases is a description for a statistic +#. NOTE TO TRANSLATORS - each of these phrases is a description for a +#. statistic #. to be displayed on /stats.jsp and in the graphs on /graphs.jsp. #. Please keep relatively short so it will fit on the graphs. #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:33 @@ -236,59 +243,55 @@ msgstr "Hur mÃ¥nga peers vi aktivt talar med" msgid "Known fast peers" msgstr "Snabba kända peerer" -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:529 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:530 msgid "NetDb entry" msgstr "NetDb post" -#. This used to be "no common transports" but it is almost always no transports at all +#. This used to be "no common transports" but it is almost always no +#. transports at all #: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 msgid "No transports (hidden or starting up?)" msgstr "Inga transporter (gömd eller hÃ¥ller pÃ¥ att startas?)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:453 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:455 msgid "Unreachable on any transport" msgstr "OnÃ¥bar pÃ¥ varje transport" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:502 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504 msgid "Router Transport Addresses" msgstr "Router transport adresser" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:507 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} används för utgÃ¥ende anslutningar enbart" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523 #: ../java/src/net/i2p/router/web/HomeHelper.java:32 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:154 msgid "Help" msgstr "Hjälp" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:522 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 msgid "" "Your transport connection limits are automatically set based on your " "configured bandwidth." -msgstr "" -"Din transportförbindelses gränser sätts automatiskt baserat pÃ¥ din " -"konfigurerade bandbredd." +msgstr "Din transportförbindelses gränser sätts automatiskt baserat pÃ¥ din konfigurerade bandbredd." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 msgid "" "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and " "i2np.udp.maxConnections=nnn on the advanced configuration page." -msgstr "" -"För att Ã¥sidosätta dessa gränser, lägg till inställningarna i2np.ntcp." -"maxConnections = nnn och i2np.udp.maxConnections = nnn pÃ¥ den avancerade " -"inställningarsidan." +msgstr "För att Ã¥sidosätta dessa gränser, lägg till inställningarna i2np.ntcp.maxConnections = nnn och i2np.udp.maxConnections = nnn pÃ¥ den avancerade inställningarsidan." -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279 msgid "Definitions" msgstr "Definitioner" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:752 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1958 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 @@ -297,280 +300,266 @@ msgstr "Definitioner" msgid "Peer" msgstr "Peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 msgid "The remote peer, identified by router hash" msgstr "Fjärr peeren, identifierad med routerhash" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:753 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 msgid "Dir" msgstr "Mapp" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 msgid "Inbound connection" msgstr "Inkommande anslutning" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 msgid "Outbound connection" msgstr "UtgÃ¥ende anslutning" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 msgid "They offered to introduce us (help other peers traverse our firewall)" msgstr "De erbjöd att introducera oss (hjälp andra traversera vÃ¥r brandvägg)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 -msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "" -"Vi erbjöd att introducera dom (hjälp andra att traversera deras brandvägg)" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "" +"We offered to introduce them (help other peers traverse their firewall)" +msgstr "Vi erbjöd att introducera dom (hjälp andra att traversera deras brandvägg)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 msgid "How long since a packet has been received / sent" msgstr "Tiden sedan ett paket har mottagits / sänts" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:754 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1963 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178 msgid "Idle" msgstr "StillastÃ¥ende" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:755 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1968 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2183 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:157 msgid "In/Out" msgstr "In/Ut" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "" -"Den utjämnade ingÃ¥ende / utgÃ¥ende överföringshastigheten (KByte per sekund)" +msgstr "Den utjämnade ingÃ¥ende / utgÃ¥ende överföringshastigheten (KByte per sekund)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 msgid "How long ago this connection was established" msgstr "Tiden sedan denna anslutning etablerades" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:756 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1973 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:834 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2188 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:835 msgid "Up" msgstr "Uppe" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:757 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1975 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2190 msgid "Skew" msgstr "Tidsförvridning" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 msgid "The difference between the peer's clock and your own" msgstr "Skillnaden mellan peerens klocka och din" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 msgid "" "The congestion window, which is how many bytes can be sent without an " "acknowledgement" -msgstr "" -"Överbelastningsfönster, vilket är hur mÃ¥nga bytes kan sändas utan en " -"bekräftelse" +msgstr "Överbelastningsfönster, vilket är hur mÃ¥nga bytes kan sändas utan en bekräftelse" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 msgid "The number of sent messages awaiting acknowledgement" msgstr "Antalet skickade meddelanden som väntar pÃ¥ bekräftelse" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 msgid "The maximum number of concurrent messages to send" msgstr "Maximala antalet samtidiga meddelande som ska skickas" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 msgid "The number of pending sends which exceed congestion window" msgstr "Antalet försändningar som överstiger överbelastningsfönstret" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 msgid "The slow start threshold" msgstr "Den tröskel för lÃ¥ngsam start" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 msgid "The round trip time in milliseconds" msgstr "Tur och returtid i millisekunder" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1985 -msgid "Dev" -msgstr "Utvecklare" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 -msgid "The standard deviation of the round trip time in milliseconds" -msgstr "Standardavvikelsen för tur och retur i millisekunder" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The +#. standard deviation of the round trip time in +#. milliseconds")).append("<br>\n" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 msgid "The retransmit timeout in milliseconds" msgstr "Ã…tersändnings timeout i millisekunder" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 msgid "" "Current maximum send packet size / estimated maximum receive packet size " "(bytes)" -msgstr "" -"Nuvarande maximala försändningsstorlek för paket / uppskattad maximal " -"mottagningsstorlek för paket (bytes)" +msgstr "Nuvarande maximala försändningsstorlek för paket / uppskattad maximal mottagningsstorlek för paket (bytes)" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1992 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2207 msgid "TX" msgstr "TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 msgid "The total number of packets sent to the peer" msgstr "Det totala antalet paket som skickats till denna peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:759 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1994 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2209 msgid "RX" msgstr "RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 msgid "The total number of packets received from the peer" msgstr "Det totala antalet paket som har mottagits frÃ¥n denna peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1997 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2212 msgid "Dup TX" msgstr "DUP TX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 msgid "The total number of packets retransmitted to the peer" msgstr "Det totala antalet paket som Ã¥terutsänds till peer" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1999 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2214 msgid "Dup RX" msgstr "DUP RX" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 msgid "The total number of duplicate packets received from the peer" msgstr "Totalt antal dupplicerade paket mottagna frÃ¥n peeren" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:437 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 msgid "Service" msgstr "Service" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:439 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:454 msgid "WAN Common Interface Configuration" msgstr "Grundinställningar WAN inställningar" -#: ../../../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:455 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:471 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:476 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:96 msgid "Status" msgstr "Status" -#: ../../../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 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:456 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:462 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:472 msgid "Type" msgstr "Typ" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:442 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:448 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:457 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:463 msgid "Upstream" msgstr "Uppström" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:443 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:449 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464 msgid "Downstream" msgstr "Nerström" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:445 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 msgid "WAN PPP Connection" msgstr "WAN PPP anslutning" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:450 -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:458 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:465 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 msgid "External IP" msgstr "Extern IP" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:452 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467 msgid "Layer 3 Forwarding" msgstr "Lager 3 vidarebefordring" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:453 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:468 msgid "Default Connection Service" msgstr "Standard anslutningstjänst" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:455 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:470 msgid "WAN IP Connection" msgstr "WAN IP Anslutning" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:460 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 msgid "WAN Ethernet Link Configuration" msgstr "WAN Ethernet Link-konfiguration" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:473 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:488 msgid "Found Device" msgstr "Hittade enhet" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:490 msgid "Subdevice" msgstr "Subenhet " -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:496 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:511 msgid "UPnP Status" msgstr "UPnP Status" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:499 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:514 msgid "" "UPnP has been disabled; Do you have more than one UPnP Internet Gateway " "Device on your LAN ?" -msgstr "" -"UPnP har deaktiverats. Har du mer än en UPnP Internet Gateway enhet i ditt " -"LAN?" +msgstr "UPnP har deaktiverats. Har du mer än en UPnP Internet Gateway enhet i ditt LAN?" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:502 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:517 msgid "UPnP has not found any UPnP-aware, compatible device on your LAN." msgstr "UPnP har inte hittat nÃ¥gon UPnP-aware kompatibel enhet pÃ¥ ditt LAN." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:510 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:525 #, java-format msgid "The current external IP address reported by UPnP is {0}" msgstr "Den nuvarande externa IP-adress som rapporterats av UPnP är {0}" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:512 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:527 msgid "The current external IP address is not available." msgstr "Den aktuella externa IP-adress är inte tillgänglig." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:516 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:531 #, java-format msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec" -msgstr "" -"UPnP rapporterar att den högsta nedströms hastigheten är {0} bits / sekund" +msgstr "UPnP rapporterar att den högsta nedströms hastigheten är {0} bits / sekund" -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:518 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:533 #, java-format msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec" -msgstr "" -"UPnP rapporterar att den högsta uppströms hastigheten är {0} bits / sekund" +msgstr "UPnP rapporterar att den högsta uppströms hastigheten är {0} bits / sekund" #. {0} is TCP or UDP -#. {1,number,#####} prevents 12345 from being output as 12,345 in the English locale. +#. {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:527 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:541 #, java-format msgid "{0} port {1,number,#####} was successfully forwarded by UPnP." msgstr "{0} port {1,number,#####} var framgÃ¥ngsrikt vidarebefordrad av UPnP." -#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:529 +#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:543 #, java-format msgid "{0} port {1,number,#####} was not forwarded by UPnP." msgstr "{0} port {1,number,#####} blev inte vidarebefordrad av UPnP." -#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:162 +#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:200 msgid "UPnP is not enabled" msgstr "UPnP är inte aktiverat" @@ -585,12 +574,12 @@ msgid "NTCP connections" msgstr "NTCPanslutningar" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:748 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169 msgid "Limit" msgstr "Gräns" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:749 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1955 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170 msgid "Timeout" msgstr "Timeout" @@ -603,13 +592,13 @@ msgid "Backlogged?" msgstr "Släpar efter?" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:775 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2017 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2232 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Inbound" msgstr "Inkommande" #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:777 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2019 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2234 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:88 msgid "Outbound" msgstr "UtgÃ¥ende" @@ -619,143 +608,144 @@ msgstr "UtgÃ¥ende" msgid "peers" msgstr "peers" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1953 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168 msgid "UDP connections" msgstr "UDP-anslutningar" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1960 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2175 msgid "Sort by peer hash" msgstr "Sortera efter peer hash" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177 msgid "Direction/Introduction" msgstr "Riktning/Inledning" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2179 msgid "Sort by idle inbound" msgstr "Sortera efter stillastÃ¥ende inkommande" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1966 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181 msgid "Sort by idle outbound" msgstr "Sortera efter utgÃ¥ende utgÃ¥ende" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1969 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2184 msgid "Sort by inbound rate" msgstr "Sortera efter inkommande hastighet" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1971 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2186 msgid "Sort by outbound rate" msgstr "Sortera efter utgÃ¥ende hastighet" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1974 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2189 msgid "Sort by connection uptime" msgstr "Sortera efter anslutningsupptid" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1976 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2191 msgid "Sort by clock skew" msgstr "Sortera efter klockanvridning" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1979 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2194 msgid "Sort by congestion window" msgstr "Sortera efter överbelastningfönster" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1981 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2196 msgid "Sort by slow start threshold" msgstr "Sortera efter lÃ¥ngsam starttröskel" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1984 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2199 msgid "Sort by round trip time" msgstr "Sortera efter tur och returtid" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1986 -msgid "Sort by round trip time deviation" -msgstr "Sortera efter rundtur tidsavvikelse" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1988 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2203 msgid "Sort by retransmission timeout" msgstr "Sortera efter omsändningstimeout" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1991 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2206 msgid "Sort by outbound maximum transmit unit" msgstr "Sortera efter utgÃ¥ende maximal överföringsenhet" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1993 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2208 msgid "Sort by packets sent" msgstr "Sortera efter paket som skickats" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1995 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2210 msgid "Sort by packets received" msgstr "Sortera efter paket som mottagits" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1998 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2213 msgid "Sort by packets retransmitted" msgstr "Sortera efter paket som Ã¥terutsänds" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2000 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2215 msgid "Sort by packets received more than once" msgstr "Sortera efter paket som mottagits fler än en gÃ¥ng" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2021 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2236 msgid "We offered to introduce them" msgstr "Vi erbjöd oss att introducera dem" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2023 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2238 msgid "They offered to introduce us" msgstr "De erbjöd sig att introducera oss" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2027 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2242 msgid "Choked" msgstr "Strypt" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2035 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2250 msgid "1 fail" msgstr "1 misslyckande" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2037 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2252 #, java-format msgid "{0} fails" msgstr "{0} misslyckande" #. 1 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2043 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2258 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13 msgid "Banned" msgstr "Förbjudna" +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2310 +msgid "backlogged" +msgstr "backlogged" + #. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2390 msgid "SUMMARY" msgstr "SAMMANFATTNING" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:187 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:190 msgid "Dropping tunnel requests: Too slow" msgstr "Släpper tunnelförfrÃ¥gningar: För lÃ¥ngsam" #. don't even bother, since we are so overloaded locally -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:330 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:333 msgid "Dropping tunnel requests: Overloaded" msgstr "Släpper tunnelförfrÃ¥gningar: Överlastad" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:539 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:542 msgid "Rejecting tunnels: Request overload" msgstr "Avvisar tunnlar: Begäran överlastad" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:570 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:573 msgid "Rejecting tunnels: Connection limit" msgstr "Avvisar tunnlar: Anslutningsgräns" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:773 -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:794 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:777 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:798 msgid "Dropping tunnel requests: High load" msgstr "Släpper tunnelförfrÃ¥gningar: Hög belastning" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:786 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:877 msgid "Dropping tunnel requests: Queue time" msgstr "Släpper tunnelförfrÃ¥gningar: Kötid" #. Automatically generated pseudo-java for xgettext - do not edit -#. Translators may wish to translate a few of these, do not bother to translate all of them!! +#. Translators may wish to translate a few of these, do not bother to +#. translate all of them!! #: ../java/build/Countries.java:3 msgid "Anonymous Proxy" msgstr "Anonym proxy" @@ -1744,7 +1734,7 @@ msgstr "Zambia" msgid "Zimbabwe" msgstr "Zimbabwe" -#: ../java/src/net/i2p/router/web/CSSHelper.java:117 +#: ../java/src/net/i2p/router/web/CSSHelper.java:118 #: ../java/src/net/i2p/router/web/HomeHelper.java:33 #: ../java/strings/Strings.java:29 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:203 @@ -1784,7 +1774,7 @@ msgstr "Zimbabwe" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:209 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:214 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:232 @@ -1842,20 +1832,18 @@ msgid "Error updating the configuration - please see the error logs" msgstr "Fel vid uppdatering av konfiguration - se felloggar" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:297 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:322 msgid "Configuration saved successfully" msgstr "Konfigurationen sparades utan problem" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:63 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:427 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:299 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:324 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:96 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs" -msgstr "" -"Fel vid sparning ab konfigurationen (tillämpad men inte sparat) - se " -"felloggar" +msgstr "Fel vid sparning ab konfigurationen (tillämpad men inte sparat) - se felloggar" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:437 @@ -1940,9 +1928,8 @@ msgstr "Klientkonfigureringen sparad - kräver omstart för att träda i kraft." msgid "Bad client index." msgstr "Felaktigt klientindex" -#. #. What do we do here? -#. +#. #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:237 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:248 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:259 @@ -2030,9 +2017,9 @@ msgstr "Fel när plugin {0} startades" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:425 msgid "" -"Interface configuration saved successfully - restart required to take effect." -msgstr "" -"Gränssnittskonfiguration sparad - kräver omstart för att träda i kraft." +"Interface configuration saved successfully - restart required to take " +"effect." +msgstr "Gränssnittskonfiguration sparad - kräver omstart för att träda i kraft." #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:86 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:267 @@ -2129,7 +2116,7 @@ msgstr "Ta bort" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:25 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:854 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:855 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:419 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:439 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:455 @@ -2138,7 +2125,7 @@ msgstr "Ta bort valda" #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:26 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:27 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:873 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:874 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:417 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:425 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:437 @@ -2244,16 +2231,13 @@ msgstr "Loggkonfiguration sparades" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 msgid "" "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" -msgstr "" -"Lägg till ytterligare inställningar ovan. Exempel: net.i2p.router.tunnel=WARN" +msgstr "Lägg till ytterligare inställningar ovan. Exempel: net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:49 msgid "" -"Or put entries in the logger.config file. Example: logger.record.net.i2p." -"router.tunnel=WARN" -msgstr "" -"Eller placera poster i logger.config filen. Exempel: logger.record.net.i2p." -"router.tunnel=WARN" +"Or put entries in the logger.config file. Example: " +"logger.record.net.i2p.router.tunnel=WARN" +msgstr "Eller placera poster i logger.config filen. Exempel: logger.record.net.i2p.router.tunnel=WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:50 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" @@ -2263,7 +2247,7 @@ msgstr "Giltiga nivÃ¥er är DEBUG, INFO, WARN, ERROR, CRIT" #. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm #. but pink instead of yellow for WARN #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:106 +#: ../java/src/net/i2p/router/web/LogsHelper.java:114 msgid "CRIT" msgstr "CRIT" @@ -2272,23 +2256,23 @@ msgid "DEBUG" msgstr "DEBUG" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:108 +#: ../java/src/net/i2p/router/web/LogsHelper.java:116 msgid "ERROR" msgstr "ERROR" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:112 +#: ../java/src/net/i2p/router/web/LogsHelper.java:120 msgid "INFO" msgstr "INFO" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:68 -#: ../java/src/net/i2p/router/web/LogsHelper.java:110 +#: ../java/src/net/i2p/router/web/LogsHelper.java:118 msgid "WARN" msgstr "WARN" #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:88 #: ../java/src/net/i2p/router/web/HomeHelper.java:192 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:808 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:809 msgid "Remove" msgstr "Ta bort" @@ -2396,7 +2380,7 @@ msgstr "Statistik" msgid "Advanced" msgstr "Avancerad" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:54 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:53 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:31 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417 @@ -2409,97 +2393,105 @@ msgstr "Avancerad" msgid "Save changes" msgstr "Spara ändringar" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:136 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:135 msgid "Rechecking router reachability..." msgstr "Ã…terkontrollerar router nÃ¥barhet..." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 msgid "Updating IP address" msgstr "Uppdaterar IP-adress" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:195 msgid "Disabling TCP completely" msgstr "Inaktiverar TCP helt" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:198 -msgid "Updating inbound TCP address to" -msgstr "Uppdaterar ingÃ¥ende TCP address till" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, java-format +msgid "Updating TCP address to {0}" +msgstr "Uppdaterar TCP adress till {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:203 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:207 msgid "Disabling inbound TCP" msgstr "Inaktiverar inkommande TCP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:209 msgid "Updating inbound TCP address to auto" msgstr "Uppdaterar inkommande TCP-adress till auto" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:216 -msgid "Updating inbound TCP port to" -msgstr "Uppdaterar inkommande TCP-port till" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:222 +#, java-format +msgid "Updating TCP port to {0}" +msgstr "Uppdaterar TCP port till {0}" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:219 -msgid "Updating inbound TCP port to auto" -msgstr "Uppdaterar inkommande TCP-port till auto" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:224 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Warning - ports less than 1024 are not recommended" +msgstr "Varning - port-nummer lägre är 1024 inte lämpligt" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "Updating UDP port from" -msgstr "Uppdaterar UDP-port frÃ¥n" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:255 +msgid "Invalid port" +msgstr "Ogiltig port" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "to" -msgstr "till" +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:233 +msgid "Updating inbound TCP port to auto" +msgstr "Uppdaterar inkommande TCP-port till auto" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +#, java-format +msgid "Updating UDP port to {0}" +msgstr "Uppdaterar UDP port till {0}" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:272 msgid "Gracefully restarting into Hidden Router Mode" msgstr "Försiktig omstart till dolt routerläge" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:274 msgid "Gracefully restarting to exit Hidden Router Mode" msgstr "Försiktig omstart ut ur dolt routerläge" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:258 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:283 msgid "Enabling UPnP, restart required to take effect" msgstr "Aktiverar UPnP, omstart krävs för att ändringarna ska börja gälla" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:260 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:285 msgid "Disabling UPnP, restart required to take effect" msgstr "Avaktiverar UPnP, omstart krävs för att ändringarna ska börja gälla" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:293 msgid "Enabling laptop mode" msgstr "Aktiverar läge för bärbara datorer" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:270 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:295 msgid "Disabling laptop mode" msgstr "Inaktiverar läge för bärbara datorer" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:277 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:302 msgid "Disabling UDP" msgstr "Avaktivera UDP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:279 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:304 msgid "Enabling UDP" msgstr "Aktivera UDP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:286 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311 msgid "Requiring SSU introducers" msgstr "Kräver SSU introducerare" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:345 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369 +msgid "Invalid address" +msgstr "ogiltig adress" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 #, java-format msgid "The hostname or IP {0} is not publicly routable" msgstr "Värdnamnet eller IP {0} är inte publikt routningsbart " -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:348 -#, java-format -msgid "The hostname or IP {0} is invalid" -msgstr "Värdnamnet eller IP {0} är ogiltigt" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:374 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:399 msgid "Updating bandwidth share percentage" msgstr "Uppdaterar bandbreddsprocent för delning" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:404 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:429 msgid "Updated bandwidth limits" msgstr "Uppdaterade bandbreddsgräns" @@ -2586,7 +2578,7 @@ msgstr "Konfiguration sparad utan fel." #. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34 -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:175 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:393 msgid "Shutdown immediately" msgstr "Stäng ner omedelbart" @@ -2608,7 +2600,7 @@ msgstr "Starta om omedelbart" #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns #. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:163 msgid "Restart" msgstr "Omstart" @@ -2634,113 +2626,122 @@ msgstr "Stänger av om {0}" msgid "Restart in {0}" msgstr "Omstart om {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:169 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:391 msgid "Shutdown gracefully" msgstr "Graciös avstängning" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:173 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:174 msgid "Graceful shutdown initiated" msgstr "Graciös avstängning initierad" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 msgid "Shutdown immediately! boom bye bye bad bwoy" msgstr "Stänger av omedelbart! Pangbom hejsvejs stygging" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:179 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:180 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:395 msgid "Cancel graceful shutdown" msgstr "Avbryt försiktig avstängning" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:181 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 msgid "Graceful shutdown cancelled" msgstr "Försiktig avstängning avbruten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:182 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:183 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:407 msgid "Graceful restart" msgstr "Försiktig omstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:187 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 msgid "Graceful restart requested" msgstr "Försiktig omstart ombedd" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:188 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:189 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:409 msgid "Hard restart" msgstr "HÃ¥rd omstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:193 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 msgid "Hard restart requested" msgstr "Försiktig omstart ombedd" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 msgid "Rekey and Restart" msgstr "Skapa nya nycklar och starta om" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:195 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:196 msgid "Rekeying after graceful restart" msgstr "Skapar nya nycklar efter försiktig omstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:198 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 msgid "Rekey and Shutdown" msgstr "Skapa nya nycklar och stäng av" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:200 msgid "Rekeying after graceful shutdown" msgstr "Skapar nya nycklar efter försiktig avstängning" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:202 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:203 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:435 msgid "Run I2P on startup" msgstr "Kör I2P vid start" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:204 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:205 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:437 msgid "Don't run I2P on startup" msgstr "Kör inte I2P vid start" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:206 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:455 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:207 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 msgid "Dump threads" msgstr "Dumpa trÃ¥dar" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:213 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 #, java-format msgid "Threads dumped to {0}" msgstr "TrÃ¥dar dumpade till {0}" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:214 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:463 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:469 msgid "View console on startup" msgstr "Visa konsol vid uppstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:216 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 msgid "Console is to be shown on startup" msgstr "Konsolen ska visas vid uppstart" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471 msgid "Do not view console on startup" msgstr "Visa inte konsolen vid start" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:219 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:220 msgid "Console is not to be shown on startup" msgstr "Konsolen ska inte visas vid start" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:228 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:457 +msgid "Force GC" +msgstr "Tvinga GC" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223 +msgid "Full garbage collection requested" +msgstr "Fullständig garbage collection begärd" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:232 msgid "Service installed" msgstr "Tjänst installerad" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:230 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:234 msgid "Warning: unable to install the service" msgstr "Varning: kunde inte installera tjänsten" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:237 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:241 msgid "Service removed" msgstr "Tjänst borttagen" -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:239 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:243 msgid "Warning: unable to remove the service" msgstr "Varning: kunde ej ta bort tjänsten" @@ -2760,9 +2761,7 @@ msgstr "Full statistik avaktiverad - kräver omstart för att träda i kraft" msgid "" "Graph list updated, may take up to 60s to be reflected here and on the <a " "href=\"graphs.jsp\">Graphs Page</a>" -msgstr "" -"Diagramlistan uppdateras, det kan ta upp till 60 sekunder innan det " -"Ã¥terspeglas här och pÃ¥ <a href=\"graphs.jsp\">diagramsidan</a>" +msgstr "Diagramlistan uppdateras, det kan ta upp till 60 sekunder innan det Ã¥terspeglas här och pÃ¥ <a href=\"graphs.jsp\">diagramsidan</a>" #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:28 msgid "Save order" @@ -2827,7 +2826,8 @@ msgstr "Flyttad" msgid "Saved order of sections." msgstr "Sparar ordningen pÃ¥ valen " -#. the count isn't really correct anyway, since we don't check for actual changes +#. the count isn't really correct anyway, since we don't check for actual +#. changes #. addFormNotice("Updated settings for " + updated + " pools."); #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:136 msgid "Updated settings for all pools." @@ -2838,13 +2838,11 @@ msgid "Exploratory tunnel configuration saved successfully." msgstr "Konfiguration för förberadande tunnlar har sparats." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:143 -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:37 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:51 msgid "" "Error saving the configuration (applied but not saved) - please see the " "error logs." -msgstr "" -"Problem: konfiguration för förberadande tunnlar kunde ej sparas (träder dock " -"i kraft nu) - kontrollera felloggarna." +msgstr "Problem: konfiguration för förberadande tunnlar kunde ej sparas (träder dock i kraft nu) - kontrollera felloggarna." #. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 @@ -2881,8 +2879,7 @@ msgstr "Anonymitetsvarning - Inställningar inkluderar tunnlar med 1-hopp." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:83 msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "" -"Prestantavarning - Inställningar inkluderar tunnlar med väldigt mÃ¥nga hopp." +msgstr "Prestantavarning - Inställningar inkluderar tunnlar med väldigt mÃ¥nga hopp." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:86 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." @@ -2917,91 +2914,95 @@ msgstr "Inkommande alternativ" msgid "Outbound options" msgstr "UtgÃ¥ende alternativ" -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:32 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:46 msgid "Theme change saved." msgstr "Temaförändring sparad." -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:48 msgid "Refresh the page to view." msgstr "Uppdatera sidan för att se." -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25 +msgid "Set theme universally across all apps" +msgstr "Använd temat i alla program" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Arabic" msgstr "Arabiska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Czech" msgstr "Tjeckiska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:62 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:69 msgid "Danish" msgstr "Danska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "English" msgstr "Engelska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Estonian" msgstr "Estland" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Finnish" msgstr "Finska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "German" msgstr "Tyska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Greek" msgstr "Grekiska " -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:63 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:70 msgid "Spanish" msgstr "Spanska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Dutch" msgstr "Nederländska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "French" msgstr "Franska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Hungarian" msgstr "Ungerska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Italian" msgstr "Italienska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:64 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:71 msgid "Polish" msgstr "Polska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Portuguese" msgstr "Portugisiska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Russian" msgstr "Ryska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:65 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:72 msgid "Swedish" msgstr "Svenska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Chinese" msgstr "Kinesiska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Ukrainian" msgstr "Ukrainska" -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:66 +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:73 msgid "Vietnamese" msgstr "Vietnamesiska" @@ -3011,8 +3012,7 @@ msgstr "Uppdatering tillgänglig, försöker ladda ner nu" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:105 msgid "Update available, click button on left to download" -msgstr "" -"Uppdatering tillgänglig, klicka pÃ¥ knappen till vänster för att ladda ner" +msgstr "Uppdatering tillgänglig, klicka pÃ¥ knappen till vänster för att ladda ner" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 msgid "No update available" @@ -3046,7 +3046,7 @@ msgid "Updating refresh frequency to {0}" msgstr "Uppdaterar uppdateringsfrekvensen till {0}" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:151 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:112 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:111 #: ../java/src/net/i2p/router/web/GraphHelper.java:361 msgid "Never" msgstr "Aldrig" @@ -3069,19 +3069,19 @@ msgstr "Uppdaterar nycklar med tillit till." msgid "Updating unsigned update URL to {0}" msgstr "Uppdaterar osignerad uppdaterings URL till {0}" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:114 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:113 msgid "Every" msgstr "Alltid" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131 msgid "Notify only" msgstr "Berätta endast" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:139 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:138 msgid "Download and verify only" msgstr "Ladda ner och kontrollera endast" -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:147 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:146 msgid "Download, verify, and restart" msgstr "Ladda ner, kontrollera och starta om" @@ -3089,9 +3089,7 @@ msgstr "Ladda ner, kontrollera och starta om" msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." -msgstr "" -"Ogiltigt formulärdata, förmodligen för att du använde \"back\" eller \"reload" -"\" knappen i din webbläsare. Vänligen skicka om." +msgstr "Ogiltigt formulärdata, förmodligen för att du använde \"back\" eller \"reload\" knappen i din webbläsare. Vänligen skicka om." #: ../java/src/net/i2p/router/web/GraphHelper.java:159 msgid "Combined bandwidth graph" @@ -3266,7 +3264,7 @@ msgid "I2P Router Help" msgstr "I2P Router Hjälp" #: ../java/src/net/i2p/router/web/HomeHelper.java:33 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:148 msgid "Router Console" msgstr "Router Konsol" @@ -3293,10 +3291,8 @@ msgstr "Bugg rapporter" msgid "Bug tracker" msgstr "Bugg tracker" -#: ../java/src/net/i2p/router/web/HomeHelper.java:40 -msgid "The Italian Bittorrent Resource" -msgstr "The Italian Bittorrent Resource" - +#. "colombo-bt.i2p" + S + _x("The Italian Bittorrent Resource") + S + "http +#. ://colombo-bt.i2p/" + S + I + "colomboicon.png" + S + #: ../java/src/net/i2p/router/web/HomeHelper.java:41 msgid "Dev Forum" msgstr "Utv Forum" @@ -3338,9 +3334,7 @@ msgstr "Forum" msgid "" "A public anonymous Git hosting site - supports pulling via Git and HTTP and " "pushing via SSH" -msgstr "" -"En publik anonym Git hostnings site - stödje pulling via Git och HTTP och " -"pushing vis SSH" +msgstr "En publik anonym Git hostnings site - stödje pulling via Git och HTTP och pushing vis SSH" #: ../java/src/net/i2p/router/web/HomeHelper.java:46 msgid "Anonymous Git Hosting" @@ -3367,7 +3361,8 @@ msgstr "Teknisk dokumentation" msgid "Debian and Tahoe-LAFS repositories" msgstr "Debian och Tahoe-LAFS programarkiv" -#. _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "education.png" + S + +#. _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S +#. + I + "education.png" + S + #: ../java/src/net/i2p/router/web/HomeHelper.java:50 msgid "killyourtv.i2p" msgstr "killyourtv.i2p" @@ -3406,7 +3401,7 @@ msgstr "Project Website" #: ../java/src/net/i2p/router/web/HomeHelper.java:56 msgid "I2P Network Statistics" -msgstr "I2P Nätverksstatistik " +msgstr "I2P Nätverksstatistik" #: ../java/src/net/i2p/router/web/HomeHelper.java:57 msgid "Technical Docs" @@ -3435,11 +3430,10 @@ msgstr "HTTP proxyn är inte uppe" #: ../java/src/net/i2p/router/web/HomeHelper.java:103 #, java-format msgid "Your browser is not properly configured to use the HTTP proxy at {0}" -msgstr "" -"Din webbläsare är inte korrekt konfigurerad för att använda HTTP-proxy pÃ¥ {0}" +msgstr "Din webbläsare är inte korrekt konfigurerad för att använda HTTP-proxy pÃ¥ {0}" #: ../java/src/net/i2p/router/web/HomeHelper.java:194 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:810 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:811 msgid "Name" msgstr "Namn" @@ -3448,20 +3442,20 @@ msgid "URL" msgstr "URL" #: ../java/src/net/i2p/router/web/HomeHelper.java:214 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:856 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:857 msgid "Add" msgstr "Lägg till " -#: ../java/src/net/i2p/router/web/LogsHelper.java:29 -#: ../java/src/net/i2p/router/web/LogsHelper.java:72 +#: ../java/src/net/i2p/router/web/LogsHelper.java:32 +#: ../java/src/net/i2p/router/web/LogsHelper.java:79 msgid "File location" msgstr "Filposition" -#: ../java/src/net/i2p/router/web/LogsHelper.java:69 +#: ../java/src/net/i2p/router/web/LogsHelper.java:76 msgid "File not found" msgstr "Fil inte funnen" -#: ../java/src/net/i2p/router/web/LogsHelper.java:87 +#: ../java/src/net/i2p/router/web/LogsHelper.java:94 msgid "No log messages" msgstr "Inga logmeddelande" @@ -3742,7 +3736,8 @@ msgstr "Plugin frÃ¥n {0} är korrupt" msgid "Plugin from {0} does not contain the required configuration file" msgstr "Plugin frÃ¥n {0} innehÃ¥ller inte deb konfiguration som krävs" -#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' +#. + signer + "</b>"); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225 #, java-format msgid "Plugin from {0} contains an invalid key" @@ -3779,9 +3774,7 @@ msgstr "Denna plugin kräver Java version {0} eller högre" msgid "" "Downloaded plugin is for new installs only, but the plugin is already " "installed" -msgstr "" -"Nedladdad plugin är för nya endast för nya installationer, men denna plugin " -"är redan installerad" +msgstr "Nedladdad plugin är för nya endast för nya installationer, men denna plugin är redan installerad" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:329 msgid "Installed plugin does not contain the required configuration file" @@ -3789,8 +3782,7 @@ msgstr "Installerad plugin innehÃ¥ller inte den konfigurations som krävs" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:337 msgid "Signature of downloaded plugin does not match installed plugin" -msgstr "" -"Signaturen av nerladdad plugin matchar inte den plugin som är installerad" +msgstr "Signaturen av nerladdad plugin matchar inte den plugin som är installerad" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344 #, java-format @@ -3828,8 +3820,7 @@ msgstr "Insticksprogrammet kommer att installeras vid nästa omstart." #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:410 msgid "Plugin is for upgrades only, but the plugin is not installed" -msgstr "" -"Plugin är endast för uppdateringar, men denna plugin är inte installerad" +msgstr "Plugin är endast för uppdateringar, men denna plugin är inte installerad" #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:423 #, java-format @@ -4039,9 +4030,7 @@ msgstr "kap." msgid "" "peak throughput (bytes per second) over a 1 minute period that the peer has " "sustained in a single tunnel" -msgstr "" -"topp genomströmning (bytes per sekund) under en period av1 minut som " -"klienten har upprätthÃ¥llit i en tunnel" +msgstr "topp genomströmning (bytes per sekund) under en period av1 minut som klienten har upprätthÃ¥llit i en tunnel" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:282 msgid "speed" @@ -4099,57 +4088,55 @@ msgstr "Förbjuden till omstart eller {0}" msgid "unban now" msgstr "unban nu" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:313 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:314 msgid "Bandwidth usage" msgstr "Bandbreddsanvändning" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:323 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:324 msgid "Outbound Bytes/sec" msgstr "UtgÃ¥ende Bytes/sek" #. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); -#: ../java/src/net/i2p/router/web/StatSummarizer.java:325 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:326 msgid "Inbound Bytes/sec" msgstr "Inkommande Bytes/sek" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 #: ../java/src/net/i2p/router/web/StatSummarizer.java:329 #: ../java/src/net/i2p/router/web/StatSummarizer.java:330 #: ../java/src/net/i2p/router/web/StatSummarizer.java:331 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 msgid "Bps" msgstr "Bps" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:328 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 msgid "Out average" msgstr "Genomsnittligt ut" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:329 -#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:150 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:332 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:155 msgid "max" msgstr "max" -#: ../java/src/net/i2p/router/web/StatSummarizer.java:330 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:331 msgid "In average" msgstr "Genomsnittligt in" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:57 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 msgid "GO" msgstr "GÃ…" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:60 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 msgid "Statistics gathered during this router's uptime" msgstr "Statistik som samlats in under routerns driftstid" -#: ../java/src/net/i2p/router/web/StatsGenerator.java:63 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 msgid "" "The data gathered is quantized over a 1 minute period, so should just be " "used as an estimate." -msgstr "" -"De uppgifter som samlats in är kvantiserade över en 1 minuts period, sÃ¥ de " -"skall bara användas som en uppskattning." +msgstr "De uppgifter som samlats in är kvantiserade över en 1 minuts period, sÃ¥ de skall bara användas som en uppskattning." -#: ../java/src/net/i2p/router/web/StatsGenerator.java:64 +#: ../java/src/net/i2p/router/web/StatsGenerator.java:65 msgid "These statistics are primarily used for development and debugging." msgstr "Statistiken används främst för utveckling och felsökning." @@ -4170,12 +4157,14 @@ msgstr "Glidande medelvärde, händelser per period" msgid "Highest events per period" msgstr "Högsta händelser per period" -#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && (curFreq.getAverageEventsPerPeriod() > 0) ) { +#. if (showAll && (curFreq.getMaxAverageEventsPerPeriod() > 0) && +#. (curFreq.getAverageEventsPerPeriod() > 0) ) { #. buf.append("(current is "); #. buf.append(pct(curFreq.getAverageEventsPerPeriod()/curFreq.getMaxAverageEventsPerPeriod())); #. buf.append(" of max)"); #. } -#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min "); +#. buf.append(" <i>avg interval between updates:</i> +#. (").append(num(curFreq.getAverageInterval())).append("ms, min "); #. buf.append(num(curFreq.getMinAverageInterval())).append("ms)"); #: ../java/src/net/i2p/router/web/StatsGenerator.java:136 msgid "Lifetime average events per period" @@ -4259,9 +4248,7 @@ msgstr "Hjälp & FAQ" msgid "" "Configure startup of clients and webapps (services); manually start dormant " "services" -msgstr "" -"Konfigurera start av klienter och webbappar (tjänster), starta vilande " -"tjänster manuellt" +msgstr "Konfigurera start av klienter och webbappar (tjänster), starta vilande tjänster manuellt" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 msgid "I2P Services" @@ -4339,9 +4326,7 @@ msgstr "Allmänt" msgid "" "Your Local Identity is your unique I2P router identity, similar to an ip " "address but tailored to I2P. " -msgstr "" -"Din lokala identitet är din unika I2P routers identitet, liknande en ip-" -"adress men anpassad för I2P." +msgstr "Din lokala identitet är din unika I2P routers identitet, liknande en ip-adress men anpassad för I2P." #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 msgid "Never disclose this to anyone, as it can reveal your real world ip." @@ -4381,9 +4366,7 @@ msgstr "Upptid" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341 msgid "" "Help with configuring your firewall and router for optimal I2P performance" -msgstr "" -"Hjälp med att konfigurera din brandvägg och router för optimal prestanda för " -"I2P" +msgstr "Hjälp med att konfigurera din brandvägg och router för optimal prestanda för I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:356 msgid "Configure I2P Updates" @@ -4419,7 +4402,7 @@ msgstr "Hög kapacitet" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413 msgid "The number of peers available for network database inquiries" -msgstr "Antal peers tillgängliga för nätverksdatabas förfrÃ¥gningar" +msgstr "Anta tillgängliga för nätverksdatabasförfrÃ¥gningar" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422 msgid "The total number of peers in our network database" @@ -4447,9 +4430,9 @@ msgstr "Använda" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:496 msgid "" -"Used for building and testing tunnels, and communicating with floodfill peers" -msgstr "" -"Används för att bygga och testa tunnlar och kommunicera med floodfill peers" +"Used for building and testing tunnels, and communicating with floodfill " +"peers" +msgstr "Används för att bygga och testa tunnlar och kommunicera med floodfill peers" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:499 msgid "Exploratory" @@ -4457,9 +4440,7 @@ msgstr "Utforskande" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:505 msgid "Tunnels we are using to provide or access services on the network" -msgstr "" -"Tunnlar vi använder för att tillhandahÃ¥lla eller fÃ¥ tillgÃ¥ng till tjänster i " -"nätverket" +msgstr "Tunnlar vi använder för att tillhandahÃ¥lla eller fÃ¥ tillgÃ¥ng till tjänster i nätverket" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:514 msgid "" @@ -4475,9 +4456,7 @@ msgstr "Deltagande" msgid "" "The ratio of tunnel hops we provide to tunnel hops we use - a value greater " "than 1.00 indicates a positive contribution to the network" -msgstr "" -"FörhÃ¥llandet mellan tunneln hopp ger vi tillhandahÃ¥ller och använder - ett " -"värde större än 1,00 indikerar ett positivt bidrag till nätverket" +msgstr "FörhÃ¥llandet mellan tunneln hopp ger vi tillhandahÃ¥ller och använder - ett värde större än 1,00 indikerar ett positivt bidrag till nätverket" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:526 msgid "Share ratio" @@ -4501,8 +4480,7 @@ msgstr "Arbetsfördröjning" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555 msgid "Indicates how quickly outbound messages to other I2P routers are sent" -msgstr "" -"Indikerar hur snabbt utÃ¥tgÃ¥endemeddelanden till andra I2P routers sänds " +msgstr "Indikerar hur snabbt utÃ¥tgÃ¥endemeddelanden till andra I2P routers sänds " #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558 msgid "Message delay" @@ -4575,9 +4553,7 @@ msgstr "Bakom brandvägg" msgid "" "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " "restart" -msgstr "" -"ERR-UDP port används redan - Sätt i2np.udp.internalPort=xxxx i advancerade " -"inställningar och starta om" +msgstr "ERR-UDP port används redan - Sätt i2np.udp.internalPort=xxxx i advancerade inställningar och starta om" #: ../java/src/net/i2p/router/web/SummaryHelper.java:181 msgid "ERR-No Active Peers, Check Network Connection and Firewall" @@ -4648,7 +4624,8 @@ msgstr "Hämtat {0} uppdateringar" #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC" #. <br> is optional, to help the browser make the lines even in the button -#. If the translation is shorter than the English, you should probably not include <br> +#. If the translation is shorter than the English, you should probably not +#. include <br> #: ../java/src/net/i2p/router/web/SummaryHelper.java:684 #, java-format msgid "Download Unsigned<br>Update {0}" @@ -4666,45 +4643,45 @@ msgstr "Kontrollera nätverksanslutningen och NAT/brandvägg " msgid "Reseed" msgstr "Reseed" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:812 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:813 msgid "Order" msgstr "Ordning" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:829 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:830 msgid "Top" msgstr "Top" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:842 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:843 msgid "Down" msgstr "Ner" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:847 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:848 msgid "Bottom" msgstr "Botten" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:859 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:860 msgid "Select a section to add" msgstr "Välj ett avsnitt för att lägga till det" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:118 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:121 #, java-format msgid "events in {0}" msgstr "händelser i {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:120 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:123 #, java-format msgid "averaged for {0}" msgstr "genomsnittad för {0}" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:130 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:133 msgid "Events per period" msgstr "Händelser per period" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:149 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154 msgid "avg" msgstr "genomsnitt" -#: ../java/src/net/i2p/router/web/SummaryRenderer.java:151 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:156 msgid "now" msgstr "nu" @@ -5163,7 +5140,8 @@ msgstr "konfigurera bandbredd " msgid "Router is down" msgstr "Routern är nere" -#. We have intl defined when this is included, but not when compiled standalone. +#. We have intl defined when this is included, but not when compiled +#. standalone. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:291 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:291 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317 @@ -5261,9 +5239,7 @@ msgstr "Bandbreddsbegränsare" msgid "" "I2P will work best if you configure your rates to match the speed of your " "internet connection." -msgstr "" -"I2P fungerar bäst om du konfigurerar hastigheter som överensstämmer med din " -"internetuppkoplings hastighet." +msgstr "I2P fungerar bäst om du konfigurerar hastigheter som överensstämmer med din internetuppkoplings hastighet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361 msgid "KBps In" @@ -5296,16 +5272,12 @@ msgstr "I2P kräver Ã¥tminstone 12KBps att aktivera delning. " msgid "" "Please enable sharing (participating in tunnels) by configuring more " "bandwidth. " -msgstr "" -"Snälla slÃ¥ pÃ¥ delning (deltagande i andras tunnlar) genom att konfigurera " -"mer bandbredd." +msgstr "Snälla slÃ¥ pÃ¥ delning (deltagande i andras tunnlar) genom att konfigurera mer bandbredd." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:404 msgid "" "It improves your anonymity by creating cover traffic, and helps the network." -msgstr "" -"Det förbättrar din anonymitet genom att dölja din trafik med andras trafik " -"och hjälper nätverket." +msgstr "Det förbättrar din anonymitet genom att dölja din trafik med andras trafik och hjälper nätverket." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406 #, java-format @@ -5316,9 +5288,7 @@ msgstr "Du har konfigurerat I2P att dela {0} kbps." msgid "" "The higher the share bandwidth the more you improve your anonymity and help " "the network." -msgstr "" -"Desto högre bandbredd som delas ju mer du förbättras din anonymitet och " -"hjälpen till nätverket." +msgstr "Desto högre bandbredd som delas ju mer du förbättras din anonymitet och hjälpen till nätverket." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 msgid "Advanced network configuration page" @@ -5377,8 +5347,7 @@ msgstr "Klientkonfiguration" msgid "" "The Java clients listed below are started by the router and run in the same " "JVM." -msgstr "" -"Java klienter som anges nedan startade av routern och körs i samma JVM." +msgstr "Java klienter som anges nedan startade av routern och körs i samma JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:420 msgid "To change other client options, edit the file" @@ -5442,8 +5411,7 @@ msgstr "Standardinställningarna fungerar för de flesta." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:501 msgid "Any changes made here must also be configured in the external client." -msgstr "" -"Alla ändringar som görs här mÃ¥ste ocksÃ¥ konfigureras i den externa klienten." +msgstr "Alla ändringar som görs här mÃ¥ste ocksÃ¥ konfigureras i den externa klienten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:503 msgid "Many clients do not support SSL or authorization." @@ -5457,17 +5425,11 @@ msgstr "WebApp inställningar" msgid "" "The Java web applications listed below are started by the webConsole client " "and run in the same JVM as the router. They are usually web applications " -"accessible through the router console. They may be complete applications (e." -"g. i2psnark),front-ends to another client or application which must be " +"accessible through the router console. They may be complete applications " +"(e.g. i2psnark),front-ends to another client or application which must be " "separately enabled (e.g. susidns, i2ptunnel), or have no web interface at " "all (e.g. addressbook)." -msgstr "" -"Java webbapplikationer som anges nedan startas av webConsole klienten och " -"körs i samma JVM som routern. Vanligtvis är det webbapplikationer som är " -"tillgängliga genom routern konsolen. De kan vara kompletta program (t.ex. " -"i2psnark), gränssnitt till en annan klient eller tillämpningar som mÃ¥ste " -"aktiveras separat (t.ex. susidns, i2ptunnel), eller som saknar " -"webbgränssnitt över huvud taget (t.ex. adressbok)." +msgstr "Java webbapplikationer som anges nedan startas av webConsole klienten och körs i samma JVM som routern. Vanligtvis är det webbapplikationer som är tillgängliga genom routern konsolen. De kan vara kompletta program (t.ex. i2psnark), gränssnitt till en annan klient eller tillämpningar som mÃ¥ste aktiveras separat (t.ex. susidns, i2ptunnel), eller som saknar webbgränssnitt över huvud taget (t.ex. adressbok)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:517 msgid "" @@ -5475,11 +5437,7 @@ msgid "" "directory; however the .war file and web app will reappear when you update " "your router to a newer version, so disabling the web app here is the " "preferred method." -msgstr "" -"En webbapp kan ocksÃ¥ inaktiveras genom att ta bort .war filen frÃ¥n webapps " -"katalogen. Men .war filen och webbappen visas igen när du uppdaterar din " -"router till en nyare version, sÃ¥ att inaktivera webbapp här är den bästa " -"metoden." +msgstr "En webbapp kan ocksÃ¥ inaktiveras genom att ta bort .war filen frÃ¥n webapps katalogen. Men .war filen och webbappen visas igen när du uppdaterar din router till en nyare version, sÃ¥ att inaktivera webbapp här är den bästa metoden." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:531 msgid "Plugin Configuration" @@ -5537,8 +5495,7 @@ msgstr "Router-nyckelringen används för att dekryptera krypterade leaseSets." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:402 msgid "" "The keyring may contain keys for local or remote encrypted destinations." -msgstr "" -"Nyckelringen kan innehÃ¥lla nycklar för krypterad lokala eller fjärrmÃ¥l ." +msgstr "Nyckelringen kan innehÃ¥lla nycklar för krypterad lokala eller fjärrmÃ¥l ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:408 msgid "Manual Keyring Addition" @@ -5591,9 +5548,7 @@ msgstr "Logginläggformat" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 msgid "" "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" -msgstr "" -"(använd 'd' = daum, 'c' = klass, 't' = trÃ¥d, 'p' = prioritet, 'm' = " -"meddelande)" +msgstr "(använd 'd' = daum, 'c' = klass, 't' = trÃ¥d, 'p' = prioritet, 'm' = meddelande)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 msgid "Log date format" @@ -5603,9 +5558,7 @@ msgstr "Logg datumformat" msgid "" "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " "= millisecond)" -msgstr "" -"('MM' = mÃ¥nad, 'dd' = dag, 'HH' = timme, 'mm' = minut, 'ss' = sekund, 'SSS' " -"= millisekund)" +msgstr "('MM' = mÃ¥nad, 'dd' = dag, 'HH' = timme, 'mm' = minut, 'ss' = sekund, 'SSS' = millisekund)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:375 msgid "Max log file size" @@ -5619,9 +5572,7 @@ msgstr "Standard loggnings nivÃ¥ " msgid "" "(DEBUG and INFO are not recommended defaults, as they will drastically slow " "down your router)" -msgstr "" -"(DEBUG och INFO rekommenderas inte som standard, eftersom de drastiskt " -"kommer att sakta ner din router)" +msgstr "(DEBUG och INFO rekommenderas inte som standard, eftersom de drastiskt kommer att sakta ner din router)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:385 msgid "Log level overrides" @@ -5709,9 +5660,7 @@ msgstr "Ã…tgärd när IP-adressen ändras" msgid "" "Laptop mode - Change router identity and UDP port when IP changes for " "enhanced anonymity" -msgstr "" -"Laptop-läge - Ändra routeridentitet och UDP-port när IP-adressen ändras, för " -"ökad anonymitet" +msgstr "Laptop-läge - Ändra routeridentitet och UDP-port när IP-adressen ändras, för ökad anonymitet" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:464 msgid "Experimental" @@ -5753,9 +5702,7 @@ msgstr "om vi inte är stoppade av brandvägg" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:504 msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "" -"Använd alltid automatiskt uptäckta IP adresser (som inte finns bakom en " -"brandvägg)" +msgstr "Använd alltid automatiskt uptäckta IP adresser (som inte finns bakom en brandvägg)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:514 msgid "Disable inbound (Firewalled)" @@ -5764,9 +5711,7 @@ msgstr "Inaktivera inkommande (bakom brandvägg)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:520 msgid "" "(select only if behind a firewall that throttles or blocks outbound TCP)" -msgstr "" -"(välj endast om du är bakom en brandvägg som stryper eller blockerar " -"utgÃ¥ende TCP)" +msgstr "(välj endast om du är bakom en brandvägg som stryper eller blockerar utgÃ¥ende TCP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:522 msgid "Externally reachable TCP port" @@ -5788,9 +5733,7 @@ msgstr "Anteckningar" msgid "" "a) Do not reveal your port numbers to anyone! b) Changing these settings " "will restart your router." -msgstr "" -"a) avslöja inte dit portnummer för nÃ¥gon! b) om dessa inställningar ändras " -"kommer din router starta om." +msgstr "a) avslöja inte dit portnummer för nÃ¥gon! b) om dessa inställningar ändras kommer din router starta om." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:547 msgid "Configuration Help" @@ -5800,37 +5743,28 @@ msgstr "Konfigurationshjälp" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:598 msgid "" "While I2P will work fine behind most firewalls, your speeds and network " -"integration will generally improve if the I2P port is forwarded for both UDP " -"and TCP." -msgstr "" -"Även om I2P fungera bra bakom de flesta brandväggar kommer din hastighet och " -"nätverksintegrering allmänt förbättra om I2P porten vidarebefordrar bÃ¥de UDP " -"och TCP." +"integration will generally improve if the I2P port is forwarded for both UDP" +" and TCP." +msgstr "Även om I2P fungera bra bakom de flesta brandväggar kommer din hastighet och nätverksintegrering allmänt förbättra om I2P porten vidarebefordrar bÃ¥de UDP och TCP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:551 msgid "" -"If you can, please poke a hole in your firewall to allow unsolicited UDP and " -"TCP packets to reach you." -msgstr "" -"Om du kan, du öppna ett hÃ¥l i din brandvägg för att tillÃ¥ta att icke begärda " -"UDP och TCP-paket kan nÃ¥ dig." +"If you can, please poke a hole in your firewall to allow unsolicited UDP and" +" TCP packets to reach you." +msgstr "Om du kan, du öppna ett hÃ¥l i din brandvägg för att tillÃ¥ta att icke begärda UDP och TCP-paket kan nÃ¥ dig." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:553 msgid "" "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " "punching with \"SSU introductions\" to relay traffic." -msgstr "" -"Om du inte kan, sÃ¥ stöder I2P UPnP (Universal Plug and Play) och UDP " -"hÃ¥lsöppning med \"SSU introductions \" för att förmedla trafiken." +msgstr "Om du inte kan, sÃ¥ stöder I2P UPnP (Universal Plug and Play) och UDP hÃ¥lsöppning med \"SSU introductions \" för att förmedla trafiken." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:555 msgid "" -"Most of the options above are for special situations, for example where UPnP " -"does not work correctly, or a firewall not under your control is doing harm." -msgstr "" -"De flesta av alternativen ovan gäller för särskilda situationer, exempelvis " -"när UPnP inte fungerar korrekt, eller en brandvägg som inte är under din " -"kontroll gör skada." +"Most of the options above are for special situations, for example where UPnP" +" does not work correctly, or a firewall not under your control is doing " +"harm." +msgstr "De flesta av alternativen ovan gäller för särskilda situationer, exempelvis när UPnP inte fungerar korrekt, eller en brandvägg som inte är under din kontroll gör skada." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:557 msgid "Certain firewalls such as symmetric NATs may not work well with I2P." @@ -5840,9 +5774,7 @@ msgstr "Vissa brandväggar sÃ¥som symmetriska NAT kan fungerar dÃ¥ligt med I2P. msgid "" "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " "the external IP address and forward ports." -msgstr "" -"UPnP används för att kommunicera med Internet Gateway-enheter (IGDs) för att " -"upptäcka den externa IP-adressen och att vidarebefordra portar" +msgstr "UPnP används för att kommunicera med Internet Gateway-enheter (IGDs) för att upptäcka den externa IP-adressen och att vidarebefordra portar" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:568 msgid "UPnP support is beta, and may not work for any number of reasons" @@ -5880,9 +5812,7 @@ msgstr "Granska UPnP statusen här." msgid "" "UPnP may be enabled or disabled above, but a change requires a router " "restart to take effect." -msgstr "" -"UPnP kan aktiveras eller inaktiveras ovan, men förändring kräver att routern " -"startars om." +msgstr "UPnP kan aktiveras eller inaktiveras ovan, men förändring kräver att routern startars om." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:586 msgid "Hostnames entered above will be published in the network database." @@ -5894,18 +5824,16 @@ msgstr "De är <b> ej privata </b>." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:590 msgid "" -"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1." -msgstr "" -"Ange <b> inte en privat IP-adress </b> som 127.0.0.1 eller 192.168.1.1." +"Also, <b>do not enter a private IP address</b> like 127.0.0.1 or " +"192.168.1.1." +msgstr "Ange <b> inte en privat IP-adress </b> som 127.0.0.1 eller 192.168.1.1." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:592 msgid "" "If you specify the wrong IP address or hostname, or do not properly " "configure your NAT or firewall, your network performance will degrade " "substantially." -msgstr "" -"Om du anger fel IP-adress, värdnamn eller inte konfigurera din NAT eller " -"brandvägg, kommer din nätverkets prestanda att försämras avsevärt." +msgstr "Om du anger fel IP-adress, värdnamn eller inte konfigurera din NAT eller brandvägg, kommer din nätverkets prestanda att försämras avsevärt." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:594 msgid "When in doubt, leave the settings at the defaults." @@ -5920,18 +5848,13 @@ msgid "" "If you think you have opened up your firewall and I2P still thinks you are " "firewalled, remember that you may have multiple firewalls, for example both " "software packages and external hardware routers." -msgstr "" -"Om du tror att du har öppnat din brandvägg och I2P fortfarande tror att du " -"är bakom en branvägg, kom ihÃ¥g att du kan ha flera brandväggar, exempelvis " -"bÃ¥deprogramvaru- och hÃ¥rdvarubrandväggar." +msgstr "Om du tror att du har öppnat din brandvägg och I2P fortfarande tror att du är bakom en branvägg, kom ihÃ¥g att du kan ha flera brandväggar, exempelvis bÃ¥deprogramvaru- och hÃ¥rdvarubrandväggar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:604 msgid "" "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help " "diagnose the problem." -msgstr "" -"Om det finns ett fel, kan <a href=\"logs.jsp\">loggar</a> hjälpa till att " -"diagnostisera problemet." +msgstr "Om det finns ett fel, kan <a href=\"logs.jsp\">loggar</a> hjälpa till att diagnostisera problemet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:608 msgid "Your UDP port does not appear to be firewalled." @@ -5945,53 +5868,39 @@ msgstr "Din UDP port verkar vara bakom en brandvägg." msgid "" "As the firewall detection methods are not 100% reliable, this may " "occasionally be displayed in error." -msgstr "" -"Brandvägg detekteringsmetoderna är inte 100% tillförlitliga, det kan ibland " -"vara felaktigta." +msgstr "Brandvägg detekteringsmetoderna är inte 100% tillförlitliga, det kan ibland vara felaktigta." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:616 msgid "" "However, if it appears consistently, you should check whether both your " "external and internal firewalls are open for your port." -msgstr "" -"Men om det visar sig konsekvent, bör du kontrollera om bÃ¥de din yttre och " -"inre brandväggar är öppna för porten." +msgstr "Men om det visar sig konsekvent, bör du kontrollera om bÃ¥de din yttre och inre brandväggar är öppna för porten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:618 msgid "" "I2P will work fine when firewalled, there is no reason for concern. When " "firewalled, the router uses \"introducers\" to relay inbound connections." -msgstr "" -"I2P fungera bra bakom en brandvägg, det finns ingen anledning till oro. När " -"routern är bakom en brandvägg används \"introducers \" för att förmedla " -"inkommande anslutningar." +msgstr "I2P fungera bra bakom en brandvägg, det finns ingen anledning till oro. När routern är bakom en brandvägg används \"introducers \" för att förmedla inkommande anslutningar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:620 msgid "" "However, you will get more participating traffic and help the network more " "if you can open your firewall(s)." -msgstr "" -"Men du kommer fÃ¥ fler deltagande trafik och hjälper nätverket mer om du kan " -"öppna din brandvägg." +msgstr "Men du kommer fÃ¥ fler deltagande trafik och hjälper nätverket mer om du kan öppna din brandvägg." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:622 msgid "" "If you think you have already done so, remember that you may have both a " "hardware and a software firewall, or be behind an additional, institutional " "firewall you cannot control." -msgstr "" -"Om du tror att du redan gjort det, kom ihÃ¥g att du kan ha bÃ¥de hÃ¥rdvaru- och " -"mjukvarubrandvägg, eller är bakom en extra brandvägg som du inte kontrollera." +msgstr "Om du tror att du redan gjort det, kom ihÃ¥g att du kan ha bÃ¥de hÃ¥rdvaru- och mjukvarubrandvägg, eller är bakom en extra brandvägg som du inte kontrollera." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:624 msgid "" "Also, some routers cannot correctly forward both TCP and UDP on a single " "port, or may have other limitations or bugs that prevent them from passing " "traffic through to I2P." -msgstr "" -"Dessutom kan vissa routrar inte riktigt vidarebefordra bÃ¥de TCP och UDP pÃ¥ " -"en enda port, eller kan ha andra begränsningar eller buggar som hindrar dem " -"frÃ¥n skicka trafik genom I2P." +msgstr "Dessutom kan vissa routrar inte riktigt vidarebefordra bÃ¥de TCP och UDP pÃ¥ en enda port, eller kan ha andra begränsningar eller buggar som hindrar dem frÃ¥n skicka trafik genom I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:628 msgid "The router is currently testing whether your UDP port is firewalled." @@ -6001,9 +5910,7 @@ msgstr "Routern testar för närvarande om din UDPport är bakom en brandvägg." msgid "" "The router is not configured to publish its address, therefore it does not " "expect incoming connections." -msgstr "" -"Routern är inte konfigurerad för att offentliggöra dess adress, " -"därförförväntar den inte inkommande anslutningar." +msgstr "Routern är inte konfigurerad för att offentliggöra dess adress, därförförväntar den inte inkommande anslutningar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:634 msgid "" @@ -6017,21 +5924,16 @@ msgstr "VARNING - bakom brandvägg och snabb" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:638 msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." -msgstr "" -"Du har konfigurerat I2P för att dela mer än 128kbps bandbredd, men du är " -"bakom en brandvägg." +"You have configured I2P to share more than 128KBps of bandwidth, but you are" +" firewalled." +msgstr "Du har konfigurerat I2P för att dela mer än 128kbps bandbredd, men du är bakom en brandvägg." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:640 msgid "" "While I2P will work fine in this configuration, if you really have over " "128KBps of bandwidth to share, it will be much more helpful to the network " "if you open your firewall." -msgstr "" -"Även om I2P kommer att fungera bra i denna konfiguration. Men om du " -"verkligen har mer än 128 kbit/s bandbredd för att dela, kommer det att vara " -"mycket mer användbart för nätverket om du öppnar din brandvägg." +msgstr "Även om I2P kommer att fungera bra i denna konfiguration. Men om du verkligen har mer än 128 kbit/s bandbredd för att dela, kommer det att vara mycket mer användbart för nätverket om du öppnar din brandvägg." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:642 msgid "WARN - Firewalled and Floodfill" @@ -6040,9 +5942,7 @@ msgstr "VARNING - bakom en brandvägg och Floodfill" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:644 msgid "" "You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "" -"Du har konfigurerat I2P för att vara en floodfill router, men din port är " -"bakom en brandvägg." +msgstr "Du har konfigurerat I2P för att vara en floodfill router, men din port är bakom en brandvägg." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:646 msgid "" @@ -6057,19 +5957,13 @@ msgstr "VARNING - brandvägg med Inkommande TCP aktiverad" msgid "" "You have configured inbound TCP, however your UDP port is firewalled, and " "therefore it is likely that your TCP port is firewalled as well." -msgstr "" -"Du har konfigurerat inkommande TCP, men dina UDP portar är bakom en " -"brandvägg, och därför är det troligt att ditt TCP portar är bakom en " -"brandvägg ocksÃ¥." +msgstr "Du har konfigurerat inkommande TCP, men dina UDP portar är bakom en brandvägg, och därför är det troligt att ditt TCP portar är bakom en brandvägg ocksÃ¥." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:652 msgid "" -"If your TCP port is firewalled with inbound TCP enabled, routers will not be " -"able to contact you via TCP, which will hurt the network." -msgstr "" -"Om din TCPport är bakom en brandvägg med inkommande TCP aktiverat kommer " -"routrar inte att kunna kontakta dig via TCP, vilket kommer att skada " -"nätverket." +"If your TCP port is firewalled with inbound TCP enabled, routers will not be" +" able to contact you via TCP, which will hurt the network." +msgstr "Om din TCPport är bakom en brandvägg med inkommande TCP aktiverat kommer routrar inte att kunna kontakta dig via TCP, vilket kommer att skada nätverket." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:654 msgid "Please open your firewall or disable inbound TCP above." @@ -6087,9 +5981,7 @@ msgstr "Du har konfigurerat för inkommande TCP, men du har inaktiverat UDP." msgid "" "You appear to be firewalled on TCP, therefore your router cannot accept " "inbound connections." -msgstr "" -"Det verkar vara en brandväggsregel pÃ¥ TCP, därför dina router inte kan " -"acceptera inkommande anslutningar." +msgstr "Det verkar vara en brandväggsregel pÃ¥ TCP, därför dina router inte kan acceptera inkommande anslutningar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:662 msgid "Please open your firewall or enable UDP." @@ -6103,8 +5995,7 @@ msgstr "FEL - Klockan är förskjuten" msgid "" "Your system's clock is skewed, which will make it difficult to participate " "in the network." -msgstr "" -"Ditt system klocka är gÃ¥r fel, vilket gör det svÃ¥rt att delta i nätverket." +msgstr "Ditt system klocka är gÃ¥r fel, vilket gör det svÃ¥rt att delta i nätverket." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:668 msgid "Correct your clock setting if this error persists." @@ -6118,9 +6009,7 @@ msgstr "FEL - Rivat TCP adress" msgid "" "You must never advertise an unroutable IP address such as 127.0.0.1 or " "192.168.1.1 as your external address." -msgstr "" -"Du fÃ¥r aldrig annonsera en icke-routbar IP-adress som 127.0.0.1 eller " -"192.168.1.1 som din externa adress." +msgstr "Du fÃ¥r aldrig annonsera en icke-routbar IP-adress som 127.0.0.1 eller 192.168.1.1 som din externa adress." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:674 msgid "Correct the address or disable inbound TCP above." @@ -6139,18 +6028,13 @@ msgid "" "I2P does not work well behind this type of firewall. You will probably not " "be able to accept inbound connections, which will limit your participation " "in the network." -msgstr "" -"I2P fungerar inte bra bakom denna typ av brandvägg. Du kommer förmodligen " -"inte att kunna acceptera inkommande anslutningar, vilket kommer att begränsa " -"ditt deltagande i nätverket." +msgstr "I2P fungerar inte bra bakom denna typ av brandvägg. Du kommer förmodligen inte att kunna acceptera inkommande anslutningar, vilket kommer att begränsa ditt deltagande i nätverket." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:682 msgid "" "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " "and restart" -msgstr "" -"FEL - UDP-port används - ändra i2np.udp.internalPort = xxxx i avancerade " -"inställningar och starta om" +msgstr "FEL - UDP-port används - ändra i2np.udp.internalPort = xxxx i avancerade inställningar och starta om" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:684 msgid "I2P was unable to bind to port 8887 or other configured port." @@ -6160,17 +6044,13 @@ msgstr "I2P kunde inte binda till port 8887 eller andra valda portar." msgid "" "Check to see if another program is using the configured port. If so, stop " "that program or configure I2P to use a different port." -msgstr "" -"Kontrollera om ett annat program använder den valda porten. Om sÃ¥ är fallet, " -"avsluta det programmet eller konfigurera I2P att använda annan port." +msgstr "Kontrollera om ett annat program använder den valda porten. Om sÃ¥ är fallet, avsluta det programmet eller konfigurera I2P att använda annan port." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:688 msgid "" "This may be a transient error, if the other program is no longer using the " "port." -msgstr "" -"Detta kan vara tillfällig fel, om det andra programmet inte längre använder " -"porten." +msgstr "Detta kan vara tillfällig fel, om det andra programmet inte längre använder porten." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:690 msgid "However, a restart is always required after this error." @@ -6184,9 +6064,7 @@ msgstr "FEL - UDP Inaktivera och Inkommande TCP värd/port inte satt" msgid "" "You have not configured inbound TCP with a hostname and port above, however " "you have disabled UDP." -msgstr "" -"Du har inte konfigurerat inkommande TCP med värdnamn och port ovan, men du " -"har inaktiverat UDP." +msgstr "Du har inte konfigurerat inkommande TCP med värdnamn och port ovan, men du har inaktiverat UDP." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:696 msgid "Therefore your router cannot accept inbound connections." @@ -6202,17 +6080,13 @@ msgstr "FEL - I2CP klienthanterings fel - kolla loggarna" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:702 msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "" -"Detta beror vanligtvis pÃ¥ att port 7654 används av annat program. " -"Kontrollera loggarna för att verifiera." +msgstr "Detta beror vanligtvis pÃ¥ att port 7654 används av annat program. Kontrollera loggarna för att verifiera." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:704 msgid "" "Do you have another I2P instance running? Stop the conflicting program and " "restart I2P." -msgstr "" -"Har du en annan instans av I2P som körs? Stoppa det kolliderande programmet " -"och starta om I2P." +msgstr "Har du en annan instans av I2P som körs? Stoppa det kolliderande programmet och starta om I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:139 msgid "config peers" @@ -6245,15 +6119,11 @@ msgstr "Justera profil bonus" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:425 msgid "" -"Bonuses may be positive or negative, and affect the peer's inclusion in Fast " -"and High Capacity tiers. Fast peers are used for client tunnels, and High " +"Bonuses may be positive or negative, and affect the peer's inclusion in Fast" +" and High Capacity tiers. Fast peers are used for client tunnels, and High " "Capacity peers are used for some exploratory tunnels. Current bonuses are " "displayed on the" -msgstr "" -"Bonusar kan vara positiv eller negativ, och pÃ¥verkar peer inräknande i " -"snabbt och högkapacitets nivÃ¥er. Snabba peers används för klient tunnlar, " -"och hög kapacitet peers används för vissa sonderande tunnlar. Aktuell bonus " -"visas pÃ¥" +msgstr "Bonusar kan vara positiv eller negativ, och pÃ¥verkar peer inräknande i snabbt och högkapacitets nivÃ¥er. Snabba peers används för klient tunnlar, och hög kapacitet peers används för vissa sonderande tunnlar. Aktuell bonus visas pÃ¥" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:427 msgid "profiles page" @@ -6284,25 +6154,18 @@ msgid "" "Reseeding is the bootstrapping process used to find other routers when you " "first install I2P, or when your router has too few router references " "remaining." -msgstr "" -"Reseeding är en uppstarts (bootstrapping) process som används för att hitta " -"andra routrar när du först installerar I2P, eller när din router har för fÃ¥ " -"routern referenser kvar." +msgstr "Reseeding är en uppstarts (bootstrapping) process som används för att hitta andra routrar när du först installerar I2P, eller när din router har för fÃ¥ routern referenser kvar." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:404 msgid "" "If reseeding has failed, you should first check your network connection." -msgstr "" -"Om reseedning har misslyckats, bör du först kontrollera din " -"nätverksanslutning." +msgstr "Om reseedning har misslyckats, bör du först kontrollera din nätverksanslutning." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:408 msgid "" "Change these only if HTTP is blocked by a restrictive firewall, reseed has " "failed, and you have access to an HTTP proxy." -msgstr "" -"Ändra dessa inställningar endast om HTTP blockeras av en brandvägg, reseed " -"har misslyckats, och du har tillgÃ¥ng till en HTTP-proxy." +msgstr "Ändra dessa inställningar endast om HTTP blockeras av en brandvägg, reseed har misslyckats, och du har tillgÃ¥ng till en HTTP-proxy." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:410 #, java-format @@ -6395,51 +6258,40 @@ msgstr "Stäng av routern" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:387 msgid "" -"Graceful shutdown lets the router satisfy the agreements it has already made " -"before shutting down, but may take a few minutes." -msgstr "" -"Graciös avstängning lÃ¥ter routern uppfylla de avtal som redan gjorts innan " -"du stänger av, men kan ta nÃ¥gra minuter." +"Graceful shutdown lets the router satisfy the agreements it has already made" +" before shutting down, but may take a few minutes." +msgstr "Graciös avstängning lÃ¥ter routern uppfylla de avtal som redan gjorts innan du stänger av, men kan ta nÃ¥gra minuter." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:389 msgid "" -"If you need to kill the router immediately, that option is available as well." -msgstr "" -"Om du behöver döda routern omedelbart, finns det alternativet ocksÃ¥ " -"tillgängligt" +"If you need to kill the router immediately, that option is available as " +"well." +msgstr "Om du behöver döda routern omedelbart, finns det alternativet ocksÃ¥ tillgängligt" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:399 msgid "" -"If you want the router to restart itself after shutting down, you can choose " -"one of the following." -msgstr "" -"Om du vill att routern startar om efter avstängning, kan du välja nÃ¥got av " -"följande." +"If you want the router to restart itself after shutting down, you can choose" +" one of the following." +msgstr "Om du vill att routern startar om efter avstängning, kan du välja nÃ¥got av följande." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:401 msgid "" "This is useful in some situations - for example, if you changed some " "settings that client applications only read at startup, such as the " "routerconsole password or the interface it listens on." -msgstr "" -"Detta är användbart i vissa situationer - till exempel om du har ändrat " -"nÃ¥gra inställningar som klientprogramet endast läser in vid start, till " -"exempel routerconsole lösenord eller gränssnittet som det lyssnar pÃ¥." +msgstr "Detta är användbart i vissa situationer - till exempel om du har ändrat nÃ¥gra inställningar som klientprogramet endast läser in vid start, till exempel routerconsole lösenord eller gränssnittet som det lyssnar pÃ¥." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:403 msgid "" "A graceful restart will take a few minutes (but your peers will appreciate " "your patience), while a hard restart does so immediately." -msgstr "" -"En elegant omstart kommer att ta nÃ¥gra minuter (men dina vänner kommer att " -"uppskatta ditt tÃ¥lamod), medan en hÃ¥rd omstart startar om omedelbart." +msgstr "En elegant omstart kommer att ta nÃ¥gra minuter (men dina vänner kommer att uppskatta ditt tÃ¥lamod), medan en hÃ¥rd omstart startar om omedelbart." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:405 msgid "" -"After tearing down the router, it will wait 1 minute before starting back up " -"again." -msgstr "" -"Efter att routern rivits ner , kommer den att vänta 1 minut innan upp igen." +"After tearing down the router, it will wait 1 minute before starting back up" +" again." +msgstr "Efter att routern rivits ner , kommer den att vänta 1 minut innan upp igen." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:415 msgid "Systray integration" @@ -6449,22 +6301,18 @@ msgstr "Systemfälts integration" msgid "" "On the windows platform, there is a small application to sit in the system " "tray, allowing you to view the router's status" -msgstr "" -"PÃ¥ Windows-plattformen, finns ett litet program som finns i systemfältet sÃ¥ " -"att du kan se routerns status" +msgstr "PÃ¥ Windows-plattformen, finns ett litet program som finns i systemfältet sÃ¥ att du kan se routerns status" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:419 msgid "" "(later on, I2P client applications will be able to integrate their own " "functionality into the system tray as well)." -msgstr "" -"(senare kommer I2P klientprogram kunna integrera sina egna funktioner i " -"systemfältet ocksÃ¥)." +msgstr "(senare kommer I2P klientprogram kunna integrera sina egna funktioner i systemfältet ocksÃ¥)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:421 -msgid "If you are on windows, you can either enable or disable that icon here." -msgstr "" -"Om du använder Windows kan du aktivera antingen eller inaktivera ikonen här" +msgid "" +"If you are on windows, you can either enable or disable that icon here." +msgstr "Om du använder Windows kan du aktivera antingen eller inaktivera ikonen här" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:423 msgid "Show systray icon" @@ -6480,12 +6328,9 @@ msgstr "Kör vid uppstart" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:429 msgid "" -"You can control whether I2P is run on startup or not by selecting one of the " -"following options - I2P will install (or remove) a service accordingly." -msgstr "" -"Du kan styra om I2P skall köras vid start eller inte genom att välja ett av " -"följande alternativ - I2P kommer att installera (eller ta bort) en tjänst " -"för detta." +"You can control whether I2P is run on startup or not by selecting one of the" +" following options - I2P will install (or remove) a service accordingly." +msgstr "Du kan styra om I2P skall köras vid start eller inte genom att välja ett av följande alternativ - I2P kommer att installera (eller ta bort) en tjänst för detta." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:431 msgid "If you prefer the command line, you can also run the " @@ -6498,19 +6343,15 @@ msgstr "Notera" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:441 msgid "" -"If you are running I2P as service right now, removing it will shut down your " -"router immediately." -msgstr "" -"Om du kör I2P som tjänst just nu, att ta bort den resulterar i att routern " -"stängs omedelbart." +"If you are running I2P as service right now, removing it will shut down your" +" router immediately." +msgstr "Om du kör I2P som tjänst just nu, att ta bort den resulterar i att routern stängs omedelbart." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:443 msgid "" "You may want to consider shutting down gracefully, as above, then running " "uninstall_i2p_service_winnt.bat." -msgstr "" -"Du kanske vill överväga att stänga snyggt , som ovan och kör sedan " -"uninstall_i2p_service_winnt.bat." +msgstr "Du kanske vill överväga att stänga snyggt , som ovan och kör sedan uninstall_i2p_service_winnt.bat." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:447 msgid "Debugging" @@ -6522,25 +6363,20 @@ msgstr "Visa jobbkön" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:453 msgid "" -"At times, it may be helpful to debug I2P by getting a thread dump. To do so, " -"please select the following option and review the thread dumped to <a href=" -"\"logs.jsp#servicelogs\">wrapper.log</a>." -msgstr "" -"Ibland kan det underlätta att felsöka I2P genom att ta en trÃ¥d dump. För att " -"göra det, välj följande alternativ och undersök trÃ¥den som dumpats till <a " +"At times, it may be helpful to debug I2P by getting a thread dump. To do so," +" please select the following option and review the thread dumped to <a " "href=\"logs.jsp#servicelogs\">wrapper.log</a>." +msgstr "Ibland kan det underlätta att felsöka I2P genom att ta en trÃ¥d dump. För att göra det, välj följande alternativ och undersök trÃ¥den som dumpats till <a href=\"logs.jsp#servicelogs\">wrapper.log</a>." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:465 msgid "Launch browser on router startup?" msgstr "Starta webbläsaren vid router start?" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:461 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:467 msgid "" "I2P's main configuration interface is this web console, so for your " "convenience I2P can launch a web browser on startup pointing at" -msgstr "" -"I2P huvudsakliga konfigurationsgränssnitt är denna webbkonsol, sÃ¥ för din " -"bekvämlighet kan I2P starta en webbläsare som pekar pÃ¥" +msgstr "I2P huvudsakliga konfigurationsgränssnitt är denna webbkonsol, sÃ¥ för din bekvämlighet kan I2P starta en webbläsare som pekar pÃ¥" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:139 msgid "config summary bar" @@ -6627,12 +6463,9 @@ msgstr "Det finns en stor avvägning mellan anonymitet och prestanda." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:417 msgid "" "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " -"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " -"reduce performance or reliability." -msgstr "" -"Tunnlar med mer än 3 hopp (t.ex. 2 hopp + 0-2 hopp, 3 hopp + 0-1 hopp, 3 " -"hopp + 0-2 hopp), eller en stor mängd och kvantiteten pÃ¥ backupen, kan " -"allvarligt försämra prestanda eller tillförlitlighet." +"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely" +" reduce performance or reliability." +msgstr "Tunnlar med mer än 3 hopp (t.ex. 2 hopp + 0-2 hopp, 3 hopp + 0-1 hopp, 3 hopp + 0-2 hopp), eller en stor mängd och kvantiteten pÃ¥ backupen, kan allvarligt försämra prestanda eller tillförlitlighet." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:420 msgid "High CPU and/or high outbound bandwidth usage may result." @@ -6640,9 +6473,7 @@ msgstr "Hög CPU-belastning och/eller högt bandbreddsutnytjande kan uppstÃ¥." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:423 msgid "Change these settings with care, and adjust them if you have problems." -msgstr "" -"Ändra dessa inställningar med försiktighet, och ändra dem bara om du har " -"problem." +msgstr "Ändra dessa inställningar med försiktighet, och ändra dem bara om du har problem." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:433 msgid "" @@ -6682,11 +6513,7 @@ msgid "" "If you're not using IE, it's likely that your browser is pretending to be " "IE; please configure your browser (or proxy) to use a different User Agent " "string if you'd like to access the console themes." -msgstr "" -"Om du inte använder Internet Explorer (IE), är det troligt att din " -"webbläsare lÃ¥tsas (spoofar) vara IE, du kan konfigurera din webbläsare " -"(eller proxy) att använda en annat User Agent sträng om du vill komma Ã¥t " -"konsol teman." +msgstr "Om du inte använder Internet Explorer (IE), är det troligt att din webbläsare lÃ¥tsas (spoofar) vara IE, du kan konfigurera din webbläsare (eller proxy) att använda en annat User Agent sträng om du vill komma Ã¥t konsol teman." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:379 msgid "Router Console Language" @@ -6696,9 +6523,7 @@ msgstr "Router Konsollens SprÃ¥k" msgid "" "Please contribute to the router console translation project! Contact the " "developers in #i2p-dev on IRC to help." -msgstr "" -"Hjälptill gärna till med att översätta router konsol projektet. Kontakta " -"utvecklarna pÃ¥ IRC i #i2p-dev kanalen för mer information." +msgstr "Hjälptill gärna till med att översätta router konsol projektet. Kontakta utvecklarna pÃ¥ IRC i #i2p-dev kanalen för mer information." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:389 msgid "Apply" @@ -6811,61 +6636,58 @@ msgstr "Din webbläsare stödjer inte iFrames." msgid "Click here to continue." msgstr "Klicka för att fortsätta " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:144 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:146 msgid "Internal Error" msgstr "Internt fel" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:150 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:152 msgid "Configuration" msgstr "Konfiguration" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:157 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:160 msgid "Sorry! There has been an internal error." msgstr "Tyvärr! Det har uppkommit ett internt fel." #. note to translators - both parameters are URLs -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:161 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:335 #, java-format msgid "Please report bugs on {0} or {1}." msgstr "Vänligen rapportera fel pÃ¥ {0} eller {1}." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:164 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:339 msgid "" -"You may use the username \"guest\" and password \"guest\" if you do not wish " -"to register." -msgstr "" -"Du kan använda användarnamn \"guest\" och lösenord \"guest\" om du inte vill " -"registrera." +"You may use the username \"guest\" and password \"guest\" if you do not wish" +" to register." +msgstr "Du kan använda användarnamn \"guest\" och lösenord \"guest\" om du inte vill registrera." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:168 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:341 msgid "Please include this information in bug reports" msgstr "Var vänlig och inkludera denna information i felrapporter" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 msgid "Error Details" msgstr "Feldetaljer" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:174 #, java-format msgid "Error {0}" msgstr "Fel {0}" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:191 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:194 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:331 msgid "I2P Version and Running Environment" msgstr "I2P Version och Körmiljö" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:241 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:390 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." -msgstr "" -"Observera att systeminformation, loggtidsstämplar och loggmeddelanden kan ge " -"ledtrÃ¥dar till din plats, kontrolläs allt du inkluderar i en felrapport." +"clues to your location; please review everything you include in a bug " +"report." +msgstr "Observera att systeminformation, loggtidsstämplar och loggmeddelanden kan ge ledtrÃ¥dar till din plats, kontrolläs allt du inkluderar i en felrapport." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:148 msgid "Page Not Found" @@ -6875,9 +6697,7 @@ msgstr "Sidan kan inte hittas" msgid "" "Sorry! You appear to be requesting a non-existent Router Console page or " "resource." -msgstr "" -"Tyvärr! Det verkar som om du försöker komma Ã¥t en icke-existerande router " -"konsol sida eller resurs." +msgstr "Tyvärr! Det verkar som om du försöker komma Ã¥t en icke-existerande router konsol sida eller resurs." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:321 msgid "Error 404" @@ -6901,9 +6721,7 @@ msgstr "I2P prestandagrafer" msgid "" "Click a flag to select a language. Click 'configure language' below to " "change it later." -msgstr "" -"Klicka pÃ¥ en flagga för att välja ett sprÃ¥k. Klicka pÃ¥ \"konfigurera sprÃ¥k\" " -"nedan för att ändra det senare." +msgstr "Klicka pÃ¥ en flagga för att välja ett sprÃ¥k. Klicka pÃ¥ \"konfigurera sprÃ¥k\" nedan för att ändra det senare." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:362 msgid "Search I2P" @@ -6975,11 +6793,9 @@ msgstr "Den efterfrÃ¥gade webbapplikationen körs inte" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:337 msgid "" -"Please visit the <a href=\"/configclients.jsp#webapp\">config clients page</" -"a> to start it." -msgstr "" -"GÃ¥ till sidan <a href=\"/configclients.jsp#webapp\">konfigurera klienter</a> " -"för att starta det." +"Please visit the <a href=\"/configclients.jsp#webapp\">config clients " +"page</a> to start it." +msgstr "GÃ¥ till sidan <a href=\"/configclients.jsp#webapp\">konfigurera klienter</a> för att starta det." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:136 msgid "peer connections" diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml index 971ae21cf2df0b3e0db0a7f024478fdd79d83583..d145ce18e43e1967a4b06b6a93138cf9bd7d2c14 100644 --- a/apps/streaming/java/build.xml +++ b/apps/streaming/java/build.xml @@ -11,7 +11,7 @@ <target name="depend" if="depend.available"> <depend cache="../../../build" - srcdir="./src:./test" + srcdir="./src:./test/junit" destdir="./build/obj" > <!-- Depend on classes instead of jars where available --> <classpath> @@ -35,7 +35,7 @@ </target> <target name="compileTest" depends="compile"> <javac - srcdir="./test" + srcdir="./test/junit" debug="true" deprecation="on" source="1.5" target="1.5" includeAntRuntime="false" destdir="./build/obj" diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java index 99909b6b30c49c2f1ebbd5454518215402d1c144..5112600e8d89e2df144fa22e549cd2c8937d4636 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java @@ -77,6 +77,8 @@ class Connection { private final SimpleTimer2 _timer; private long _lifetimeBytesSent; + /** TBD for tcpdump-compatible ack output */ + private long _lowestBytesAckedThrough; private long _lifetimeBytesReceived; private long _lifetimeDupMessageSent; private long _lifetimeDupMessageReceived; @@ -974,7 +976,7 @@ class Connection { switch (_options.getInactivityAction()) { case ConnectionOptions.INACTIVITY_ACTION_NOOP: if (_log.shouldLog(Log.WARN)) - _log.warn("Inactivity timer expired, but we aint doin' shit"); + _log.warn("Inactivity timer expired, not doing anything"); break; case ConnectionOptions.INACTIVITY_ACTION_SEND: if (_closeSentOn <= 0 && _closeReceivedOn <= 0) { diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionHandler.java index c6a271629643576bb7a3c07f64296f9d49bfe3f0..275da2725c43cda35c4af865a791d65825ea09bb 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionHandler.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionHandler.java @@ -194,6 +194,11 @@ class ConnectionHandler { // between here and PacketHandler, causing the packet to loop forever.... _manager.getPacketHandler().receivePacketDirect(packet, false); } else { + // log it here, just before we kill it - dest will be unknown + if (I2PSocketManagerFull.pcapWriter != null && + _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) + packet.logTCPDump(null); + // goodbye if (_log.shouldLog(Log.WARN)) _log.warn("Did not find con for queued non-syn packet, dropping: " + packet); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java index 7a9529e5e211352026b4798c3c04dce17a31d0d9..9fd6680ffbc172869ee726c0a95f2eb807f3dedf 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java @@ -207,14 +207,16 @@ class ConnectionManager { // active++; //} if (locked_tooManyStreams()) { - _log.logAlways(Log.WARN, "Refusing connection since we have exceeded our max of " + if ((!_defaultOptions.getDisableRejectLogging()) || _log.shouldLog(Log.WARN)) + _log.logAlways(Log.WARN, "Refusing connection since we have exceeded our max of " + _defaultOptions.getMaxConns() + " connections"); reject = true; } else { // this may not be right if more than one is enabled String why = shouldRejectConnection(synPacket); if (why != null) { - _log.logAlways(Log.WARN, "Refusing connection since peer is " + why + + if ((!_defaultOptions.getDisableRejectLogging()) || _log.shouldLog(Log.WARN)) + _log.logAlways(Log.WARN, "Refusing connection since peer is " + why + (synPacket.getOptionalFrom() == null ? "" : ": " + synPacket.getOptionalFrom().calculateHash().toBase64())); reject = true; } else { @@ -266,6 +268,10 @@ class ConnectionManager { } con.setReceiveStreamId(receiveId); + // finally, we know enough that we can log the packet with the conn filled in + if (I2PSocketManagerFull.pcapWriter != null && + _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) + synPacket.logTCPDump(con); try { // This validates the packet, and sets the con's SendStreamID and RemotePeer con.getPacketHandler().receivePacket(synPacket, con); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java index aac78d99369a55e1828dc8c6b388abcd711ac707..324c56d11ba930c04ebda0ba08935442f71d3883 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java @@ -50,6 +50,7 @@ class ConnectionOptions extends I2PSocketOptionsImpl { private int _maxTotalConnsPerHour; private int _maxTotalConnsPerDay; private int _maxConns; + private boolean _disableRejectLog; // NOTE - almost all the options are below, but see // I2PSocketOptions in ministreaming for a few more @@ -98,6 +99,8 @@ class ConnectionOptions extends I2PSocketOptionsImpl { * @since 0.9.3 moved from I2PSocketManagerFull */ public static final String PROP_MAX_STREAMS = "i2p.streaming.maxConcurrentStreams"; + /** @since 0.9.4 default false */ + public static final String PROP_DISABLE_REJ_LOG = "i2p.streaming.disableRejectLogging"; private static final int TREND_COUNT = 3; @@ -310,6 +313,7 @@ class ConnectionOptions extends I2PSocketOptionsImpl { //setReadTimeout(opts.getReadTimeout()); setAnswerPings(opts.getAnswerPings()); setEnforceProtocol(opts.getEnforceProtocol()); + setDisableRejectLogging(opts.getDisableRejectLogging()); initLists(opts); _maxConnsPerMinute = opts.getMaxConnsPerMinute(); _maxConnsPerHour = opts.getMaxConnsPerHour(); @@ -347,6 +351,7 @@ class ConnectionOptions extends I2PSocketOptionsImpl { //setConnectTimeout(getInt(opts, PROP_CONNECT_TIMEOUT, Connection.DISCONNECT_TIMEOUT)); setAnswerPings(getBool(opts, PROP_ANSWER_PINGS, DEFAULT_ANSWER_PINGS)); setEnforceProtocol(getBool(opts, PROP_ENFORCE_PROTO, DEFAULT_ENFORCE_PROTO)); + setDisableRejectLogging(getBool(opts, PROP_DISABLE_REJ_LOG, false)); initLists(opts); _maxConnsPerMinute = getInt(opts, PROP_MAX_CONNS_MIN, 0); _maxConnsPerHour = getInt(opts, PROP_MAX_CONNS_HOUR, 0); @@ -405,6 +410,8 @@ class ConnectionOptions extends I2PSocketOptionsImpl { setAnswerPings(getBool(opts, PROP_ANSWER_PINGS, DEFAULT_ANSWER_PINGS)); if (opts.containsKey(PROP_ENFORCE_PROTO)) setEnforceProtocol(getBool(opts, PROP_ENFORCE_PROTO, DEFAULT_ENFORCE_PROTO)); + if (opts.containsKey(PROP_DISABLE_REJ_LOG)) + setDisableRejectLogging(getBool(opts, PROP_DISABLE_REJ_LOG, false)); initLists(opts); if (opts.containsKey(PROP_MAX_CONNS_MIN)) _maxConnsPerMinute = getInt(opts, PROP_MAX_CONNS_MIN, 0); @@ -469,6 +476,15 @@ class ConnectionOptions extends I2PSocketOptionsImpl { public boolean getEnforceProtocol() { return _enforceProto; } public void setEnforceProtocol(boolean yes) { _enforceProto = yes; } + /** + * Do we disable connection rejected logging? Default false. + * + * @return if we do + * @since 0.9.4 + */ + public boolean getDisableRejectLogging() { return _disableRejectLog; } + public void setDisableRejectLogging(boolean yes) { _disableRejectLog = yes; } + /** * How many messages will we send before waiting for an ACK? * diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java index dc16811913c41acd45c2a4a600ae48fee6fa5a14..ec0cd3781494ad85b3112dc938ea9c7c04cf622f 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java @@ -85,6 +85,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { _log.info("Socket manager created. \ndefault options: " + _defaultOptions + "\noriginal properties: " + opts); } + debugInit(context); } /** @@ -314,6 +315,8 @@ public class I2PSocketManagerFull implements I2PSocketManager { } catch (I2PSessionException ise) { _log.warn("Unable to destroy the session", ise); } + if (pcapWriter != null) + pcapWriter.flush(); } } @@ -342,4 +345,25 @@ public class I2PSocketManagerFull implements I2PSocketManager { public void removeDisconnectListener(I2PSocketManager.DisconnectListener lsnr) { _connectionManager.getMessageHandler().removeDisconnectListener(lsnr); } + + private static final Object _pcapInitLock = new Object(); + private static boolean _pcapInitialized; + static PcapWriter pcapWriter; + static final String PROP_PCAP = "i2p.streaming.pcap"; + private static final String PCAP_FILE = "streaming.pcap"; + + private static void debugInit(I2PAppContext ctx) { + if (!ctx.getBooleanProperty(PROP_PCAP)) + return; + synchronized(_pcapInitLock) { + if (!_pcapInitialized) { + try { + pcapWriter = new PcapWriter(ctx, PCAP_FILE); + } catch (java.io.IOException ioe) { + System.err.println("pcap init ioe: " + ioe); + } + _pcapInitialized = true; + } + } + } } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Packet.java b/apps/streaming/java/src/net/i2p/client/streaming/Packet.java index a79f67cb751ec11b40d1ac28479d38be6cc33887..e589b6273a06d8a7f5a85d9d0ff86f6307f23978 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/Packet.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/Packet.java @@ -1,5 +1,6 @@ package net.i2p.client.streaming; +import java.io.IOException; import java.util.Arrays; import net.i2p.I2PAppContext; @@ -16,7 +17,8 @@ import net.i2p.util.Log; * This contains solely the data that goes out on the wire, * including the local and remote port which is embedded in * the I2CP overhead, not in the packet itself. - * For local state saved for outbound packets, see PacketLocal. + * This is the class used for inbound packets. + * For local state saved for outbound packets, see the PacketLocal extension. * * <p> * @@ -709,4 +711,14 @@ class Packet { if (isFlagSet(FLAG_SYNCHRONIZE)) buf.append(" SYN"); return buf.toString(); } + + /** Generate a pcap/tcpdump-compatible format, + * so we can use standard debugging tools. + */ + public void logTCPDump(Connection con) { + try { + I2PSocketManagerFull.pcapWriter.write(this, con); + } catch (IOException ioe) { + } + } } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java index 34a59475e607fe68b5c278240a06f6845810f391..6cdf3dc81aec4cee8bc669015d6cec840e810d8f 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/PacketHandler.java @@ -108,6 +108,8 @@ class PacketHandler { receiveUnknownCon(packet, sendId, queueIfNoConn); displayPacket(packet, "UNKN", null); } + // Don't log here, wait until we have the conn to make the dumps easier to follow + //((PacketLocal)packet).logTCPDump(true); } private static final SimpleDateFormat _fmt = new SimpleDateFormat("HH:mm:ss.SSS"); @@ -128,6 +130,10 @@ class PacketHandler { } private void receiveKnownCon(Connection con, Packet packet) { + // is this ok here or does it need to be below each packetHandler().receivePacket() ? + if (I2PSocketManagerFull.pcapWriter != null && + _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) + packet.logTCPDump(con); if (packet.isFlagSet(Packet.FLAG_ECHO)) { if (packet.getSendStreamId() > 0) { if (con.getOptions().getAnswerPings()) @@ -282,8 +288,13 @@ class PacketHandler { } if (packet.isFlagSet(Packet.FLAG_SYNCHRONIZE)) { + // logTCPDump() will be called in ConnectionManager.receiveConnection(), + // which is called by ConnectionHandler.receiveNewSyn(), + // after we have a new conn, which makes the logging better. _manager.getConnectionHandler().receiveNewSyn(packet); } else if (queueIfNoConn) { + // don't call logTCPDump() here, wait for it to find a conn + // We can get here on the 2nd+ packet if the 1st (SYN) packet // is still on the _synQueue in the ConnectionHandler, and // ConnectionManager.receiveConnection() hasn't run yet to put @@ -307,6 +318,10 @@ class PacketHandler { //packet.releasePayload(); _manager.getConnectionHandler().receiveNewSyn(packet); } else { + // log it here, just before we kill it - dest will be unknown + if (I2PSocketManagerFull.pcapWriter != null && + _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) + packet.logTCPDump(null); // don't queue again (infinite loop!) sendReset(packet); packet.releasePayload(); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java b/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java index 748fe19cab77af869950dc52c8659080a9fd9cc9..97666db6f47b73edfdfba6e37e4547db5b7099fb 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java @@ -1,5 +1,6 @@ package net.i2p.client.streaming; +import java.io.IOException; import java.util.Set; import net.i2p.I2PAppContext; @@ -9,6 +10,8 @@ import net.i2p.util.Log; import net.i2p.util.SimpleTimer2; /** + * This is the class used for outbound packets. + * * coordinate local attributes about a packet - send time, ack time, number of * retries, etc. */ @@ -256,4 +259,15 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus { public boolean writeAccepted() { return _acceptedOn > 0 && _cancelledOn <= 0; } public boolean writeFailed() { return _cancelledOn > 0; } public boolean writeSuccessful() { return _ackOn > 0 && _cancelledOn <= 0; } + + /** Generate a pcap/tcpdump-compatible format, + * so we can use standard debugging tools. + */ + public void logTCPDump() { + try { + I2PSocketManagerFull.pcapWriter.write(this); + } catch (IOException ioe) { + _log.warn("pcap write ioe: " + ioe); + } + } } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PacketQueue.java b/apps/streaming/java/src/net/i2p/client/streaming/PacketQueue.java index a41ecd01272af06658b281046f8841d9fd1a2cf3..4764c9abfa7fa89c12a6c5b400c8168bb0bb997e 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/PacketQueue.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/PacketQueue.java @@ -169,6 +169,9 @@ class PacketQueue { Connection c = packet.getConnection(); String suffix = (c != null ? "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO() : null); _connectionManager.getPacketHandler().displayPacket(packet, "SEND", suffix); + if (I2PSocketManagerFull.pcapWriter != null && + _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP)) + ((PacketLocal)packet).logTCPDump(); } if ( (packet.getSequenceNum() == 0) && (!packet.isFlagSet(Packet.FLAG_SYNCHRONIZE)) ) { diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java new file mode 100644 index 0000000000000000000000000000000000000000..a5020cccde8704200d4d9b3331bdc7d1b9baf08e --- /dev/null +++ b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java @@ -0,0 +1,382 @@ +package net.i2p.client.streaming; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataFormatException; +import net.i2p.data.DataHelper; +import net.i2p.data.Hash; + +/** + * Write a standard pcap file with a "TCP" packet that can be analyzed with + * standard tools such as wireshark. + * + * The source and dest "IP" and "port" are fake but are generated from the + * hashes of the Destinations and stream ID's, so they will be consistent. + * The local "IP" will always be of the form 127.0.x.y + * Initial IP for a conn will be 127.0.0.0 for the local and 0.0.0.0 for the remote. + * + * Reference: http://wiki.wireshark.org/Development/LibpcapFileFormat + * + * The Jpcap library http://netresearch.ics.uci.edu/kfujii/jpcap/doc/ + * was close to what I want, but it requires you to instantiate a "captor" + * before you can write a file, and it requires a native lib to do so, + * and even then, it only wants to read the file, not write it. + * + * We even calculate a correct TCP header checksum to keep the tools happy. + * We don't, however, convert I2P-style sequence numbers, which count packets, + * to TCP-style byte counts. We don't track a lowest-acked-thru byte count atm, really. + * + * We do represent the window size in bytes though, so that's real confusing. + * + * This is designed to debug the streaming lib, but there are not log calls for every + * single packet - pings and pongs, and various odd cases where received packets + * are dropped, are not logged. + * + * Yes we could dump it natively and write a wireshark dissector. That sounds hard. + * And we wouldn't get the TCP stream analysis built into the tools. + * + * @since 0.9.4 + */ +public class PcapWriter { + + /** big-endian, see file format ref - 24 bytes */ + private static final byte[] FILE_HEADER = { (byte) 0xa1, (byte) 0xb2, (byte) 0xc3, (byte) 0xd4, + 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, (byte) 0xff, (byte) 0xff, 0, 0, 0, 1 }; + + /** dummy macs and ethertype */ + private static final byte[] MAC_HEADER = { 1, 2, 3, 4, 5, 6, + 1, 2, 3, 4, 5, 6, + (byte) 0x80, 0 }; + private static final byte[] IP_HEADER_1 = { 0x45, 0 }; // the length goes after this + private static final byte[] IP_HEADER_2 = { 0x12, 0x34, 0x40, 0, 64, 6 }; // ID, flags, TTL and TCP + private static final byte[] UNK_IP = { (byte) 0xff, 0, 0, 0}; + private static final byte[] MY_UNK_IP = {127, 0, 0, 0}; + /** max # of streaming lib payload bytes to dump */ + private static final int MAX_PAYLOAD_BYTES = 10; + + /** options - give our custom ones some mnemonics */ + private static final int MAX_OPTION_LEN = 40; + private static final byte OPTION_END = 0; + private static final byte OPTION_MSS = 2; + private static final byte OPTION_PING = 6; + private static final byte OPTION_PONG = 7; + private static final byte OPTION_SIGREQ = 0x55; + private static final byte OPTION_SIG = 0x56; + private static final byte OPTION_RDELAY = (byte) 0xde; + private static final byte OPTION_ODELAY = (byte) 0xd0; + private static final byte OPTION_FROM = (byte) 0xf0; + private static final byte OPTION_NACK = (byte) 0xac; + + + private final OutputStream _fos; + private final I2PAppContext _context; + + public PcapWriter(I2PAppContext ctx, String file) throws IOException { + _context = ctx; + File f = new File(ctx.getLogDir(), file); + //if (f.exists()) { + // _fos = new FileOutputStream(f, true); + //} else { + _fos = new BufferedOutputStream(new FileOutputStream(f), 64*1024); + _fos.write(FILE_HEADER); + //} + } + + public void close() { + try { + _fos.close(); + } catch (IOException ioe) {} + } + + public void flush() { + try { + _fos.flush(); + } catch (IOException ioe) {} + } + + /** + * For outbound packets + */ + public void write(PacketLocal pkt) throws IOException { + try { + wrt(pkt, pkt.getConnection(), false); + } catch (DataFormatException dfe) { + dfe.printStackTrace(); + throw new IOException(dfe.toString()); + } + } + + /** + * For inbound packets + * @param con may be null + */ + public void write(Packet pkt, Connection con) throws IOException { + try { + wrt(pkt, con, true); + } catch (DataFormatException dfe) { + dfe.printStackTrace(); + throw new IOException(dfe.toString()); + } + } + + /** + * @param con may be null + */ + private synchronized void wrt(Packet pkt, Connection con, boolean isInbound) throws IOException, DataFormatException { + int includeLen = Math.min(MAX_PAYLOAD_BYTES, pkt.getPayloadSize()); + + // option block + Options opts = new Options(); + if (pkt.isFlagSet(Packet.FLAG_MAX_PACKET_SIZE_INCLUDED)) + opts.add(OPTION_MSS, 2, pkt.getOptionalMaxSize()); + if (pkt.isFlagSet(Packet.FLAG_DELAY_REQUESTED)) + opts.add(OPTION_ODELAY, 2, pkt.getOptionalDelay()); + if (pkt.getResendDelay() > 0) + opts.add(OPTION_RDELAY, 1, pkt.getResendDelay()); + if (pkt.isFlagSet(Packet.FLAG_SIGNATURE_REQUESTED)) + opts.add(OPTION_SIGREQ); + if (pkt.isFlagSet(Packet.FLAG_SIGNATURE_INCLUDED)) + opts.add(OPTION_SIG); + if (pkt.isFlagSet(Packet.FLAG_FROM_INCLUDED)) + opts.add(OPTION_FROM); + if (pkt.isFlagSet(Packet.FLAG_ECHO)) { + if (pkt.getSendStreamId() > 0) + opts.add(OPTION_PING); + else + opts.add(OPTION_PONG); + } + if (pkt.getNacks() != null) + opts.add(OPTION_NACK, 1, pkt.getNacks().length); + int optLen = opts.size(); + byte options[] = opts.getData(); + + // PCAP Header + long now; + if (isInbound) + now = _context.clock().now(); + else + now = ((PacketLocal)pkt).getLastSend(); + DataHelper.writeLong(_fos, 4, now / 1000); + DataHelper.writeLong(_fos, 4, 1000 * (now % 1000)); + DataHelper.writeLong(_fos, 4, 54 + optLen + includeLen); // 14 MAC + 20 IP + 20 TCP + DataHelper.writeLong(_fos, 4, 58 + optLen + pkt.getPayloadSize()); // 54 + MAC checksum + + // MAC Header 14 bytes + _fos.write(MAC_HEADER); + + // IP 20 bytes total + // IP Header 12 bytes + int length = 20 + 20 + optLen + pkt.getPayloadSize(); + _fos.write(IP_HEADER_1); + DataHelper.writeLong(_fos, 2, length); // total IP length + _fos.write(IP_HEADER_2); + + // src and dst IP 8 bytes + // make our side always start with 127.0.x.x + byte[] srcAddr, dstAddr; + if (isInbound) { + if (con != null) { + dstAddr = new byte[4]; + dstAddr[0] = 127; + dstAddr[1] = 0; + System.arraycopy(con.getSession().getMyDestination().calculateHash().getData(), 0, dstAddr, 2, 2); + } else + dstAddr = MY_UNK_IP; + + if (con != null && con.getRemotePeer() != null) + srcAddr = con.getRemotePeer().calculateHash().getData(); + else if (pkt.getOptionalFrom() != null) + srcAddr = pkt.getOptionalFrom().calculateHash().getData(); + else + srcAddr = UNK_IP; + } else { + if (con != null) { + srcAddr = new byte[4]; + srcAddr[0] = 127; + srcAddr[1] = 0; + System.arraycopy(con.getSession().getMyDestination().calculateHash().getData(), 0, srcAddr, 2, 2); + } else + srcAddr = MY_UNK_IP; + + if (con != null && con.getRemotePeer() != null) + dstAddr = con.getRemotePeer().calculateHash().getData(); + else + dstAddr = UNK_IP; + } + + // calculate and output the correct IP header checksum to keep the analyzers happy + int checksum = length; + checksum = update(checksum, IP_HEADER_1); + checksum = update(checksum, IP_HEADER_2); + checksum = update(checksum, srcAddr, 4); + checksum = update(checksum, dstAddr, 4); + DataHelper.writeLong(_fos, 2, checksum ^ 0xffff); + + // IPs + _fos.write(srcAddr, 0, 4); + _fos.write(dstAddr, 0, 4); + + // TCP header 20 bytes total + // src and dst port 4 bytes + // the rcv ID is the source, and the send ID is the dest. + DataHelper.writeLong(_fos, 2, pkt.getReceiveStreamId() & 0xffff); + DataHelper.writeLong(_fos, 2, pkt.getSendStreamId() & 0xffff); + + // seq and acks 8 bytes + long seq; + // wireshark wants the seq # in a SYN packet to be one less than the first data packet, + // so let's set it to 0. ??????????? + if (pkt.isFlagSet(Packet.FLAG_SYNCHRONIZE)) + seq = 0xffffffff; + else + seq = pkt.getSequenceNum(); + long acked = 0; + if (con != null) { + if (isInbound) + acked = getLowestAckedThrough(pkt, con); + else + acked = getLowestAckedThrough(pkt, con); + } + DataHelper.writeLong(_fos, 4, pkt.getSequenceNum()); + DataHelper.writeLong(_fos, 4, acked); + + // offset and flags 2 bytes + int flags = 0; + if (pkt.isFlagSet(Packet.FLAG_CLOSE)) + flags |= 0x01; + if (pkt.isFlagSet(Packet.FLAG_SYNCHRONIZE)) + flags |= 0x02; + if (pkt.isFlagSet(Packet.FLAG_RESET)) + flags |= 0x04; + if (!pkt.isFlagSet(Packet.FLAG_NO_ACK)) + flags |= 0x10; + // offset byte + int osb = (5 + (optLen / 4)) << 4; + DataHelper.writeLong(_fos, 1, osb); // 5 + optLen/4 32-byte words + DataHelper.writeLong(_fos, 1, flags); + + // window size 2 bytes + long window = ConnectionOptions.INITIAL_WINDOW_SIZE; + long msgSize = ConnectionOptions.DEFAULT_MAX_MESSAGE_SIZE; + if (con != null) { + if (isInbound) { + // try to represent what he thinks the window is, we don't really know + // this isn't really right, the lastsendid can get way ahead + window = acked + con.getOptions().getWindowSize() - con.getLastSendId(); + } else { + // following is from ConnectionPacketHandler + long ready = con.getInputStream().getHighestReadyBockId(); + int available = con.getOptions().getInboundBufferSize() - con.getInputStream().getTotalReadySize(); + int allowedBlocks = available/con.getOptions().getMaxMessageSize(); + window = (ready + allowedBlocks) - pkt.getSequenceNum(); + } + if (window < 0) + window = 0; + msgSize = con.getOptions().getMaxMessageSize(); + } + // messages -> bytes + window *= msgSize; + // for now we don't spoof window scaling + if (window > 65535) + window = 65535; + DataHelper.writeLong(_fos, 2, window); + + // checksum and urgent pointer 4 bytes + DataHelper.writeLong(_fos, 4, 0); + + // TCP option block + if (optLen > 0) + _fos.write(options, 0, optLen); + + // some data + if (includeLen > 0) + _fos.write(pkt.getPayload().getData(), 0, includeLen); + if (pkt.isFlagSet(Packet.FLAG_CLOSE)) + _fos.flush(); + } + + /** + * copied from Connection.ackPackets() + * + * This is really nasty, but if the packet has an ACK, then we + * find the lowest NACK, and we are acked thru the lowest - 1. + * + * If there is no ACK, then we could use the conn's highest acked through, + * for an inbound packet (containing acks for outbound packets) + * But it appears that all packets have ACKs, as FLAG_NO_ACK is never set. + * + * To do: Add the SACK option to the TCP header. + */ + private static long getLowestAckedThrough(Packet pkt, Connection con) { + long nacks[] = pkt.getNacks(); + long lowest = pkt.getAckThrough(); // can return -1 but we increment below + if (nacks != null) { + for (int i = 0; i < nacks.length; i++) { + if (nacks[i] - 1 < lowest) + lowest = nacks[i] - 1; + } + } + // I2P ack is of current seq number; TCP is next expected seq number + // should be >= 0 now + lowest++; + // just in case + return Math.max(0, lowest); + } + + private static class Options { + private final byte[] _b; + private int _len; + + public Options() { + _b = new byte[MAX_OPTION_LEN]; + } + + /** 40 bytes long, caller must use size() to get actual size */ + public byte[] getData() { return _b; } + + /** rounded to next 4 bytes */ + public int size() { return ((_len + 3) / 4) * 4; } + + public void add(byte type) { + add(type, 0, 0); + } + + public void add(byte type, int datalen, int data) { + // no room? drop silently + if (_len + datalen + 2 > MAX_OPTION_LEN) + return; + _b[_len++] = type; + _b[_len++] = (byte) (datalen + 2); + if (datalen > 0) { + for (int i = datalen - 1; i >= 0; i--) + _b[_len++] = (byte) ((data >> (i * 8)) & 0xff); + } + // end-of-options mark + if (_len < MAX_OPTION_LEN) + _b[_len] = OPTION_END; + } + } + + /** one's complement 2-byte checksum update */ + private static int update(int checksum, byte[] b) { + return update(checksum, b, b.length); + } + + private static int update(int checksum, byte[] b, int len) { + int rv = checksum; + for (int i = 0; i < len; i += 2) { + rv += ((b[i] << 8) & 0xff00) | (b[i+1] & 0xff); + if (rv > 0xffff) { + rv &= 0xffff; + rv++; + } + } + return rv; + } +} diff --git a/apps/streaming/java/test/net/i2p/client/streaming/ConnectCloseTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectCloseTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/ConnectCloseTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectCloseTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/ConnectInactivityTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectInactivityTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/ConnectInactivityTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectInactivityTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/ConnectTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/ConnectTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/ConnectTimeoutTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectTimeoutTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/ConnectTimeoutTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/ConnectTimeoutTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/EchoLargeTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/EchoLargeTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/EchoLargeTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/EchoLargeTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/EchoTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/EchoTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/EchoTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/EchoTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/MessageInputStreamTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/MessageInputStreamTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/MessageInputStreamTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/MessageInputStreamTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/MessageOutputStreamTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/MessageOutputStreamTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/MessageOutputStreamTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/MessageOutputStreamTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/PingTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/PingTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/PingTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/PingTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTest.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTest.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTest.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTest.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTestClient.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTestClient.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTestClient.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTestClient.java diff --git a/apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTestServer.java b/apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTestServer.java similarity index 100% rename from apps/streaming/java/test/net/i2p/client/streaming/StreamSinkTestServer.java rename to apps/streaming/java/test/junit/net/i2p/client/streaming/StreamSinkTestServer.java diff --git a/apps/susidns/locale/messages_de.po b/apps/susidns/locale/messages_de.po index 3a71de9892fec6be782f99b67ceea8aa749285c2..7dba1fcc7afd2079088143773a97c4bbd6dcf3db 100644 --- a/apps/susidns/locale/messages_de.po +++ b/apps/susidns/locale/messages_de.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-26 19:55+0000\n" +"POT-Creation-Date: 2012-11-02 19:46+0000\n" "PO-Revision-Date: 2012-03-11 02:03+0000\n" "Last-Translator: D.A. Loader <>\n" "Language-Team: German (http://www.transifex.net/projects/p/I2P/language/" @@ -110,27 +110,27 @@ msgstr[1] "Das Adressbuch enthält {0} Einträge." msgid "Showing {0} of {1}" msgstr "Zeige {0} von {1}" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412 msgid "Add" msgstr "Hinzufügen" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410 msgid "Replace" msgstr "Ersetzen" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238 #, java-format msgid "Host name {0} is already in address book, unchanged." msgstr "Der Name {0} ist bereits im Adressbuch und nicht geändert." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:270 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240 #, java-format msgid "" @@ -140,63 +140,63 @@ msgstr "" "Der Name {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie " "auf \"Ersetzen\", um den alten Eintrag zu überschreiben!" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:282 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:283 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253 #, java-format msgid "Destination added for {0}." msgstr "Ziel hinzugefügt für {0}" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255 #, java-format msgid "Destination changed for {0}." msgstr "Ziel geändert für {0}" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257 msgid "Warning - host name does not end with \".i2p\"" msgstr "Warnung - Hostname darf nicht auf \".i2p enden\"" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265 msgid "Invalid Base 64 destination." msgstr "Ungültiges Basis-64 Ziel" -#: ../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:271 #, java-format msgid "Invalid host name \"{0}\"." msgstr "Ungültiger Hostname \"{0}\"" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:301 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274 msgid "Please enter a host name and destination" msgstr "Bitte geben Sie einen Hostnamen und ein Ziel ein!" #. clear search when deleting -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:325 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274 msgid "Delete Entry" msgstr "Eintrag löschen" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351 msgid "Delete Selected" msgstr "Ausgewähltes löschen" #. parameter is a host name -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295 #, java-format msgid "Destination {0} deleted." msgstr "Ziel {0} gelöscht" #. parameter will always be >= 2 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298 #, java-format msgid "1 destination deleted." @@ -204,22 +204,22 @@ msgid_plural "{0} destinations deleted." msgstr[0] "Ein Ziel gelöscht" msgstr[1] "{0} Ziele gelöscht" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:323 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:324 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300 msgid "No entries selected to delete." msgstr "Es wurden keine Einträge zum Löschen ausgewählt." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:332 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307 msgid "Address book saved." msgstr "Adressbuch gespeichert" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335 msgid "ERROR: Could not write addressbook file." msgstr "FEHLER: Konnte Adressbuchdatei nicht schreiben." -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:339 -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:340 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:149 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128 msgid "" @@ -229,29 +229,38 @@ msgstr "" "Ungültige Datenübertragung, vielleicht haben Sie die \"Zurück\"- oder \"Neu " "laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:342 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:151 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:313 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:140 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145 msgid "Save" msgstr "Speichern" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 msgid "Configuration saved." msgstr "Einstellungen gespeichert" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:143 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143 msgid "Reload" msgstr "Neu laden" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:145 msgid "Configuration reloaded." msgstr "Einstellungen neu geladen" -#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:101 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:100 #, java-format msgid "{0} address book in {1} database" msgstr "{0} Adressbuch in {1} Datenbank" diff --git a/apps/susidns/locale/messages_en.po b/apps/susidns/locale/messages_en.po index 5b90902348f08aface23b626dc128c25f311d3ee..577c9afdd918fe302718cd2768bc4cefc1f3a1b4 100644 --- a/apps/susidns/locale/messages_en.po +++ b/apps/susidns/locale/messages_en.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P susidns\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-16 23:58+0000\n" +"POT-Creation-Date: 2012-11-02 19:51+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck <duck@mail.i2p>\n" "Language-Team: duck <duck@mail.i2p>\n" @@ -102,27 +102,27 @@ msgstr[1] "" msgid "Showing {0} of {1}" msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412 msgid "Add" msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410 msgid "Replace" msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238 #, java-format msgid "Host name {0} is already in address book, unchanged." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:270 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240 #, java-format msgid "" @@ -130,63 +130,63 @@ msgid "" "\"Replace\" to overwrite." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:282 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:283 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253 #, java-format msgid "Destination added for {0}." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255 #, java-format msgid "Destination changed for {0}." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257 msgid "Warning - host name does not end with \".i2p\"" msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265 msgid "Invalid Base 64 destination." msgstr "" -#: ../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:271 #, java-format msgid "Invalid host name \"{0}\"." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:301 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274 msgid "Please enter a host name and destination" msgstr "" #. clear search when deleting -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:325 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274 msgid "Delete Entry" msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351 msgid "Delete Selected" msgstr "" #. parameter is a host name -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295 #, java-format msgid "Destination {0} deleted." msgstr "" #. parameter will always be >= 2 -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298 #, java-format msgid "1 destination deleted." @@ -194,22 +194,22 @@ msgid_plural "{0} destinations deleted." msgstr[0] "" msgstr[1] "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:323 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:324 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300 msgid "No entries selected to delete." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:332 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307 msgid "Address book saved." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335 msgid "ERROR: Could not write addressbook file." msgstr "" -#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:339 -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:340 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:149 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128 msgid "" @@ -217,29 +217,38 @@ msgid "" "\" button on your browser. Please resubmit." msgstr "" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:342 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:151 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:313 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:140 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145 msgid "Save" msgstr "" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 msgid "Configuration saved." msgstr "" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:143 #: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143 msgid "Reload" msgstr "" -#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:145 msgid "Configuration reloaded." msgstr "" -#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:101 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:100 #, java-format msgid "{0} address book in {1} database" msgstr "" diff --git a/apps/susidns/locale/messages_pt.po b/apps/susidns/locale/messages_pt.po new file mode 100644 index 0000000000000000000000000000000000000000..fbf4796f83e1f8ebf1ce7309ba99ce9903f0bce5 --- /dev/null +++ b/apps/susidns/locale/messages_pt.po @@ -0,0 +1,713 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susidns package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# <rutweiller@hotmail.com>, 2012. +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-11-02 19:48+0000\n" +"PO-Revision-Date: 2012-10-17 23:34+0000\n" +"Last-Translator: Ruthein <rutweiller@hotmail.com>\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/" +"pt/)\n" +"Language: pt\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" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:130 +#, java-format +msgid "Host name \"{0}\" contains illegal character {1}" +msgstr "" + +#: ../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 +#, java-format +msgid "Host name cannot start with \"{0}\"" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:147 +#: ../src/java/src/i2p/susi/dns/AddressBean.java:149 +#, java-format +msgid "Host name cannot end with \"{0}\"" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:154 +#, java-format +msgid "Host name cannot contain \"{0}\"" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:157 +#, java-format +msgid "" +"Host name \"{0}\" requires conversion to ASCII but the conversion library is " +"unavailable in this JVM" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:218 +msgid "None" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:226 +msgid "Hashcash" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:228 +msgid "Hidden" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:230 +msgid "Signed" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressBean.java:232 +#, java-format +msgid "Type {0}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:202 +#, java-format +msgid "One result for search within filtered list." +msgid_plural "{0} results for search within filtered list." +msgstr[0] "" +msgstr[1] "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206 +#, java-format +msgid "Filtered list contains 1 entry." +msgid_plural "Fltered list contains {0} entries." +msgstr[0] "" +msgstr[1] "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:211 +#, java-format +msgid "One result for search." +msgid_plural "{0} results for search." +msgstr[0] "" +msgstr[1] "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:220 +#, java-format +msgid "Address book contains 1 entry." +msgid_plural "Address book contains {0} entries." +msgstr[0] "" +msgstr[1] "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236 +#, java-format +msgid "Showing {0} of {1}" +msgstr "Showing {0} of {1}" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412 +msgid "Add" +msgstr "Add" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:258 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410 +msgid "Replace" +msgstr "Replace" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238 +#, java-format +msgid "Host name {0} is already in address book, unchanged." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:270 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240 +#, java-format +msgid "" +"Host name {0} is already in address book with a different destination. Click " +"\"Replace\" to overwrite." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:283 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253 +#, java-format +msgid "Destination added for {0}." +msgstr "Destination added for {0}." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255 +#, java-format +msgid "Destination changed for {0}." +msgstr "Destination changed for {0}." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257 +msgid "Warning - host name does not end with \".i2p\"" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265 +msgid "Invalid Base 64 destination." +msgstr "Invalid destination Base 64 ." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:271 +#, java-format +msgid "Invalid host name \"{0}\"." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:301 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274 +msgid "Please enter a host name and destination" +msgstr "Please enter a host name and destination" + +#. clear search when deleting +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274 +msgid "Delete Entry" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351 +msgid "Delete Selected" +msgstr "Delete Selected" + +#. parameter is a host name +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295 +#, java-format +msgid "Destination {0} deleted." +msgstr "Destination {0} deleted." + +#. parameter will always be >= 2 +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298 +#, java-format +msgid "1 destination deleted." +msgid_plural "{0} destinations deleted." +msgstr[0] "" +msgstr[1] "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:324 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300 +msgid "No entries selected to delete." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:332 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307 +msgid "Address book saved." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335 +msgid "ERROR: Could not write addressbook file." +msgstr "ERROR: Could not write addressbook file." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:340 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:149 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128 +msgid "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." +msgstr "" +"Invalid form submission, probably because you used the \"back\" or \"reload" +"\" button on your browser. Please resubmit." + +#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:342 +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:151 +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:313 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130 +msgid "" +"If the problem persists, verify that you have cookies enabled in your " +"browser." +msgstr "" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:140 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145 +msgid "Save" +msgstr "Save" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142 +msgid "Configuration saved." +msgstr "Configuration saved." + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:143 +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143 +msgid "Reload" +msgstr "Reload" + +#: ../src/java/src/i2p/susi/dns/ConfigBean.java:145 +msgid "Configuration reloaded." +msgstr "Configuration reloaded." + +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:100 +#, java-format +msgid "{0} address book in {1} database" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:248 +msgid "Manually added via SusiDNS" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262 +#, java-format +msgid "Failed to add Destination for {0} to naming service {1}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:286 +#, java-format +msgid "Failed to delete Destination for {0} from naming service {1}" +msgstr "" + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:115 +msgid "" +"Subscriptions saved, updating addressbook from subscription sources now." +msgstr "" +"Subscriptions saved, updating addressbook from subscription sources now." + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:120 +msgid "Subscriptions saved." +msgstr "Subscriptions saved." + +#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:124 +msgid "Subscriptions reloaded." +msgstr "Subscriptions reloaded." + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125 +msgid "address book" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:132 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:133 +msgid "Overview" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119 +msgid "Address books" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121 +msgid "private" +msgstr "private" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:131 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123 +msgid "master" +msgstr "master" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:133 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125 +msgid "router" +msgstr "router" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:135 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127 +msgid "published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129 +msgid "Subscriptions" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145 +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130 +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128 +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:131 +msgid "Configuration" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:134 +msgid "Address book" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:154 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:139 +msgid "Storage" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172 +msgid "Filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:175 +msgid "other" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177 +msgid "all" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:191 +msgid "Current filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:196 +msgid "clear filter" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:213 +msgid "Search" +msgstr "Search" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246 +msgid "Name" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:248 +msgid "Links" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:250 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:266 +msgid "Destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:286 +msgid "Mark for deletion" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307 +msgid "Base 32 address" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:311 +msgid "More information on this entry" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314 +msgid "details" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:349 +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408 +msgid "Cancel" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:383 +msgid "This address book is empty." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398 +msgid "Add new destination" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400 +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:165 +msgid "Host Name" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119 +msgid "configuration" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155 +msgid "Hints" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157 +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)." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159 +msgid "" +"If you want to manually add lines to an addressbook, add them to the private " +"or master addressbooks." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160 +msgid "" +"The router addressbook and the published addressbook are updated by the " +"addressbook application." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162 +msgid "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." +msgstr "" +"When you publish your addressbook, ALL destinations from the master and " +"router addressbooks appear there." + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163 +msgid "" +"Use the private addressbook for private destinations, these are not " +"published." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165 +msgid "Options" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167 +msgid "File containing the list of subscriptions URLs (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169 +msgid "Update interval in hours" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171 +msgid "" +"Your public hosts.txt file (choose a path within your webserver document " +"root)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173 +msgid "Your hosts.txt (don't change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175 +msgid "Your personal addressbook, these hosts will be published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177 +msgid "Your private addressbook, it is never published" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:179 +msgid "Port for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:181 +msgid "Hostname for your eepProxy (no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:183 +msgid "Whether to update the published addressbook" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:185 +msgid "" +"File containing the etags header from the fetched subscription URLs (no need " +"to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:187 +msgid "" +"File containing the modification timestamp for each fetched subscription URL " +"(no need to change)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:189 +msgid "File to log activity to (change to /dev/null if you like)" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:191 +msgid "Name of the theme to use (defaults to 'light')" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110 +msgid "addressbook" +msgstr "addressbook" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:181 +msgid "Encoded Name" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197 +msgid "Base 32 Address" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207 +msgid "Base 64 Hash" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213 +msgid "Address Helper" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220 +msgid "link" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224 +msgid "Public Key" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226 +msgid "ElGamal 2048 bit" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230 +msgid "Signing Key" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232 +msgid "DSA 1024 bit" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236 +msgid "Certificate" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242 +msgid "Added Date" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248 +msgid "Source" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254 +msgid "Last Modified" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260 +msgid "Notes" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110 +msgid "Introduction" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132 +msgid "What is the addressbook?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134 +msgid "The addressbook application is part of your I2P installation." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135 +msgid "" +"It regularly updates your hosts.txt file from distributed sources or " +"\"subscriptions\"." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137 +msgid "" +"In the default configuration, the address book is only subscribed to www." +"i2p2.i2p." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138 +msgid "" +"Subscribing to additional sites is easy, just add them to your <a href=" +"\"subscriptions\">subscriptions</a> file." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:140 +msgid "" +"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/" +"naming.html\">the overview on www.i2p2.i2p</a>." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:142 +msgid "How does the addressbook application work?" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:144 +msgid "" +"The addressbook application regularly polls your subscriptions and merges " +"their content into your \"router\" address book." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145 +msgid "" +"Then it merges your \"master\" address book into the router address book as " +"well." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:146 +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." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:148 +msgid "" +"The router also uses a private address book (not shown in the picture), " +"which is not merged or published." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149 +msgid "" +"Hosts in the private address book can be accessed by you but their addresses " +"are never distributed to others." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:150 +msgid "" +"The private address book can also be used for aliases of hosts in your other " +"address books." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111 +msgid "subscriptions" +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147 +msgid "The subscription file contains a list of i2p URLs." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:148 +msgid "" +"The addressbook application regularly checks this list for new eepsites." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149 +msgid "Those URLs refer to published hosts.txt files." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:150 +msgid "" +"The default subscription is the hosts.txt from www.i2p2.i2p, which is " +"updated infrequently." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151 +msgid "" +"So it is a good idea to add additional subscriptions to sites that have the " +"latest addresses." +msgstr "" + +#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153 +msgid "See the FAQ for a list of subscription URLs." +msgstr "" diff --git a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java index 883184ee116c0ad48e443aacc205769fe3f8fe02..1e0f60ceef61adbb51fe1bf1de21c0b2d15aa296 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java @@ -119,10 +119,10 @@ public class AddressbookBean extends BaseBean } public String getBook() { - if( book == null || ( book.compareToIgnoreCase( "master" ) != 0 && - book.compareToIgnoreCase( "router" ) != 0 && - book.compareToIgnoreCase( "private" ) != 0 && - book.compareToIgnoreCase( "published" ) != 0 )) + if( book == null || ( !book.equalsIgnoreCase( "master" ) && + !book.equalsIgnoreCase( "router" ) && + !book.equalsIgnoreCase( "private" ) && + !book.equalsIgnoreCase( "published" ))) book = "router"; return book; @@ -252,7 +252,8 @@ public class AddressbookBean extends BaseBean String message = ""; if( action != null ) { - if( lastSerial != null && serial != null && serial.compareTo( lastSerial ) == 0 ) { + if (_context.getBooleanProperty(PROP_PW_ENABLE) || + (serial != null && serial.equals(lastSerial))) { boolean changed = false; if (action.equals(_("Add")) || action.equals(_("Replace"))) { if( addressbook != null && hostname != null && destination != null ) { @@ -336,7 +337,9 @@ public class AddressbookBean extends BaseBean } } else { - message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."); + message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser."); } } @@ -364,22 +367,22 @@ public class AddressbookBean extends BaseBean public boolean isMaster() { - return getBook().compareToIgnoreCase( "master" ) == 0; + return getBook().equalsIgnoreCase("master"); } public boolean isRouter() { - return getBook().compareToIgnoreCase( "router" ) == 0; + return getBook().equalsIgnoreCase("router"); } public boolean isPublished() { - return getBook().compareToIgnoreCase( "published" ) == 0; + return getBook().equalsIgnoreCase("published"); } public boolean isPrivate() { - return getBook().compareToIgnoreCase( "private" ) == 0; + return getBook().equalsIgnoreCase("private"); } public void setFilter(String filter) { - if( filter != null && ( filter.length() == 0 || filter.compareToIgnoreCase( "none" ) == 0 ) ) { + if( filter != null && ( filter.length() == 0 || filter.equalsIgnoreCase("none"))) { filter = null; search = null; } diff --git a/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java b/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java index 58950a923b9cf54bd6d0a9b9dc999f961dadd564..04d8cc2045720b80943dfcda0acc7d679bdbe73f 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java @@ -14,7 +14,7 @@ import net.i2p.I2PAppContext; */ public class BaseBean { - private final I2PAppContext _context; + protected final I2PAppContext _context; protected final Properties properties; private long configLastLoaded = 0; @@ -26,6 +26,7 @@ public class BaseBean public static final String PROP_THEME_NAME = "theme"; public static final String DEFAULT_THEME = "light"; public static final String BASE_THEME_PATH = "/themes/susidns/"; + public static final String PROP_PW_ENABLE = "routerconsole.auth.enable"; public BaseBean() { diff --git a/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java b/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java index ee65753564a0ff961f9432664fdfd5c8444b57bd..55e76f08d3925468d0ca0dd0c97aef0dc8fc741e 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java @@ -135,7 +135,8 @@ public class ConfigBean implements Serializable { public String getMessages() { String message = ""; if( action != null ) { - if( lastSerial != null && serial != null && serial.compareTo( lastSerial ) == 0 ) { + if (I2PAppContext.getGlobalContext().getBooleanProperty(BaseBean.PROP_PW_ENABLE) || + (serial != null && serial.equals(lastSerial))) { if(action.equals(_("Save"))) { save(); message = _("Configuration saved."); @@ -145,7 +146,9 @@ public class ConfigBean implements Serializable { } } else { - message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."); + message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser."); } } if( message.length() > 0 ) diff --git a/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java b/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java index eb1e1d48dbe92c6e8206d7a6d6a840e6e38d5ac9..bb9cf4e7cb3181775c48cc745e175db970ca7a7b 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java @@ -28,7 +28,6 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; -import net.i2p.I2PAppContext; import net.i2p.client.naming.NamingService; import net.i2p.data.DataFormatException; import net.i2p.data.Destination; @@ -128,7 +127,7 @@ public class NamingServiceBean extends AddressbookBean /** @return the NamingService for the current file name, or the root NamingService */ private NamingService getNamingService() { - NamingService root = I2PAppContext.getGlobalContext().namingService(); + NamingService root = _context.namingService(); NamingService rv = searchNamingService(root, getFileName()); return rv != null ? rv : root; } @@ -173,7 +172,7 @@ public class NamingServiceBean extends AddressbookBean for (Map.Entry<String, Destination> entry : results.entrySet()) { String name = entry.getKey(); if( filter != null && filter.length() > 0 ) { - if( filter.compareTo( "0-9" ) == 0 ) { + if (filter.equals("0-9")) { char first = name.charAt(0); if( first < '0' || first > '9' ) continue; @@ -222,7 +221,8 @@ public class NamingServiceBean extends AddressbookBean Properties nsOptions = new Properties(); // only blockfile needs this nsOptions.setProperty("list", getFileName()); - if( lastSerial != null && serial != null && serial.compareTo( lastSerial ) == 0 ) { + if (_context.getBooleanProperty(PROP_PW_ENABLE) || + (serial != null && serial.equals(lastSerial))) { boolean changed = false; if (action.equals(_("Add")) || action.equals(_("Replace"))) { if(hostname != null && destination != null) { @@ -243,7 +243,7 @@ public class NamingServiceBean extends AddressbookBean Destination dest = new Destination(destination); if (oldDest != null) { nsOptions.putAll(outProperties); - nsOptions.setProperty("m", Long.toString(I2PAppContext.getGlobalContext().clock().now())); + nsOptions.setProperty("m", Long.toString(_context.clock().now())); } nsOptions.setProperty("s", _("Manually added via SusiDNS")); boolean success = getNamingService().put(host, dest, nsOptions); @@ -308,7 +308,9 @@ public class NamingServiceBean extends AddressbookBean } } else { - message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."); + message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser."); } } diff --git a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java index 8675613c5c2a62df586a6efc04baf49f2ddab45f..d748a2f7807dad5730185ed1b934304581a76684 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java @@ -33,7 +33,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.Properties; -import net.i2p.I2PAppContext; import net.i2p.util.SecureFileOutputStream; public class SubscriptionsBean extends BaseBean @@ -99,7 +98,8 @@ public class SubscriptionsBean extends BaseBean public String getMessages() { String message = ""; if( action != null ) { - if( lastSerial != null && serial != null && serial.compareTo( lastSerial ) == 0 ) { + if (_context.getBooleanProperty(PROP_PW_ENABLE) || + (serial != null && serial.equals(lastSerial))) { if (action.equals(_("Save"))) { save(); /******* @@ -115,7 +115,7 @@ public class SubscriptionsBean extends BaseBean message = _("Subscriptions saved, updating addressbook from subscription sources now."); // + "<img height=\"1\" width=\"1\" alt=\"\" " + // "src=\"/addressbook/?wakeup=1&nonce=" + nonce + "\">"; - I2PAppContext.getGlobalContext().namingService().requestUpdate(null); + _context.namingService().requestUpdate(null); } else { message = _("Subscriptions saved."); } @@ -125,7 +125,9 @@ public class SubscriptionsBean extends BaseBean } } else { - message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."); + message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.") + + ' ' + + _("If the problem persists, verify that you have cookies enabled in your browser."); } } if( message.length() > 0 ) diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java index dfbe90d20b9ea7d73f1164effccd46797b2eba94..bbe5f8ffae19684c74796ec121e63d0ffb42fabe 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java +++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java @@ -42,7 +42,7 @@ public class POP3MailBox { private String host = null, user = null, pass = null; - private String lastLine = "-ERR", lastError = null; + private String lastLine = "-ERR No response from server", lastError = null; private int port = 0, mails = 0, read = 0; diff --git a/build.xml b/build.xml index 82291712bb37c0d0edbe3a58b989497093d4b71a..c68d8ac9c7e42e769ebeab440e14f749a4101d41 100644 --- a/build.xml +++ b/build.xml @@ -33,7 +33,7 @@ <echo message=" updaterWithGeoIP: updater including GeoIP Files" /> <echo message=" updaterWithJettyFixesAndGeoIP" /> <echo message=" updaterWithJettyFixesAndJbigi" /> - <echo message=" updaterSmall: updater with the essentials only - no SAM, i2psnark, SusiMail, SusiDNS, news.xml, or history.txt" /> + <echo message=" updaterSmall: updater with the essentials only - no SAM, i2psnark, SusiMail, SusiDNS, or history.txt" /> <echo message=" updaterRouter: updater with the i2p.jar and router.jar only" /> <echo message=" distclean: clean up all derived files" /> <!-- <echo message=" syndie: generate a standalone syndie install" /> --> @@ -1054,13 +1054,9 @@ <arg value=" ---------------- EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE" /> </exec> <copy file="installer/resources/deletelist.txt" todir="pkg-temp/" /> - <!-- May be pointless now, people with split directories will never see this, - and for flat installs we don't want to overwrite news more recent than the update package. - <copy file="installer/resources/news.xml" todir="pkg-temp/docs/" /> - --> </target> - <target name="prepupdateSmall" depends="buildSmall, prepupdateRouter, prepthemeupdates"> + <target name="prepupdateSmall" depends="buildSmall, prepupdateRouter, prepjupdatefixes, prepthemeupdates"> <copy file="build/i2ptunnel.jar" todir="pkg-temp/lib/" /> <copy file="build/mstreaming.jar" todir="pkg-temp/lib/" /> <copy file="build/streaming.jar" todir="pkg-temp/lib/" /> @@ -1116,7 +1112,7 @@ </target> <!-- Jetty 6 I2P logging addons, not really fixes --> - <target name="prepjupdatefixes" depends="prepupdate, buildWEB"> + <target name="prepjupdatefixes" depends="buildWEB"> <copy file="build/jetty-i2p.jar" todir="pkg-temp/lib/" /> </target> @@ -1386,7 +1382,6 @@ <arg value="-l" /> <arg value="history.txt" /> <arg value="installer/install.xml" /> - <arg value="installer/resources/news.xml" /> <arg value="core/java/src/net/i2p/CoreVersion.java" /> <arg value="router/java/src/net/i2p/router/RouterVersion.java" /> </exec> diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 33be4db7098c9b442b1fc746141e09755a599447..dd2111bd4e3228e69f556527f7a78e0b09cbeef2 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.9.2"; + public final static String VERSION = "0.9.3"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/core/java/src/net/i2p/app/ClientApp.java b/core/java/src/net/i2p/app/ClientApp.java new file mode 100644 index 0000000000000000000000000000000000000000..8900630bcf532e41b32bb5503b2a5cc085f29dcc --- /dev/null +++ b/core/java/src/net/i2p/app/ClientApp.java @@ -0,0 +1,58 @@ +package net.i2p.app; + +import net.i2p.I2PAppContext; + +/** + * If a class started via clients.config implements this interface, + * it will be used to manage the client, instead of starting with main() + * + * Clients implementing this interface MUST provide the following constructor: + * + * public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args) {...} + * + * All parameters are non-null. + * This constructor is for instantiation only. + * Do not take a long time. Do not block. Never start threads or processes in it. + * The ClientAppState of the returned object must be INITIALIZED, + * or else throw something. + * The startup() method will be called next. + * + * Never ever hold a static reference to the context or anything derived from it. + * + * @since 0.9.4 + */ +public interface ClientApp { + + /** + * Do not take a long time. Do not block. Start threads here if necessary. + * Client must call ClientAppManager.notify() at least once within this + * method to change the state from INITIALIZED to something else. + * Will not be called multiple times on the same object. + */ + public void startup() throws Throwable; + + /** + * Do not take a long time. Do not block. Use a thread if necessary. + * If previously running, client must call ClientAppManager.notify() at least once within this + * method to change the state to STOPPING or STOPPED. + * May be called multiple times on the same object, in any state. + */ + public void shutdown(String[] args) throws Throwable; + + /** + * The current state of the ClientApp. + */ + public ClientAppState getState(); + + /** + * The generic name of the ClientApp, used for registration, + * e.g. "console". Do not translate. + */ + public String getName(); + + /** + * The dislplay name of the ClientApp, used in user interfaces. + * The app must translate. + */ + public String getDisplayName(); +} diff --git a/core/java/src/net/i2p/app/ClientAppManager.java b/core/java/src/net/i2p/app/ClientAppManager.java new file mode 100644 index 0000000000000000000000000000000000000000..0830b7390cc16aed6f896b4191da6a1d04cad46a --- /dev/null +++ b/core/java/src/net/i2p/app/ClientAppManager.java @@ -0,0 +1,48 @@ +package net.i2p.app; + +/** + * Notify the router of events, and provide methods for + * client apps to find each other. + * + * @since 0.9.4 + */ +public interface ClientAppManager { + + /** + * Must be called on all state transitions except + * from UNINITIALIZED to INITIALIZED. + * + * @param app non-null + * @param state non-null + * @param message may be null + * @param e may be null + */ + public void notify(ClientApp app, ClientAppState state, String message, Exception e); + + /** + * Register with the manager under the given name, + * so that other clients may find it. + * Only required for apps used by other apps. + * + * @param app non-null + * @return true if successful, false if duplicate name + */ + public boolean register(ClientApp app); + + /** + * Unregister with the manager. Name must be the same as that from register(). + * Only required for apps used by other apps. + * + * @param app non-null + */ + public void unregister(ClientApp app); + + /** + * Get a registered app. + * Only used for apps finding other apps. + * + * @param name non-null + * @return client app or null + */ + public ClientApp getRegisteredApp(String name); +} diff --git a/core/java/src/net/i2p/app/ClientAppState.java b/core/java/src/net/i2p/app/ClientAppState.java new file mode 100644 index 0000000000000000000000000000000000000000..e4563aabfd10189ad7699a3f20bd1dd9210264bd --- /dev/null +++ b/core/java/src/net/i2p/app/ClientAppState.java @@ -0,0 +1,25 @@ +package net.i2p.app; + +/** + * Status of a client application. + * ClientAppManager.notify() must be called on all state transitions except + * from UNINITIALIZED to INITIALIZED. + * + * @since 0.9.4 + */ +public enum ClientAppState { + /** initial value */ + UNINITIALIZED, + /** after constructor is complete */ + INITIALIZED, + STARTING, + START_FAILED, + RUNNING, + STOPPING, + /** stopped normally */ + STOPPED, + /** stopped abnormally */ + CRASHED, + /** forked as a new process, status unknown from now on */ + FORKED +} diff --git a/core/java/src/net/i2p/app/package.html b/core/java/src/net/i2p/app/package.html new file mode 100644 index 0000000000000000000000000000000000000000..1be4e8331e53f5d65d201e5c4d331618b3680b88 --- /dev/null +++ b/core/java/src/net/i2p/app/package.html @@ -0,0 +1,18 @@ +<html> +<body> +<p> +Interfaces for classes to be started and stopped via clients.config. +Classes implementing the ClientApp interface will be controlled with +the that interface instead of being started with main(). +</p> +<p> +The benefits for clients using this interface: +<ul> +<li>Get the current context via the constructor +<li>Complete life cycle management by the router +<li>Avoid the need for static references +<li>Ability to find other clients without using static references +</ul> +</p> +</body> +</html> diff --git a/core/java/src/net/i2p/client/I2PClient.java b/core/java/src/net/i2p/client/I2PClient.java index 6521cf258fc56bc801129716e78cc35b1aa6a428..521ed35b5bc8a6e143a96394d788770b0155e625 100644 --- a/core/java/src/net/i2p/client/I2PClient.java +++ b/core/java/src/net/i2p/client/I2PClient.java @@ -21,6 +21,9 @@ import net.i2p.data.Destination; /** * Define the standard means of interacting with the I2P system * + * An I2PClient contains no state, it is just a facility for creating private key files + * and generating sesssions from existing private key files. + * * @author jrandom */ public interface I2PClient { @@ -37,6 +40,24 @@ public interface I2PClient { /** @since 0.8.1 */ public final static String PROP_RELIABILITY_NONE = "none"; + /** + * For router->client payloads. + * + * If false, the router will send the MessageStatus, + * the client must respond with a ReceiveMessageBegin, + * the router will send the MessagePayload, + * and the client respond with a ReceiveMessageEnd. + * + * If true, the router will send the MessagePayload immediately, + * and will not send a MessageStatus. + * The client will not send ReceiveMessageBegin or ReceiveMessageEnd. + * + * Default false, but the implementation in this package sets to true. + * + * @since 0.9.4 + */ + public final static String PROP_FAST_RECEIVE = "i2cp.fastReceive"; + /** protocol flag that must be sent when opening the i2cp connection to the router */ public final static int PROTOCOL_BYTE = 0x2A; diff --git a/core/java/src/net/i2p/client/I2PClientImpl.java b/core/java/src/net/i2p/client/I2PClientImpl.java index 23033dbf0f8d4042619cf37eb787b5d184ac1381..932daa61a5a4f0c9fc9476bce23d82253ecee215 100644 --- a/core/java/src/net/i2p/client/I2PClientImpl.java +++ b/core/java/src/net/i2p/client/I2PClientImpl.java @@ -25,14 +25,18 @@ import net.i2p.data.SigningPrivateKey; import net.i2p.data.SigningPublicKey; /** - * Base client implementation + * Base client implementation. + * An I2PClient contains no state, it is just a facility for creating private key files + * and generating sesssions from existing private key files. * * @author jrandom */ class I2PClientImpl implements I2PClient { /** - * Create the destination with a null payload + * Create the destination with a null payload. + * This is not bound to the I2PClient, you must supply the data back again + * in createSession(). * * @param destKeyStream location to write out the destination, PrivateKey, and SigningPrivateKey, * format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile} diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 69fc300788b288bb2bf6608808630bf621234ed9..f710d623e43b223abe57265729e912468cdd2fd9 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -136,6 +136,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa private long _lastActivity; private boolean _isReduced; + private final boolean _fastReceive; /** * @since 0.8.9 @@ -168,6 +169,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa if (options == null) options = (Properties) System.getProperties().clone(); loadConfig(options); + _fastReceive = Boolean.parseBoolean(_options.getProperty(I2PClient.PROP_FAST_RECEIVE)); } /** @@ -228,6 +230,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa _options.setProperty("i2cp.password", configPW); } } + if (_options.getProperty(I2PClient.PROP_FAST_RECEIVE) == null) + _options.setProperty(I2PClient.PROP_FAST_RECEIVE, "true"); + if (_options.getProperty(I2PClient.PROP_RELIABILITY) == null) + _options.setProperty(I2PClient.PROP_RELIABILITY, "none"); } /** save some memory, don't pass along the pointless properties */ @@ -280,6 +286,13 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa } catch (I2PSessionException ise) {} } + /** + * @since 0.9.4 + */ + public boolean getFastReceive() { + return _fastReceive; + } + void setLeaseSet(LeaseSet ls) { _leaseSet = ls; if (ls != null) { @@ -515,9 +528,9 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa * Needs work. */ protected class AvailabilityNotifier implements Runnable { - private List _pendingIds; - private List _pendingSizes; - private boolean _alive; + private final List _pendingIds; + private final List _pendingSizes; + private volatile boolean _alive; public AvailabilityNotifier() { _pendingIds = new ArrayList(2); diff --git a/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java b/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java index 7b294e3b6e54333d61966cb743aeaa9469c2fcc1..214a5609bd5a9d6d6b41f3010f68ce421a0460cc 100644 --- a/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java +++ b/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java @@ -40,10 +40,19 @@ class MessagePayloadMessageHandler extends HandlerImpl { decryptPayload(msg, session); session.addNewMessage(msg); - ReceiveMessageEndMessage m = new ReceiveMessageEndMessage(); - m.setMessageId(id); - m.setSessionId(msg.getSessionId()); - session.sendMessage(m); + // Small chance of this, but + // if we are a new I2P lib talking to an old router + // and we don't send this, the router will OOM as it has + // no cleaner for old messages. + // TODO after 0.9.4 is out, check router version from handshake + // and send it all the time if 0.9.3 or less + // (needs router version saving support in SetDateMessageHandler) + //if (!session.getFastReceive()) { + ReceiveMessageEndMessage m = new ReceiveMessageEndMessage(); + m.setMessageId(id); + m.setSessionId(msg.getSessionId()); + session.sendMessage(m); + //} } catch (DataFormatException dfe) { session.propogateError("Error handling a new payload message", dfe); } catch (I2PSessionException ise) { diff --git a/core/java/src/net/i2p/crypto/CryptixAESEngine.java b/core/java/src/net/i2p/crypto/CryptixAESEngine.java index 6d8e0da07579f0c4012feece0173d3dfa173766f..9836e7c403ca10766359ff243829d5d19190f06f 100644 --- a/core/java/src/net/i2p/crypto/CryptixAESEngine.java +++ b/core/java/src/net/i2p/crypto/CryptixAESEngine.java @@ -61,6 +61,7 @@ public class CryptixAESEngine extends AESEngine { } ****/ + /** */ public CryptixAESEngine(I2PAppContext context) { super(context); //_cache = new CryptixAESKeyCache(); diff --git a/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java b/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java index 02a11431fabc00381ca4d367ae0b69078f668d98..f36d7753b62bc422c6426a2f5e48a3514c1f9e52 100644 --- a/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java +++ b/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java @@ -32,53 +32,53 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor // Debugging methods and variables //........................................................................... - static final String _NAME = "Rijndael_Algorithm"; - static final boolean _IN = true, _OUT = false; + private static final String _NAME = "Rijndael_Algorithm"; + private static final boolean _IN = true, _OUT = false; - static final boolean _RDEBUG = false; - static final int _debuglevel = 0; // RDEBUG ? Rijndael_Properties.getLevel(NAME): 0; + private static final boolean _RDEBUG = false; + private static final int _debuglevel = 0; // RDEBUG ? Rijndael_Properties.getLevel(NAME): 0; // static final PrintWriter err = RDEBUG ? Rijndael_Properties.getOutput() : null; - static final PrintWriter _err = new PrintWriter(new java.io.OutputStreamWriter(System.err)); + private static final PrintWriter _err = new PrintWriter(new java.io.OutputStreamWriter(System.err)); - static final boolean _TRACE = false; // Rijndael_Properties.isTraceable(NAME); + private static final boolean _TRACE = false; // Rijndael_Properties.isTraceable(NAME); - static void debug(String s) { + private static void debug(String s) { _err.println(">>> " + _NAME + ": " + s); } - static void trace(boolean in, String s) { + private static void trace(boolean in, String s) { if (_TRACE) _err.println((in ? "==> " : "<== ") + _NAME + "." + s); } - static void trace(String s) { + private static void trace(String s) { if (_TRACE) _err.println("<=> " + _NAME + "." + s); } // Constants and variables //........................................................................... - static final int _BLOCK_SIZE = 16; // default block size in bytes - - static final int[] _alog = new int[256]; - static final int[] _log = new int[256]; - - static final byte[] _S = new byte[256]; - static final byte[] _Si = new byte[256]; - static final int[] _T1 = new int[256]; - static final int[] _T2 = new int[256]; - static final int[] _T3 = new int[256]; - static final int[] _T4 = new int[256]; - static final int[] _T5 = new int[256]; - static final int[] _T6 = new int[256]; - static final int[] _T7 = new int[256]; - static final int[] _T8 = new int[256]; - static final int[] _U1 = new int[256]; - static final int[] _U2 = new int[256]; - static final int[] _U3 = new int[256]; - static final int[] _U4 = new int[256]; - static final byte[] _rcon = new byte[30]; - - static final int[][][] _shifts = new int[][][] { { { 0, 0}, { 1, 3}, { 2, 2}, { 3, 1}}, + private static final int _BLOCK_SIZE = 16; // default block size in bytes + + private static final int[] _alog = new int[256]; + private static final int[] _log = new int[256]; + + private static final byte[] _S = new byte[256]; + private static final byte[] _Si = new byte[256]; + private static final int[] _T1 = new int[256]; + private static final int[] _T2 = new int[256]; + private static final int[] _T3 = new int[256]; + private static final int[] _T4 = new int[256]; + private static final int[] _T5 = new int[256]; + private static final int[] _T6 = new int[256]; + private static final int[] _T7 = new int[256]; + private static final int[] _T8 = new int[256]; + private static final int[] _U1 = new int[256]; + private static final int[] _U2 = new int[256]; + private static final int[] _U3 = new int[256]; + private static final int[] _U4 = new int[256]; + private static final byte[] _rcon = new byte[30]; + + private static final int[][][] _shifts = new int[][][] { { { 0, 0}, { 1, 3}, { 2, 2}, { 3, 1}}, { { 0, 0}, { 1, 5}, { 2, 4}, { 3, 3}}, { { 0, 0}, { 1, 7}, { 3, 5}, { 4, 4}}}; @@ -344,12 +344,12 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor } // multiply two elements of GF(2^m) - static final int mul(int a, int b) { + private static final int mul(int a, int b) { return (a != 0 && b != 0) ? _alog[(_log[a & 0xFF] + _log[b & 0xFF]) % 255] : 0; } // convenience method used in generating Transposition boxes - static final int mul4(int a, byte[] b) { + private static final int mul4(int a, byte[] b) { if (a == 0) return 0; a = _log[a & 0xFF]; int a0 = (b[0] != 0) ? _alog[(a + _log[b[0] & 0xFF]) % 255] & 0xFF : 0; diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 04ec793fd2ba3b00516d8dc09862f7792857a3a8..97d6ce50119f50714be6335e69ab6bd6b3a730fe 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -361,12 +361,21 @@ public class DataHelper { throw new RuntimeException("IO error writing to memory?! " + ioe.getMessage()); } } - + /** * Pretty print the mapping, unsorted * (unless the options param is an OrderedProperties) */ public static String toString(Properties options) { + return toString((Map) options); + } + + /** + * Pretty print the mapping, unsorted + * (unless the options param is an OrderedProperties) + * @since 0.9.4 + */ + public static String toString(Map<?, ?> options) { StringBuilder buf = new StringBuilder(); if (options != null) { for (Map.Entry entry : options.entrySet()) { @@ -502,7 +511,7 @@ public class DataHelper { } /** - * Hex with leading zeros. + * Lower-case hex with leading zeros. * Use toHexString(byte[]) to not get leading zeros * @param buf may be null (returns "") * @return String of length 2*buf.length @@ -516,7 +525,7 @@ public class DataHelper { private static final byte[] EMPTY_BUFFER = "".getBytes(); /** - * Hex with leading zeros. + * Lower-case hex with leading zeros. * Use toHexString(byte[]) to not get leading zeros * @param buf may be null * @param len number of bytes. If greater than buf.length, additional zeros will be prepended @@ -546,7 +555,7 @@ public class DataHelper { } /** - * Hex without leading zeros. + * Lower-case hex without leading zeros. * Use toString(byte[] to get leading zeros * @param data may be null (returns "00") */ diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java index c824c5f7d063c6f18f54be4f4cb2dc30cad3db04..27d67f3dd4c35a801b414a08a3f8b27ef52e11e8 100644 --- a/core/java/src/net/i2p/util/Addresses.java +++ b/core/java/src/net/i2p/util/Addresses.java @@ -25,6 +25,15 @@ import net.i2p.I2PAppContext; */ public abstract class Addresses { + /** + * Do we have any non-loop, non-wildcard IPv4 address at all? + * @since 0.9.4 + */ + public static boolean isConnected() { + // not as good as using a Java DBus implementation to talk to NetworkManager... + return !getAddresses(true, false, false).isEmpty(); + } + /** @return the first non-local address it finds, or null */ public static String getAnyAddress() { SortedSet<String> a = getAddresses(); @@ -51,13 +60,27 @@ public abstract class Addresses { } /** - * @return a sorted array of all addresses + * @return a sorted set of all addresses including wildcard * @param includeLocal whether to include local * @param includeIPv6 whether to include IPV6 * @return an array of all addresses * @since 0.8.3 */ public static SortedSet<String> getAddresses(boolean includeLocal, boolean includeIPv6) { + return getAddresses(includeLocal, includeLocal, includeIPv6); + } + + /** + * @return a sorted set of all addresses + * @param includeSiteLocal whether to include private like 192.168.x.x + * @param includeLoopbackAndWildcard whether to include 127.x.x.x and 0.0.0.0 + * @param includeIPv6 whether to include IPV6 + * @return an array of all addresses + * @since 0.9.4 + */ + public static SortedSet<String> getAddresses(boolean includeSiteLocal, + boolean includeLoopbackAndWildcard, + boolean includeIPv6) { boolean haveIPv4 = false; boolean haveIPv6 = false; SortedSet<String> rv = new TreeSet(); @@ -70,7 +93,8 @@ public abstract class Addresses { haveIPv4 = true; else haveIPv6 = true; - if (shouldInclude(allMyIps[i], includeLocal, includeIPv6)) + if (shouldInclude(allMyIps[i], includeSiteLocal, + includeLoopbackAndWildcard, includeIPv6)) rv.add(allMyIps[i].getHostAddress()); } } @@ -87,34 +111,39 @@ public abstract class Addresses { haveIPv4 = true; else haveIPv6 = true; - if (shouldInclude(addr, includeLocal, includeIPv6)) + if (shouldInclude(addr, includeSiteLocal, + includeLoopbackAndWildcard, includeIPv6)) rv.add(addr.getHostAddress()); } } } } catch (SocketException e) {} - if (includeLocal && haveIPv4) - rv.add("0.0.0.0"); - if (includeLocal && includeIPv6 && haveIPv6) - rv.add("0:0:0:0:0:0:0:0"); // we could do "::" but all the other ones are probably in long form + if (includeLoopbackAndWildcard) { + if (haveIPv4) + rv.add("0.0.0.0"); + if (includeIPv6 && haveIPv6) + rv.add("0:0:0:0:0:0:0:0"); // we could do "::" but all the other ones are probably in long form + } return rv; } - private static boolean shouldInclude(InetAddress ia, boolean includeLocal, boolean includeIPv6) { + private static boolean shouldInclude(InetAddress ia, boolean includeSiteLocal, + boolean includeLoopbackAndWildcard, boolean includeIPv6) { return - (!ia.isLinkLocalAddress()) && + (!ia.isLinkLocalAddress()) && // 169.254.x.x (!ia.isMulticastAddress()) && - (includeLocal || + (includeLoopbackAndWildcard || ((!ia.isAnyLocalAddress()) && - (!ia.isLoopbackAddress()) && - (!ia.isSiteLocalAddress()))) && + (!ia.isLoopbackAddress()))) && + (includeSiteLocal || + !ia.isSiteLocalAddress()) && // Hamachi 5/8 allocated to RIPE (30 November 2010) // Removed from TransportImpl.isPubliclyRoutable() // Check moved to here, for now, but will eventually need to // remove it from here also. - (includeLocal || - (!ia.getHostAddress().startsWith("5."))) && + //(includeLocal || + //(!ia.getHostAddress().startsWith("5."))) && (includeIPv6 || (ia instanceof Inet4Address)); } @@ -247,13 +276,18 @@ public abstract class Addresses { * Print out the local addresses */ public static void main(String[] args) { - System.err.println("External Addresses:"); - Set<String> a = getAddresses(false, false); + System.err.println("External IPv4 Addresses:"); + Set<String> a = getAddresses(false, false, false); + for (String s : a) + System.err.println(s); + System.err.println("\nExternal and Local IPv4 Addresses:"); + a = getAddresses(true, false, false); for (String s : a) System.err.println(s); - System.err.println("All addresses:"); - a = getAddresses(true, true); + System.err.println("\nAll addresses:"); + a = getAddresses(true, true, true); for (String s : a) System.err.println(s); + System.err.println("\nIs connected? " + isConnected()); } } diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java index 5b03d687ac4bfe71a8be2667f34f483b6016588c..84cdb7c252e6fb4f6abc3f3b209a828b0a01a2e8 100644 --- a/core/java/src/net/i2p/util/NativeBigInteger.java +++ b/core/java/src/net/i2p/util/NativeBigInteger.java @@ -353,7 +353,7 @@ public class NativeBigInteger extends BigInteger { /** * <p>Compare the BigInteger.modPow vs the NativeBigInteger.modPow of some * really big (2Kbit) numbers 100 different times and benchmark the - * performance (or shit a brick if they don't match). </p> + * performance.</p> * */ public static void main(String args[]) { diff --git a/core/java/src/net/i2p/util/PasswordManager.java b/core/java/src/net/i2p/util/PasswordManager.java new file mode 100644 index 0000000000000000000000000000000000000000..e0f75a095d01356b6bfcdd59e38bafe7d04401a5 --- /dev/null +++ b/core/java/src/net/i2p/util/PasswordManager.java @@ -0,0 +1,200 @@ +package net.i2p.util; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import net.i2p.I2PAppContext; +import net.i2p.data.Base64; +import net.i2p.data.DataHelper; +import net.i2p.data.SessionKey; + +/** + * Manage both plaintext and salted/hashed password storage in + * router.config. + * + * There's no state here, so instantiate at will. + * + * @since 0.9.4 + */ +public class PasswordManager { + private final I2PAppContext _context; + + protected static final int SALT_LENGTH = 16; + /** 48 */ + protected static final int SHASH_LENGTH = SALT_LENGTH + SessionKey.KEYSIZE_BYTES; + + /** stored as plain text */ + protected static final String PROP_PW = ".password"; + /** stored obfuscated as b64 of the UTF-8 bytes */ + protected static final String PROP_B64 = ".b64"; + /** stored as the hex of the MD5 hash of the ISO-8859-1 bytes. Compatible with Jetty. */ + protected static final String PROP_MD5 = ".md5"; + /** stored as a Unix crypt string */ + protected static final String PROP_CRYPT = ".crypt"; + /** stored as the b64 of the 16 byte salt + the 32 byte hash of the UTF-8 bytes */ + protected static final String PROP_SHASH = ".shash"; + + public PasswordManager(I2PAppContext ctx) { + _context = ctx; + } + + /** + * Checks both plaintext and hash + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ + public boolean check(String realm, String user, String pw) { + return checkPlain(realm, user, pw) || + checkB64(realm, user, pw) || + checkHash(realm, user, pw); + } + + /** + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ + public boolean checkPlain(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + return pw.equals(_context.getProperty(pfx + PROP_PW)); + } + + /** + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ + public boolean checkB64(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String b64 = _context.getProperty(pfx + PROP_B64); + if (b64 == null) + return false; + return b64.equals(Base64.encode(DataHelper.getUTF8(pw))); + } + + /** + * With random salt + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return if pw verified + */ + public boolean checkHash(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String shash = _context.getProperty(pfx + PROP_SHASH); + if (shash == null) + return false; + byte[] shashBytes = Base64.decode(shash); + if (shashBytes == null || shashBytes.length != SHASH_LENGTH) + return false; + byte[] salt = new byte[SALT_LENGTH]; + byte[] hash = new byte[SessionKey.KEYSIZE_BYTES]; + System.arraycopy(shashBytes, 0, salt, 0, SALT_LENGTH); + System.arraycopy(shashBytes, SALT_LENGTH, hash, 0, SessionKey.KEYSIZE_BYTES); + byte[] pwHash = _context.keyGenerator().generateSessionKey(salt, DataHelper.getUTF8(pw)).getData(); + return DataHelper.eq(hash, pwHash); + } + + /** + * Either plain or b64 + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @return the pw or null + */ + public String get(String realm, String user) { + String rv = getPlain(realm, user); + if (rv != null) + return rv; + return getB64(realm, user); + } + + /** + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @return the pw or null + */ + public String getPlain(String realm, String user) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + return _context.getProperty(pfx + PROP_PW); + } + + /** + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @return the decoded pw or null + */ + public String getB64(String realm, String user) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String b64 = _context.getProperty(pfx + PROP_B64); + if (b64 == null) + return null; + return Base64.decodeToString(b64); + } + + /** + * Straight MD5, no salt + * Will return the MD5 sum of "user:subrealm:pw", compatible with Jetty + * and RFC 2617. + * + * @param subrealm to be used in creating the checksum + * @param user non-null, non-empty, already trimmed + * @param pw non-null, plain text, already trimmed + * @return lower-case hex with leading zeros, 32 chars, or null on error + */ + public static String md5Hex(String subrealm, String user, String pw) { + String fullpw = user + ':' + subrealm + ':' + pw; + return md5Hex(fullpw); + } + + /** + * Straight MD5, no salt + * Will return the MD5 sum of the data, compatible with Jetty + * and RFC 2617. + * + * @param fullpw non-null, plain text, already trimmed + * @return lower-case hex with leading zeros, 32 chars, or null on error + */ + public static String md5Hex(String fullpw) { + try { + byte[] data = fullpw.getBytes("ISO-8859-1"); + byte[] sum = md5Sum(data); + if (sum != null) + // adds leading zeros if necessary + return DataHelper.toString(sum); + } catch (UnsupportedEncodingException uee) {} + return null; + } + + /** + * Standard MD5 checksum + * + * @param data non-null + * @return 16 bytes, or null on error + */ + public static byte[] md5Sum(byte[] data) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(data); + return md.digest(); + } catch (NoSuchAlgorithmException nsae) {} + return null; + } +} diff --git a/debian/changelog b/debian/changelog index ebb7f05d7cc4685976e32020f0727c2283cf8848..8fd25866653c22281f8ea41beefdad1183845cae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,50 @@ -i2p (0.9.1-1) unstable; urgency=low +i2p (0.9.3-1) stable; urgency=low + + * New Upstream release + * Upstream changelog (full details in history.txt): + - Active Queue Management + - I2PSnark DHT: Several bug fixes, enable by default. + - Priority queues + - Several SSU fixes including memory leak, and better handling of routers + behind firewalls that change UDP ports; additional defenses for malicious + packets. + - Fix piece selection (rarest-first) bugs in i2psnark + - Fix bug causing multiple browsers to open at startup + - Improvements in caching + - Several synchronization fixes and lock contention reduction + - Major reduction in SSU buffers memory use + - Fix streaming connection timeout back to 1 minute, was inadvertently + changed to 5 minutes; set i2ptunnel server read timeout to 5 minutes, was + unlimited + - Improved defenses in i2ptunnel for "darkloris" + - More validation at torrent creation in i2psnark + - Several parameter changes in SSU to improve throughput + - New event log for major events including restarts; show multiple restart + lines on graphs + - Remove duplicate messages from logs + - Don't respond to blocked streaming connections with a reset, just drop + - Remove all uses of inefficient SimpleTimer + - More checks for valid IPs and ports entered in console + - Fix bug that wasted a lot of entropy + - Translation updates: Italian, Portuguese, Spanish, Swedish + - Add non-NIO configuration in jetty.xml, recommended for Java 5 + - Update GeoIP data + + -- Kill Your TV <killyourtv@i2pmail.org> Sat, 27 Oct 2012 16:47:37 +0000 + +i2p (0.9.2-2) stable; urgency=high + + * Fix stupid bug in i2prouter + + -- Kill Your TV <killyourtv@i2pmail.org> Sat, 22 Sep 2012 13:57:39 +0000 + +i2p (0.9.2-1) stable; urgency=low + + * New upstream release (see history.txt for details) + + -- Kill Your TV <killyourtv@i2pmail.org> Fri, 21 Sep 2012 18:13:32 +0000 + +i2p (0.9.1-1) stable; urgency=low * New upstream version 0.9.1 * Don't depend on Debian's/Ubuntu's version of Jetty. Jetty6 is going away @@ -13,13 +59,13 @@ i2p (0.9.1-1) unstable; urgency=low -- Kill Your TV <killyourtv@i2pmail.org> Mon, 30 Jul 2012 17:41:04 +0000 -i2p (0.9-1) unstable; urgency=low +i2p (0.9-1) stable; urgency=low * New Upstream Version -- Kill Your TV <killyourtv@i2pmail.org> Wed, 02 May 2012 16:33:11 +0000 -i2p (0.8.13-2) unstable; urgency=low +i2p (0.8.13-2) stable; urgency=low * Fix bug in postinst cause by changes to adduser's behaviour. @@ -66,38 +112,38 @@ i2p (0.8.12-1) stable; urgency=low -- Kill Your TV <killyourtv@i2pmail.org> Fri, 06 Jan 2012 02:49:03 +0000 -i2p (0.8.11+repack-2) stable; urgency=medium +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+repack-1) stable; urgency=low +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+repack-1) stable; urgency=medium +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+repack-1) stable; urgency=medium +i2p (0.8.9-1) stable; urgency=medium * New upstream version -- Kill Your TV <killyourtv@i2pmail.org> Tue, 11 Oct 2011 19:55:08 +0000 -i2p (0.8.8+repack-3) UNRELEASED; urgency=low +i2p (0.8.8-3) UNRELEASED; urgency=low * Add dump option to initscript -- Kill Your TV <killyourtv@i2pmail.org> Tue, 06 Sep 2011 12:42:22 +0000 -i2p (0.8.8+repack-2) stable; urgency=medium +i2p (0.8.8-2) stable; urgency=medium * Backport patch from mtn 04ec606 to fix trac #515 * Fix trac ticket #514 ("debconf values are overwritten upon @@ -107,7 +153,7 @@ i2p (0.8.8+repack-2) stable; urgency=medium -- Kill Your TV <killyourtv@i2pmail.org> Fri, 02 Sep 2011 23:32:32 +0000 -i2p (0.8.8+repack-1) stable; urgency=low +i2p (0.8.8-1) stable; urgency=low * New Upstream Version diff --git a/debian/patches/0001-path-substitution.patch b/debian/patches/0001-path-substitution.patch index c40349b668c72529a3926201226e9b2f1f698d62..2dd998183b714c545112854d112977d61123b1e7 100644 --- a/debian/patches/0001-path-substitution.patch +++ b/debian/patches/0001-path-substitution.patch @@ -127,7 +127,7 @@ Debian wrapper.config to try to prevent confusion. else eval echo `gettext '$APP_LONG_NAME is already running.'` exit 1 -@@ -1871,18 +1816,9 @@ +@@ -1874,18 +1819,9 @@ status ;; diff --git a/history.txt b/history.txt index e10156df615b40daa95c34dc1025927223ae969d..634e385b05e7324bc1d4e181ca79020dd69b8f9f 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,134 @@ +2012-11-02 kytv +* German, Portuguese, and Swedish translation updates from Transifex +* Refreshed English po files to push to TX. + +2012-11-02 zzz + * configstats: Fix group sorting, translate groups + * I2CP: + - Better fix for logging dropped messages (ticket #758) + - Implement fast receive to reduce per-message handshakes + - Make messageReliability=none the default + * i2psnark: + - Split buckets correctly + - More exploration fixes + * i2ptunnel: + - Better privkey backup file name + - Revert increment of privkey tunnel name + - Move deleted privkeys to backup dir + - Fix jsp build dependencies + - Fix layout issue on Chrome (ticket #757) + * KeyManager: Eliminate races, buffer I/O, eliminate periodic syncing + +2012-10-31 zzz + * FIFOBandwidthRefiller: Reduce refill interval to smooth output + * I2CP: Reduce log level when outbound queue is full (ticket #758) + * i2ptunnel: Fix NPE in zzzot plugin + * PriBlockingQueue: Enforce max size + * Streaming: New disableRejectLogging option (default false), enable for snark + +2012-10-30 zzz + * i2psnark: + - Add kbucket debugging + - Eliminate redundant explore keys + - Add more limits to DHT tracker + - Delay expiration at startup + - Only enable updates for dev builds and 1% of release builds + * i2ptunnel: + - Create backup privkey files (ticket #752) + - Fix NPE in Android startup + * Installer: Drop news.xml and old certs + * logs.jsp: + - Don't display dup message if last + - Spacing tweaks + * OutNetMessage: Properly clean up when dropped by codel (but unused for now + since codel is disabled for ONM) + * SSU: + - Adjust RTT/RTO calculations + - Better bandwidth tracking + - Cleanup of OutboundMessageState + - Stat tweaks + * StatisticsManager: Publish stats less often + * Transports: Increase min peer port to 1024 + * Tunnels: Implement per-client outbound tunnel message priority (ticket #719) + * Update Manager: Warn on dup registration + +2012-10-30 sponge + * cleanups as requested + +2012-10-28 zzz + * Addresses: + - Add methods for connectivity detection + - Remove Hamachi restriction + * Banlist: renamed + * Clients: New interface for clients started via clients.config, and a new + manager to track the lifecycle and start/stop clients on demand. + (ticket #347) + * Console: + - Add console password form to configui.jsp + - Consolidate all the jsp formhandler boilerplate in the new formhandler.jsi + - Store form handler nonces in the servlet session instead of system properties, + to prevent cross-session interference + - Bypass nonces if console password enabled + - Remove ports from port mapper on shutdown, other changes to + track actual ports better (ticket #731) + - Prep for RouterApp interface by storing context in a field, + shuffle around what's static and what's not (ticket #347) + - Convert to RouterApp interface + - Convert from basic to digest authentication + - Use new password manager (ticket #731) + * Core: New password manager for storing passwords in router.config + in consistent ways, including salting and hashing if possible. + (ticket #731) + * i2ptunnel: + - Convert HTTP and CONNECT proxies from basic to digest authentication + - Bypass nonces if console password enabled + - Convert to ClientApp interface + - Synchronization improvements + * Streaming: Add pcap debug facility, from i2p.i2p.zzz.pcap + * Transport: + - Add a simple network monitor + - Add new reachability state for network disconnected + - Prevent any tunnel building when disconnected (ticket #519) + - Don't unleash watchdog when disconnected + - Split up NTCPConnection's single _bwRequests Set into inbound and outbound, + make FIFOBandwithLimiter.Request unidirectional (ticket #719) + * Update: Major redesign of the update facilities: + - Generic interfaces for updating and checking things + - Allow checkers and updaters outside router context + - Hide update buttons after downloading update (ticket #484) + - Add update-via-i2psnark facility + - Don't hold references to updaters after completion + +* 2012-10-27 0.9.3 released + +2012-10-25 zzz + * BuildHandler: Fix "too slow" rejections due to internal clock skew + +2012-10-24 zzz + * I2PSnark: + - Fix several partial piece (temp file) leaks + - Don't lose all DHT peers if we stop quickly + - Explore a kbucket if it's less than 3/4 full + +2012-10-24 str4d + * i2ptunnel: Truncate long client destinations (ticket #581) + +2012-10-21 zzz + * Watchdog: Don't dump threads too often (ticket #519) + +2012-10-20 zzz + * Transport: Back out CoDel for SSU PeerState and NTCP + +2012-10-19 zzz + * UDP: Fix peer test NPE (ticket # 748) + +2012-10-18 kytv +* Portuguese and Spanish updates from Transifex + * Update geoip.txt based on Maxmind GeoLite Country database from 2012-10-02 + +2012-10-15 kytv +* Italian and Swedish updates from Transifex + 2012-10-14 zzz * Console: Use non-nio connector for Java 5 and JamVM/gij (tickets #715 and #743) diff --git a/installer/install.xml b/installer/install.xml index 5bdb2e4ad807e3db967633d73c488157f5b10c10..e1b7d322dafcdaf5290a69a21c6223b6a950216d 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,9 +4,9 @@ <info> <appname>i2p</appname> - <appversion>0.9.2</appversion> + <appversion>0.9.3</appversion> <authors> - <author name="I2P" email="http://forum.i2p2.de/"/> + <author name="I2P" email="http://www.i2p2.de/"/> </authors> <url>http://www.i2p2.de/</url> <javaversion>1.5</javaversion> diff --git a/installer/resources/certificates/75.145.125.59.crt b/installer/resources/certificates/75.145.125.59.crt deleted file mode 100644 index 071f054033cfbe42a2b6262682407c4eb4759da7..0000000000000000000000000000000000000000 --- a/installer/resources/certificates/75.145.125.59.crt +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICiTCCAfICCQDI/vgxtkEs3TANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC -VU4xEzARBgNVBAgTCldvcmxkLVdpZGUxETAPBgNVBAcTCEludGVybmV0MQwwCgYD -VQQKEwNJMlAxDTALBgNVBAsTBEgySUsxFjAUBgNVBAMTDTc1LjE0NS4xMjUuNTkx -HDAaBgkqhkiG9w0BCQEWDWgyaWtAbWFpbC5pMnAwHhcNMTExMDA3MDAwNDM3WhcN -MjExMDA0MDAwNDM3WjCBiDELMAkGA1UEBhMCVU4xEzARBgNVBAgTCldvcmxkLVdp -ZGUxETAPBgNVBAcTCEludGVybmV0MQwwCgYDVQQKEwNJMlAxDTALBgNVBAsTBEgy -SUsxFjAUBgNVBAMTDTc1LjE0NS4xMjUuNTkxHDAaBgkqhkiG9w0BCQEWDWgyaWtA -bWFpbC5pMnAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOGkLwuCY6J7Oude -5SdiU/RT7Bhm26M8ufntI1IKsog+BggoqhIoNgzk79q59rsoXA7o+lcXtHGXQoME -mz8HtzGrO90A3ZYCM3Xb6S42DHh6QepZjHBt3hDsPZJl0XXNrB+Wfpljo2y4IfiH -aQo4cBWt0pi29SspA87KFzh1S8gtAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAi7Z5 -gmkwHPojE3xEc9tATa2H2MnLXBGcuAaLAv+qAGza5V2Pa6wVTgpUKGfvWR6+Ae2B -ACe9LsIsE2IPtTIwjiwbfmmJ6dkvLHX/bxdp/+X5DjAFa36j+elKVZSerkgy9cLV -rrSQF8UW3HFlwElB0aLgbApOFnArDrbuEnjrjEg= ------END CERTIFICATE----- diff --git a/installer/resources/certificates/forum.i2p2.de.crt b/installer/resources/certificates/forum.i2p2.de.crt deleted file mode 100644 index e28b1cc59fcb1ce9069737b490ca4e3abe83e891..0000000000000000000000000000000000000000 --- a/installer/resources/certificates/forum.i2p2.de.crt +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFLDCCAxQCCQDLNmFBp0hvZzANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJV -SzEPMA0GA1UECBMGTG9uZG9uMQwwCgYDVQQKEwNJMlAxEjAQBgNVBAsTCVRoZSBG -b3J1bTEWMBQGA1UEAxMNZm9ydW0uaTJwMi5kZTAeFw0xMDEyMTkxNTAzNTJaFw0y -MDEyMTYxNTAzNTJaMFgxCzAJBgNVBAYTAlVLMQ8wDQYDVQQIEwZMb25kb24xDDAK -BgNVBAoTA0kyUDESMBAGA1UECxMJVGhlIEZvcnVtMRYwFAYDVQQDEw1mb3J1bS5p -MnAyLmRlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4y3yMKKnJZ6I -Q/f6e+e6LgsGGMWvpa8+EqQKMR4UH3n+8olwTdUqMx3XnyXhmeSYA8idpF+7Izdj -y/z/2UXZWJM5eEl3OER7Uv64CStr8Q1Xdq7Zg+4nomnWrCDv7pDVgwUlIplctFDk -uPijXdfgs8xHERR20DmgBGMIW9U+gkyCfcqis9OOcsV8xgFMqAqaGRyPnHW4WGR6 -93IVFavox8nWDy0KhY4TL3DDV1uEeaQqF9F97k1nQxSepH1yR23qB3Nta7E3OsHZ -7uwU/cBcNxGag1HsfXufPub0pay9jc8anXT3Ip5OFYpTaUjpYVRBq9m1VW+BUJiV -ir06wRiPLx5/rAVtsWquuyEn4Ou9kXnil3Lenq8IHfv3yEHq7EMQm7AgK8brSVRb -PyUXGOpgC/jfDydXDh4Dc0jJ2O6czk1U5BZcIxAHJ+x3t/vE4ks2tPLlJUoQ/lMt -3fn2u9jWY/eZMOe/V1lkEbGc4Vi6qrJoI6VIESwsgFmV7R9g4C1e3cAmbRMINV5r -0SAJ2pwzO+rSgVTnYd3Hq3GzvC1MmJd8tme3WVZVggLQbOaeLnzAKmX9ktfA4VUl -kGUIixnL0K96u5iAoH9bwwbirWRHnfmY1HnmQXidSmDj9clSrsrD64VYwv6ACy5b -wkb/XPtXzx/b9Pr6Co79141eqT9ArtECAwEAATANBgkqhkiG9w0BAQUFAAOCAgEA -1oaksgeb8eqVH17+lkIr1cs43jA1rMJ2ogYdLxodrwtGzniv7pGpv/MNMFQ6rN9a -dGwJKm1mo/uOpsPBIcSSScZA4ER7RWMXbuR+vIGpmjO6RMr0sjRLoc7VoK9NBP02 -AcudKm9/6dQ2X46oByUCqaTk0INQkWWOOX4M8GXqXFuEle1aZF6KC2wytxdzspyA -BpE+7xbV68DAdE3FbZuowjHcWlebaDp1JBFj1H1WwLGC0gyIwIevxPft6eW0Z5m2 -p3B4EDG6ZChurBjng9bcMBJNqRFWo0Zo2FfdyLkFRYOtGzhWUgjLJqkEJsLC3Gpx -83y2fXQ0qdxY6yNuwoZSXEX0vLQPJbVvB3Apcmjc2Q0xg+CkONP6S+D6eziRcqyh -LaRLWKNELUB7ikWj1IpDmAb/dZ/zaL51rqCqwN4glebAg2HWqzFm/MNT7YfTKI4+ -/QC7812Tcge8j+/368dmbfcQqOMB+nQha1YpNw5i+cUgKW4HJMwuoSGEaDQ9NLg6 -JH110OAwLL5tCwbgRlC+Cr1zTtwHkq1NRk3eIjAlz6HKsSos0IBxW8m0TLvrsHKE -/3B9w2hv+20k24ND1hiCYv4ShghpAeaaJEs0Rb1Km/jgH9jeHSRUBzpZYAhkKIzr -PlrC0DfYlSLTdTJ3MTx9gXyK8RqSh16M+tTvoQ0zEl8= ------END CERTIFICATE----- diff --git a/installer/resources/certificates/i2p.feared.eu.crt b/installer/resources/certificates/i2p.feared.eu.crt new file mode 100644 index 0000000000000000000000000000000000000000..628c6290ce352146dca054edd0f541d1f410a877 --- /dev/null +++ b/installer/resources/certificates/i2p.feared.eu.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIJAPVgXcMcr3zqMA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV +BAYTAkVVMQ8wDQYDVQQIDAZFdXJvcGUxDDAKBgNVBAoMA0kyUDETMBEGA1UECwwK +T3V0cHJveGllczEWMBQGA1UEAwwNaTJwLmZlYXJlZC5ldTAeFw0xMjEwMjkxNzMw +MDZaFw0yMTAxMTUxNzMwMDZaMFkxCzAJBgNVBAYTAkVVMQ8wDQYDVQQIDAZFdXJv +cGUxDDAKBgNVBAoMA0kyUDETMBEGA1UECwwKT3V0cHJveGllczEWMBQGA1UEAwwN +aTJwLmZlYXJlZC5ldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOUh +y2+6Q4RO+b5WPXX/cZ/9fiI7aWGe/C7z0083HOEqnkgGCYgxFWUCed6/eZbYoZ7/ +PV1BAuEereNwTp+Ov7fQB2H73O9sSAEejW6O4C2PZiZWaPxpZiTJNENbLOZxJnIN ++fSqmA5pqvGkYAJ2heZH4v4tayun7Vib58GWuizhzJ4EvhOrOrLq/YHrxMn++r4e +kNNbq4QzWpfxNa7ocDY9OJh5qFzuc+6wKj1m1syK6euDqs5d6X+y0aDTMgRxey2b +tkmNx9wC0flLg1oMcv9o1zN+dENy7Inkd/SqbSjLUqDTJzdq6xURVsgLoV63pb6r +B4gbGIlriYWK/mOPTTkCAwEAAaNQME4wHQYDVR0OBBYEFOI94JZ3Rb2RVmr8QjOp +u3KfVSrNMB8GA1UdIwQYMBaAFOI94JZ3Rb2RVmr8QjOpu3KfVSrNMAwGA1UdEwQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAD7bI05zg9nf9qanq4ZNw/rvEzYQRBmy +MqzZjcwBMGvbcEbS+zYAdAkfxmN3l/AT4I4z138Om0ud4ZJUQTVlRsJkMlmLD4Rt +Jbi2rl7mrY7Qupgu5hvgH+ZaEWr7LTq+tFjPycRS+zijw9NToKeAsgEex9zYIOYD +BxDUn/trvyA41ItvegWh803IsZUBb45Via+bopid9aFFkejRrck9hhcQ6fVh2yju +nuVwHrxNvGc0NmmJ7zI+nPESFS+TAYbWXikDhc5Vtyiuoz47WZU1cgXYYMejK4WA ++3GLvei7qKm4GOJSg7BngF5Iyj/n7ML1rBqTlN3KA1YOgpGCwJlKzto= +-----END CERTIFICATE----- diff --git a/installer/resources/certificates/netdb.i2p2.no.crt b/installer/resources/certificates/netdb.i2p2.no.crt new file mode 100644 index 0000000000000000000000000000000000000000..2ab5a131413e0bcd2643f70ab137e76cfa14226c --- /dev/null +++ b/installer/resources/certificates/netdb.i2p2.no.crt @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC0DCCAjmgAwIBAgIJANdBFbakbhhOMA0GCSqGSIb3DQEBBQUAMIGAMQswCQYD +VQQGEwJOTzENMAsGA1UECAwET3NsbzENMAsGA1UEBwwET3NsbzEMMAoGA1UECgwD +STJQMQwwCgYDVQQLDANJMlAxFjAUBgNVBAMMDW5ldGRiLmkycDIubm8xHzAdBgkq +hkiG9w0BCQEWEG1lZWhAaTJwbWFpbC5vcmcwHhcNMTIxMDIzMDExMjIyWhcNMTkx +MDIyMDExMjIyWjCBgDELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNV +BAcMBE9zbG8xDDAKBgNVBAoMA0kyUDEMMAoGA1UECwwDSTJQMRYwFAYDVQQDDA1u +ZXRkYi5pMnAyLm5vMR8wHQYJKoZIhvcNAQkBFhBtZWVoQGkycG1haWwub3JnMIGf +MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCDvmjTpff6/XpiNuqoa9ZEKMlyq1o +kas9fHwnZax/0QTM3xusSQQ9DzeVMSx1ueYxhTZ6VLmE1mTr0aIndzugxGK/g85H +Y+cUl3nw7+5gLPMCUrKAXqQokE3mYxSNY3AUeend7nmHvm9iciw4+Sa2+6ROvQQy +kD31CEN6/I04rwIDAQABo1AwTjAdBgNVHQ4EFgQUV83dJhEcLbfJ+uh+MDYNPdah +RoQwHwYDVR0jBBgwFoAUV83dJhEcLbfJ+uh+MDYNPdahRoQwDAYDVR0TBAUwAwEB +/zANBgkqhkiG9w0BAQUFAAOBgQBQQlJym7mUMUM2ryKu20z2PSUzFyq5U4rWHeo3 +elbNaTsFBwi+Ot/Lg/A5I4V8gywH1fBTG5bYKDUYvWohz1qIg66G57B1zT1zK9yh +Byz9go44M3y1/kXXSsJlY9llG9DDicr1y6LfldwZJ5zFAd3iiB8D8UadP5YLqb7v +wb1F1g== +-----END CERTIFICATE----- diff --git a/installer/resources/certificates/reseed.info.crt b/installer/resources/certificates/reseed.info.crt new file mode 100644 index 0000000000000000000000000000000000000000..31302c52bd6b87aeca9f40071cda8bfafbba7d6f --- /dev/null +++ b/installer/resources/certificates/reseed.info.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDRDCCAiwCCQDCm/Zrmali9zANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJB +VTETMBEGA1UECBMKU29tZS1TdGF0ZTELMAkGA1UEBxMCSEgxDDAKBgNVBAoTA0ky +UDEPMA0GA1UECxMGcmVzZWVkMRQwEgYDVQQDEwtyZXNlZWQuaW5mbzAeFw0xMjEw +MjcxODU3NDNaFw0xNjEyMDUxODU3NDNaMGQxCzAJBgNVBAYTAkFVMRMwEQYDVQQI +EwpTb21lLVN0YXRlMQswCQYDVQQHEwJISDEMMAoGA1UEChMDSTJQMQ8wDQYDVQQL +EwZyZXNlZWQxFDASBgNVBAMTC3Jlc2VlZC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAt9nz0iUvjdX4Hkhfk0FbBOeEP4i/FG3V4VrEdQfcviSF +XgzGYeRtGsvrFWP/5+6bcGnOkIy/jrKJfij3AjKJh8gTzqiNNNnV8VcHwFSNp+hZ +D4BM+UHPACV1Pjd3HQe6f0+LvcTs3HQgIkNkwUyqRuXOm/5Mk6SWSu1740aSwHCj +Kk0x1FByzI0YBvXCPX6TVk6sJqKkQyLzK0CSGSeqUq8GvGCq+jT9k62Su7ooxCwi +GzxaFjMdVYxuI8cuT5Cni+SUw1Ia8vhESnIy6slwzk37xNI80VuMvRT6rD2KcXDH +mK7ml1qL0rJWoF5AE+x/nen4V41mouv1W9rk3wTlTQIDAQABMA0GCSqGSIb3DQEB +BQUAA4IBAQAr6RBviBDW4bnPDTcdtstTDdaYX9yzoh+zzeGB0dUR26GKoOjpSItb +B9nrsW1eJ2wbblfGBUoXhcmNByKHXXHejMhmurHjdei2BuLbTsknN8DPKXu5UF9z +cg4cKQkxgzXOcNYlaF4+sfwFXDHJ4we/8vduVgkyo8R66543/Sh/nIMvq2slRT4w +wIBOVcMb2XxlbdwHW9XALAz9sto+4GH9GAC24f8ngluOpHijMnOOIo4dHibQ5hM9 +KcDpHezP0ugMTAxS2NmtVahwAqa2IjpqR7aEQ2wLvxQzDqrXo93L93+b2FKRUQXH +Duud/n/w0kVV3DaIGikOsJayoanR+9HD +-----END CERTIFICATE----- diff --git a/installer/resources/checklist.txt b/installer/resources/checklist.txt index 865506c99d3340b2cc709a713152047755ba05f6..977ff9dc0e171506a88a81a175ee09cb13a9629e 100644 --- a/installer/resources/checklist.txt +++ b/installer/resources/checklist.txt @@ -6,12 +6,10 @@ Sync with mtn.i2p2.i2p Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p Copy over override.properties to set build.built-by Double-check trust list -Deploy the Jetty archive, a clean checkout lacks it Change revision in: history.txt installer/install.xml - installer/resources/news.xml core/java/src/net/i2p/CoreVersion.java router/java/src/net/i2p/router/RouterVersion.java (change to BUILD = 0 and EXTRA = "") @@ -85,6 +83,7 @@ Website files to change: index_*.html hosts.txt if it changed (copy from i2p.i2p mtn branch) release-x.y.z.html (new) + static/news/news.xml Sync with mtn.i2p2.i2p Announce on: diff --git a/installer/resources/deletelist.txt b/installer/resources/deletelist.txt index 8a20e42dee8a9b70d704e309d0aa2f965d62e773..1d2c1d33cbf79fc90329bab018071b524d95bacc 100644 --- a/installer/resources/deletelist.txt +++ b/installer/resources/deletelist.txt @@ -1,3 +1,5 @@ # Files listed here will be deleted after the update is extracted -# expired cert +# old reseed certs certificates/r31453.ovh.net +certificates/75.145.125.59.crt +certificates/forum.i2p2.de.crt diff --git a/installer/resources/geoip.txt b/installer/resources/geoip.txt index e68f00da836aa68b4bed665e4f0662d769f7d92c..0066789fe39fad7f5fca6cd865d600251e183849 100644 --- a/installer/resources/geoip.txt +++ b/installer/resources/geoip.txt @@ -1,5 +1,5 @@ # Last updated based on Maxmind GeoLite Country -# dated 2012-09-05 +# dated 2012-10-02 # Script borrowed from Tor # # wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip @@ -219,9 +219,7 @@ 69937264,69937271,CA 69937272,69956103,US 69956104,69956111,BM -69956112,71007487,US -71007488,71007743,A1 -71007744,71571339,US +69956112,71571339,US 71571340,71571340,DE 71571341,71571389,US 71571390,71571390,DE @@ -709,7 +707,9 @@ 92725248,92733439,SY 92733440,92734735,FR 92734736,92734739,DE -92734740,92798975,FR +92734740,92749067,FR +92749068,92749071,GB +92749072,92798975,FR 92798976,93323263,RU 93323264,93335551,CH 93335552,93339647,IL @@ -898,6 +898,7 @@ 96897024,96899071,GB 96899072,96903167,AT 96903168,96911359,IR +96911360,96919551,FR 96919552,96923647,IT 96923648,96925695,JO 96925696,96927743,MT @@ -920,6 +921,70 @@ 97320960,97386495,ES 97386496,97419263,RU 97419264,97435647,HU +97435648,97437695,DK +97437696,97439743,AT +97439744,97443839,NL +97443840,97445887,PT +97445888,97447935,RS +97447936,97452031,PL +97452032,97517567,UA +97517568,98566143,IR +98566144,98697215,NL +98697216,98701311,FR +98701312,98705407,ES +98705408,98707455,SE +98707456,98709503,NL +98709504,98711551,IR +98711552,98713599,GB +98713600,98732031,PL +98732032,98734079,GB +98734080,98736127,CH +98736128,98738175,RU +98738176,98740223,NO +98740224,98742271,ES +98742272,98744319,GB +98744320,98746367,ES +98746368,98762751,TR +98762752,98893823,RU +98893824,98959359,TR +98959360,99090431,DE +99090432,99614719,IR +99614720,99876863,SE +99876864,100139007,SA +100139008,100204543,UA +100204544,100237311,PT +100237312,100245503,IT +100245504,100247551,SE +100247552,100249599,CH +100249600,100253695,SI +100253696,100261887,RU +100261888,100270079,NO +100270080,100302847,IR +100302848,100311039,KZ +100311040,100313087,FI +100313088,100315135,RU +100315136,100319231,GB +100319232,100327423,AZ +100327424,100329471,SE +100329472,100331519,RU +100331520,100335615,TR +100335616,100401151,KZ +100401152,100532223,DE +100532224,100564991,RO +100564992,100573183,SE +100573184,100575231,GB +100575232,100577279,SC +100577280,100579327,RU +100579328,100581375,AT +100581376,100589567,SC +100589568,100597759,RU +100597760,100630527,NL +100630528,100632575,BE +100632576,100634623,GB +100634624,100636671,ES +100636672,100638719,NL +100638720,100646911,UA +100646912,100663295,RU 100663296,121195295,US 121195296,121195327,IT 121195328,134693119,US @@ -1556,7 +1621,10 @@ 406159360,406175743,US 406183936,406208511,CA 406216704,406241279,US -406241280,406323199,PR +406241280,406257663,PR +406274048,406290431,PR +406298624,406306815,PR +406306816,406323199,CA 406323200,406388735,US 406388736,406454271,CA 406454272,406847487,US @@ -1839,7 +1907,6 @@ 460345344,460349439,CN 460349440,460351487,AU 460351488,460353535,JP -460355584,460356607,IN 460356608,460357631,JP 460357632,460423167,KR 460423168,460439551,CN @@ -2395,7 +2462,7 @@ 528982016,528984063,PL 528984064,528986111,RO 528986112,528988159,UA -528988160,528990207,RO +528988160,528990207,RU 528990208,528994303,PL 528994304,528996351,UZ 528996352,528998399,LT @@ -3573,7 +3640,9 @@ 620781568,620783615,GB 620783616,620785663,ES 620785664,620787711,DE -620787712,620789759,RU +620787712,620788479,RU +620788480,620788991,A1 +620788992,620789759,RU 620789760,620810239,HR 620810240,620812287,LT 620812288,620814335,SE @@ -7841,7 +7910,9 @@ 636170240,636170495,PL 636170496,636170751,IS 636170752,636171007,CH -636171008,636174335,AT +636171008,636171824,AT +636171825,636171825,GB +636171826,636174335,AT 636174336,636176383,RU 636176384,636178431,TR 636178432,636180479,NL @@ -7925,8 +7996,8 @@ 644761440,644761455,CA 644761456,644835071,US 644835072,644835327,CA -644835328,644839423,US -644839424,644840447,CA +644835328,644838911,US +644838912,644840447,CA 644840448,644898879,US 644898880,644898911,CA 644898912,645001215,US @@ -9560,7 +9631,35 @@ 774163281,774163284,KP 774163285,774163285,VA 774163286,774163289,FK -774163290,774168575,VA +774163290,774163290,VA +774163291,774163294,BJ +774163295,774163305,VA +774163306,774163309,GQ +774163310,774163310,VA +774163311,774163314,GA +774163315,774163325,VA +774163326,774163329,RW +774163330,774163330,VA +774163331,774163334,UG +774163335,774163335,VA +774163336,774163339,MP +774163340,774163340,VA +774163341,774163344,TL +774163345,774163345,VA +774163346,774163349,WF +774163350,774163350,VA +774163351,774163354,SD +774163355,774163380,VA +774163381,774163388,IT +774163389,774163390,VA +774163391,774163398,GE +774163399,774163400,VA +774163401,774163404,US +774163405,774163405,VA +774163406,774163409,US +774163410,774163410,VA +774163411,774163414,US +774163415,774168575,VA 774168576,774176767,PL 774176768,774184959,IT 774184960,774193151,GB @@ -9622,9 +9721,7 @@ 775094272,775127039,RO 775127040,775149566,IE 775149567,775149567,NL -775149568,775149764,IE -775149765,775149765,SG -775149766,775151615,IE +775149568,775151615,SG 775151616,775159807,JP 775159808,775192575,SA 775192576,775225343,RU @@ -9694,6 +9791,7 @@ 776601600,776732671,AT 776732672,776863743,PL 776863744,778043391,DE +778043392,778108927,UA 778108928,778174463,RO 778174464,778239999,UA 778240000,778305535,AL @@ -11443,12 +11541,7 @@ 780730368,780756724,IE 780756725,780756725,EU 780756726,780779519,IE -780779520,780783615,NL -780783616,780785663,GB -780785664,780787711,DE -780787712,780791807,FR -780791808,780793855,SE -780793856,780795903,DE +780779520,780795903,SG 780795904,780861439,RU 780861440,780926975,HU 780926976,780992511,CH @@ -12718,12 +12811,14 @@ 889192448,897238054,DE 897238055,897238055,EU 897238056,905969663,DE -905969664,921204905,US -921204906,921204906,BR -921204907,922157055,US -922157056,922222591,IE +905969664,921174015,US +921174016,921239551,BR +921239552,922091519,US +922091520,922222591,IE 922222592,922353663,JP -922353664,956301311,US +922353664,922419199,US +922419200,922484735,SG +922484736,956301311,US 956301312,959447039,EU 959447040,959512575,US 959512576,960629507,EU @@ -13071,7 +13166,9 @@ 1023852544,1023868927,BN 1023868928,1023901695,JP 1023901696,1023934463,TH -1023934464,1023950847,AU +1023934464,1023942719,AU +1023942720,1023942720,MY +1023942721,1023950847,AU 1023950848,1023954943,ID 1023954944,1023959039,JP 1023959040,1023967231,AU @@ -13098,7 +13195,9 @@ 1024363776,1024364031,AU 1024364032,1024365055,JP 1024365056,1024365311,AP -1024365312,1024376831,JP +1024365312,1024375551,JP +1024375552,1024375615,AU +1024375616,1024376831,JP 1024376832,1024393215,PH 1024393216,1024458751,HK 1024458752,1024491519,SG @@ -13132,9 +13231,7 @@ 1025343488,1025376255,CN 1025376256,1025507327,TW 1025507328,1026293759,KR -1026293760,1026295807,JP -1026295808,1026296575,US -1026296576,1026311423,JP +1026293760,1026311423,JP 1026311424,1026311679,US 1026311680,1026392063,JP 1026392064,1026408447,CN @@ -22162,10 +22259,7 @@ 1071136768,1071141887,US 1071141888,1071142911,HK 1071142912,1071144959,US -1071144960,1071149200,GB -1071149201,1071149201,LB -1071149202,1071151103,GB -1071151104,1071153151,LB +1071144960,1071153151,LB 1071153152,1071157247,US 1071157248,1071158271,SG 1071158272,1071159295,US @@ -22305,9 +22399,7 @@ 1071362080,1071362111,HK 1071362112,1071362207,US 1071362208,1071362239,HK -1071362240,1071382527,US -1071382528,1071384575,HK -1071384576,1071415295,US +1071362240,1071415295,US 1071415296,1071417343,TW 1071417344,1071446015,US 1071446016,1071448063,NL @@ -22460,7 +22552,9 @@ 1072939264,1072939311,US 1072939312,1072939519,CA 1072939520,1072940031,US -1072940032,1072955391,CA +1072940032,1072942079,CA +1072942080,1072942111,US +1072942112,1072955391,CA 1072955392,1073022975,US 1073022976,1073025791,HN 1073025792,1073026047,NI @@ -28475,9 +28569,7 @@ 1117829376,1117829631,GR 1117829632,1117831359,US 1117831360,1117831423,A2 -1117831424,1117964727,US -1117964728,1117964735,UM -1117964736,1117978623,US +1117831424,1117978623,US 1117978624,1117979503,CA 1117979504,1117979519,US 1117979520,1117982639,CA @@ -32197,16 +32289,7 @@ 1139170048,1139171327,US 1139171328,1139175423,GT 1139175424,1139179519,US -1139179520,1139188735,CA -1139188736,1139188991,GB -1139188992,1139193599,CA -1139193600,1139194111,US -1139194112,1139194367,CA -1139194368,1139194623,US -1139194624,1139194879,CA -1139194880,1139195135,US -1139195136,1139195391,GB -1139195392,1139195903,CA +1139179520,1139195903,CA 1139195904,1139265535,US 1139265536,1139269631,CA 1139269632,1139274495,US @@ -32329,16 +32412,8 @@ 1151890096,1151890127,GB 1151890128,1151892735,CA 1151892736,1151892991,MA -1151892992,1151895551,CA -1151895552,1151895807,US -1151895808,1151895919,CA -1151895920,1151895935,US -1151895936,1151896319,CA -1151896320,1151896575,US -1151896576,1151896831,CA -1151896832,1151897087,US -1151897088,1151897343,CA -1151897344,1151943680,US +1151892992,1151897599,CA +1151897600,1151943680,US 1151943681,1151943808,GB 1151943809,1151943871,NL 1151943872,1151943935,CA @@ -34305,7 +34380,9 @@ 1162882560,1162883839,GD 1162883840,1162887167,BB 1162887168,1162895359,US -1162895360,1162899455,A1 +1162895360,1162898175,A1 +1162898176,1162898431,US +1162898432,1162899455,A1 1162899456,1162925983,US 1162925984,1162926015,AU 1162926016,1162926071,US @@ -34944,7 +35021,9 @@ 1169203200,1169211391,CA 1169211392,1170190335,US 1170190336,1170190847,GB -1170190848,1170456959,US +1170190848,1170375167,US +1170375168,1170375679,A1 +1170375680,1170456959,US 1170456960,1170456975,CR 1170456976,1170456991,US 1170456992,1170457007,PR @@ -36341,425 +36420,9 @@ 1209190852,1209190883,CA 1209190884,1209190911,US 1209190912,1209191167,MX -1209191168,1209270547,US -1209270548,1209270551,ID -1209270552,1209270603,US -1209270604,1209270607,CN -1209270608,1209270779,US -1209270780,1209270787,CN -1209270788,1209271035,US -1209271036,1209271039,BD -1209271040,1209271083,US -1209271084,1209271087,BR -1209271088,1209271097,US +1209191168,1209271097,US 1209271098,1209271098,A1 -1209271099,1209271127,US -1209271128,1209271131,SA -1209271132,1209271191,US -1209271192,1209271195,RO -1209271196,1209271207,US -1209271208,1209271211,SC -1209271212,1209271215,US -1209271216,1209271219,IN -1209271220,1209271367,US -1209271368,1209271371,TR -1209271372,1209271375,CN -1209271376,1209271435,US -1209271436,1209271439,CN -1209271440,1209271451,US -1209271452,1209271455,CN -1209271456,1209271463,US -1209271464,1209271467,PK -1209271468,1209271483,US -1209271484,1209271487,VN -1209271488,1209271491,CN -1209271492,1209271495,US -1209271496,1209271499,CA -1209271500,1209271511,US -1209271512,1209271515,CN -1209271516,1209271519,US -1209271520,1209271523,CN -1209271524,1209271527,KH -1209271528,1209271547,US -1209271548,1209271551,CN -1209271552,1209271575,US -1209271576,1209271579,CN -1209271580,1209271583,BD -1209271584,1209271607,US -1209271608,1209271611,KH -1209271612,1209271615,CA -1209271616,1209271635,US -1209271636,1209271643,CN -1209271644,1209271647,GB -1209271648,1209271651,US -1209271652,1209271655,DE -1209271656,1209271663,US -1209271664,1209271667,CN -1209271668,1209271695,US -1209271696,1209271699,SC -1209271700,1209271703,US -1209271704,1209271707,CN -1209271708,1209271719,US -1209271720,1209271723,CN -1209271724,1209271727,US -1209271728,1209271735,CN -1209271736,1209271739,US -1209271740,1209271747,GB -1209271748,1209271767,US -1209271768,1209271771,RO -1209271772,1209271775,US -1209271776,1209271779,CN -1209271780,1209271783,US -1209271784,1209271787,RO -1209271788,1209271795,US -1209271796,1209271799,ZA -1209271800,1209271803,US -1209271804,1209271807,GB -1209271808,1209271827,US -1209271828,1209271831,KH -1209271832,1209271835,CN -1209271836,1209271847,US -1209271848,1209271855,IN -1209271856,1209271859,US -1209271860,1209271863,CN -1209271864,1209271867,US -1209271868,1209271887,CN -1209271888,1209271891,US -1209271892,1209271895,CN -1209271896,1209271911,US -1209271912,1209271915,ID -1209271916,1209271923,US -1209271924,1209271927,CA -1209271928,1209271935,US -1209271936,1209271939,BD -1209271940,1209272079,US -1209272080,1209272095,CN -1209272096,1209272159,US -1209272160,1209272175,IT -1209272176,1209272191,BR -1209272192,1209272239,US -1209272240,1209272287,CN -1209272288,1209272407,US -1209272408,1209272415,PE -1209272416,1209272447,DE -1209272448,1209272479,KH -1209272480,1209272495,LV -1209272496,1209272583,US -1209272584,1209272591,PH -1209272592,1209272599,GB -1209272600,1209272607,BD -1209272608,1209272623,SC -1209272624,1209272735,US -1209272736,1209272767,CN -1209272768,1209272783,US -1209272784,1209272799,CN -1209272800,1209272839,US -1209272840,1209272847,CN -1209272848,1209272863,US -1209272864,1209272895,MY -1209272896,1209272959,CN -1209272960,1209273023,BR -1209273024,1209273055,US -1209273056,1209273071,TR -1209273072,1209273079,US -1209273080,1209273083,SC -1209273084,1209273119,US -1209273120,1209273135,BR -1209273136,1209273151,TR -1209273152,1209273207,US -1209273208,1209273215,CA -1209273216,1209273279,US -1209273280,1209273311,BR -1209273312,1209273351,US -1209273352,1209273359,CA -1209273360,1209273375,US -1209273376,1209273407,TR -1209273408,1209273471,CZ -1209273472,1209273487,US -1209273488,1209273519,CN -1209273520,1209273535,US -1209273536,1209273551,VN -1209273552,1209273559,US -1209273560,1209273563,AE -1209273564,1209273647,US -1209273648,1209273655,CN -1209273656,1209273663,US -1209273664,1209273671,BD -1209273672,1209273675,US -1209273676,1209273679,GB -1209273680,1209273991,US -1209273992,1209273999,SC -1209274000,1209274023,US -1209274024,1209274031,SA -1209274032,1209274039,CZ -1209274040,1209274115,US -1209274116,1209274119,ZA -1209274120,1209274175,US -1209274176,1209274239,SC -1209274240,1209274591,US -1209274592,1209274607,CN -1209274608,1209274623,SC -1209274624,1209274751,CN -1209274752,1209274879,US -1209274880,1209274911,CN -1209274912,1209274935,US -1209274936,1209274943,PH -1209274944,1209274959,US -1209274960,1209274967,PH -1209274968,1209274975,US -1209274976,1209274991,BD -1209274992,1209275039,US -1209275040,1209275071,BD -1209275072,1209275135,GB -1209275136,1209275647,US -1209275648,1209275679,SC -1209275680,1209275695,TR -1209275696,1209275791,US -1209275792,1209275799,TR -1209275800,1209275807,US -1209275808,1209275823,ID -1209275824,1209275847,US -1209275848,1209275855,AE -1209275856,1209275859,CN -1209275860,1209275863,US -1209275864,1209275871,SC -1209275872,1209275904,US -1209275905,1209275905,MY -1209275906,1209275906,US -1209275907,1209275908,KH -1209275909,1209275909,CN -1209275910,1209275913,US -1209275914,1209275915,CN -1209275916,1209275924,US -1209275925,1209275925,TR -1209275926,1209275926,US -1209275927,1209275927,ES -1209275928,1209275928,US -1209275929,1209275929,MY -1209275930,1209275930,CN -1209275931,1209275931,US -1209275932,1209275932,CN -1209275933,1209276031,US -1209276032,1209276063,BR -1209276064,1209276351,US -1209276352,1209276559,CN -1209276560,1209276583,US -1209276584,1209276655,CN -1209276656,1209276671,US -1209276672,1209276703,CN -1209276704,1209276707,PH -1209276708,1209276815,US -1209276816,1209276819,CN -1209276820,1209276879,US -1209276880,1209276895,PK -1209276896,1209276903,AU -1209276904,1209276911,CN -1209276912,1209276927,TR -1209276928,1209277087,US -1209277088,1209277095,SC -1209277096,1209277103,US -1209277104,1209277119,TR -1209277120,1209277143,US -1209277144,1209277147,TR -1209277148,1209277155,US -1209277156,1209277156,CN -1209277157,1209277157,US -1209277158,1209277158,IN -1209277159,1209277159,CN -1209277160,1209277160,US -1209277161,1209277161,SC -1209277162,1209277163,US -1209277164,1209277165,SC -1209277166,1209277166,GB -1209277167,1209277167,CN -1209277168,1209277170,US -1209277171,1209277171,CN -1209277172,1209277174,US -1209277175,1209277175,MY -1209277176,1209277179,US -1209277180,1209277180,CN -1209277181,1209277215,US -1209277216,1209277231,BR -1209277232,1209277247,US -1209277248,1209277263,BR -1209277264,1209277279,US -1209277280,1209277283,BR -1209277284,1209277287,US -1209277288,1209277295,BD -1209277296,1209277311,US -1209277312,1209277375,CN -1209277376,1209277391,US -1209277392,1209277419,CN -1209277420,1209277431,US -1209277432,1209277439,ZA -1209277440,1209277567,ES -1209277568,1209277583,US -1209277584,1209277599,TR -1209277600,1209277695,US -1209277696,1209277951,KH -1209277952,1209278087,US -1209278088,1209278095,AU -1209278096,1209278127,US -1209278128,1209278143,AU -1209278144,1209278151,CN -1209278152,1209278155,US -1209278156,1209278159,SC -1209278160,1209278207,US -1209278208,1209278463,CN -1209278464,1209278467,PH -1209278468,1209278471,US -1209278472,1209278479,CA -1209278480,1209278527,US -1209278528,1209278591,MY -1209278592,1209278727,US -1209278728,1209278735,KH -1209278736,1209278799,US -1209278800,1209278803,PK -1209278804,1209278931,US -1209278932,1209278935,GB -1209278936,1209278979,US -1209278980,1209278983,KH -1209278984,1209278987,US -1209278988,1209278995,KH -1209278996,1209278999,US -1209279000,1209279003,CN -1209279004,1209279015,US -1209279016,1209279023,CN -1209279024,1209279043,US -1209279044,1209279047,CN -1209279048,1209279075,US -1209279076,1209279079,CN -1209279080,1209279087,US -1209279088,1209279091,CN -1209279092,1209279095,BD -1209279096,1209279099,US -1209279100,1209279103,CN -1209279104,1209279143,US -1209279144,1209279151,CN -1209279152,1209279231,US -1209279232,1209279295,BR -1209279296,1209279487,US -1209279488,1209279551,PK -1209279552,1209279583,US -1209279584,1209279599,BD -1209279600,1209279615,US -1209279616,1209279743,GB -1209279744,1209279807,US -1209279808,1209279823,PH -1209279824,1209279839,CN -1209279840,1209279871,US -1209279872,1209279935,MY -1209279936,1209279967,US -1209279968,1209279999,CN -1209280000,1209280007,TR -1209280008,1209280027,US -1209280028,1209280031,SA -1209280032,1209280047,IN -1209280048,1209280159,US -1209280160,1209280167,CN -1209280168,1209280191,US -1209280192,1209280255,ID -1209280256,1209280319,SC -1209280320,1209280419,US -1209280420,1209280423,VN -1209280424,1209280443,US -1209280444,1209280447,GB -1209280448,1209280463,IN -1209280464,1209280479,US -1209280480,1209280487,CN -1209280488,1209280491,US -1209280492,1209280495,AU -1209280496,1209280511,CN -1209280512,1209280515,US -1209280516,1209280519,AU -1209280520,1209280535,US -1209280536,1209280543,BD -1209280544,1209280559,US -1209280560,1209280575,CA -1209280576,1209280607,SC -1209280608,1209280619,US -1209280620,1209280623,CN -1209280624,1209280895,US -1209280896,1209280959,BR -1209280960,1209280975,CN -1209280976,1209281235,US -1209281236,1209281239,AU -1209281240,1209281247,US -1209281248,1209281279,CA -1209281280,1209281535,KH -1209281536,1209281791,IN -1209281792,1209281863,US -1209281864,1209281871,SC -1209281872,1209281927,US -1209281928,1209281935,IN -1209281936,1209282063,US -1209282064,1209282067,SA -1209282068,1209282111,US -1209282112,1209282143,SC -1209282144,1209282559,US -1209282560,1209282623,CN -1209282624,1209283479,US -1209283480,1209283487,GB -1209283488,1209283503,TR -1209283504,1209283519,US -1209283520,1209283535,ES -1209283536,1209283543,GB -1209283544,1209283547,SA -1209283548,1209283551,US -1209283552,1209283567,GB -1209283568,1209283575,CN -1209283576,1209283583,US -1209283584,1209283587,SA -1209283588,1209283599,US -1209283600,1209283607,IN -1209283608,1209283679,US -1209283680,1209283683,CZ -1209283684,1209283687,US -1209283688,1209283695,CN -1209283696,1209283703,GB -1209283704,1209283751,US -1209283752,1209283759,BD -1209283760,1209283775,US -1209283776,1209283807,ZA -1209283808,1209283839,MY -1209283840,1209283967,US -1209283968,1209284095,GB -1209284096,1209284127,CA -1209284128,1209284159,US -1209284160,1209284223,TR -1209284224,1209284375,US -1209284376,1209284383,NL -1209284384,1209284607,US -1209284608,1209284671,TR -1209284672,1209284735,CN -1209284736,1209284759,US -1209284760,1209284767,SC -1209284768,1209284799,MY -1209284800,1209284859,US -1209284860,1209284863,IT -1209284864,1209284991,CN -1209284992,1209284993,US -1209284994,1209284994,TR -1209284995,1209284996,US -1209284997,1209284997,KR -1209284998,1209285004,US -1209285005,1209285005,KR -1209285006,1209285010,US -1209285011,1209285011,CN -1209285012,1209285012,TR -1209285013,1209285013,US -1209285014,1209285014,CN -1209285015,1209285016,US -1209285017,1209285017,CN -1209285018,1209285021,US -1209285022,1209285022,CN -1209285023,1209285183,US -1209285184,1209285247,AE -1209285248,1209285631,US -1209285632,1209285695,CN -1209285696,1209285887,US -1209285888,1209286399,CN -1209286400,1209338513,US +1209271099,1209338513,US 1209338514,1209338514,A1 1209338515,1209357215,US 1209357216,1209357231,SI @@ -37866,11 +37529,7 @@ 1246875521,1246902783,US 1246902784,1246903039,NL 1246903040,1246937087,US -1246937088,1246940159,CA -1246940160,1246940415,GB -1246940416,1246943287,CA -1246943288,1246943295,DE -1246943296,1246945279,CA +1246937088,1246945279,CA 1246945280,1247027199,US 1247027200,1247034559,A2 1247034560,1247034575,US @@ -39794,8 +39453,9 @@ 1296248448,1296248575,US 1296248576,1296248703,IE 1296248704,1296248959,FR -1296248960,1296249024,DE -1296249025,1296249855,FR +1296248960,1296249023,DE +1296249024,1296249087,GB +1296249088,1296249855,FR 1296249856,1296249887,US 1296249888,1296249951,FR 1296249952,1296250015,DE @@ -39878,7 +39538,9 @@ 1296252920,1296252927,PL 1296252928,1296255743,DE 1296255744,1296255999,FR -1296256000,1296257023,DE +1296256000,1296256840,DE +1296256841,1296256848,US +1296256849,1296257023,DE 1296257024,1296257535,US 1296257536,1296257791,DE 1296257792,1296258047,US @@ -45188,7 +44850,9 @@ 1357900544,1357900799,NL 1357900800,1357901823,DE 1357901824,1357902335,EU -1357902336,1357902847,PL +1357902336,1357902365,PL +1357902366,1357902366,NO +1357902367,1357902847,PL 1357902848,1357903359,GB 1357903360,1357903615,DE 1357903616,1357904383,EU @@ -48888,7 +48552,9 @@ 1388821120,1388821150,SE 1388821151,1388821247,AX 1388821248,1388822527,SE -1388822528,1388830719,BG +1388822528,1388826623,BG +1388826624,1388829951,AM +1388829952,1388830719,BG 1388830720,1388838911,FI 1388838912,1388871679,RU 1388871680,1388904447,KZ @@ -54519,7 +54185,8 @@ 1441557760,1441558015,NL 1441558016,1441562623,GB 1441562624,1441566719,IQ -1441566720,1441570815,IR +1441566720,1441568767,IR +1441568768,1441570815,FR 1441570816,1441579007,RU 1441579008,1441582159,DE 1441582160,1441582175,US @@ -56678,6 +56345,7 @@ 1495040000,1495042047,KZ 1495042048,1495044095,DE 1495044096,1495046143,FR +1495046144,1495048191,CH 1495048192,1495050239,RU 1495050240,1495052287,GB 1495052288,1495054335,IE @@ -57057,12 +56725,13 @@ 1502937088,1502953471,RO 1502953472,1502969855,MD 1502969856,1502975231,US -1502975232,1502975247,FR +1502975232,1502975247,GB 1502975248,1502975263,IE 1502975264,1502975295,GB 1502975296,1502975311,FR 1502975312,1502975319,IE -1502975320,1502975359,FR +1502975320,1502975327,FR +1502975328,1502975359,GB 1502975360,1502975367,IE 1502975368,1502975383,FR 1502975384,1502975391,ES @@ -57080,7 +56749,8 @@ 1502979120,1502979135,ES 1502979136,1502979199,FR 1502979200,1502979215,ES -1502979216,1502979327,FR +1502979216,1502979231,CZ +1502979232,1502979327,FR 1502979328,1502979583,US 1502979584,1502980095,FR 1502980096,1502980159,US @@ -57441,6 +57111,10 @@ 1505386496,1505394687,HU 1505394688,1505402879,DE 1505402880,1505411071,DK +1505411072,1505413119,CH +1505413120,1505415167,BG +1505415168,1505417215,CH +1505417216,1505419263,AT 1505419264,1505427455,RU 1505427456,1505435647,UA 1505435648,1505443839,MD @@ -58210,7 +57884,9 @@ 1509900288,1509916671,RU 1509916672,1509933055,GB 1509933056,1509949439,US -1509949440,1515192639,FR +1509949440,1512030207,FR +1512030208,1512046591,YT +1512046592,1515192639,FR 1515192640,1515192655,EU 1515192656,1515241759,FR 1515241760,1515241791,GB @@ -58573,12 +58249,7 @@ 1533540352,1533542399,AT 1533542400,1533607935,HU 1533607936,1533640703,LV -1533640704,1533659135,RU -1533659136,1533661183,LV -1533661184,1533663231,SE -1533663232,1533665279,NL -1533665280,1533667327,GB -1533667328,1533669375,RU +1533640704,1533669375,RU 1533669376,1533671423,DE 1533671424,1533673471,FI 1533673472,1533677567,DE @@ -60862,7 +60533,9 @@ 1540205568,1540206591,DE 1540206592,1540208639,RU 1540208640,1540209663,NO -1540209664,1540211711,RU +1540209664,1540210687,RU +1540210688,1540211199,NL +1540211200,1540211711,RU 1540211712,1540212735,RO 1540212736,1540213759,RU 1540213760,1540214783,UA @@ -65405,7 +65078,7 @@ 1542778368,1542778623,FR 1542778624,1542778879,GB 1542778880,1542780159,RU -1542780416,1542780927,GB +1542780160,1542780927,GB 1542780928,1542781951,PL 1542781952,1542782975,RU 1542782976,1542791167,CZ @@ -65484,6 +65157,13 @@ 1542975488,1542977535,RO 1542977536,1542978559,RU 1542978560,1542978815,PL +1542978816,1542979071,CH +1542979072,1542979583,RU +1542979584,1543110655,DE +1543110656,1543127039,UA +1543127040,1543143423,DE +1543143424,1543241727,RO +1543241728,1543503871,IT 1543503872,1545601023,GB 1545601024,1545673167,SE 1545673168,1545673175,FI @@ -65701,7 +65381,9 @@ 1547542528,1547546623,FR 1547546624,1547550719,IR 1547550720,1547554815,IE -1547554816,1547558911,AT +1547554816,1547555078,AT +1547555079,1547555079,EU +1547555080,1547558911,AT 1547558912,1547563007,IL 1547563008,1547564287,NL 1547564288,1547564311,CH @@ -66153,7 +65835,7 @@ 1566377984,1566380031,BG 1566380032,1566382079,IT 1566382080,1566384127,TR -1566384128,1566386175,RU +1566384128,1566386175,CZ 1566386176,1566388223,FR 1566388224,1566388479,HK 1566388480,1566388991,HU @@ -69645,9 +69327,7 @@ 1613565952,1613570047,US 1613570048,1613574143,CA 1613574144,1613606911,US -1613606912,1613607167,CA -1613607168,1613607423,US -1613607424,1613615103,CA +1613606912,1613615103,CA 1613615104,1613635583,US 1613635584,1613639679,CA 1613639680,1613640703,US @@ -70709,8 +70389,7 @@ 1728312320,1728315391,VN 1728315392,1728316415,ID 1728316416,1728317439,MY -1728317440,1728318463,JP -1728318464,1728319487,SG +1728317440,1728319487,JP 1728319488,1728320511,AU 1728320512,1728321535,PH 1728321536,1728322559,JP @@ -71077,7 +70756,6 @@ 1728652288,1728653311,ID 1728653312,1728654335,NZ 1728654336,1728655359,ID -1728655360,1728655871,IN 1728655872,1728656127,SB 1728656128,1728656383,HK 1728656384,1728661503,AU @@ -71543,12 +71221,105 @@ 1729080320,1729081343,ID 1729081344,1729081599,IN 1729081600,1729082111,AU +1729082112,1729082367,IN 1729082368,1729084415,HK 1729084416,1729085439,JP 1729085440,1729087487,HK 1729087488,1729088511,CN 1729088512,1729090559,AU 1729090560,1729091583,JP +1729091584,1729092607,HK +1729092608,1729094143,BD +1729094144,1729094655,IN +1729094656,1729095679,AU +1729095680,1729096703,SG +1729096704,1729097215,AU +1729097216,1729097727,AF +1729097728,1729098751,ID +1729098752,1729099775,BD +1729099776,1729100543,IN +1729100544,1729100799,ID +1729100800,1729101823,PH +1729363968,1729364991,PK +1729364992,1729367039,JP +1729367040,1729368063,CN +1729368064,1729369343,AU +1729369344,1729369599,ID +1729369600,1729370111,AU +1729370112,1729371135,BN +1729371136,1729372159,IN +1729372160,1729373183,CN +1729373184,1729374207,JP +1729374208,1729375231,TW +1729375232,1729376255,JP +1729376256,1729376767,AU +1729376768,1729377023,SG +1729377024,1729377279,ID +1729377280,1729378303,BD +1729378304,1729378815,IN +1729378816,1729379071,TH +1729379072,1729379327,SG +1729379328,1729380351,HK +1729380352,1729381375,IN +1729381376,1729382399,AU +1729382400,1729383423,JP +1729383424,1729384447,PG +1729384448,1729385471,KH +1729385472,1729386495,JP +1729386496,1729386751,NZ +1729386752,1729387007,BD +1729387008,1729387519,ID +1729387520,1729388543,SG +1729388544,1729389567,HK +1729389568,1729391103,IN +1729391104,1729391615,ID +1729391616,1729392639,JP +1729392640,1729393663,CN +1729393664,1729394687,KR +1729394688,1729395711,TH +1729395712,1729395967,NR +1729395968,1729396735,IN +1729396736,1729397759,CN +1729397760,1729398783,PK +1729398784,1729399807,NZ +1729399808,1729400831,BD +1729400832,1729402879,VN +1729402880,1729403903,MN +1729403904,1729404927,JP +1729404928,1729405951,CN +1729405952,1729406207,IN +1729406208,1729406463,AU +1729406464,1729406975,ID +1729406976,1729407999,SG +1729408000,1729409023,JP +1729409024,1729410047,TW +1729410048,1729411071,BD +1729411072,1729413119,ID +1729413120,1729414143,HK +1729414144,1729414655,ID +1729414656,1729416191,AU +1729416192,1729417215,TH +1729417216,1729418239,AU +1729418240,1729419263,IN +1729419264,1729419519,AU +1729419520,1729420031,IN +1729420032,1729420287,AU +1729420288,1729421311,HK +1729421312,1729422335,MY +1729422336,1729423359,HK +1729423360,1729423871,VU +1729423872,1729424383,AU +1729424384,1729425407,HK +1729425408,1729426431,JP +1729426432,1729427455,AU +1729427456,1729428479,CN +1729428480,1729430527,AU +1729430528,1729431551,BD +1729431552,1729432575,JP +1729432576,1729433599,PH +1729433600,1729433855,IN +1729433856,1729434111,AU +1729434624,1729435647,AU 1729495040,1729519615,CN 1729519616,1729520639,HK 1729520640,1729527807,CN @@ -71571,7 +71342,6 @@ 1729544192,1729545215,IN 1729545216,1729546239,AU 1729546240,1729547263,HK -1729547264,1729548287,IN 1729548288,1729549311,AU 1729549312,1729550335,JP 1729550336,1729551359,MY @@ -71782,7 +71552,7 @@ 1730010112,1730011135,IN 1730011136,1730012159,BT 1730012160,1730013183,ID -1730013184,1730015231,IN +1730013184,1730014207,IN 1730015232,1730016255,MY 1730016256,1730017279,PH 1730017280,1730017791,IN @@ -71796,7 +71566,7 @@ 1744182272,1744184575,AU 1744184576,1744184831,SG 1744184832,1744185087,HK -1744185088,1744185343,AU +1744185088,1744185343,JP 1744185344,1744186367,HK 1744186368,1744187903,IN 1744187904,1744188159,TH @@ -71819,7 +71589,9 @@ 1744202240,1744202495,IN 1744202496,1744202751,ID 1744202752,1744203775,PK -1744203776,1744204799,MY +1744203776,1744204356,MY +1744204357,1744204484,HK +1744204485,1744204799,MY 1744204800,1744205823,ID 1744205824,1744207871,CN 1744207872,1744208127,AU @@ -71934,6 +71706,7 @@ 1776680960,1776812031,KE 1776812032,1776877567,NA 1776877568,1776943103,ZA +1777008640,1777041407,CI 1777061888,1777063935,SD 1777063936,1777065983,MZ 1777065984,1777070079,GQ @@ -72040,8 +71813,8 @@ 1795568912,1795568927,CA 1795568928,1795569663,US 1795569664,1795570175,CA -1795570176,1795570943,US -1795570944,1795571215,CA +1795570176,1795571199,US +1795571200,1795571215,CA 1795571216,1795571223,US 1795571224,1795571231,CA 1795571232,1795571327,US @@ -72050,7 +71823,9 @@ 1795571424,1795571455,CA 1795571456,1795583999,US 1795584000,1795588095,SG -1795588096,1796257919,US +1795588096,1796253695,US +1796253696,1796253951,CA +1796253952,1796257919,US 1796257920,1796258047,PR 1796258048,1796262911,US 1796262912,1796263167,PR @@ -73526,7 +73301,8 @@ 1855979520,1856241663,JP 1856241664,1856307199,TH 1856307200,1856315391,KR -1856315392,1856323583,CN +1856315392,1856319487,HK +1856319488,1856323583,CN 1856323584,1856339967,KR 1856339968,1856372735,JP 1856372736,1856503807,CN @@ -73694,7 +73470,6 @@ 1876951040,1877475327,CN 1877475328,1877688319,JP 1877688320,1877689343,IN -1877689344,1877690367,TH 1877690368,1877691391,IN 1877691392,1877692415,JP 1877692416,1877696511,PH @@ -74585,7 +74360,9 @@ 1971060736,1975517183,CN 1975517184,1979711487,IN 1979711488,1981284351,JP -1981284352,1981808639,CN +1981284352,1981546494,CN +1981546495,1981546495,SG +1981546496,1981808639,CN 1981808640,1983905791,KR 1983905792,1984102399,CN 1984102400,1984118783,AU @@ -75148,7 +74925,8 @@ 2046951424,2047082495,PH 2047082496,2047526911,CN 2047526912,2047531007,HK -2047531008,2047868927,CN +2047531008,2047868415,CN +2047868416,2047868927,SG 2047868928,2048917503,JP 2048917504,2049966079,KR 2049966080,2050047999,CN @@ -77546,9 +77324,11 @@ 2377449472,2377515007,FR 2377515008,2377842687,US 2377842688,2377908223,GB -2377908224,2378026239,US +2377908224,2378025983,US +2378025984,2378026239,NL 2378026240,2378026495,EU -2378026496,2378170367,US +2378026496,2378027007,FR +2378027008,2378170367,US 2378170368,2378235903,FI 2378235904,2378301439,US 2378301440,2378303231,FR @@ -78280,7 +78060,7 @@ 2466232320,2466234367,ES 2466234368,2466242559,RU 2466242560,2466250751,GE -2466316288,2466323475,US +2466250752,2466323475,US 2466323476,2466323477,IN 2466323478,2466643967,US 2466643968,2466709503,KR @@ -78398,6 +78178,7 @@ 2478571520,2478702591,GB 2478702592,2478899199,US 2478899200,2478964735,GB +2478964736,2479030271,CA 2479030272,2479095807,US 2479095808,2479161343,FR 2479161344,2479226879,GB @@ -78433,7 +78214,7 @@ 2482634752,2482700287,FR 2482700288,2482765823,CZ 2482765824,2482831359,IE -2482831360,2482962431,US +2482831360,2483027967,US 2483093504,2483159039,US 2483159040,2483224575,SE 2483224576,2483290111,GB @@ -78544,7 +78325,9 @@ 2500141824,2500142847,IE 2500142848,2500143103,US 2500143104,2500144127,IE -2500144128,2500161023,US +2500144128,2500144895,US +2500144896,2500145151,IE +2500145152,2500161023,US 2500161024,2500161535,GB 2500161536,2500175871,US 2500175872,2500175879,RO @@ -78847,7 +78630,6 @@ 2547187712,2547318783,GB 2547318784,2547515391,US 2547515392,2547515399,DK -2547517440,2547519487,GB 2548039680,2548563967,GB 2548563968,2548826111,IR 2548826112,2548834303,AT @@ -80105,7 +79887,9 @@ 2684194720,2684194723,BR 2684194724,2684194727,US 2684194728,2684194751,DK -2684194752,2684194767,US +2684194752,2684194754,US +2684194755,2684194755,NL +2684194756,2684194767,US 2684194768,2684194815,DK 2684194816,2684194839,NL 2684194840,2684194847,US @@ -81140,6 +80924,7 @@ 2784428032,2785542143,US 2785542144,2786066431,CH 2786066432,2788163583,US +2788163584,2788229119,CA 2788229120,2788229935,US 2788229936,2788229943,GB 2788229944,2788230663,US @@ -81665,6 +81450,7 @@ 2882535424,2883583999,CN 2883584000,2885681151,VN 2885681152,2886729727,US +2887778304,2889875455,US 2894069760,2894921727,US 2894921728,2895118335,GB 2895118336,2895301887,US @@ -81814,8 +81600,8 @@ 2915275072,2915275263,US 2915275264,2915275327,PL 2915275328,2915497759,US -2915497760,2915499807,A1 -2915499808,2915516415,US +2915497760,2915497761,A1 +2915497762,2915516415,US 2915516416,2915516671,NL 2915516672,2915516927,CA 2915516928,2915517439,US @@ -85962,7 +85748,9 @@ 2954861848,2954861863,FR 2954861864,2954861867,NL 2954861868,2954861871,FR -2954861872,2954861887,IE +2954861872,2954861875,IE +2954861876,2954861879,CH +2954861880,2954861887,IE 2954861888,2954861919,DE 2954861920,2954861923,PL 2954861924,2954861927,ES @@ -86482,13 +86270,7 @@ 2954950656,2954952703,ES 2954952704,2955018239,TR 2955018240,2955034623,JP -2955034624,2955051007,IE -2955051008,2955067391,NL -2955067392,2955069439,IE -2955069440,2955071487,NL -2955071488,2955073535,IE -2955073536,2955075583,FR -2955075584,2955083775,NL +2955034624,2955083775,IE 2955083776,2955149311,GB 2955149312,2955411455,UA 2955411456,2955673599,TR @@ -86582,8 +86364,7 @@ 2956823677,2956823677,A1 2956823678,2956824575,US 2956824576,2956826623,PT -2956826624,2956827647,US -2956827648,2956828671,DK +2956826624,2956828671,HR 2956828672,2956832767,BA 2956832768,2956836863,AT 2956836864,2956853247,SK @@ -87134,7 +86915,59 @@ 2960907776,2960908031,GB 2960908032,2960908287,PL 2960908288,2960916479,KG -2960916480,2960924671,UA +2960916480,2960932863,UA +2960932864,2960933887,IR +2960933888,2960934399,GB +2960934400,2960934655,LI +2960934656,2960934911,DE +2960934912,2960941055,RO +2960941056,2960943103,AM +2960943104,2960945151,RO +2960945152,2960945663,LI +2960945664,2960949247,RU +2960949248,2960951295,UA +2960951296,2960951807,RU +2960951808,2960952319,UA +2960952320,2960953343,PL +2960953344,2960954367,RU +2960954368,2960954623,SE +2960954624,2960954879,DE +2960954880,2960960511,RU +2960960512,2960963583,RO +2960963584,2960964607,CZ +2960964608,2960965119,RU +2960965120,2960965375,PL +2960965376,2960965631,GB +2960965632,2960973823,RU +2960973824,2960974335,SE +2960974336,2960974847,RU +2960974848,2960977919,UA +2960977920,2960979455,PL +2960979456,2960979711,IE +2960979712,2960979967,EE +2960979968,2960980223,RU +2960980224,2960980479,AT +2960980480,2960980991,SE +2960980992,2960981247,PT +2960981248,2960982015,NL +2960982016,2960990207,RO +2960990208,2960998399,UA +2960998400,2961039359,RU +2961039360,2961047551,UA +2961047552,2961057023,RU +2961057024,2961057279,IE +2961057280,2961057535,GR +2961057536,2961057791,AT +2961057792,2961061887,RU +2961061888,2961062911,PL +2961062912,2961063935,UA +2961063936,2961072127,CZ +2961072128,2961088511,UA +2961088512,2961088767,SE +2961088768,2961089535,UA +2961089536,2961090559,KG +2961090560,2961113087,RO +2961113088,2961178623,CH 2961178624,2965372927,FR 2965372928,2965766143,RU 2965766144,2965897215,DE @@ -87160,8 +86993,8 @@ 2967343104,2967345151,RU 2967345152,2967347199,ES 2967347200,2967347455,HR -2967347456,2967347583,GB -2967347584,2967351295,HR +2967347456,2967347460,GB +2967347461,2967351295,HR 2967351296,2967355391,FR 2967355392,2967371775,RO 2967371776,2967388159,KZ @@ -87268,7 +87101,9 @@ 2987487232,2987491327,HR 2987491328,2987495423,RU 2987495424,2987499519,NO -2987499520,2987500511,MD +2987499520,2987500199,MD +2987500200,2987500207,AQ +2987500208,2987500511,MD 2987500512,2987500543,US 2987500544,2987500767,MD 2987500768,2987500799,US @@ -91647,8 +91482,7 @@ 2988555212,2988555215,DE 2988555216,2988555519,FR 2988555520,2988555527,IE -2988555528,2988555528,DE -2988555529,2988555531,ES +2988555528,2988555531,DE 2988555532,2988555535,FR 2988555536,2988555543,ES 2988555544,2988555559,FR @@ -93317,7 +93151,9 @@ 3025637632,3025637887,MY 3025637888,3025638399,IN 3025638400,3025638655,SG -3025638656,3025647359,IN +3025638656,3025639167,IN +3025639168,3025639175,SG +3025639176,3025647359,IN 3025647360,3025647615,AU 3025647616,3025649151,IN 3025649152,3025649663,HK @@ -93348,7 +93184,9 @@ 3026069504,3026071551,JP 3026071552,3026073599,HK 3026073600,3026075647,CN -3026075648,3026083839,AF +3026075648,3026080769,AF +3026080770,3026080770,US +3026080771,3026083839,AF 3026083840,3026087935,CN 3026087936,3026089983,AU 3026092032,3026108415,MO @@ -93564,12 +93402,13 @@ 3044016128,3044081663,EC 3044147200,3044155391,GT 3044163584,3044171775,BO +3044188160,3044196351,BO 3044196352,3044204543,AR 3044212736,3044245503,HN 3044278272,3044540415,AR 3044802560,3045064703,PY 3045064704,3047161855,CO -3047161856,3047292927,CL +3047161856,3047423999,CL 3047424000,3047686143,AR 3047948288,3048079359,CL 3048210432,3048275967,PE @@ -93583,7 +93422,12 @@ 3049119744,3049127935,HN 3049193472,3049259007,PA 3049259008,3049521151,CR +3049652224,3049717759,EC 3049783296,3050045439,CL +3050307584,3050340351,VE +3050373120,3050405887,AR +3050438656,3050504191,HN +3051356160,3051364351,CR 3053453312,3054501887,ID 3054501888,3054534655,HK 3054534656,3054537727,PH @@ -94010,11 +93854,7 @@ 3094020096,3094085631,CA 3094085632,3096444927,US 3096444928,3096969215,CA -3096969216,3097124223,US -3097124224,3097124231,AE -3097124232,3097124303,US -3097124304,3097124311,AE -3097124312,3097130139,US +3096969216,3097130139,US 3097130140,3097130140,A1 3097130141,3097493503,US 3097493504,3097755647,CA @@ -94335,6 +94175,7 @@ 3132227584,3132293119,EC 3132293120,3132309503,HN 3132309504,3132313599,CR +3132313600,3132317695,CL 3132317696,3132321791,CO 3132321792,3132325887,PA 3132325888,3132358655,SR @@ -95428,6 +95269,20 @@ 3164667904,3164733439,PS 3164733440,3164798975,RU 3164798976,3164864511,UA +3164864512,3164897279,GB +3164897280,3164899327,IT +3164899328,3164901375,RU +3164901376,3164903423,PL +3164903424,3164905471,AM +3164905472,3164913663,RU +3164913664,3164915711,ES +3164915712,3164917759,GR +3164917760,3164919807,RU +3164919808,3164921855,AL +3164921856,3164923903,GB +3164923904,3164925951,DE +3164925952,3164927999,PL +3164928000,3164930047,NL 3164930048,3164932095,IE 3164932096,3164934143,FR 3164934144,3164936191,PL @@ -96394,7 +96249,9 @@ 3166654464,3166658559,RU 3166658560,3166662655,UA 3166662656,3166666751,RU -3166666752,3166670847,RO +3166666752,3166667775,RO +3166667776,3166668799,GB +3166668800,3166670847,RO 3166670848,3166672895,UA 3166672896,3166674943,GB 3166674944,3166679039,RU @@ -96594,6 +96451,8 @@ 3188015104,3188031487,HN 3188031488,3188039679,SV 3188047872,3188051967,CO +3188051968,3188054015,CR +3188054016,3188056063,AR 3188056064,3188064255,PA 3188064256,3188080639,VE 3188080640,3188088831,CU @@ -96733,6 +96592,7 @@ 3193623040,3193634815,CO 3193634816,3193700351,CL 3193700352,3193724927,HN +3193724928,3193729023,AR 3193729024,3193733119,CU 3193733120,3193735423,AR 3193735424,3193735679,US @@ -96744,9 +96604,13 @@ 3193739264,3193739519,US 3193739520,3193741311,AR 3193741312,3193741567,US -3193741568,3193747839,AR +3193741568,3193745279,AR +3193745280,3193745407,US +3193745408,3193747839,AR 3193747840,3193747967,US -3193747968,3193765887,AR +3193747968,3193754623,AR +3193754624,3193754751,US +3193754752,3193765887,AR 3193765888,3193774079,TT 3193774080,3193775103,PA 3193775104,3193776127,GY @@ -96808,7 +96672,9 @@ 3194372096,3194380287,HT 3194380288,3194381439,BZ 3194381440,3194381567,US -3194381568,3194388479,BZ +3194381568,3194383231,BZ +3194383232,3194383359,US +3194383360,3194388479,BZ 3194388480,3194396671,PE 3194396672,3194413055,CO 3194413056,3194421247,CL @@ -96872,6 +96738,8 @@ 3194728448,3194729471,CL 3194729472,3194730495,PE 3194730496,3194732543,AR +3194736640,3194737663,NI +3194737664,3194740735,AR 3194740736,3194742783,CL 3194742784,3194744831,EC 3194744832,3194746879,AR @@ -96894,7 +96762,9 @@ 3194871808,3194879999,BO 3194880000,3194896383,DO 3194896384,3194904575,CO -3194904576,3194925055,CL +3194904576,3194908671,CL +3194908672,3194910719,AR +3194910720,3194925055,CL 3194925056,3194929151,AR 3194929152,3194937343,EC 3194937344,3194945535,AR @@ -96915,6 +96785,7 @@ 3195060224,3195064319,UY 3195068416,3195076607,AN 3195076608,3195084799,CL +3195084800,3195092991,CR 3195092992,3195097087,AR 3195101184,3195109375,CR 3195109376,3195125759,AR @@ -96933,8 +96804,11 @@ 3195207680,3195211775,GT 3195215872,3195224063,AR 3195224064,3195232255,PA +3195232256,3195236351,CR +3195236352,3195240447,AR 3195240448,3195256831,HT 3195256832,3195265023,AR +3195265024,3195273215,CO 3195273216,3195535359,PE 3195535360,3195543551,SV 3195547648,3195551743,AR @@ -96959,7 +96833,9 @@ 3195715584,3195731967,AR 3195731968,3195736063,EC 3195738112,3195740159,HN -3195740160,3195744255,PA +3195740160,3195741439,PA +3195741440,3195741695,US +3195741696,3195744255,PA 3195744256,3195748351,EC 3195748352,3195752447,CL 3195756544,3195763711,AR @@ -97069,9 +96945,12 @@ 3201630208,3201695743,TT 3201695744,3201761279,EC 3201761280,3201826815,CL -3201826816,3201875967,AR +3201826816,3201871871,AR +3201871872,3201875967,PE 3201875968,3201880063,CO -3201880064,3201884159,AR +3201880064,3201880831,AR +3201880832,3201881087,EC +3201881088,3201884159,AR 3201884160,3201888511,VE 3201888512,3201925119,AR 3201925120,3201957887,CL @@ -99126,8 +99005,7 @@ 3229972736,3229972991,SE 3229972992,3229975295,US 3229975296,3229975551,GB -3229975552,3229976575,US -3229978624,3230004223,US +3229975552,3230004223,US 3230004224,3230004479,GB 3230004480,3230004991,US 3230005760,3230006015,ZA @@ -99975,7 +99853,8 @@ 3232049152,3232049407,GB 3232049408,3232051967,SE 3232051968,3232052991,GB -3232052992,3232060415,SE +3232052992,3232053247,US +3232053248,3232060415,SE 3232060416,3232060671,IE 3232060672,3232065791,SE 3232065792,3232066303,GB @@ -100065,9 +99944,9 @@ 3232595968,3232598015,GB 3232629248,3232629759,US 3232629760,3232630783,CA -3232630784,3232634879,US -3232636928,3232645119,US +3232630784,3232645119,US 3232645120,3232647167,AT +3232649216,3232653311,US 3232661504,3232694271,JP 3232694272,3232702463,US 3232702464,3232703743,FI @@ -100095,8 +99974,9 @@ 3232813056,3232820223,SE 3232820224,3232820479,IE 3232820480,3232825343,SE -3232890880,3233021951,US +3232890880,3233153023,US 3233285120,3233285375,US +3233288192,3233292287,CA 3233480704,3233484799,US 3233484800,3233488895,ES 3233488896,3233505279,US @@ -100262,8 +100142,7 @@ 3233729280,3233729535,US 3233729536,3233730047,SG 3233730560,3233732607,AU -3233732608,3233733631,US -3233734656,3233736959,US +3233732608,3233736959,US 3233736960,3233737983,FR 3233737984,3233738751,US 3233738752,3233739007,GB @@ -100409,7 +100288,7 @@ 3234193664,3234201599,CA 3234202624,3234203647,US 3234203648,3234205695,BR -3234205696,3234222079,US +3234205696,3234226175,US 3234234368,3234239327,US 3234239328,3234239329,MY 3234239330,3234240255,US @@ -100422,20 +100301,21 @@ 3234267136,3234271231,US 3234271232,3234275327,PT 3234275328,3234279423,AU +3234279424,3234283519,CA 3234283520,3234310367,US 3234310368,3234310371,HK 3234310372,3234312703,US 3234332672,3234349055,US 3234349056,3234353151,NZ -3234365440,3234367487,US +3234353152,3234357247,US +3234365440,3234373631,US 3234398208,3234400679,US 3234400680,3234400687,NA 3234400688,3234401511,US 3234401512,3234401519,NA 3234401520,3234549759,US 3234549760,3234550015,RU -3234553856,3234554367,US -3234555904,3234556415,US +3234553856,3234556415,US 3234556416,3234556927,CA 3234556928,3234557439,FI 3234557440,3234564607,US @@ -100553,7 +100433,7 @@ 3234861056,3234897919,US 3234922496,3234988031,US 3234988032,3234992127,CA -3234996224,3235000319,US +3234992128,3235004415,US 3235004416,3235020799,CA 3235053568,3235086335,US 3235119104,3235184639,US @@ -100706,7 +100586,10 @@ 3236585984,3236586239,CA 3236586240,3236604671,US 3236604672,3236604927,CA -3236604928,3236617471,US +3236604928,3236610047,US +3236610560,3236611071,US +3236611072,3236612095,CA +3236612096,3236617471,US 3236617728,3236617983,US 3236617984,3236619775,CA 3236619776,3236620031,US @@ -100754,18 +100637,19 @@ 3236788480,3236789503,GB 3236789504,3236790271,US 3236823040,3236827135,CH -3236827136,3236829183,US -3236831232,3236855807,US +3236827136,3236855807,US 3236888576,3236958207,US 3236958208,3236962303,AU 3236962304,3236966399,US 3236970496,3236978687,US 3236986880,3236995071,US -3237019648,3237036031,US +3237019648,3237021695,US +3237021696,3237023743,CA +3237023744,3237031935,US 3237085184,3237154815,US 3237154816,3237155839,ES 3237155840,3237156863,AU -3237158912,3237160959,US +3237156864,3237160959,US 3237183488,3237216255,US 3237216256,3237281791,JP 3237281792,3237285119,US @@ -100855,7 +100739,9 @@ 3237690624,3237691903,SA 3237691904,3237698303,US 3237698304,3237698559,CA -3237698560,3237716991,US +3237698560,3237712895,US +3237712896,3237713151,AU +3237713152,3237716991,US 3237716992,3237717247,CA 3237717248,3237717503,US 3237717504,3237717759,CA @@ -102577,8 +102463,10 @@ 3241541632,3241724415,FR 3241724416,3241724671,RU 3241724672,3241803775,FR +3241803776,3241803823,CY 3241803824,3241803831,EU 3241803832,3241803839,GB +3241803840,3241804031,CY 3241804032,3241820159,BE 3241820160,3241821695,GB 3241821696,3241822207,GR @@ -104547,7 +104435,9 @@ 3247927296,3247928319,PL 3247928320,3247929343,HU 3247929344,3247931391,GB -3247931392,3247960063,FR +3247931392,3247947775,FR +3247947776,3247955967,RU +3247955968,3247960063,FR 3247960064,3247962111,UA 3247962112,3247963135,DE 3247963136,3247964159,UA @@ -104672,6 +104562,7 @@ 3248808960,3248810079,FR 3248810080,3248810111,UA 3248810112,3248810143,RU +3248810144,3248810175,CY 3248810176,3248810207,FR 3248810208,3248810239,GB 3248810240,3248810495,CH @@ -104959,7 +104850,7 @@ 3249868544,3249868799,DE 3249868800,3249871103,SE 3249871104,3249871359,NO -3249871360,3249871615,SE +3249871360,3249871615,US 3249871616,3249871871,NO 3249871872,3249872383,SE 3249872384,3249872639,GB @@ -105100,7 +104991,8 @@ 3250357888,3250357903,DK 3250357904,3250357919,FR 3250357920,3250357927,PL -3250357952,3250358015,GB +3250357928,3250357959,CY +3250357960,3250358015,GB 3250358016,3250358527,LB 3250358528,3250358783,HU 3250358784,3250359295,LB @@ -105549,14 +105441,18 @@ 3251213120,3251213151,NL 3251213152,3251213183,FR 3251213184,3251213215,UA +3251213216,3251213247,CY 3251213248,3251213311,GB +3251213312,3251213375,CY 3251213376,3251213439,DE 3251213440,3251213503,GB 3251213504,3251213567,NL 3251213568,3251213631,FR 3251213632,3251213695,PL 3251213696,3251213759,LV +3251213760,3251213823,CY 3251213824,3251213887,GB +3251213888,3251214015,CY 3251214016,3251214079,UA 3251214080,3251214143,FR 3251214144,3251214207,AF @@ -105570,6 +105466,7 @@ 3251215232,3251215359,IL 3251215360,3251215487,UA 3251215488,3251215615,SE +3251215616,3251215743,CY 3251215744,3251215871,GB 3251215872,3251216127,RO 3251216128,3251216255,FI @@ -105843,12 +105740,14 @@ 3252341504,3252342015,GR 3252342016,3252342079,GB 3252342080,3252342143,IR +3252342144,3252342207,CY 3252342208,3252342239,GB 3252342240,3252342271,CH 3252342272,3252342527,SE 3252342528,3252342543,NO 3252342544,3252342591,DE 3252342592,3252342607,IE +3252342608,3252342655,CY 3252342656,3252342783,IL 3252342784,3252346367,DE 3252346368,3252346623,GB @@ -106675,6 +106574,7 @@ 3253723648,3253724159,AT 3253724160,3253724671,UA 3253724672,3253725183,RO +3253725184,3253725439,SE 3253725440,3253725695,RU 3253725696,3253726207,UA 3253726208,3253726719,RO @@ -106940,7 +106840,15 @@ 3254557440,3254557695,AT 3254557696,3254576383,FR 3254576384,3254576543,DO -3254576544,3254623743,FR +3254576544,3254611455,FR +3254611456,3254611456,YT +3254611457,3254611711,FR +3254611712,3254611712,YT +3254611713,3254615551,FR +3254615552,3254615552,YT +3254615553,3254615807,FR +3254615808,3254615808,YT +3254615809,3254623743,FR 3254623744,3254624255,US 3254624256,3254648831,FR 3254648832,3254648895,DK @@ -107018,7 +106926,14 @@ 3254790912,3254791423,BE 3254791424,3254791679,SK 3254791680,3254792191,DK -3254792192,3254793215,LV +3254792192,3254792959,LV +3254792960,3254793215,EE +3254793216,3254794751,UA +3254794752,3254795263,SE +3254795264,3254795519,KZ +3254795520,3254795775,SE +3254795776,3254796031,PL +3254796032,3254796287,AT 3254796288,3254797311,SE 3254797312,3254798335,RU 3254798336,3254799359,AT @@ -108184,6 +108099,7 @@ 3257545216,3257546495,GR 3257546496,3257546527,DE 3257546528,3257546623,CH +3257546624,3257546655,CY 3257546656,3257546687,SE 3257546688,3257546719,DE 3257546720,3257546751,DK @@ -109563,9 +109479,7 @@ 3259479808,3259480063,DK 3259480064,3259480831,SE 3259480832,3259481087,ES -3259481088,3259492351,SE -3259492352,3259493375,GB -3259493376,3259498495,SE +3259481088,3259498495,SE 3259498496,3259506943,GB 3259506944,3259507199,ES 3259507200,3259507711,GB @@ -110276,6 +110190,7 @@ 3262460416,3262460543,UA 3262460544,3262460671,RU 3262460672,3262460927,AE +3262460928,3262461055,CY 3262461056,3262461183,DK 3262461184,3262461311,SN 3262461312,3262461439,NO @@ -113542,12 +113457,14 @@ 3264846592,3264846719,US 3264846720,3264846847,RU 3264846848,3264846911,DK +3264846912,3264847103,CY 3264847104,3264847135,FR 3264847136,3264847167,ES 3264847168,3264847199,IE 3264847200,3264847231,NO 3264847232,3264847263,CH 3264847264,3264847295,LI +3264847296,3264847359,CY 3264847360,3264847487,FR 3264847488,3264847615,RU 3264847616,3264847679,PL @@ -117611,19 +117528,24 @@ 3275510016,3275510079,SE 3275510080,3275510143,ES 3275510144,3275510207,FI +3275510208,3275510335,CY 3275510336,3275510399,IE 3275510400,3275510463,NL 3275510464,3275510527,GB 3275510528,3275510559,PL 3275510560,3275510591,DE +3275510592,3275510623,CY 3275510624,3275510655,EE 3275510656,3275510687,FR +3275510688,3275510719,CY 3275510720,3275510751,GB 3275510752,3275510783,NL +3275510784,3275510911,CY 3275510912,3275511167,GB 3275511168,3275511295,LV 3275511296,3275511551,GB 3275511552,3275511679,NL +3275511680,3275511807,CY 3275511808,3275511935,CH 3275511936,3275512063,FR 3275512064,3275512191,CZ @@ -117636,11 +117558,13 @@ 3275512896,3275512959,AT 3275512960,3275513023,PL 3275513024,3275513087,UA +3275513088,3275513151,CY 3275513152,3275513215,ES 3275513216,3275513279,CH 3275513280,3275513343,DK 3275513344,3275513471,PL 3275513472,3275513599,FR +3275513600,3275513727,CY 3275513728,3275513855,GB 3275513856,3275522047,DE 3275522048,3275530239,IT @@ -117912,7 +117836,7 @@ 3275792896,3275793407,UA 3275793408,3275793919,FR 3275793920,3275794431,UA -3275794432,3275794943,EU +3275794432,3275794943,GB 3275794944,3275795455,RS 3275795456,3275795967,GR 3275795968,3275796479,PL @@ -121130,7 +121054,7 @@ 3276678144,3276678655,SE 3276678656,3276679167,UA 3276679168,3276679679,DE -3276679680,3276680191,RO +3276679680,3276680191,UA 3276680192,3276680703,SK 3276680704,3276681215,AT 3276681216,3276681727,PL @@ -126684,7 +126608,9 @@ 3283951616,3283952639,PL 3283952640,3283953663,UA 3283953664,3283954687,PL -3283954688,3283956735,UA +3283954688,3283955326,UA +3283955327,3283955327,CY +3283955328,3283956735,UA 3283956736,3283957759,PL 3283957760,3283958783,GR 3283958784,3283959807,UA @@ -129937,6 +129863,7 @@ 3291214336,3291214591,GH 3291214592,3291214847,ZA 3291214848,3291215103,NG +3291215104,3291215359,KE 3291216896,3291217919,MU 3291217920,3291230207,ZA 3291230208,3291234303,GH @@ -130232,6 +130159,7 @@ 3314286592,3314548735,DZ 3314548736,3314810879,MA 3314810880,3314827263,AO +3314827264,3314829311,ZA 3314843648,3314860031,MG 3314860032,3314868223,CI 3314868224,3314876415,GH @@ -130243,12 +130171,16 @@ 3314912256,3314913279,BI 3314913280,3314914303,ZA 3314914304,3314915327,AO +3314915328,3314916351,MW +3314916352,3314917375,MZ +3314924544,3314925567,NG 3314925568,3314941951,GN 3314941952,3315073023,EG 3315073024,3315138559,TZ 3315138560,3315204095,MA 3315204096,3315269631,ET 3315269632,3315286015,ZA +3315286016,3315294207,KE 3315318784,3315322879,LS 3315326976,3315331071,ZW 3315331072,3315333119,GH @@ -130352,7 +130284,7 @@ 3321790464,3321806847,LS 3321806848,3321823231,SD 3321823232,3321839615,NG -3321839616,3321855999,MU +3321839616,3321855999,GH 3321856000,3321860095,CV 3321860096,3321864191,ZA 3321864192,3321868287,NG @@ -130380,18 +130312,15 @@ 3322339584,3322339839,GB 3322339840,3322609663,US 3322609664,3322610687,SA -3322610688,3322611711,US -3322613760,3322642431,US +3322610688,3322642431,US 3322675200,3322683391,US 3322683392,3322691583,BR 3322691584,3322707967,US 3322740736,3322773503,US -3322806272,3322871807,US -3322873856,3322875903,US +3322806272,3322875903,US 3322880000,3322888191,AU 3322888192,3322904575,US -3322937344,3322938367,US -3322939392,3322940671,US +3322937344,3322940671,US 3322940672,3322940927,AP 3322940928,3322945535,US 3322953728,3322970111,US @@ -130419,6 +130348,7 @@ 3323061504,3323062015,US 3323062016,3323062527,BR 3323062784,3323068415,US +3323199488,3323201535,US 3323201536,3323203583,CA 3323203584,3323207679,US 3323207680,3323215871,CA @@ -130469,21 +130399,22 @@ 3324040192,3324040447,AU 3324040448,3324051455,US 3324051456,3324182527,CA -3324182528,3324256255,US +3324182528,3324255231,US +3324255232,3324256255,VI 3324256256,3324259327,SA 3324259328,3324259583,US 3324259584,3324259839,SA 3324259840,3324260095,US -3324264448,3324266495,US +3324260352,3324266495,US 3324266496,3324266751,AP 3324266752,3324270079,US 3324270080,3324270591,EU 3324270592,3324379135,US 3324379136,3324380159,CA -3324380160,3324403711,US -3324411904,3324470271,US +3324380160,3324470271,US 3324470272,3324474367,GB 3324474368,3324579839,US +3324582912,3324583935,CA 3324583936,3324588031,CL 3324588032,3324600319,US 3324641280,3324642303,US @@ -130583,13 +130514,15 @@ 3325144832,3325145087,CA 3325145088,3325169663,US 3325169664,3325171711,BR -3325173760,3325190143,US +3325171712,3325190143,US 3325231104,3325232127,US 3325233152,3325234175,US 3325234176,3325234431,SA 3325234432,3325249279,US 3325249280,3325249535,CO -3325249536,3325259775,US +3325249536,3325257727,US +3325257728,3325258751,CA +3325258752,3325259775,US 3325259776,3325261311,CA 3325261312,3325264895,US 3325267200,3325267711,US @@ -130668,7 +130601,9 @@ 3326492240,3326492255,CA 3326492256,3326526463,US 3326526464,3326526719,CA -3326526720,3326631935,US +3326526720,3326613503,US +3326613504,3326615551,CA +3326615552,3326631935,US 3326631936,3326640127,CA 3326640128,3326676991,US 3326680832,3326682623,CA @@ -130702,25 +130637,26 @@ 3327199232,3327200255,BR 3327200256,3327256831,US 3327256832,3327257087,GU -3327257088,3327410175,US +3327257088,3327426559,US 3327426560,3327459327,CA 3327459328,3327591237,US 3327591238,3327591238,A1 3327591239,3327723519,US 3327723520,3327725567,CA -3327725568,3327746047,US -3327754240,3327803647,US +3327725568,3327803647,US 3327803648,3327803903,AP 3327803904,3327805695,US 3327807488,3327811583,CA -3327819776,3327885311,US +3327811584,3327885311,US 3327885312,3327918079,CA 3327918080,3327995903,US 3327995904,3327996927,AN 3327996928,3328028671,US 3328028672,3328030719,AN 3328030720,3328180223,US -3328180224,3328214783,CA +3328180224,3328202751,CA +3328202752,3328204799,US +3328204800,3328214783,CA 3328214784,3328215295,GB 3328215296,3328235007,CA 3328235008,3328235263,US @@ -130730,8 +130666,7 @@ 3328243200,3328245759,CA 3328245760,3328323583,US 3328323584,3328327679,CA -3328327680,3328335871,US -3328344064,3328360447,US +3328327680,3328360447,US 3328376832,3328394239,US 3328394240,3328394495,GB 3328394496,3328414719,US @@ -130744,8 +130679,10 @@ 3328432640,3328433663,CA 3328433664,3328433919,CH 3328433920,3328475135,US -3328475136,3328483327,CA -3328507904,3328617983,US +3328475136,3328477183,CA +3328477184,3328479231,US +3328479232,3328483327,CA +3328491520,3328617983,US 3328617984,3328618239,CA 3328618240,3328629503,US 3328629504,3328629759,EU @@ -130787,7 +130724,9 @@ 3330662912,3330663167,GB 3330663168,3330664191,US 3330664192,3330664447,CA -3330664448,3330714367,US +3330664448,3330677759,US +3330677760,3330678783,CA +3330678784,3330714367,US 3330714368,3330714623,CA 3330714624,3330726655,US 3330726656,3330726911,CA @@ -130863,8 +130802,7 @@ 3331868162,3331868162,EU 3331868163,3332001791,US 3332001792,3332005887,CA -3332005888,3332030463,US -3332046848,3332083967,US +3332005888,3332083967,US 3332083968,3332084223,AP 3332084224,3332095231,US 3332095232,3332095487,EU @@ -130898,7 +130836,9 @@ 3332947968,3332948223,US 3332948224,3332966143,CA 3332966144,3332966399,US -3332966400,3333012479,CA +3332966400,3332988927,CA +3332988928,3332989951,US +3332989952,3333012479,CA 3333012480,3333012991,US 3333012992,3333029887,CA 3333029888,3333212415,US @@ -131010,15 +130950,15 @@ 3337055232,3337060351,CA 3337060352,3337069055,US 3337069056,3337069119,GB -3337069120,3337289727,US -3337289728,3337297919,CA +3337069120,3337289983,US +3337289984,3337297919,CA 3337297920,3337302015,US 3337302016,3337304319,CA 3337304320,3337305599,US 3337305600,3337335295,CA 3337335296,3337335807,US -3337335808,3337355263,CA -3337355264,3337650175,US +3337335808,3337355007,CA +3337355008,3337650175,US 3337650176,3337650250,GB 3337650251,3337650251,EU 3337650252,3337650687,GB @@ -131031,13 +130971,17 @@ 3337653760,3337654783,CH 3337654784,3337655039,AU 3337655040,3337682943,CH -3337682944,3337957375,US +3337682944,3337948415,US +3337948672,3337949183,CA +3337949184,3337957375,US 3337957376,3337961471,CA 3337977856,3337980671,US 3337980672,3337980927,PR 3337980928,3337986047,US 3337986048,3337986303,BB -3337986304,3338069247,US +3337986304,3338021887,US +3338021888,3338022911,CA +3338022912,3338069247,US 3338069248,3338069759,BB 3338069760,3338207487,US 3338207488,3338207743,CA @@ -131373,7 +131317,9 @@ 3341056240,3341056255,US 3341056256,3341056271,IN 3341056272,3341056287,US -3341056288,3341056415,IN +3341056288,3341056346,IN +3341056347,3341056347,US +3341056348,3341056415,IN 3341056416,3341056767,US 3341056768,3341056895,CA 3341056896,3341082623,US @@ -131866,24 +131812,26 @@ 3345436928,3345437183,ES 3345437184,3345437695,GB 3345437696,3345437951,NL +3345437952,3345438207,CA 3345438208,3345438463,GB 3345438464,3345438975,FR -3345439232,3345439743,US +3345438976,3345439743,US 3345439744,3345439999,FR 3345440000,3345440255,DE -3345440256,3345440767,US -3345440768,3345441791,DE +3345440256,3345441023,US +3345441024,3345441791,DE 3345442304,3345442559,CL 3345442560,3345442815,JP 3345442816,3345443327,AT 3345443328,3345443583,CH 3345443584,3345443839,DE -3345444096,3345444607,US +3345443840,3345444607,US 3345444608,3345444676,CH 3345444677,3345444678,US 3345444679,3345445119,CH 3345445120,3345445375,US 3345445376,3345446399,GB +3345446400,3345446655,US 3345446656,3345446911,IT 3345446912,3345447679,US 3345447680,3345448447,FR @@ -131907,8 +131855,8 @@ 3346227200,3346234367,US 3346234368,3346235391,CA 3346235392,3346241535,US -3346241536,3346243583,CA -3346243584,3346282495,US +3346241536,3346243327,CA +3346243328,3346282495,US 3346282496,3346284543,PR 3346284544,3346323455,US 3346323456,3346325503,CA @@ -132016,7 +131964,8 @@ 3349479168,3349479423,CA 3349479424,3349532671,US 3349532672,3349533695,GB -3349533696,3349544959,US +3349533696,3349533951,CA +3349533952,3349545215,US 3349545216,3349545727,CA 3349545728,3349545983,US 3349545984,3349551103,CA @@ -132042,9 +131991,7 @@ 3349645312,3349647359,CA 3349647360,3349649407,US 3349649408,3349653503,CA -3349653504,3349691903,US -3349691904,3349692031,CZ -3349692032,3349723260,US +3349653504,3349723260,US 3349723261,3349723265,CA 3349723266,3349723360,US 3349723361,3349723367,CA @@ -132158,8 +132105,8 @@ 3351035904,3351036927,US 3351036928,3351037951,CA 3351037952,3351043071,US -3351043072,3351043327,FR -3351043328,3351044095,CA +3351043072,3351043583,FR +3351043584,3351044095,CA 3351044096,3351045311,US 3351045312,3351045343,RU 3351045344,3351045439,US @@ -132385,7 +132332,9 @@ 3353729024,3353729279,HK 3353729280,3353730047,US 3353730048,3353731071,CA -3353731072,3353752581,US +3353731072,3353731487,US +3353731488,3353731503,AU +3353731504,3353752581,US 3353752582,3353752585,FR 3353752586,3353752589,BE 3353752590,3353752677,US @@ -132662,7 +132611,9 @@ 3355918336,3355923455,EC 3355923456,3355924479,UY 3355924480,3355926527,TT -3355934720,3355938815,AR +3355934720,3355939839,AR +3355939840,3355940863,SR +3355940864,3355942911,AR 3355942912,3355947007,BO 3355947008,3355949055,AR 3355949056,3355951103,AN @@ -133054,7 +133005,9 @@ 3357451584,3357452287,GT 3357452288,3357452799,HN 3357452800,3357453055,NI -3357453056,3357453311,GT +3357453056,3357453071,GT +3357453072,3357453079,SV +3357453080,3357453311,GT 3357453312,3357453567,HN 3357453568,3357454847,GT 3357454848,3357455103,HN @@ -133144,7 +133097,9 @@ 3358131984,3358131999,CO 3358132000,3358132087,AR 3358132088,3358132095,CO -3358132096,3358133439,AR +3358132096,3358132991,AR +3358132992,3358133119,EC +3358133120,3358133439,AR 3358133440,3358133471,VE 3358133472,3358133631,AR 3358133632,3358133759,VE @@ -133162,8 +133117,7 @@ 3358150144,3358150423,AR 3358150424,3358150431,CO 3358150432,3358150495,AR -3358150496,3358150527,CO -3358150528,3358150655,AR +3358150496,3358150655,CO 3358150656,3358150783,EC 3358150784,3358151263,AR 3358151264,3358151271,EC @@ -133397,7 +133351,9 @@ 3360399360,3360403455,BO 3360407552,3360423935,PA 3360423936,3360686079,MX -3360686080,3360710271,AR +3360686080,3360708991,AR +3360708992,3360709119,US +3360709120,3360710271,AR 3360710272,3360710399,US 3360710400,3360710655,AR 3360710656,3360718847,HT @@ -133427,7 +133383,10 @@ 3361079296,3361144831,CL 3361144832,3361210367,BO 3361210368,3361275903,DO -3361275904,3361284095,PE +3361275904,3361281023,PE +3361281024,3361281791,VE +3361281792,3361282047,PE +3361282048,3361284095,VE 3361284096,3361296383,CL 3361296384,3361298431,SV 3361298432,3361300479,DO @@ -133547,6 +133506,7 @@ 3362945024,3362983935,AR 3362988032,3362992127,EC 3362996224,3363000319,UY +3363000320,3363004415,AR 3363012608,3363024895,PA 3363024896,3363025151,HN 3363025152,3363025407,PA @@ -133555,6 +133515,7 @@ 3363025920,3363026431,CO 3363026432,3363026943,HT 3363026944,3363027199,CL +3363027200,3363027455,AR 3363027968,3363028991,HN 3363028992,3363045375,AR 3363045376,3363110911,CO @@ -133570,9 +133531,12 @@ 3363504128,3363512319,PE 3363512320,3363554047,AR 3363554048,3363554175,US -3363554176,3363556095,AR +3363554176,3363555327,AR +3363555328,3363555583,US +3363555584,3363556095,AR 3363556096,3363556223,US 3363556224,3363557375,AR +3363565568,3363569663,AR 3363569664,3363577855,PA 3363577856,3363586047,CL 3363594240,3363600383,AR @@ -133583,6 +133547,7 @@ 3363601920,3363602175,AR 3363602176,3363602431,PA 3363602432,3363610623,AN +3363614720,3363618815,AR 3363618816,3363627007,UY 3363627008,3363635199,EC 3363635200,3363651583,UY @@ -133652,6 +133617,7 @@ 3386728448,3386732543,AR 3386732544,3386734591,CL 3386734592,3386734847,AR +3386734848,3386735103,CL 3386736640,3386753023,CO 3386753024,3386761215,CL 3386761216,3386769407,PA @@ -133672,7 +133638,9 @@ 3387569568,3387569583,PE 3387569584,3387572095,AR 3387572096,3387572223,PE -3387572224,3387575935,AR +3387572224,3387573503,AR +3387573504,3387573631,CO +3387573632,3387575935,AR 3387575936,3387576063,CO 3387576064,3387577727,AR 3387577728,3387577855,EC @@ -134007,7 +133975,6 @@ 3389609472,3389609727,SG 3389609728,3389609983,AU 3389609984,3389610239,NZ -3389610240,3389610495,IN 3389610496,3389610751,HK 3389610752,3389611519,IN 3389611520,3389612031,AU @@ -134377,7 +134344,7 @@ 3391851264,3391852543,AU 3391852544,3391856639,CN 3391856640,3391864831,ID -3391864832,3391873023,HK +3391864832,3391873023,US 3391873024,3391877119,AU 3391877120,3391879167,JP 3391879168,3391881215,ID @@ -135331,7 +135298,7 @@ 3397213184,3397213439,IN 3397213440,3397213695,AU 3397213696,3397214207,ID -3397214208,3397214719,AP +3397214208,3397214719,MN 3397214720,3397215231,AU 3397215232,3397215743,ID 3397215744,3397216255,PH @@ -135637,6 +135604,7 @@ 3398902016,3398902271,HK 3398902272,3398902783,PH 3398902784,3398903807,AU +3398903808,3398905855,TH 3398905856,3398909951,TW 3398909952,3398918143,GU 3398918144,3398926335,JP @@ -135711,7 +135679,9 @@ 3399548928,3399557119,AU 3399557120,3399565311,SG 3399565312,3399581695,AU -3399581696,3399593983,HK +3399581696,3399589631,HK +3399589632,3399589887,NP +3399589888,3399593983,HK 3399593984,3399598079,BD 3399598080,3399614463,JP 3399614464,3399622655,MY @@ -135789,7 +135759,9 @@ 3399942144,3399945983,HK 3399945984,3399946239,AU 3399946240,3399950335,HK -3399950336,3399974911,US +3399950336,3399954175,US +3399954176,3399954431,AU +3399954432,3399974911,US 3399974912,3399995391,MY 3399995392,3399999487,KR 3399999488,3400004671,SG @@ -135957,6 +135929,7 @@ 3400839168,3400847359,JP 3400847360,3400849407,CN 3400849408,3400851455,MN +3400851456,3400859647,AU 3400867840,3400884223,AU 3400884224,3400888319,JP 3400888320,3400892415,CN @@ -137636,7 +137609,7 @@ 3410959360,3410959615,VN 3410959616,3410959871,ID 3410959872,3410960383,AU -3410960384,3410964479,CN +3410960384,3410964479,GB 3410964480,3410968575,JP 3410968576,3410984959,NZ 3410984960,3411017727,TW @@ -138720,7 +138693,8 @@ 3420375552,3420375807,ID 3420375808,3420377087,CN 3420377088,3420389375,JP -3420389376,3420395519,CN +3420389376,3420393471,US +3420393472,3420395519,CN 3420395520,3420397567,JP 3420397568,3420401663,KH 3420401664,3420411903,JP @@ -140890,8 +140864,11 @@ 3450254080,3450254335,CA 3450254336,3450272511,US 3450272512,3450272767,MX -3450272768,3450275583,US -3450275584,3450275839,FR +3450272768,3450275327,US +3450275328,3450275583,GB +3450275584,3450275724,FR +3450275725,3450275725,GB +3450275726,3450275839,FR 3450275840,3450345231,US 3450345232,3450345247,FR 3450345248,3450345263,IT @@ -142501,7 +142478,10 @@ 3464169216,3464169471,US 3464169472,3464171775,CA 3464171776,3464172031,US -3464172032,3464180735,CA +3464172032,3464173567,CA +3464173568,3464173823,US +3464173824,3464174591,CA +3464175360,3464180735,CA 3464180736,3464184487,US 3464184488,3464184495,GB 3464184496,3464184511,CA @@ -144549,7 +144529,9 @@ 3483240704,3483240959,A1 3483240960,3483247359,US 3483247360,3483247871,A1 -3483247872,3483296004,US +3483247872,3483248639,US +3483248640,3483248895,A1 +3483248896,3483296004,US 3483296005,3483296005,BE 3483296006,3483435007,US 3483435008,3483533311,CA @@ -145946,8 +145928,7 @@ 3495375872,3495376895,CA 3495376896,3495399423,US 3495399424,3495400447,KN -3495400448,3495401471,US -3495403520,3495412735,US +3495400448,3495412735,US 3495412736,3495413759,CA 3495413760,3495424033,US 3495424034,3495424042,IN @@ -146082,7 +146063,7 @@ 3495688192,3495689215,CA 3495689216,3495694335,US 3495694336,3495696383,CA -3495698432,3495703551,US +3495696384,3495703551,US 3495703552,3495704063,GB 3495704064,3495704575,CA 3495704576,3495718911,US @@ -147327,9 +147308,7 @@ 3509327712,3509327807,US 3509327808,3509327871,CA 3509327872,3509346303,US -3509346304,3509347615,CA -3509347616,3509347623,A1 -3509347624,3509350711,CA +3509346304,3509350711,CA 3509350712,3509350719,US 3509350720,3509354495,CA 3509354496,3509387263,US @@ -150261,8 +150240,7 @@ 3526926336,3526934527,JP 3526934528,3526942719,CN 3526942720,3526950911,AU -3526950912,3526983679,JP -3526983680,3527004159,HK +3526950912,3527004159,JP 3527004160,3527008255,ID 3527008256,3527016447,KR 3527016448,3527933951,TW @@ -150277,7 +150255,8 @@ 3528441856,3528445951,JP 3528445952,3528450047,ID 3528450048,3528458239,CN -3528458240,3528474623,AF +3528458240,3528466431,AP +3528466432,3528474623,AF 3528474624,3528482815,TW 3528482816,3528491007,KR 3528491008,3528507391,AU @@ -158897,7 +158876,9 @@ 3578724352,3578732543,RU 3578732544,3578740735,IE 3578740736,3578757119,RU -3578757120,3578822655,SE +3578757120,3578808575,SE +3578808576,3578808831,FI +3578808832,3578822655,SE 3578822656,3578855423,RU 3578855424,3578888191,GB 3578888192,3578920959,SK @@ -161002,7 +160983,11 @@ 3586677376,3586677434,FR 3586677435,3586677435,DE 3586677436,3586677487,FR -3586677488,3586677759,DE +3586677488,3586677641,DE +3586677642,3586677645,GB +3586677646,3586677647,SG +3586677648,3586677655,US +3586677656,3586677759,DE 3586677760,3586678015,GR 3586678016,3586678271,DE 3586678272,3586678399,FR @@ -161036,7 +161021,9 @@ 3586680608,3586680615,ES 3586680616,3586680703,FR 3586680704,3586680831,ES -3586680832,3586682239,FR +3586680832,3586681615,FR +3586681616,3586681631,CZ +3586681632,3586682239,FR 3586682240,3586682367,US 3586682368,3586682399,AT 3586682400,3586682879,FR @@ -161171,8 +161158,7 @@ 3587188480,3587188735,DE 3587188736,3587192831,A2 3587192832,3587193087,DE -3587193088,3587193343,A2 -3587193344,3587193599,GB +3587193088,3587193599,GB 3587193600,3587194495,A2 3587194496,3587194511,RU 3587194512,3587194879,A2 @@ -163896,7 +163882,9 @@ 3627759360,3627759615,NL 3627759616,3627759871,US 3627759872,3627760127,NL -3627760128,3627802623,US +3627760128,3627760639,US +3627760640,3627760895,EU +3627760896,3627802623,US 3627802624,3627810815,CA 3627810816,3627842047,US 3627842048,3627842303,IS @@ -164975,7 +164963,9 @@ 3633776400,3633776415,CN 3633776416,3633776463,US 3633776464,3633776479,CN -3633776480,3633815551,US +3633776480,3633782527,US +3633782528,3633782783,A1 +3633782784,3633815551,US 3633815552,3633815807,CA 3633815808,3633815839,US 3633815840,3633815843,GB @@ -165731,24 +165721,12 @@ 3638374752,3638374767,US 3638374768,3638386687,CA 3638386688,3638398975,US -3638398976,3638398991,GB -3638398992,3638399007,CH -3638399008,3638399487,US -3638399488,3638399615,CH -3638399616,3638399647,BM -3638399648,3638399679,US -3638399680,3638399743,CA -3638399744,3638399999,CH -3638400000,3638400063,CA -3638400064,3638400271,US -3638400272,3638400279,CA -3638400280,3638400559,US -3638400560,3638400567,PA -3638400568,3638400575,US -3638400576,3638400607,CA -3638400608,3638400639,US -3638400640,3638400767,CA -3638400768,3638509295,US +3638398976,3638401023,CA +3638401024,3638401087,US +3638401088,3638401423,CA +3638401424,3638401443,US +3638401444,3638403071,CA +3638403072,3638509295,US 3638509296,3638509311,GB 3638509312,3638509567,US 3638509568,3638526911,CA @@ -165919,7 +165897,9 @@ 3639672832,3639681023,CL 3639681024,3639685055,US 3639685056,3639685063,SA -3639685064,3639730175,US +3639685064,3639692032,US +3639692033,3639692288,GB +3639692289,3639730175,US 3639730176,3639734271,CA 3639734272,3639886591,US 3639886592,3639886599,SG @@ -169773,7 +169753,9 @@ 3654607616,3654607871,SE 3654607872,3654608127,NO 3654608128,3654608383,SE -3654608384,3654608895,PL +3654608384,3654608404,PL +3654608405,3654608405,NO +3654608406,3654608895,PL 3654608896,3654609919,NO 3654609920,3654610431,SE 3654610432,3654610943,FR diff --git a/installer/resources/i2prouter b/installer/resources/i2prouter index fde3a0d4706dea92313a43f6b8d66417ef822940..afbc4612d43fbd88640a424883f3cdd15b278825 100644 --- a/installer/resources/i2prouter +++ b/installer/resources/i2prouter @@ -45,7 +45,7 @@ GETTEXT=$(which gettext > /dev/null 2>&1) # Where to install the systemd service SYSTEMD_SERVICE="/etc/systemd/system/${APP_NAME}.service" -if grep -q systemd /proc/1/comm ; then +if grep -q systemd /proc/1/comm > /dev/null 2>&1 ; then USE_SYSTEMD=1 fi diff --git a/installer/resources/news.xml b/installer/resources/news.xml deleted file mode 100644 index 342dfab93713fb28f79a33bbb6b057a778a97a3f..0000000000000000000000000000000000000000 --- a/installer/resources/news.xml +++ /dev/null @@ -1,24 +0,0 @@ -<!-- -<i2p.news date="$Date: 2012-09-21 00:00:00 $"> -<i2p.release version="0.9.2" date="2012/09/21" minVersion="0.6" /> ---> -<div lang="en"> -<h3>2012-09-21: <b>0.9.2 <a href="http://www.i2p2.i2p/release-0.9.2.html">Released</a></b></h3> - -<p> -0.9.2 includes extensive low-level changes to improve the performance and efficiency of the router. -We have updated our UPnP library, to hopefully make UPnP work for more people. -I2PSnark now has DHT support, but it is not yet enabled by default, as we plan to do more -testing during the upcoming 0.9.3 development cycle. -As usual, there's also lots of bug fixes in this release, so updating 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>, -spread the word, -and <a href="http://www.i2p2.i2p/donate.html">donate</a>! -If you find a bug, please enter a report on <a href="http://trac.i2p2.i2p/report/1">trac</a>. -To help on translations, -volunteer on <a href="irc://127.0.0.1:6668/i2p">IRC #i2p-dev</a> -or sign up on <a href="https://www.transifex.net/projects/p/I2P/">Transifex</a>. -</p> -</div> diff --git a/installer/resources/news_fr.xml b/installer/resources/news_fr.xml deleted file mode 100644 index ab045e4bfaf6a2b7c022a29607250c85476c864d..0000000000000000000000000000000000000000 --- a/installer/resources/news_fr.xml +++ /dev/null @@ -1,21 +0,0 @@ -<!-- -<i2p.news date="$Date: 2011-03-02 00:00:00 $"> -<i2p.release version="0.8.4" date="2011/03/02" minVersion="0.6" /> ---> -<div lang="fr"> -<h3>2011-03-02: <b>La version 0.8.4 <a href="http://www.i2p2.i2p/release-0.8.4_fr.html">est sortie</a></b></h3> -<p> -Cette version 0.8.4 contient quelques améliorations de performances et des corrections de bogues importantes. -i2psnark prend désormais en charge les liens magnet. -Comme d'habitude, la mise à jour est recommmandée. -</p><p> -Merci de participer à la croissance du réseau. -Venez nous encourager sur le <a href="irc://127.0.0.1:6668/i2p-help">canal IRC #i2p-help</a>. -<a href="http://www.i2p2.i2p/getinvolved.html">Impliquez-vous</a>, -passez le mot, -et <a href="http://www.i2p2.i2p/donate.html">un petit don</a>! -Si vous trouvez un bogue, merci d'entrer un rapport sur <a href="http://trac.i2p2.i2p/report/1">trac</a>. -Nous cherchons toujours des volontaires pour travailler sur les traductions existantes et des nouvelles. -Merci de vous manifester sur l'<a href="irc://127.0.0.1:6668/i2p">IRC #i2p-dev</a>. -</p> -</div> diff --git a/installer/resources/proxy/dnf-header.ht b/installer/resources/proxy/dnf-header.ht index eb6cb9c044e1d24db33a9ae31741c0c22302386a..cc0d249964f9fd9941d26080ce260762355fd8b0 100644 --- a/installer/resources/proxy/dnf-header.ht +++ b/installer/resources/proxy/dnf-header.ht @@ -22,7 +22,7 @@ The eepsite was not reachable. The eepsite is offline, there is network congestion, or your router is not yet well-integrated with peers. You may want to -<a href="javascript: window.location.reload()">retry</a>.</p> +<a href="javascript:window.location.reload()">retry</a>.</p> <hr> <p><b>Could not find the following destination:</b> </p> diff --git a/installer/resources/proxy/dnf-header_de.ht b/installer/resources/proxy/dnf-header_de.ht index 07b8a8d8e0bf9a147b5bdf78318abd515b9228bf..9c662d449eb52dc29681105447402f05605f8e2b 100644 --- a/installer/resources/proxy/dnf-header_de.ht +++ b/installer/resources/proxy/dnf-header_de.ht @@ -21,7 +21,7 @@ Proxy-Connection: close Die Eepseite war nicht erreichbar. Sie ist vielleicht offline, es gibt eine Ãœberlast oder Verstopfung im Netz, oder Ihr Router ist noch nicht gut ins Netzwerk integriert. -Versuchen Sie, die Seite <a href="javascript: window.location.reload()">erneut zu laden</a>! +Versuchen Sie, die Seite <a href="javascript:window.location.reload()">erneut zu laden</a>! </p> <hr> <p> diff --git a/installer/resources/proxy/dnf-header_fr.ht b/installer/resources/proxy/dnf-header_fr.ht index cdb2df84199ba630c3c813da5724719ac5a0c62c..becbc0cc5e91794062af50936a8a96310c23afd9 100644 --- a/installer/resources/proxy/dnf-header_fr.ht +++ b/installer/resources/proxy/dnf-header_fr.ht @@ -20,7 +20,7 @@ Proxy-Connection: close <p> Le site eep n'a pas pu être atteint. Il est hors service, le réseau est surchargé, ou votre routeur n'est pas bien intégré aux pairs. -Vous pouvez <a href="javascript: window.location.reload()">réessayer</a>. +Vous pouvez <a href="javascript:window.location.reload()">réessayer</a>. </p> <hr> <p> diff --git a/installer/resources/proxy/dnf-header_nl.ht b/installer/resources/proxy/dnf-header_nl.ht index b42e9b825790f4c85e082edfb20f33938962b2a4..be0fc4ceb744025b147a5d9d4a790cae5449d27a 100644 --- a/installer/resources/proxy/dnf-header_nl.ht +++ b/installer/resources/proxy/dnf-header_nl.ht @@ -21,7 +21,7 @@ Proxy-Connection: close De eepsite was niet bereikbaar. De eepsite is offline, er is een netwerk verstopping, of je router is niet goed geïntegreerd met peers. -Probeer <a href="javascript: window.location.reload()">opnieuw</a>. +Probeer <a href="javascript:window.location.reload()">opnieuw</a>. </p> <hr> <p> diff --git a/installer/resources/proxy/dnf-header_ru.ht b/installer/resources/proxy/dnf-header_ru.ht index 074cca1a0f60da6a746cded5eafa610c31ca6480..a8aa4ff89052982613c07e640e7988d223a962e9 100644 --- a/installer/resources/proxy/dnf-header_ru.ht +++ b/installer/resources/proxy/dnf-header_ru.ht @@ -23,7 +23,7 @@ Proxy-Connection: close либо ваш I2P-маршрутизатор ещё недоÑтаточно интегрирован Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ пирами. </p> <p> -Ð’Ñ‹ можете попробовать <a href="javascript: window.location.reload()">повторить запроÑ</a>. +Ð’Ñ‹ можете попробовать <a href="javascript:window.location.reload()">повторить запроÑ</a>. </p> <hr> diff --git a/installer/resources/proxy/dnf-header_zh.ht b/installer/resources/proxy/dnf-header_zh.ht index e22b889068ff0b59a386c7f0e0c18c199a1323df..ecc9abc481f46c4fd47731ad1d707c3b4022e758 100644 --- a/installer/resources/proxy/dnf-header_zh.ht +++ b/installer/resources/proxy/dnf-header_zh.ht @@ -22,7 +22,7 @@ Proxy-Connection: close æ¤åŒ¿å站点å¯èƒ½ä¸åœ¨çº¿(时区差异ã€å¯¹æ–¹è·¯ç”±å™¨ç¹å¿™ç‰), 或您的路由器在网络ä¸çš„æ•´åˆåº¦ä¸ä½³ã€‚ ä½ å¯ä»¥å°è¯• -<a href="javascript: window.location.reload()">é‡è¯•</a>。 +<a href="javascript:window.location.reload()">é‡è¯•</a>。 </p> <hr> <p> diff --git a/installer/resources/proxy/dnfb-header.ht b/installer/resources/proxy/dnfb-header.ht index 2f50e4aec91d9af5ebab93f087fe039281ac37d6..dd0997271b7ea1b6a91673606afb9acd69bf3047 100644 --- a/installer/resources/proxy/dnfb-header.ht +++ b/installer/resources/proxy/dnfb-header.ht @@ -22,6 +22,6 @@ The eepsite destination specified was not valid, or was otherwise unreachable. Perhaps you pasted in the wrong BASE64 string or the link you are following is bad. The I2P host could also be offline. You may want to -<a href="javascript: window.location.reload()">retry</a>. +<a href="javascript:window.location.reload()">retry</a>. <hr><b>Could not find the following destination:</b> </p> diff --git a/installer/resources/proxy/dnfb-header_ar.ht b/installer/resources/proxy/dnfb-header_ar.ht index 610596958b8c78e8b738bcb303c2a34fee40a52b..bfbdefc26be76df49ed0c5f0d83e6f09a03a85f6 100644 --- a/installer/resources/proxy/dnfb-header_ar.ht +++ b/installer/resources/proxy/dnfb-header_ar.ht @@ -23,7 +23,7 @@ Proxy-Connection: close </h3> <p>عنوان الموقع eepsite خاطئ، أو ربما قمت بلصق عنوان غير موجود، أو الموقع متوقÙ. يمكنك -<a href="javascript: window.location.reload()">اعادة المØاولة</a>. +<a href="javascript:window.location.reload()">اعادة المØاولة</a>. </p> <hr> <p><b>لم يتم الوصول الى هذا العنوان:</b></p> diff --git a/installer/resources/proxy/dnfb-header_de.ht b/installer/resources/proxy/dnfb-header_de.ht index c25e39f20a899dfa8f0273463cb3eec64a717179..5dc95dca99c0dc7ff2cd91ff6b9e0e07904a8688 100644 --- a/installer/resources/proxy/dnfb-header_de.ht +++ b/installer/resources/proxy/dnfb-header_de.ht @@ -21,7 +21,7 @@ Proxy-Connection: close Das angegebene Eepseiten-Ziel ist nicht gültig, oder auf andere Art nicht erreichbar. Vielleicht haben Sie eine falsche BASIS64-Zeichenkette kopiert oder Sie folgten einem ungültigen Verweis. Möglicherweise ist auch der I2P-Host offline. -Versuchen Sie, die Seite <a href="javascript: window.location.reload()">erneut zu laden</a>! +Versuchen Sie, die Seite <a href="javascript:window.location.reload()">erneut zu laden</a>! </p> <hr> <p> diff --git a/installer/resources/proxy/dnfb-header_fr.ht b/installer/resources/proxy/dnfb-header_fr.ht index 68faaf031f7bb032ccdf32a9403d8c1942caaad0..40ab55cdeef0352eb29399124e4a4ea6ad4d9fd9 100644 --- a/installer/resources/proxy/dnfb-header_fr.ht +++ b/installer/resources/proxy/dnfb-header_fr.ht @@ -21,7 +21,7 @@ Proxy-Connection: close La destination du site eep indiquée est incorrecte, ou injoignable. Vous avez peut-être collé une chaîne BASE64 incorrecte le lien que vous suivez est incorrect. L'hôte I2P est peut-être aussi hors-servicehost. -Vous pouvez <a href="javascript: window.location.reload()">réessayer</a>. +Vous pouvez <a href="javascript:window.location.reload()">réessayer</a>. </p> <hr> <p><b>Destination non trouvée:</b> diff --git a/installer/resources/proxy/dnfb-header_nl.ht b/installer/resources/proxy/dnfb-header_nl.ht index 539c97a36c439e4491662a1c116720bf28c40f31..79193b917b1b8393d49b441f3c5bed1982f44f1d 100644 --- a/installer/resources/proxy/dnfb-header_nl.ht +++ b/installer/resources/proxy/dnfb-header_nl.ht @@ -23,7 +23,7 @@ of anderzijds onbereikbaar. Mogelijk heb je de BASE64 string niet goed gekopieerd of is de link die je probeert te volgen ongeldig. De I2P host kan ook offline zijn. Probeer -<a href="javascript: window.location.reload()">opnieuw</a>. +<a href="javascript:window.location.reload()">opnieuw</a>. </p> <hr> <p><b>Kon de volgende destination niet vinden:</b> diff --git a/installer/resources/proxy/dnfb-header_ru.ht b/installer/resources/proxy/dnfb-header_ru.ht index e17196f1985d26e39fee5010cdf8c3cf3110587c..bdc5b15a4f8ce0be8f8f3223b65c84a55d3210bc 100644 --- a/installer/resources/proxy/dnfb-header_ru.ht +++ b/installer/resources/proxy/dnfb-header_ru.ht @@ -24,7 +24,7 @@ Proxy-Connection: close I2P-хоÑÑ‚ в офлайне. </p> <p> -Ð’Ñ‹ можете попробовать <a href="javascript: window.location.reload()">повторить запроÑ</a>. +Ð’Ñ‹ можете попробовать <a href="javascript:window.location.reload()">повторить запроÑ</a>. </p> <hr> diff --git a/installer/resources/proxy/dnfb-header_zh.ht b/installer/resources/proxy/dnfb-header_zh.ht index ebcb2acf5660b4787c074f6560dcf0b94369f4c8..75a72d73b2787064902c453a2662c7e9a2990a25 100644 --- a/installer/resources/proxy/dnfb-header_zh.ht +++ b/installer/resources/proxy/dnfb-header_zh.ht @@ -21,7 +21,7 @@ Proxy-Connection: close 匿åç«™ç‚¹æ‰€å¯¹åº”çš„ç›®æ ‡å¯†é’¥æ— æ•ˆå› è€Œæ— æ³•è®¿é—®ã€‚ 或许您å¤åˆ¶çš„Base64å—符串有误,或者您所点击的跳转链接有问题。 也许对方的 I2P 主机目å‰ä¸åœ¨çº¿ã€‚您å¯ä»¥é€‰æ‹© -<a href="javascript: window.location.reload()">é‡è¯•</a>. +<a href="javascript:window.location.reload()">é‡è¯•</a>. </p> <hr> <p><b>找ä¸åˆ°ä»¥ä¸‹ç›®æ ‡:</b></p> diff --git a/installer/resources/proxy/dnfp-header.ht b/installer/resources/proxy/dnfp-header.ht index 34abefa81c23bac36348eda0aff4de93c4993901..204244f5be0dcb2236ca3332f6b6beff440ddbb8 100644 --- a/installer/resources/proxy/dnfp-header.ht +++ b/installer/resources/proxy/dnfp-header.ht @@ -22,7 +22,7 @@ The HTTP Outproxy was not found. It is offline, there is network congestion, or your router is not yet well-integrated with peers. You may want to -<a href="javascript: parent.window.location.reload()">retry</a> +<a href="javascript:parent.window.location.reload()">retry</a> as this will randomly reselect an outproxy from the pool you have defined <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">here</a> (if you have more than one configured). diff --git a/installer/resources/proxy/dnfp-header_ar.ht b/installer/resources/proxy/dnfp-header_ar.ht index 74d2f5615c2bebe2b1f32209623d50a76d18dccf..3ba4206f5014d73f47865deeda693a529b18dad1 100644 --- a/installer/resources/proxy/dnfp-header_ar.ht +++ b/installer/resources/proxy/dnfp-header_ar.ht @@ -21,7 +21,7 @@ Proxy-Connection: close لم يتم ايجاد بروكسي خارجي www خارج الشبكة أو غير متصل جيدا بباقي المستخدمين. يمكنك -<a href="javascript: parent.window.location.reload()">اعادة المØاولة</a> +<a href="javascript:parent.window.location.reload()">اعادة المØاولة</a> لإختيار بروكسي خارجي جديد <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">هنا</a> (اذا كان لديك اكثر من واØد). diff --git a/installer/resources/proxy/dnfp-header_de.ht b/installer/resources/proxy/dnfp-header_de.ht index 5f92db4a72894b9000494b416c86d01f1c4c2d62..72438a3265e60689b575657a92432d9cffca03a6 100644 --- a/installer/resources/proxy/dnfp-header_de.ht +++ b/installer/resources/proxy/dnfp-header_de.ht @@ -20,7 +20,7 @@ Proxy-Connection: close <p> Der HTTP-Outproxy wurde nicht gefunden. Er ist offline, das Netz überlastet oder verstopft, oder Ihr Router ist noch nicht gut ins Netzwerk integriert. -Laden Sie die Seite <a href="javascript: parent.window.location.reload()">neu</a>! +Laden Sie die Seite <a href="javascript:parent.window.location.reload()">neu</a>! Dies trifft eine erneute zufällige Auswahl des Outproxys aus der von Ihnen <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">hier</a> vorgegebenen Liste (falls mehr als einer angegeben ist). Sollte das Problem weiterhin bestehen, diff --git a/installer/resources/proxy/dnfp-header_fr.ht b/installer/resources/proxy/dnfp-header_fr.ht index 3356aa2821bddc485f6da94910f8840b7257a464..292f945a1deae7df6ec598ad2c8fcaaba87b66de 100644 --- a/installer/resources/proxy/dnfp-header_fr.ht +++ b/installer/resources/proxy/dnfp-header_fr.ht @@ -22,7 +22,7 @@ Le serveur mandataire sortant est introuvable. Il est hors service, le réseau est surchargé, ou votre routeur n'est pas encore bien intégré avec des pairs. Vous pouvez essayer de -<a href="javascript: parent.window.location.reload()">retenter</a> +<a href="javascript:parent.window.location.reload()">retenter</a> car il se produira une sélection aléatoire de mandataire dans le groupe que vous avez défini <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">ici</a> (si vous en avez plus d'un de défini). diff --git a/installer/resources/proxy/dnfp-header_nl.ht b/installer/resources/proxy/dnfp-header_nl.ht index c12108d20e361fe835d10fc71f4ae24f3febbd3a..af5a41c425a6241a7dd6772bafb8e555c53aadfe 100644 --- a/installer/resources/proxy/dnfp-header_nl.ht +++ b/installer/resources/proxy/dnfp-header_nl.ht @@ -21,7 +21,7 @@ Proxy-Connection: close De HTTP Outproxy was niet gevonden. Het is offline, er is een netwerk verstopping, of je router is niet goed geïntegreerd met peers. -Probeer <a href="javascript: parent.window.location.reload()">opnieuw</a> +Probeer <a href="javascript:parent.window.location.reload()">opnieuw</a> aangezien dit willekeurig een outproxy van de groep zal selecteren die <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">hier</a> gedefinieerd (indien er meer van één geconfigureerd is). diff --git a/installer/resources/proxy/dnfp-header_zh.ht b/installer/resources/proxy/dnfp-header_zh.ht index fb6aca718b050adf31af91d1f1c91d532e0ebe5c..803279ce5f6f6a0cceea9678beb6e4db54ef81a3 100644 --- a/installer/resources/proxy/dnfp-header_zh.ht +++ b/installer/resources/proxy/dnfp-header_zh.ht @@ -21,7 +21,7 @@ Proxy-Connection: close 未找到 WWW 出å£ä»£ç†. 它å¯èƒ½ä»¥ä¸‹çº¿, æˆ–ç½‘ç»œæ‹¥å µï¼Œæˆ–ä½ çš„è·¯ç”±å™¨ä¸Žç½‘ç»œ 尚未良好整åˆã€‚您å¯ä»¥ -<a href="javascript: parent.window.location.reload()">é‡è¯•</a> +<a href="javascript:parent.window.location.reload()">é‡è¯•</a> 这将从所设置的所有出å£ä»£ç†ä¸éšæœºé€‰æ‹©ä¸€ä¸ªä»£ç†åšå‡ºå£ã€‚ <a href="http://127.0.0.1:7657/i2ptunnel/index.jsp">点æ¤</a> (如果您设置了超过1个的出å£ä»£ç†åœ°å€)。 diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Banlist.java similarity index 60% rename from router/java/src/net/i2p/router/Shitlist.java rename to router/java/src/net/i2p/router/Banlist.java index 48b319a5122b70cb2c0ceea28fd958fb52f7d8c3..c167108e011e488eba371556a17007d83fe50230 100644 --- a/router/java/src/net/i2p/router/Shitlist.java +++ b/router/java/src/net/i2p/router/Banlist.java @@ -24,12 +24,12 @@ import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; /** - * Routers are shitlisted only if none of our transports can talk to them + * Routers are banlisted only if none of our transports can talk to them * or their signed router info is completely screwy. Individual transports * manage their own unreachable lists and do not generally add to the overall - * shitlist. + * banlist. */ -public class Shitlist { +public class Banlist { private final Log _log; private final RouterContext _context; private final Map<Hash, Entry> _entries; @@ -37,11 +37,11 @@ public class Shitlist { public static class Entry { /** when it should expire, per the i2p clock */ public long expireOn; - /** why they were shitlisted */ + /** why they were banlisted */ public String cause; /** separate code so cause can contain {0} for translation */ public String causeCode; - /** what transports they were shitlisted for (String), or null for all transports */ + /** what transports they were banlisted for (String), or null for all transports */ public Set<String> transports; } @@ -49,46 +49,46 @@ public class Shitlist { * Don't make this too long as the failure may be transient * due to connection limits. */ - public final static long SHITLIST_DURATION_MS = 7*60*1000; - public final static long SHITLIST_DURATION_MAX = 30*60*1000; - public final static long SHITLIST_DURATION_PARTIAL = 10*60*1000; - public final static long SHITLIST_DURATION_FOREVER = 181l*24*60*60*1000; // will get rounded down to 180d on console - public final static long SHITLIST_CLEANER_START_DELAY = SHITLIST_DURATION_PARTIAL; + public final static long BANLIST_DURATION_MS = 7*60*1000; + public final static long BANLIST_DURATION_MAX = 30*60*1000; + public final static long BANLIST_DURATION_PARTIAL = 10*60*1000; + public final static long BANLIST_DURATION_FOREVER = 181l*24*60*60*1000; // will get rounded down to 180d on console + public final static long BANLIST_CLEANER_START_DELAY = BANLIST_DURATION_PARTIAL; - public Shitlist(RouterContext context) { + public Banlist(RouterContext context) { _context = context; - _log = context.logManager().getLog(Shitlist.class); + _log = context.logManager().getLog(Banlist.class); _entries = new ConcurrentHashMap(16); _context.jobQueue().addJob(new Cleanup(_context)); } private class Cleanup extends JobImpl { - private List<Hash> _toUnshitlist; + private List<Hash> _toUnbanlist; public Cleanup(RouterContext ctx) { super(ctx); - _toUnshitlist = new ArrayList(4); - getTiming().setStartAfter(ctx.clock().now() + SHITLIST_CLEANER_START_DELAY); + _toUnbanlist = new ArrayList(4); + getTiming().setStartAfter(ctx.clock().now() + BANLIST_CLEANER_START_DELAY); } public String getName() { return "Expire banned peers"; } public void runJob() { - _toUnshitlist.clear(); + _toUnbanlist.clear(); long now = getContext().clock().now(); try { for (Iterator iter = _entries.entrySet().iterator(); iter.hasNext(); ) { Map.Entry<Hash, Entry> e = (Map.Entry) iter.next(); if (e.getValue().expireOn <= now) { iter.remove(); - _toUnshitlist.add(e.getKey()); + _toUnbanlist.add(e.getKey()); } } } catch (IllegalStateException ise) {} // next time... - for (Hash peer : _toUnshitlist) { + for (Hash peer : _toUnbanlist) { PeerProfile prof = _context.profileOrganizer().getProfile(peer); if (prof != null) - prof.unshitlist(); - _context.messageHistory().unshitlist(peer); + prof.unbanlist(); + _context.messageHistory().unbanlist(peer); if (_log.shouldLog(Log.INFO)) - _log.info("Unshitlisting router (expired) " + peer.toBase64()); + _log.info("Unbanlisting router (expired) " + peer.toBase64()); } requeue(30*1000); @@ -100,69 +100,69 @@ public class Shitlist { } /** - * For ShitlistRenderer in router console. + * For BanlistRenderer in router console. * Note - may contain expired entries. */ public Map<Hash, Entry> getEntries() { return Collections.unmodifiableMap(_entries); } - public boolean shitlistRouter(Hash peer) { - return shitlistRouter(peer, null); + public boolean banlistRouter(Hash peer) { + return banlistRouter(peer, null); } - public boolean shitlistRouter(Hash peer, String reason) { return shitlistRouter(peer, reason, null); } + public boolean banlistRouter(Hash peer, String reason) { return banlistRouter(peer, reason, null); } /** ick have to put the reasonCode in the front to avoid ambiguity */ - public boolean shitlistRouter(String reasonCode, Hash peer, String reason) { - return shitlistRouter(peer, reason, reasonCode, null, false); + public boolean banlistRouter(String reasonCode, Hash peer, String reason) { + return banlistRouter(peer, reason, reasonCode, null, false); } - public boolean shitlistRouter(Hash peer, String reason, String transport) { - return shitlistRouter(peer, reason, transport, false); + public boolean banlistRouter(Hash peer, String reason, String transport) { + return banlistRouter(peer, reason, transport, false); } - public boolean shitlistRouterForever(Hash peer, String reason) { - return shitlistRouter(peer, reason, null, true); + public boolean banlistRouterForever(Hash peer, String reason) { + return banlistRouter(peer, reason, null, true); } - public boolean shitlistRouterForever(Hash peer, String reason, String reasonCode) { - return shitlistRouter(peer, reason, reasonCode, null, true); + public boolean banlistRouterForever(Hash peer, String reason, String reasonCode) { + return banlistRouter(peer, reason, reasonCode, null, true); } - public boolean shitlistRouter(Hash peer, String reason, String transport, boolean forever) { - return shitlistRouter(peer, reason, null, transport, forever); + public boolean banlistRouter(Hash peer, String reason, String transport, boolean forever) { + return banlistRouter(peer, reason, null, transport, forever); } - private boolean shitlistRouter(Hash peer, String reason, String reasonCode, String transport, boolean forever) { + private boolean banlistRouter(Hash peer, String reason, String reasonCode, String transport, boolean forever) { if (peer == null) { - _log.error("wtf, why did we try to shitlist null?", new Exception("shitfaced")); + _log.error("wtf, why did we try to banlist null?", new Exception("banfaced")); return false; } if (_context.routerHash().equals(peer)) { - _log.error("wtf, why did we try to shitlist ourselves?", new Exception("shitfaced")); + _log.error("wtf, why did we try to banlist ourselves?", new Exception("banfaced")); return false; } boolean wasAlready = false; if (_log.shouldLog(Log.INFO)) - _log.info("Shitlisting router " + peer.toBase64() + - ((transport != null) ? " on transport " + transport : ""), new Exception("Shitlist cause: " + reason)); + _log.info("Banlisting router " + peer.toBase64() + + ((transport != null) ? " on transport " + transport : ""), new Exception("Banlist cause: " + reason)); Entry e = new Entry(); if (forever) { - e.expireOn = _context.clock().now() + SHITLIST_DURATION_FOREVER; + e.expireOn = _context.clock().now() + BANLIST_DURATION_FOREVER; } else if (transport != null) { - e.expireOn = _context.clock().now() + SHITLIST_DURATION_PARTIAL; + e.expireOn = _context.clock().now() + BANLIST_DURATION_PARTIAL; } else { - long period = SHITLIST_DURATION_MS + _context.random().nextLong(SHITLIST_DURATION_MS / 4); + long period = BANLIST_DURATION_MS + _context.random().nextLong(BANLIST_DURATION_MS / 4); PeerProfile prof = _context.profileOrganizer().getProfile(peer); if (prof != null) { - period = SHITLIST_DURATION_MS << prof.incrementShitlists(); + period = BANLIST_DURATION_MS << prof.incrementBanlists(); period += _context.random().nextLong(period); } - if (period > SHITLIST_DURATION_MAX) - period = SHITLIST_DURATION_MAX; + if (period > BANLIST_DURATION_MAX) + period = BANLIST_DURATION_MAX; e.expireOn = _context.clock().now() + period; } e.cause = reason; @@ -202,28 +202,28 @@ public class Shitlist { //_context.tunnelManager().peerFailed(peer); //_context.messageRegistry().peerFailed(peer); if (!wasAlready) - _context.messageHistory().shitlist(peer, reason); + _context.messageHistory().banlist(peer, reason); return wasAlready; } - public void unshitlistRouter(Hash peer) { - unshitlistRouter(peer, true); + public void unbanlistRouter(Hash peer) { + unbanlistRouter(peer, true); } - private void unshitlistRouter(Hash peer, boolean realUnshitlist) { unshitlistRouter(peer, realUnshitlist, null); } + private void unbanlistRouter(Hash peer, boolean realUnbanlist) { unbanlistRouter(peer, realUnbanlist, null); } - public void unshitlistRouter(Hash peer, String transport) { unshitlistRouter(peer, true, transport); } + public void unbanlistRouter(Hash peer, String transport) { unbanlistRouter(peer, true, transport); } - private void unshitlistRouter(Hash peer, boolean realUnshitlist, String transport) { + private void unbanlistRouter(Hash peer, boolean realUnbanlist, String transport) { if (peer == null) return; if (_log.shouldLog(Log.DEBUG)) - _log.debug("Calling unshitlistRouter " + peer.toBase64() + _log.debug("Calling unbanlistRouter " + peer.toBase64() + (transport != null ? "/" + transport : "")); boolean fully = false; Entry e = _entries.remove(peer); if ( (e == null) || (e.transports == null) || (transport == null) || (e.transports.size() <= 1) ) { - // fully unshitlisted + // fully unbanlisted fully = true; } else { e.transports.remove(transport); @@ -234,30 +234,30 @@ public class Shitlist { } if (fully) { - if (realUnshitlist) { + if (realUnbanlist) { PeerProfile prof = _context.profileOrganizer().getProfile(peer); if (prof != null) - prof.unshitlist(); + prof.unbanlist(); } - _context.messageHistory().unshitlist(peer); + _context.messageHistory().unbanlist(peer); if (_log.shouldLog(Log.INFO) && e != null) - _log.info("Unshitlisting router " + peer.toBase64() + _log.info("Unbanlisting router " + peer.toBase64() + (transport != null ? "/" + transport : "")); } } - public boolean isShitlisted(Hash peer) { return isShitlisted(peer, null); } + public boolean isBanlisted(Hash peer) { return isBanlisted(peer, null); } - public boolean isShitlisted(Hash peer, String transport) { + public boolean isBanlisted(Hash peer, String transport) { boolean rv = false; - boolean unshitlist = false; + boolean unbanlist = false; Entry entry = _entries.get(peer); if (entry == null) { rv = false; } else if (entry.expireOn <= _context.clock().now()) { _entries.remove(peer); - unshitlist = true; + unbanlist = true; rv = false; } else if (entry.transports == null) { rv = true; @@ -265,21 +265,21 @@ public class Shitlist { rv = entry.transports.contains(transport); } - if (unshitlist) { + if (unbanlist) { PeerProfile prof = _context.profileOrganizer().getProfile(peer); if (prof != null) - prof.unshitlist(); - _context.messageHistory().unshitlist(peer); + prof.unbanlist(); + _context.messageHistory().unbanlist(peer); if (_log.shouldLog(Log.INFO)) - _log.info("Unshitlisting router (expired) " + peer.toBase64()); + _log.info("Unbanlisting router (expired) " + peer.toBase64()); } return rv; } - public boolean isShitlistedForever(Hash peer) { + public boolean isBanlistedForever(Hash peer) { Entry entry = _entries.get(peer); - return entry != null && entry.expireOn > _context.clock().now() + SHITLIST_DURATION_MAX; + return entry != null && entry.expireOn > _context.clock().now() + BANLIST_DURATION_MAX; } /** @deprecated moved to router console */ diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java index 52cbad199943fd00ebc8aaad0a7489829d51b6e9..5f8112cc072c02f3092dd5c3b1af9621db67a550 100644 --- a/router/java/src/net/i2p/router/Blocklist.java +++ b/router/java/src/net/i2p/router/Blocklist.java @@ -35,18 +35,18 @@ import net.i2p.util.Log; import net.i2p.util.Translate; /** - * Manage blocking by IP address, in a manner similar to the Shitlist, + * Manage blocking by IP address, in a manner similar to the Banlist, * which blocks by router hash. * * We also try to keep the two lists in sync: if a router at a given IP is - * blocked, we will also shitlist it "forever" (until the next reboot). + * blocked, we will also banlist it "forever" (until the next reboot). * - * While the reverse case (blocking the IP of a router shitlisted forever) + * While the reverse case (blocking the IP of a router banlisted forever) * is not automatic, the transports will call add() below to block the IP, * which allows the transports to terminate an inbound connection before * the router ident handshake. * - * And the on-disk blocklist can also contain router hashes to be shitlisted. + * And the on-disk blocklist can also contain router hashes to be banlisted. * * So, this class maintains three separate lists: *<pre> @@ -58,9 +58,9 @@ import net.i2p.util.Translate; * Read in the IP blocklist from a file, store it in-memory as efficiently * as we can, and perform tests against it as requested. * - * When queried for a peer that is blocklisted but isn't shitlisted, - * shitlist it forever, then go back to the file to get the original - * entry so we can add the reason to the shitlist text. + * When queried for a peer that is blocklisted but isn't banlisted, + * banlist it forever, then go back to the file to get the original + * entry so we can add the reason to the banlist text. * */ public class Blocklist { @@ -128,7 +128,7 @@ public class Blocklist { reason = _x("Banned by router hash: {0}"); else reason = _x("Banned by router hash"); - _context.shitlist().shitlistRouterForever(peer, reason, comment); + _context.banlist().banlistRouterForever(peer, reason, comment); } _peerBlocklist = null; @@ -280,7 +280,7 @@ public class Blocklist { } } - private Entry parse(String buf, boolean bitch) { + private Entry parse(String buf, boolean shouldLog) { byte[] ip1; byte[] ip2; int start1 = 0; @@ -365,15 +365,15 @@ public class Blocklist { ip2 = ip1; } } catch (UnknownHostException uhe) { - if (bitch && _log.shouldLog(Log.ERROR)) + if (shouldLog && _log.shouldLog(Log.ERROR)) _log.error("Format error in the blocklist file: " + buf); return null; } catch (NumberFormatException nfe) { - if (bitch && _log.shouldLog(Log.ERROR)) + if (shouldLog && _log.shouldLog(Log.ERROR)) _log.error("Format error in the blocklist file: " + buf); return null; } catch (IndexOutOfBoundsException ioobe) { - if (bitch && _log.shouldLog(Log.ERROR)) + if (shouldLog && _log.shouldLog(Log.ERROR)) _log.error("Format error in the blocklist file: " + buf); return null; } @@ -487,16 +487,16 @@ public class Blocklist { /** * Does the peer's IP address appear in the blocklist? - * If so, and it isn't shitlisted, shitlist it forever... + * If so, and it isn't banlisted, banlist it forever... */ public boolean isBlocklisted(Hash peer) { List<byte[]> ips = getAddresses(peer); for (Iterator<byte[]> iter = ips.iterator(); iter.hasNext(); ) { byte ip[] = iter.next(); if (isBlocklisted(ip)) { - if (! _context.shitlist().isShitlisted(peer)) + if (! _context.banlist().isBanlisted(peer)) // nice knowing you... - shitlist(peer, ip); + banlist(peer, ip); return true; } } @@ -504,7 +504,7 @@ public class Blocklist { } /** - * calling this externally won't shitlist the peer, this is just an IP check + * calling this externally won't banlist the peer, this is just an IP check */ public boolean isBlocklisted(String ip) { byte[] pib = Addresses.getIP(ip); @@ -513,7 +513,7 @@ public class Blocklist { } /** - * calling this externally won't shitlist the peer, this is just an IP check + * calling this externally won't banlist the peer, this is just an IP check */ public boolean isBlocklisted(byte ip[]) { if (ip.length != 4) @@ -648,10 +648,10 @@ public class Blocklist { * actual line in the blocklist file, this could take a while. * */ - private void shitlist(Hash peer, byte[] ip) { + private void banlist(Hash peer, byte[] ip) { // Temporary reason, until the job finishes String reason = _x("IP banned by blocklist.txt entry {0}"); - _context.shitlist().shitlistRouterForever(peer, reason, Addresses.toString(ip)); + _context.banlist().banlistRouterForever(peer, reason, Addresses.toString(ip)); if (! _context.getBooleanPropertyDefaultTrue(PROP_BLOCKLIST_DETAIL)) return; boolean shouldRunJob; @@ -663,23 +663,23 @@ public class Blocklist { if (!shouldRunJob) return; // get the IPs now because it won't be in the netdb by the time the job runs - Job job = new ShitlistJob(peer, getAddresses(peer)); + Job job = new BanlistJob(peer, getAddresses(peer)); if (number > 0) job.getTiming().setStartAfter(_context.clock().now() + (30*1000l * number)); _context.jobQueue().addJob(job); } - private class ShitlistJob extends JobImpl { + private class BanlistJob extends JobImpl { private final Hash _peer; private final List<byte[]> _ips; - public ShitlistJob (Hash p, List<byte[]> ips) { + public BanlistJob (Hash p, List<byte[]> ips) { super(_context); _peer = p; _ips = ips; } public String getName() { return "Ban Peer by IP"; } public void runJob() { - shitlistForever(_peer, _ips); + banlistForever(_peer, _ips); synchronized (_inProcess) { _inProcess.remove(_peer); } @@ -687,7 +687,7 @@ public class Blocklist { } /** - * Look up the original record so we can record the reason in the shitlist. + * Look up the original record so we can record the reason in the banlist. * That's the only reason to do this. * Only synchronize to cut down on the I/O load. * Additional jobs can wait. @@ -695,7 +695,7 @@ public class Blocklist { * So we also stagger these jobs. * */ - private synchronized void shitlistForever(Hash peer, List<byte[]> ips) { + private synchronized void banlistForever(Hash peer, List<byte[]> ips) { String file = _context.getProperty(PROP_BLOCKLIST_FILE, BLOCKLIST_FILE_DEFAULT); File BLFile = new File(file); if (!BLFile.isAbsolute()) @@ -732,8 +732,8 @@ public class Blocklist { //} //reason = reason + " banned by " + BLOCKLIST_FILE_DEFAULT + " entry \"" + buf + "\""; if (_log.shouldLog(Log.WARN)) - _log.warn("Shitlisting " + peer + " " + reason); - _context.shitlist().shitlistRouterForever(peer, reason, buf.toString()); + _log.warn("Banlisting " + peer + " " + reason); + _context.banlist().banlistRouterForever(peer, reason, buf.toString()); return; } } @@ -744,7 +744,7 @@ public class Blocklist { if (in != null) try { in.close(); } catch (IOException ioe) {} } } - // We already shitlisted in shitlist(peer), that's good enough + // We already banlisted in banlist(peer), that's good enough } private static final int MAX_DISPLAY = 1000; diff --git a/router/java/src/net/i2p/router/ClientTunnelSettings.java b/router/java/src/net/i2p/router/ClientTunnelSettings.java index efed48a9d71152102afd338c682991238e84684d..13a0b888064d04a7f13d17b957e945dacdc4f63c 100644 --- a/router/java/src/net/i2p/router/ClientTunnelSettings.java +++ b/router/java/src/net/i2p/router/ClientTunnelSettings.java @@ -16,8 +16,8 @@ import java.util.Properties; * */ public class ClientTunnelSettings { - private TunnelPoolSettings _inboundSettings; - private TunnelPoolSettings _outboundSettings; + private final TunnelPoolSettings _inboundSettings; + private final TunnelPoolSettings _outboundSettings; public ClientTunnelSettings() { _inboundSettings = new TunnelPoolSettings(false, true); @@ -25,16 +25,16 @@ public class ClientTunnelSettings { } public TunnelPoolSettings getInboundSettings() { return _inboundSettings; } - public void setInboundSettings(TunnelPoolSettings settings) { _inboundSettings = settings; } + //public void setInboundSettings(TunnelPoolSettings settings) { _inboundSettings = settings; } public TunnelPoolSettings getOutboundSettings() { return _outboundSettings; } - public void setOutboundSettings(TunnelPoolSettings settings) { _outboundSettings = settings; } + //public void setOutboundSettings(TunnelPoolSettings settings) { _outboundSettings = settings; } public void readFromProperties(Properties props) { _inboundSettings.readFromProperties("inbound.", props); _outboundSettings.readFromProperties("outbound.", props); } - public void writeToProperties(Properties props) { + private void writeToProperties(Properties props) { if (props == null) return; _inboundSettings.writeToProperties("inbound.", props); _outboundSettings.writeToProperties("outbound.", props); diff --git a/router/java/src/net/i2p/router/CommSystemFacade.java b/router/java/src/net/i2p/router/CommSystemFacade.java index 9bc1ae535676072fbd91af37d3d66f87ee4e58c5..82e73c2e10db07d32b66a3db7b55c88efa5ee96c 100644 --- a/router/java/src/net/i2p/router/CommSystemFacade.java +++ b/router/java/src/net/i2p/router/CommSystemFacade.java @@ -81,6 +81,7 @@ public abstract class CommSystemFacade implements Service { * Tell other transports our address changed */ public void notifyReplaceAddress(RouterAddress UDPAddr) {} + /** * These must be increasing in "badness" (see TransportManager.java), * but UNKNOWN must be last. @@ -99,14 +100,19 @@ public abstract class CommSystemFacade implements Service { * cannot receive unsolicited connections */ public static final short STATUS_REJECT_UNSOLICITED = 2; + /** + * We have no network interface at all + * @since 0.9.4 + */ + public static final short STATUS_DISCONNECTED = 3; /** * Our detection system is broken (SSU bind port failed) */ - public static final short STATUS_HOSED = 3; + public static final short STATUS_HOSED = 4; /** * Our reachability is unknown */ - public static final short STATUS_UNKNOWN = 4; + public static final short STATUS_UNKNOWN = 5; } diff --git a/router/java/src/net/i2p/router/KeyManager.java b/router/java/src/net/i2p/router/KeyManager.java index 0e0b4e5d6faee67e8866690d33da1dc140be538c..a0eddf9d31a9964e44e9b6be520fb0abb1daa409 100644 --- a/router/java/src/net/i2p/router/KeyManager.java +++ b/router/java/src/net/i2p/router/KeyManager.java @@ -8,10 +8,14 @@ package net.i2p.router; * */ +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -42,7 +46,6 @@ public class KeyManager { private SigningPrivateKey _signingPrivateKey; private SigningPublicKey _signingPublicKey; private final Map<Hash, LeaseSetKeys> _leaseSetKeys; // Destination --> LeaseSetKeys - private final SynchronizeKeysJob _synchronizeJob; public final static String PROP_KEYDIR = "router.keyBackupDir"; public final static String DEFAULT_KEYDIR = "keyBackup"; @@ -50,49 +53,38 @@ public class KeyManager { private final static String KEYFILE_PUBLIC_ENC = "publicEncryption.key"; private final static String KEYFILE_PRIVATE_SIGNING = "privateSigning.key"; private final static String KEYFILE_PUBLIC_SIGNING = "publicSigning.key"; - // Doesn't seem like we need to periodically back up, - // since we don't store leaseSet keys, - // but for now just make it a long time. - private final static long DELAY = 7*24*60*60*1000; public KeyManager(RouterContext context) { _context = context; _log = _context.logManager().getLog(KeyManager.class); - _synchronizeJob = new SynchronizeKeysJob(); _leaseSetKeys = new ConcurrentHashMap(); } public void startup() { - queueWrite(); + // run inline so keys are loaded immediately + (new SynchronizeKeysJob()).runJob(); } - /** Configure the router's private key */ - public void setPrivateKey(PrivateKey key) { - _privateKey = key; - if (key != null) - queueWrite(); + /** + * Configure the router's keys. + * @since 0.9.4 replace individual setters + */ + public void setKeys(PublicKey key1, PrivateKey key2, SigningPublicKey key3, SigningPrivateKey key4) { + synchronized(this) { + _publicKey = key1; + _privateKey = key2; + _signingPublicKey = key3; + _signingPrivateKey = key4; + } + queueWrite(); } + public PrivateKey getPrivateKey() { return _privateKey; } - /** Configure the router's public key */ - public void setPublicKey(PublicKey key) { - _publicKey = key; - if (key != null) - queueWrite(); - } + public PublicKey getPublicKey() { return _publicKey; } - /** Configure the router's signing private key */ - public void setSigningPrivateKey(SigningPrivateKey key) { - _signingPrivateKey = key; - if (key != null) - queueWrite(); - } + public SigningPrivateKey getSigningPrivateKey() { return _signingPrivateKey; } - /** Configure the router's signing public key */ - public void setSigningPublicKey(SigningPublicKey key) { - _signingPublicKey = key; - if (key != null) - queueWrite(); - } + public SigningPublicKey getSigningPublicKey() { return _signingPublicKey; } public void registerKeys(Destination dest, SigningPrivateKey leaseRevocationPrivateKey, PrivateKey endpointDecryptionKey) { @@ -102,15 +94,10 @@ public class KeyManager { } /** - * Wait one second, as this will get called 4 times in quick succession - * There is still a race here though, if a key is set while the sync job is running + * Read/Write the router keys from/to disk */ private void queueWrite() { - Clock cl = _context.clock(); - JobQueue q = _context.jobQueue(); - if ( (cl == null) || (q == null) ) return; - _synchronizeJob.getTiming().setStartAfter(cl.now() + 1000); - q.addJob(_synchronizeJob); + _context.jobQueue().addJob(new SynchronizeKeysJob()); } public LeaseSetKeys unregisterKeys(Destination dest) { @@ -122,27 +109,36 @@ public class KeyManager { public LeaseSetKeys getKeys(Destination dest) { return getKeys(dest.calculateHash()); } + public LeaseSetKeys getKeys(Hash dest) { return _leaseSetKeys.get(dest); } + /** + * Read/Write the 4 files in keyBackup/ + * As of 0.9.4 this is run on-demand only, there's no need to + * periodically sync. + * Actually, there's little need for this at all. + * If router.keys is corrupt, we should just make a new router identity, + * there's no real reason to try so hard to recover our old keys. + */ private class SynchronizeKeysJob extends JobImpl { public SynchronizeKeysJob() { super(KeyManager.this._context); } + public void runJob() { String keyDir = getContext().getProperty(PROP_KEYDIR, DEFAULT_KEYDIR); File dir = new SecureDirectory(getContext().getRouterDir(), keyDir); if (!dir.exists()) dir.mkdirs(); if (dir.exists() && dir.isDirectory() && dir.canRead() && dir.canWrite()) { - syncKeys(dir); + synchronized(KeyManager.this) { + syncKeys(dir); + } } else { _log.log(Log.CRIT, "Unable to synchronize keys in " + keyDir + " - permissions problem?"); } - - getTiming().setStartAfter(KeyManager.this._context.clock().now()+DELAY); - KeyManager.this._context.jobQueue().addJob(this); } private void syncKeys(File keyDir) { @@ -152,7 +148,7 @@ public class KeyManager { syncVerificationKey(keyDir); } - private synchronized void syncPrivateKey(File keyDir) { + private void syncPrivateKey(File keyDir) { DataStructure ds; File keyFile = new File(keyDir, KEYFILE_PRIVATE_ENC); boolean exists = (_privateKey != null); @@ -165,7 +161,7 @@ public class KeyManager { _privateKey = (PrivateKey) readin; } - private synchronized void syncPublicKey(File keyDir) { + private void syncPublicKey(File keyDir) { DataStructure ds; File keyFile = new File(keyDir, KEYFILE_PUBLIC_ENC); boolean exists = (_publicKey != null); @@ -178,7 +174,7 @@ public class KeyManager { _publicKey = (PublicKey) readin; } - private synchronized void syncSigningKey(File keyDir) { + private void syncSigningKey(File keyDir) { DataStructure ds; File keyFile = new File(keyDir, KEYFILE_PRIVATE_SIGNING); boolean exists = (_signingPrivateKey != null); @@ -191,7 +187,7 @@ public class KeyManager { _signingPrivateKey = (SigningPrivateKey) readin; } - private synchronized void syncVerificationKey(File keyDir) { + private void syncVerificationKey(File keyDir) { DataStructure ds; File keyFile = new File(keyDir, KEYFILE_PUBLIC_SIGNING); boolean exists = (_signingPublicKey != null); @@ -205,16 +201,16 @@ public class KeyManager { } private DataStructure syncKey(File keyFile, DataStructure structure, boolean exists) { - FileOutputStream out = null; - FileInputStream in = null; + OutputStream out = null; + InputStream in = null; try { if (exists) { - out = new SecureFileOutputStream(keyFile); + out = new BufferedOutputStream(new SecureFileOutputStream(keyFile)); structure.writeBytes(out); return structure; } else { if (keyFile.exists()) { - in = new FileInputStream(keyFile); + in = new BufferedInputStream(new FileInputStream(keyFile)); structure.readBytes(in); return structure; } else { diff --git a/router/java/src/net/i2p/router/MessageHistory.java b/router/java/src/net/i2p/router/MessageHistory.java index 5563eec2151f9af6b5e75438e81edc8b12d7768b..2ded9f03b895aabc993fe2d2a84935f24bc27ddc 100644 --- a/router/java/src/net/i2p/router/MessageHistory.java +++ b/router/java/src/net/i2p/router/MessageHistory.java @@ -391,21 +391,21 @@ public class MessageHistory { } /** - * We shitlisted the peer + * We banlisted the peer */ - public void shitlist(Hash peer, String reason) { + public void banlist(Hash peer, String reason) { if (!_doLog) return; if (peer == null) return; - addEntry("Shitlist " + peer.toBase64() + ": " + reason); + addEntry("Banlist " + peer.toBase64() + ": " + reason); } /** - * We unshitlisted the peer + * We unbanlisted the peer */ - public void unshitlist(Hash peer) { + public void unbanlist(Hash peer) { if (!_doLog) return; if (peer == null) return; - addEntry("Unshitlist " + peer.toBase64()); + addEntry("Unbanlist " + peer.toBase64()); } /** diff --git a/router/java/src/net/i2p/router/OutNetMessage.java b/router/java/src/net/i2p/router/OutNetMessage.java index 9016d88dfc8eac2ad4f7ecfb24960d893110e25e..60a47243e6e0606455fca4c1f536995d58c5f5e5 100644 --- a/router/java/src/net/i2p/router/OutNetMessage.java +++ b/router/java/src/net/i2p/router/OutNetMessage.java @@ -66,8 +66,9 @@ public class OutNetMessage implements CDPQEntry { public static final int PRIORITY_HIGHEST = 1000; public static final int PRIORITY_MY_BUILD_REQUEST = 500; public static final int PRIORITY_MY_NETDB_LOOKUP = 500; - public static final int PRIORITY_MY_NETDB_STORE = 400; - public static final int PRIORITY_MY_DATA = 400; + public static final int PRIORITY_MY_NETDB_STORE = 460; + /** may be adjusted +/- 25 for outbound traffic */ + public static final int PRIORITY_MY_DATA = 425; public static final int PRIORITY_MY_NETDB_STORE_LOW = 300; public static final int PRIORITY_HIS_BUILD_REQUEST = 300; public static final int PRIORITY_BUILD_REPLY = 300; @@ -308,6 +309,18 @@ public class OutNetMessage implements CDPQEntry { * @since 0.9.3 */ public void drop() { + // This is essentially what TransportImpl.afterSend(this, false) does + // but we don't have a ref to the Transport. + // No requeue with other transport allowed. + if (_onFailedSend != null) + _context.jobQueue().addJob(_onFailedSend); + if (_onFailedReply != null) + _context.jobQueue().addJob(_onFailedReply); + if (_replySelector != null) + _context.messageRegistry().unregisterPending(this); + discardData(); + // we want this stat to reflect the lag + _context.statManager().addRateData("transport.sendProcessingTime", _context.clock().now() - _enqueueTime); } /** @@ -333,11 +346,11 @@ public class OutNetMessage implements CDPQEntry { public void discardData() { if ( (_message != null) && (_messageSize <= 0) ) _messageSize = _message.getMessageSize(); - if (_log.shouldLog(Log.DEBUG)) { - long timeToDiscard = _context.clock().now() - _created; - _log.debug("Discard " + _messageSize + "byte " + getMessageType() + " message after " - + timeToDiscard); - } + //if (_log.shouldLog(Log.DEBUG)) { + // long timeToDiscard = _context.clock().now() - _created; + // _log.debug("Discard " + _messageSize + "byte " + getMessageType() + " message after " + // + timeToDiscard); + //} _message = null; //_context.statManager().addRateData("outNetMessage.timeToDiscard", timeToDiscard, timeToDiscard); //_context.messageStateMonitor().outboundMessageDiscarded(); diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 8b2a414f1d654f624dae838912968c5f7868da4a..725ca2779b9b8223291c3f90743141631137458b 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -619,6 +619,8 @@ public class Router implements RouterClock.ClockShiftListener { case CommSystemFacade.STATUS_REJECT_UNSOLICITED: ri.addCapability(CAPABILITY_UNREACHABLE); break; + case CommSystemFacade.STATUS_DISCONNECTED: + case CommSystemFacade.STATUS_HOSED: case CommSystemFacade.STATUS_UNKNOWN: // no explicit capability break; diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index d22b69dab8845fa063393b87144b449eda592595..990f087da2e933559b7321fdfdf6ef095b613980 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -18,6 +18,7 @@ import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.peermanager.PeerManagerFacadeImpl; import net.i2p.router.peermanager.ProfileManagerImpl; import net.i2p.router.peermanager.ProfileOrganizer; +import net.i2p.router.startup.RouterAppManager; import net.i2p.router.transport.CommSystemFacadeImpl; import net.i2p.router.transport.FIFOBandwidthLimiter; import net.i2p.router.transport.OutboundMessageRegistry; @@ -54,20 +55,28 @@ public class RouterContext extends I2PAppContext { private TunnelManagerFacade _tunnelManager; private TunnelDispatcher _tunnelDispatcher; private StatisticsManager _statPublisher; - private Shitlist _shitlist; + private Banlist _banlist; private Blocklist _blocklist; private MessageValidator _messageValidator; private UpdateManager _updateManager; //private MessageStateMonitor _messageStateMonitor; private RouterThrottle _throttle; + private RouterAppManager _appManager; private final Set<Runnable> _finalShutdownTasks; // split up big lock on this to avoid deadlocks + private volatile boolean _initialized; private final Object _lock1 = new Object(), _lock2 = new Object(), _lock3 = new Object(); private static final List<RouterContext> _contexts = new CopyOnWriteArrayList(); + /** + * Caller MUST call initAll() after instantiation. + */ public RouterContext(Router router) { this(router, null); } + /** + * Caller MUST call initAll() after instantiation. + */ public RouterContext(Router router, Properties envProps) { super(filterProps(envProps)); _router = router; @@ -143,7 +152,9 @@ public class RouterContext extends I2PAppContext { } - public void initAll() { + public synchronized void initAll() { + if (_initialized) + throw new IllegalStateException(); if (getBooleanProperty("i2p.dummyClientFacade")) System.err.println("i2p.dummyClientFacade currently unsupported"); _clientManagerFacade = new ClientManagerFacadeImpl(this); @@ -179,11 +190,13 @@ public class RouterContext extends I2PAppContext { _tunnelManager = new DummyTunnelManagerFacade(); _tunnelDispatcher = new TunnelDispatcher(this); _statPublisher = new StatisticsManager(this); - _shitlist = new Shitlist(this); + _banlist = new Banlist(this); _blocklist = new Blocklist(this); _messageValidator = new MessageValidator(this); _throttle = new RouterThrottleImpl(this); //_throttle = new RouterDoSThrottle(this); + _appManager = new RouterAppManager(this); + _initialized = true; } /** @@ -332,7 +345,7 @@ public class RouterContext extends I2PAppContext { /** * who does this peer hate? */ - public Shitlist shitlist() { return _shitlist; } + public Banlist banlist() { return _banlist; } public Blocklist blocklist() { return _blocklist; } /** * The router keeps track of messages it receives to prevent duplicates, as @@ -366,7 +379,7 @@ public class RouterContext extends I2PAppContext { buf.append(_bandwidthLimiter).append('\n'); buf.append(_tunnelManager).append('\n'); buf.append(_statPublisher).append('\n'); - buf.append(_shitlist).append('\n'); + buf.append(_banlist).append('\n'); buf.append(_messageValidator).append('\n'); return buf.toString(); } @@ -554,4 +567,13 @@ public class RouterContext extends I2PAppContext { _updateManager = null; } } + + /** + * The RouterAppManager. + * @return the manager + * @since 0.9.4 + */ + public RouterAppManager clientAppManager() { + return _appManager; + } } diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java index bbd0e456525016350f9b990c7da018898b2d14d0..54ef7a9f1ddb73ad29652f569c815851e9fc9531 100644 --- a/router/java/src/net/i2p/router/RouterThrottleImpl.java +++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java @@ -133,26 +133,24 @@ class RouterThrottleImpl implements RouterThrottle { //Reject tunnels if the time to process messages and send them is too large. Too much time implies congestion. if(r != null) { - double totalSendProcessingTimeEvents = r.getCurrentEventCount() + r.getLastEventCount(); + long current = r.getCurrentEventCount(); + long last = r.getLastEventCount(); + long total = current + last; double avgSendProcessingTime = 0; double currentSendProcessingTime = 0; double lastSendProcessingTime = 0; //Calculate times - if(r.getCurrentEventCount() > 0) { - currentSendProcessingTime = r.getCurrentTotalValue()/r.getCurrentEventCount(); - } - if(r.getLastEventCount() > 0) { - lastSendProcessingTime = r.getLastTotalValue()/r.getLastEventCount(); - } - if(totalSendProcessingTimeEvents > 0) { - avgSendProcessingTime = (r.getCurrentTotalValue() + r.getLastTotalValue())/totalSendProcessingTimeEvents; - } - else { + if(total > 0) { + if(current > 0) + currentSendProcessingTime = r.getCurrentTotalValue() / current; + if(last > 0) + lastSendProcessingTime = r.getLastTotalValue() / last; + avgSendProcessingTime = (r.getCurrentTotalValue() + r.getLastTotalValue()) / total; + } else { avgSendProcessingTime = r.getAverageValue(); - if(_log.shouldLog(Log.WARN)) { - _log.warn("No events occurred. Using 1 minute average to look at message delay."); - } + //if(_log.shouldLog(Log.WARN)) + // _log.warn("No events occurred. Using 1 minute average to look at message delay."); } int maxProcessingTime = _context.getProperty(PROP_MAX_PROCESSINGTIME, DEFAULT_MAX_PROCESSINGTIME); @@ -162,8 +160,12 @@ class RouterThrottleImpl implements RouterThrottle { || currentSendProcessingTime > maxProcessingTime || lastSendProcessingTime > maxProcessingTime)) { if(_log.shouldLog(Log.WARN)) { - _log.warn("Refusing tunnel request due to sendProcessingTime of " + avgSendProcessingTime - + " ms over the last two minutes, which is too much."); + _log.warn("Refusing tunnel request due to sendProcessingTime " + + ((int)currentSendProcessingTime) + " / " + + ((int)lastSendProcessingTime) + " / " + + ((int)avgSendProcessingTime) + " / " + + maxProcessingTime + + " current/last/avg/max ms"); } setTunnelStatus(_x("Rejecting tunnels: High message delay")); return TunnelHistory.TUNNEL_REJECT_BANDWIDTH; diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ea17ad55f3270be34b24fd56bd0b1495da601896..f6e6df3a5c0d10fbf1efc2f7069c342c2fe16f4e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 15; + public final static long BUILD = 4; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/StatisticsManager.java b/router/java/src/net/i2p/router/StatisticsManager.java index a70853155fcc513a665bf48d1e073cf61de0a2c7..3be2231f82e0425cd6e5fa6a04d7158735b02c35 100644 --- a/router/java/src/net/i2p/router/StatisticsManager.java +++ b/router/java/src/net/i2p/router/StatisticsManager.java @@ -31,7 +31,7 @@ public class StatisticsManager implements Service { public final static String PROP_PUBLISH_RANKINGS = "router.publishPeerRankings"; /** enhance anonymity by only including build stats one out of this many times */ - private static final int RANDOM_INCLUDE_STATS = 8; + private static final int RANDOM_INCLUDE_STATS = 12; private final DecimalFormat _fmt; private final DecimalFormat _pct; diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java index ff8597882230acbddcd400ccbe27649413cbcbce..7be825939a6622d9c3f7a1969d4298249a56900e 100644 --- a/router/java/src/net/i2p/router/TunnelPoolSettings.java +++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java @@ -27,6 +27,7 @@ public class TunnelPoolSettings { private int _IPRestriction; private final Properties _unknownOptions; private final Hash _randomKey; + private int _priority; /** prefix used to override the router's defaults for clients */ public static final String PREFIX_DEFAULT = "router.defaultPool."; @@ -44,6 +45,7 @@ public class TunnelPoolSettings { public static final String PROP_LENGTH_VARIANCE = "lengthVariance"; public static final String PROP_ALLOW_ZERO_HOP = "allowZeroHop"; public static final String PROP_IP_RESTRICTION = "IPRestriction"; + public static final String PROP_PRIORITY = "priority"; public static final int DEFAULT_QUANTITY = 2; public static final int DEFAULT_BACKUP_QUANTITY = 0; @@ -53,6 +55,8 @@ public class TunnelPoolSettings { public static final int DEFAULT_LENGTH_VARIANCE = 0; public static final boolean DEFAULT_ALLOW_ZERO_HOP = true; public static final int DEFAULT_IP_RESTRICTION = 2; // class B (/16) + private static final int MIN_PRIORITY = -25; + private static final int MAX_PRIORITY = 25; public TunnelPoolSettings(boolean isExploratory, boolean isInbound) { _isExploratory = isExploratory; @@ -160,6 +164,13 @@ public class TunnelPoolSettings { public int getIPRestriction() { int r = _IPRestriction; if (r>4) r=4; else if (r<0) r=0; return r;} public void setIPRestriction(int b) { _IPRestriction = b; } + /** + * Outbound message priority - for outbound tunnels only + * @return -25 to +25, default 0 + * @since 0.9.4 + */ + public int getPriority() { return _priority; } + public Properties getUnknownOptions() { return _unknownOptions; } public void readFromProperties(String prefix, Map<Object, Object> props) { @@ -185,6 +196,8 @@ public class TunnelPoolSettings { _destinationNickname = value; else if (name.equalsIgnoreCase(prefix + PROP_IP_RESTRICTION)) _IPRestriction = getInt(value, DEFAULT_IP_RESTRICTION); + else if ((!_isInbound) && name.equalsIgnoreCase(prefix + PROP_PRIORITY)) + _IPRestriction = Math.min(MAX_PRIORITY, Math.max(MIN_PRIORITY, getInt(value, 0))); else _unknownOptions.setProperty(name.substring((prefix != null ? prefix.length() : 0)), value); } @@ -203,6 +216,8 @@ public class TunnelPoolSettings { props.setProperty(prefix + PROP_QUANTITY, ""+_quantity); // props.setProperty(prefix + PROP_REBUILD_PERIOD, ""+_rebuildPeriod); props.setProperty(prefix + PROP_IP_RESTRICTION, ""+_IPRestriction); + if (!_isInbound) + props.setProperty(prefix + PROP_PRIORITY, Integer.toString(_priority)); for (Map.Entry e : _unknownOptions.entrySet()) { String name = (String) e.getKey(); String val = (String) e.getValue(); diff --git a/router/java/src/net/i2p/router/app/RouterApp.java b/router/java/src/net/i2p/router/app/RouterApp.java new file mode 100644 index 0000000000000000000000000000000000000000..84cf6856291a53ea41a632b857ebd9764d2201c4 --- /dev/null +++ b/router/java/src/net/i2p/router/app/RouterApp.java @@ -0,0 +1,24 @@ +package net.i2p.router.app; + +import net.i2p.app.ClientApp; + +/** + * If a class started via clients.config implements this interface, + * it will be used to manage the client, instead of starting with main() + * + * Clients implementing this interface MUST provide the following constructor: + * + * public MyClientApp(RouterContext context, ClientAppManager listener, String[] args) {...} + * + * All parameters are non-null. + * This constructor is for instantiation only. + * Do not take a long time. Do not block. Never start threads or processes in it. + * The ClientAppState of the returned object must be INITIALIZED, + * or else throw something. + * The startup() method will be called next. + * + * Never ever hold a static reference to the context or anything derived from it. + * + * @since 0.9.4 + */ +public interface RouterApp extends ClientApp {} diff --git a/router/java/src/net/i2p/router/app/package.html b/router/java/src/net/i2p/router/app/package.html new file mode 100644 index 0000000000000000000000000000000000000000..e35eea22f6db64f2eaafa8c2ac0736474994b31d --- /dev/null +++ b/router/java/src/net/i2p/router/app/package.html @@ -0,0 +1,18 @@ +<html> +<body> +<p> +Interface for classes to be started and stopped via clients.config. +Classes implementing the RouterApp interface will be controlled with +the that interface instead of being started with main(). +</p> +<p> +The benefits for clients using this interface: +<ul> +<li>Get the current context via the constructor +<li>Complete life cycle management by the router +<li>Avoid the need for static references +<li>Ability to find other clients without using static references +</ul> +</p> +</body> +</html> diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index fc046f3e6cce033b44c07b7b92ed20d87fc4998d..cfe23fa9863cb2f74b81df72314d5e0f97f1fca3 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -56,7 +56,7 @@ import net.i2p.util.SimpleTimer; * @author jrandom */ class ClientConnectionRunner { - private final Log _log; + protected final Log _log; protected final RouterContext _context; private final ClientManager _manager; /** socket for this particular peer connection */ @@ -90,6 +90,8 @@ class ClientConnectionRunner { private volatile boolean _dead; /** For outbound traffic. true if i2cp.messageReliability = "none"; @since 0.8.1 */ private boolean _dontSendMSM; + /** For inbound traffic. true if i2cp.fastReceive = "true"; @since 0.9.4 */ + private boolean _dontSendMSMOnReceive; private final AtomicInteger _messageId; // messageId counter // Was 32767 since the beginning (04-2004). @@ -113,6 +115,7 @@ class ClientConnectionRunner { _log = _context.logManager().getLog(ClientConnectionRunner.class); _manager = manager; _socket = socket; + // unused for fastReceive _messages = new ConcurrentHashMap(); _alreadyProcessed = new ArrayList(); _acceptedPending = new ConcurrentHashSet(); @@ -136,7 +139,6 @@ class ClientConnectionRunner { I2PThread t = new I2PThread(_writer); t.setName("I2CP Writer " + __id.incrementAndGet()); t.setDaemon(true); - t.setPriority(I2PThread.MAX_PRIORITY); t.start(); _out = new BufferedOutputStream(_socket.getOutputStream()); _reader.startReading(); @@ -200,15 +202,24 @@ class ClientConnectionRunner { /** already closed? */ boolean isDead() { return _dead; } - /** message body */ + /** + * Only call if _dontSendMSMOnReceive is false, otherwise will always be null + */ Payload getPayload(MessageId id) { return _messages.get(id); } + /** + * Only call if _dontSendMSMOnReceive is false + */ void setPayload(MessageId id, Payload payload) { - _messages.put(id, payload); + if (!_dontSendMSMOnReceive) + _messages.put(id, payload); } + /** + * Only call if _dontSendMSMOnReceive is false + */ void removePayload(MessageId id) { _messages.remove(id); } @@ -221,8 +232,10 @@ class ClientConnectionRunner { // We process a few options here, but most are handled by the tunnel manager. // The ones here can't be changed later. Properties opts = config.getOptions(); - if (opts != null) - _dontSendMSM = "none".equals(config.getOptions().getProperty(I2PClient.PROP_RELIABILITY, "").toLowerCase(Locale.US)); + if (opts != null) { + _dontSendMSM = "none".equals(opts.getProperty(I2PClient.PROP_RELIABILITY, "").toLowerCase(Locale.US)); + _dontSendMSMOnReceive = Boolean.parseBoolean(opts.getProperty(I2PClient.PROP_FAST_RECEIVE)); + } // per-destination session key manager to prevent rather easy correlation if (_sessionKeyManager == null) { int tags = TransientSessionKeyManager.DEFAULT_TAGS; @@ -306,7 +319,7 @@ class ClientConnectionRunner { doSend(msg); } catch (I2CPMessageException ime) { if (_log.shouldLog(Log.WARN)) - _log.warn("Error writing out the disconnect message: " + ime); + _log.warn("Error writing out the disconnect message", ime); } // give it a little time to get sent out... // even better would be to have stopRunning() flush it? @@ -378,7 +391,8 @@ class ClientConnectionRunner { doSend(status); _acceptedPending.remove(id); } catch (I2CPMessageException ime) { - _log.error("Error writing out the message status message: " + ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error writing out the message status message", ime); } } @@ -388,7 +402,7 @@ class ClientConnectionRunner { */ void receiveMessage(Destination toDest, Destination fromDest, Payload payload) { if (_dead) return; - MessageReceivedJob j = new MessageReceivedJob(_context, this, toDest, fromDest, payload); + MessageReceivedJob j = new MessageReceivedJob(_context, this, toDest, fromDest, payload, _dontSendMSMOnReceive); // This is fast and non-blocking, run in-line //_context.jobQueue().addJob(j); j.runJob(); @@ -680,7 +694,8 @@ class ClientConnectionRunner { try { doSend(msg); } catch (I2CPMessageException ime) { - _log.warn("Error updating the status for message ID " + _messageId, ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error updating the status for message ID " + _messageId, ime); } } } diff --git a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java index 6e7f4a04f0504ac7aeb4057bb050d05a3608a167..9a895af73490dbc006583fd49f01bb13e6604c07 100644 --- a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java +++ b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java @@ -36,6 +36,7 @@ import net.i2p.data.i2cp.SetDateMessage; import net.i2p.router.ClientTunnelSettings; import net.i2p.router.RouterContext; import net.i2p.util.Log; +import net.i2p.util.PasswordManager; import net.i2p.util.RandomSource; /** @@ -49,6 +50,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi private final ClientConnectionRunner _runner; private final boolean _enforceAuth; + private static final String PROP_AUTH = "i2cp.auth"; + /** * @param enforceAuth set false for in-JVM, true for socket access */ @@ -66,8 +69,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi */ public void messageReceived(I2CPMessageReader reader, I2CPMessage message) { if (_runner.isDead()) return; - if (_log.shouldLog(Log.INFO)) - _log.info("Message recieved: \n" + message); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Message received: \n" + message); switch (message.getType()) { case GetDateMessage.MESSAGE_TYPE: handleGetDate(reader, (GetDateMessage)message); @@ -169,26 +172,23 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi } // Auth, since 0.8.2 - if (_enforceAuth && _context.getBooleanProperty("i2cp.auth")) { - String configUser = _context.getProperty("i2cp.username"); - String configPW = _context.getProperty("i2cp.password"); - if (configUser != null && configPW != null) { + if (_enforceAuth && _context.getBooleanProperty(PROP_AUTH)) { Properties props = in.getOptions(); String user = props.getProperty("i2cp.username"); String pw = props.getProperty("i2cp.password"); - if (user == null || pw == null) { + if (user == null || user.length() == 0 || pw == null || pw.length() == 0) { _log.error("I2CP auth failed for client: " + props.getProperty("inbound.nickname")); _runner.disconnectClient("Authorization required to create session, specify i2cp.username and i2cp.password in session options"); return; } - if ((!user.equals(configUser)) || (!pw.equals(configPW))) { + PasswordManager mgr = new PasswordManager(_context); + if (!mgr.checkHash(PROP_AUTH, user, pw)) { _log.error("I2CP auth failed for client: " + props.getProperty("inbound.nickname") + " user: " + user); _runner.disconnectClient("Authorization failed for Create Session, user = " + user); return; } if (_log.shouldLog(Log.INFO)) _log.info("I2CP auth success for client: " + props.getProperty("inbound.nickname") + " user: " + user); - } } SessionId sessionId = new SessionId(); @@ -225,7 +225,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi MessageId id = _runner.distributeMessage(message); long timeToDistribute = _context.clock().now() - beforeDistribute; _runner.ackSendMessage(id, message.getNonce()); - _context.statManager().addRateData("client.distributeTime", timeToDistribute, timeToDistribute); + _context.statManager().addRateData("client.distributeTime", timeToDistribute); if ( (timeToDistribute > 50) && (_log.shouldLog(Log.WARN)) ) _log.warn("Took too long to distribute the message (which holds up the ack): " + timeToDistribute); } @@ -244,16 +244,18 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi msg.setSessionId(_runner.getSessionId().getSessionId()); Payload payload = _runner.getPayload(new MessageId(message.getMessageId())); if (payload == null) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Payload for message id [" + message.getMessageId() - + "] is null! Unknown message id?"); + if (_log.shouldLog(Log.WARN)) + _log.warn("Payload for message id [" + message.getMessageId() + + "] is null! Dropped or Unknown message id"); return; } msg.setPayload(payload); try { _runner.doSend(msg); } catch (I2CPMessageException ime) { - _log.error("Error delivering the payload", ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error delivering the payload", ime); + _runner.removePayload(new MessageId(message.getMessageId())); } } @@ -330,7 +332,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi try { _runner.doSend(msg); } catch (I2CPMessageException ime) { - _log.error("Error writing out the session status message", ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error writing out the session status message", ime); } } @@ -348,7 +351,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi try { _runner.doSend(msg); } catch (I2CPMessageException ime) { - _log.error("Error writing out the session status message", ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error writing out the session status message", ime); } } diff --git a/router/java/src/net/i2p/router/client/MessageReceivedJob.java b/router/java/src/net/i2p/router/client/MessageReceivedJob.java index 8b16153de0af19a16f63f9ae741d760cc2057398..0ee148282ab53dcb51fa59a36d2b5faf43c0c12e 100644 --- a/router/java/src/net/i2p/router/client/MessageReceivedJob.java +++ b/router/java/src/net/i2p/router/client/MessageReceivedJob.java @@ -12,40 +12,51 @@ import net.i2p.data.Destination; import net.i2p.data.Payload; import net.i2p.data.i2cp.I2CPMessageException; import net.i2p.data.i2cp.MessageId; +import net.i2p.data.i2cp.MessagePayloadMessage; import net.i2p.data.i2cp.MessageStatusMessage; import net.i2p.router.JobImpl; import net.i2p.router.RouterContext; import net.i2p.util.Log; /** - * Async job to notify the client that a new message is available for them + * Async job to notify the client that a new message is available for them, + * or just send it directly if specified. * */ class MessageReceivedJob extends JobImpl { private final Log _log; private final ClientConnectionRunner _runner; private final Payload _payload; + private final boolean _sendDirect; - public MessageReceivedJob(RouterContext ctx, ClientConnectionRunner runner, Destination toDest, Destination fromDest, Payload payload) { + public MessageReceivedJob(RouterContext ctx, ClientConnectionRunner runner, Destination toDest, + Destination fromDest, Payload payload, boolean sendDirect) { super(ctx); _log = ctx.logManager().getLog(MessageReceivedJob.class); _runner = runner; _payload = payload; + _sendDirect = sendDirect; } public String getName() { return "Deliver New Message"; } public void runJob() { if (_runner.isDead()) return; - MessageId id = new MessageId(); - id.setMessageId(_runner.getNextMessageId()); - _runner.setPayload(id, _payload); + MessageId id = null; + long nextID = _runner.getNextMessageId(); try { - messageAvailable(id, _payload.getSize()); + if (_sendDirect) { + sendMessage(nextID); + } else { + id = new MessageId(nextID); + _runner.setPayload(id, _payload); + messageAvailable(id, _payload.getSize()); + } } catch (I2CPMessageException ime) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Error writing out the message status message", ime); - _runner.removePayload(id); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error writing out the message", ime); + if (!_sendDirect) + _runner.removePayload(id); } } @@ -65,4 +76,16 @@ class MessageReceivedJob extends JobImpl { msg.setStatus(MessageStatusMessage.STATUS_AVAILABLE); _runner.doSend(msg); } + + /** + * Deliver the message directly, skip notification + * @since 0.9.4 + */ + private void sendMessage(long id) throws I2CPMessageException { + MessagePayloadMessage msg = new MessagePayloadMessage(); + msg.setMessageId(id); + msg.setSessionId(_runner.getSessionId().getSessionId()); + msg.setPayload(_payload); + _runner.doSend(msg); + } } diff --git a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java index 7f23f051bc4dfb81d9a496f7136e5fabf12ba639..82849a4ac06714e6dc754d8db5eb5cb1cd0ecf0c 100644 --- a/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/QueuedClientConnectionRunner.java @@ -5,6 +5,7 @@ import net.i2p.data.i2cp.I2CPMessageException; import net.i2p.internal.I2CPMessageQueue; import net.i2p.internal.QueuedI2CPMessageReader; import net.i2p.router.RouterContext; +import net.i2p.util.Log; /** * Zero-copy in-JVM. @@ -59,13 +60,10 @@ class QueuedClientConnectionRunner extends ClientConnectionRunner { /** * Actually send the I2CPMessage to the client. * Nonblocking. + * @throws I2CPMessageException if queue full or on other errors */ @Override void doSend(I2CPMessage msg) throws I2CPMessageException { - // This will never fail, for now, as the router uses unbounded queues - // Perhaps in the future we may want to use bounded queues, - // with non-blocking writes for the router - // and blocking writes for the client? boolean success = queue.offer(msg); if (!success) throw new I2CPMessageException("I2CP write to queue failed"); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java index 50541770149f268a908ea8f7a8205b734b921d6b..77d7146a23c5c39cddece3741f216f4856d29d5e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java @@ -109,11 +109,11 @@ class FloodOnlySearchJob extends FloodSearchJob { // We need to randomize our ff selection, else we stay with the same ones since // getFloodfillPeers() is sorted by closest distance. Always using the same // ones didn't help reliability. - // Also, query the unheard-from, unprofiled, failing, unreachable and shitlisted ones last. + // Also, query the unheard-from, unprofiled, failing, unreachable and banlisted ones last. // We should hear from floodfills pretty frequently so set a 30m time limit. // If unprofiled we haven't talked to them in a long time. - // We aren't contacting the peer directly, so shitlist doesn't strictly matter, - // but it's a bad sign, and we often shitlist a peer before we fail it... + // We aren't contacting the peer directly, so banlist doesn't strictly matter, + // but it's a bad sign, and we often banlist a peer before we fail it... if (floodfillPeers.size() > CONCURRENT_SEARCHES) { Collections.shuffle(floodfillPeers, getContext().random()); List ffp = new ArrayList(floodfillPeers.size()); @@ -123,7 +123,7 @@ class FloodOnlySearchJob extends FloodSearchJob { Hash peer = (Hash)floodfillPeers.get(i); PeerProfile profile = getContext().profileOrganizer().getProfile(peer); if (profile == null || profile.getLastHeardFrom() < before || - profile.getIsFailing() || getContext().shitlist().isShitlisted(peer) || + profile.getIsFailing() || getContext().banlist().isBanlisted(peer) || getContext().commSystem().wasUnreachable(peer)) { failcount++; ffp.add(peer); @@ -135,7 +135,7 @@ class FloodOnlySearchJob extends FloodSearchJob { if (floodfillPeers.size() - failcount <= 2) _shouldProcessDSRM = true; if (_log.shouldLog(Log.INFO) && failcount > 0) - _log.info(getJobId() + ": " + failcount + " of " + floodfillPeers.size() + " floodfills are not heard from, unprofiled, failing, unreachable or shitlisted"); + _log.info(getJobId() + ": " + failcount + " of " + floodfillPeers.size() + " floodfills are not heard from, unprofiled, failing, unreachable or banlisted"); floodfillPeers = ffp; } else { _shouldProcessDSRM = true; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java index f21beb47caf900c4672a55e5883af14f0c1bcc56..85a82b3e358e1db9e349392c7bfd00a050b3ad85 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java @@ -96,11 +96,11 @@ class FloodfillMonitorJob extends JobImpl { // Count the "good" ff peers. // // Who's not good? - // the unheard-from, unprofiled, failing, unreachable and shitlisted ones. + // the unheard-from, unprofiled, failing, unreachable and banlisted ones. // We should hear from floodfills pretty frequently so set a 60m time limit. // If unprofiled we haven't talked to them in a long time. - // We aren't contacting the peer directly, so shitlist doesn't strictly matter, - // but it's a bad sign, and we often shitlist a peer before we fail it... + // We aren't contacting the peer directly, so banlist doesn't strictly matter, + // but it's a bad sign, and we often banlist a peer before we fail it... // // Future: use Integration calculation // @@ -110,7 +110,7 @@ class FloodfillMonitorJob extends JobImpl { for (Hash peer : floodfillPeers) { PeerProfile profile = getContext().profileOrganizer().getProfile(peer); if (profile == null || profile.getLastHeardFrom() < before || - profile.getIsFailing() || getContext().shitlist().isShitlisted(peer) || + profile.getIsFailing() || getContext().banlist().isBanlisted(peer) || getContext().commSystem().wasUnreachable(peer)) failcount++; } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index a9380b917a8bd5f86066a8997c9c6df641ef448b..3c7e0e02d0da2bd21ca1b32d00a7ba11b97b7df5 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -180,7 +180,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad for (int i = 0; i < peers.size(); i++) { Hash peer = peers.get(i); RouterInfo target = lookupRouterInfoLocally(peer); - if ( (target == null) || (_context.shitlist().isShitlisted(peer)) ) + if ( (target == null) || (_context.banlist().isBanlisted(peer)) ) continue; // Don't flood a RI back to itself // Not necessary, a ff will do its own flooding (reply token == 0) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java index 135b2f92db2ce1192b0cc6ed16230c9a43015d9f..08b902f6ac4cc9b157ce8bb0215ba77476d01501 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java @@ -94,7 +94,7 @@ class FloodfillPeerSelector extends PeerSelector { } /** - * @return all floodfills not shitlisted forever. + * @return all floodfills not banlisted forever. * List will not include our own hash. * List is not sorted and not shuffled. */ @@ -105,7 +105,7 @@ class FloodfillPeerSelector extends PeerSelector { /** * @param toIgnore can be null - * @return all floodfills not shitlisted forever. + * @return all floodfills not banlisted forever. * List MAY INCLUDE our own hash. * List is not sorted and not shuffled. */ @@ -122,7 +122,7 @@ class FloodfillPeerSelector extends PeerSelector { List<Hash> rv = new ArrayList(set.size()); for (Hash h : set) { if ((toIgnore != null && toIgnore.contains(h)) || - _context.shitlist().isShitlistedForever(h)) + _context.banlist().isBanlistedForever(h)) continue; rv.add(h); } @@ -135,7 +135,7 @@ class FloodfillPeerSelector extends PeerSelector { * searches and stores won't work well. * List will not include our own hash. * - * @return floodfills closest to the key that are not shitlisted forever + * @return floodfills closest to the key that are not banlisted forever * @param key the ROUTING key (NOT the original key) * @param maxNumRouters max to return * Sorted by closest to the key if > maxNumRouters, otherwise not @@ -299,11 +299,11 @@ class FloodfillPeerSelector extends PeerSelector { return; //if (entry.equals(_context.routerHash())) // return; - // it isn't direct, so who cares if they're shitlisted - //if (_context.shitlist().isShitlisted(entry)) + // it isn't direct, so who cares if they're banlisted + //if (_context.banlist().isBanlisted(entry)) // return; // ... unless they are really bad - if (_context.shitlist().isShitlistedForever(entry)) + if (_context.banlist().isBanlistedForever(entry)) return; RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry); //if (info == null) @@ -330,7 +330,7 @@ class FloodfillPeerSelector extends PeerSelector { } /** - * @return list of all with the 'f' mark in their netdb except for shitlisted ones. + * @return list of all with the 'f' mark in their netdb except for banlisted ones. * Will return non-floodfills only if there aren't enough floodfills. * * The list is in 3 groups - unsorted (shuffled) within each group. @@ -348,7 +348,7 @@ class FloodfillPeerSelector extends PeerSelector { long now = _context.clock().now(); // Only add in "good" floodfills here... // Let's say published in last 3h and no failed sends in last 30m - // (Forever shitlisted ones are excluded in add() above) + // (Forever banlisted ones are excluded in add() above) for (Iterator<Hash> iter = new RandomIterator(_floodfillMatches); (found < howMany) && iter.hasNext(); ) { Hash entry = iter.next(); RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java index 2085d23015fc9208324bfaa23011d9f55be7a117..98a41874b70a671d850275032d77a76205e2bbd8 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -138,7 +138,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { // Check new routerinfo address against blocklist if (wasNew) { if (prevNetDb == null) { - if ((!getContext().shitlist().isShitlistedForever(key)) && + if ((!getContext().banlist().isBanlistedForever(key)) && getContext().blocklist().isBlocklisted(key) && _log.shouldLog(Log.WARN)) _log.warn("Blocklisting new peer " + key + ' ' + ri); @@ -146,7 +146,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { Collection<RouterAddress> oldAddr = prevNetDb.getAddresses(); Collection<RouterAddress> newAddr = ri.getAddresses(); if ((!newAddr.equals(oldAddr)) && - (!getContext().shitlist().isShitlistedForever(key)) && + (!getContext().banlist().isBanlistedForever(key)) && getContext().blocklist().isBlocklisted(key) && _log.shouldLog(Log.WARN)) _log.warn("New address received, Blocklisting old peer " + key + ' ' + ri); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java index 198004babd587d85ccdec2d27d708ef9b90734a2..2565ab13bfb94d71938cd21ab56cec4d318f1f1f 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java @@ -270,7 +270,7 @@ class IterativeSearchJob extends FloodSearchJob { RouterInfo ri = getContext().netDb().lookupRouterInfoLocally(peer); if (!FloodfillNetworkDatabaseFacade.isFloodfill(ri)) return; - if (getContext().shitlist().isShitlistedForever(peer)) + if (getContext().banlist().isBanlistedForever(peer)) return; synchronized (this) { if (_failedPeers.contains(peer) || diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index 9a4aa09c67e8c7e5c5b7d8fd103ca1e57125c182..633dbeff1a1a3111530a4f39e40b6f8c421ae0c9 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -106,7 +106,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { public final static String DEFAULT_DB_DIR = "netDb"; /** if we have less than this many routers left, don't drop any more, - * even if they're failing or doing bad shit. + * even if they're failing or doing bad stuff. */ protected final static int MIN_REMAINING_ROUTERS = 25; @@ -747,7 +747,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { return "Invalid routerInfo signature on " + key.toBase64(); } else if (upLongEnough && !routerInfo.isCurrent(adjustedExpiration)) { if (routerInfo.getNetworkId() != Router.NETWORK_ID) { - _context.shitlist().shitlistRouter(key, "Peer is not in our network"); + _context.banlist().banlistRouter(key, "Peer is not in our network"); return "Peer is not in our network (" + routerInfo.getNetworkId() + ", wants " + Router.NETWORK_ID + "): " + routerInfo.calculateHash().toBase64(); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java index 590880aaeec2ea1824f8d5cc04cb1f1c586d5873..7df231726fa6bbce22e92a7a2671e664086f35fb 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java @@ -309,8 +309,8 @@ class SearchJob extends JobImpl { if (onlyFloodfill) continue; } - if (ri.isHidden()) {// || // allow querying shitlisted, since its indirect - //getContext().shitlist().isShitlisted(peer)) { + if (ri.isHidden()) {// || // allow querying banlisted, since its indirect + //getContext().banlist().isBanlisted(peer)) { // dont bother } else { _state.addPending(peer); @@ -413,8 +413,8 @@ class SearchJob extends JobImpl { } TunnelId inTunnelId = inTunnel.getReceiveTunnelId(0); - // this will fail if we've shitlisted our inbound gateway, but the gw may not necessarily - // be shitlisted by whomever needs to contact them, so we don't need to check this + // this will fail if we've banlisted our inbound gateway, but the gw may not necessarily + // be banlisted by whomever needs to contact them, so we don't need to check this //RouterInfo inGateway = getContext().netDb().lookupRouterInfoLocally(inTunnel.getPeer(0)); //if (inGateway == null) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java index c2365eb0cb1a4b9772eca07bdb310a4a7d08a59d..8d8e5f19d9cc45b46fda1a374a126f1dc46428f0 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java @@ -23,7 +23,7 @@ class SearchReplyJob extends JobImpl { * Peer who we think sent us the reply. Note: could be spoofed! If the * attacker knew we were searching for a particular key from a * particular peer, they could send us some searchReply messages with - * shitty values, trying to get us to consider that peer unreliable. + * bad values, trying to get us to consider that peer unreliable. * Potential fixes include either authenticated 'from' address or use a * nonce in the search + searchReply (and check for it in the selector). * @@ -85,12 +85,12 @@ class SearchReplyJob extends JobImpl { if (!sendsBadInfo) { // we don't need to search for everthing we're given here - only ones that // are next in our search path... - // note: no need to think about shitlisted targets in the netdb search, given + // note: no need to think about banlisted targets in the netdb search, given // the floodfill's behavior // This keeps us from continually chasing blocklisted floodfills - if (getContext().shitlist().isShitlisted(peer)) { + if (getContext().banlist().isBanlisted(peer)) { // if (_log.shouldLog(Log.INFO)) - // _log.info("Not looking for a shitlisted peer..."); + // _log.info("Not looking for a banlisted peer..."); // getContext().statManager().addRateData("netDb.searchReplyValidationSkipped", 1, 0); } else { //getContext().netDb().lookupRouterInfo(peer, new ReplyVerifiedJob(getContext(), peer), new ReplyNotVerifiedJob(getContext(), peer), _timeoutMs); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index 0632da80d85eed28ae936e2e589bddf464498598..d6e0f1ae7fc17a5d02b6fa8f56e28bbd8d7d52c6 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -183,10 +183,10 @@ class StoreJob extends JobImpl { // _state.addSkipped(peer); //} - // we don't want to filter out peers based on our local shitlist, as that opens an avenue for - // manipulation (since a peer can get us to shitlist them by, well, being shitty, and that + // we don't want to filter out peers based on our local banlist, as that opens an avenue for + // manipulation (since a peer can get us to banlist them, and that // in turn would let them assume that a netDb store received didn't come from us) - //if (getContext().shitlist().isShitlisted(((RouterInfo)ds).getIdentity().calculateHash())) { + //if (getContext().banlist().isBanlisted(((RouterInfo)ds).getIdentity().calculateHash())) { // _state.addSkipped(peer); //} else { // diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 75b5f12982a5e5285c30989707a22a290dfff0ef..b588f9c1659591772a4f24109be0c0edf2920435 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -66,9 +66,11 @@ public class Reseeder { "http://euve5653.vserver.de/netDb/" + "," + // "http://r31453.ovh.net/static_media/files/netDb/" + "," + "http://cowpuncher.drollette.com/netdb/" + "," + - "http://75.145.125.59/netDb/" + "," + "http://i2p.mooo.com/netDb/" + "," + - "http://193.150.121.66/netDb/"; + "http://193.150.121.66/netDb/" + "," + + "http://netdb.i2p2.no/" + "," + + "http://reseed.info/" + "," + + "http://i2p.feared.eu/"; /** @since 0.8.2 */ public static final String DEFAULT_SSL_SEED_URL = @@ -78,9 +80,11 @@ public class Reseeder { "https://reseed.i2p-projekt.de/" + "," + // "https://r31453.ovh.net/static_media/files/netDb/" + "," + "https://cowpuncher.drollette.com/netdb/" + "," + - "https://75.145.125.59/netDb/" + "," + "https://i2p.mooo.com/netDb/" + "," + - "https://193.150.121.66/netDb/"; + "https://193.150.121.66/netDb/" + "," + + "https://netdb.i2p2.no/" + "," + + "https://reseed.info/" + "," + + "https://i2p.feared.eu/"; public static final String PROP_PROXY_HOST = "router.reseedProxyHost"; public static final String PROP_PROXY_PORT = "router.reseedProxyPort"; diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index c40c26e0185c556e3f462c7f2e2a219e89801434..68b4629b46953ef59e74ecbd8f44b6c980bd134f 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -60,7 +60,7 @@ public class PeerProfile { // does this peer profile contain expanded data, or just the basics? private boolean _expanded; private boolean _expandedDB; - private int _consecutiveShitlists; + private int _consecutiveBanlists; private final int _distance; /** @@ -109,8 +109,8 @@ public class PeerProfile { public boolean getIsExpanded() { return _expanded; } public boolean getIsExpandedDB() { return _expandedDB; } - public int incrementShitlists() { return _consecutiveShitlists++; } - public void unshitlist() { _consecutiveShitlists = 0; } + public int incrementBanlists() { return _consecutiveBanlists++; } + public void unbanlist() { _consecutiveBanlists = 0; } /** * Is this peer active at the moment (sending/receiving messages within the last diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 9b1a3569faa34557247304d8a8bf3575365afc97..bd834c7b926b5d3ed2f19ad5d0a5b2d6eaa5b0d8 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -1342,10 +1342,10 @@ public class ProfileOrganizer { // the CLI shouldn't depend upon the netDb if (netDb == null) return true; if (_context.router() == null) return true; - if ( (_context.shitlist() != null) && (_context.shitlist().isShitlisted(peer)) ) { + if ( (_context.banlist() != null) && (_context.banlist().isBanlisted(peer)) ) { // if (_log.shouldLog(Log.DEBUG)) - // _log.debug("Peer " + peer.toBase64() + " is shitlisted, dont select it"); - return false; // never select a shitlisted peer + // _log.debug("Peer " + peer.toBase64() + " is banlisted, dont select it"); + return false; // never select a banlisted peer } RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer); @@ -1395,7 +1395,7 @@ public class ProfileOrganizer { _notFailingPeers.put(profile.getPeer(), profile); _notFailingPeersList.add(profile.getPeer()); - // if not selectable for a tunnel (shitlisted for example), + // if not selectable for a tunnel (banlisted for example), // don't allow them in the high-cap pool, what would the point of that be? if (_thresholdCapacityValue <= profile.getCapacityValue() && isSelectable(profile.getPeer())) { diff --git a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java index 6bd9d3f08b9a3ea642c3a8cf8f81c970a9b7acad..3aebb3b51e8a38b721a5f595623ccc8314d5897a 100644 --- a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java @@ -8,9 +8,11 @@ package net.i2p.router.startup; * */ +import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.Properties; import net.i2p.data.Certificate; @@ -50,12 +52,25 @@ public class CreateRouterInfoJob extends JobImpl { } /** - * Caller must hold Router.routerInfoFileLock + * Writes 6 files: router.info (standard RI format), + * router,keys, and 4 individual key files under keyBackup/ + * + * router.keys file format: Note that this is NOT the + * same "eepPriv.dat" format used by the client code. + *<pre> + * - Private key (256 bytes) + * - Signing Private key (20 bytes) + * - Public key (256 bytes) + * - Signing Public key (128 bytes) + * Total 660 bytes + *</pre> + * + * Caller must hold Router.routerInfoFileLock. */ RouterInfo createRouterInfo() { RouterInfo info = new RouterInfo(); - FileOutputStream fos1 = null; - FileOutputStream fos2 = null; + OutputStream fos1 = null; + OutputStream fos2 = null; try { info.setAddresses(getContext().commSystem().createAddresses()); Properties stats = getContext().statPublisher().publishStatistics(); @@ -89,21 +104,18 @@ public class CreateRouterInfoJob extends JobImpl { String infoFilename = getContext().getProperty(Router.PROP_INFO_FILENAME, Router.PROP_INFO_FILENAME_DEFAULT); File ifile = new File(getContext().getRouterDir(), infoFilename); - fos1 = new SecureFileOutputStream(ifile); + fos1 = new BufferedOutputStream(new SecureFileOutputStream(ifile)); info.writeBytes(fos1); String keyFilename = getContext().getProperty(Router.PROP_KEYS_FILENAME, Router.PROP_KEYS_FILENAME_DEFAULT); File kfile = new File(getContext().getRouterDir(), keyFilename); - fos2 = new SecureFileOutputStream(kfile); + fos2 = new BufferedOutputStream(new SecureFileOutputStream(kfile)); privkey.writeBytes(fos2); signingPrivKey.writeBytes(fos2); pubkey.writeBytes(fos2); signingPubKey.writeBytes(fos2); - getContext().keyManager().setSigningPrivateKey(signingPrivKey); - getContext().keyManager().setSigningPublicKey(signingPubKey); - getContext().keyManager().setPrivateKey(privkey); - getContext().keyManager().setPublicKey(pubkey); + getContext().keyManager().setKeys(pubkey, privkey, signingPubKey, signingPrivKey); _log.info("Router info created and stored at " + ifile.getAbsolutePath() + " with private keys stored at " + kfile.getAbsolutePath() + " [" + info + "]"); } catch (DataFormatException dfe) { diff --git a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java index 3f3f9d5e6a2008412a648395f1fbf797e4536d16..9f0ce8c8296a9ee937d71567e6e5c1f8cbe52e56 100644 --- a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java +++ b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java @@ -1,12 +1,17 @@ package net.i2p.router.startup; +import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Arrays; import java.util.ArrayList; import java.util.List; +import net.i2p.I2PAppContext; +import net.i2p.app.ClientApp; +import net.i2p.app.ClientAppManager; import net.i2p.router.JobImpl; import net.i2p.router.RouterContext; +import net.i2p.router.app.RouterApp; import net.i2p.util.I2PThread; import net.i2p.util.Log; @@ -24,6 +29,7 @@ public class LoadClientAppsJob extends JobImpl { super(ctx); _log = ctx.logManager().getLog(LoadClientAppsJob.class); } + public void runJob() { synchronized (LoadClientAppsJob.class) { if (_loaded) return; @@ -42,7 +48,7 @@ public class LoadClientAppsJob extends JobImpl { String argVal[] = parseArgs(app.args); if (app.delay <= 0) { // run this guy now - runClient(app.className, app.clientName, argVal, _log); + runClient(app.className, app.clientName, argVal, getContext(), _log); } else { // wait before firing it up getContext().jobQueue().addJob(new DelayedRunClient(getContext(), app.className, app.clientName, argVal, app.delay)); @@ -73,9 +79,11 @@ public class LoadClientAppsJob extends JobImpl { _cl = cl; getTiming().setStartAfter(getContext().clock().now() + delay); } + public String getName() { return "Delayed client job"; } + public void runJob() { - runClient(_className, _clientName, _args, _log, _threadGroup, _cl); + runClient(_className, _clientName, _args, getContext(), _log, _threadGroup, _cl); } } @@ -179,8 +187,8 @@ public class LoadClientAppsJob extends JobImpl { * @param clientName can be null * @param args can be null */ - public static void runClient(String className, String clientName, String args[], Log log) { - runClient(className, clientName, args, log, null, null); + public static void runClient(String className, String clientName, String args[], RouterContext ctx, Log log) { + runClient(className, clientName, args, ctx, log, null, null); } /** @@ -192,15 +200,15 @@ public class LoadClientAppsJob extends JobImpl { * @param cl can be null * @since 0.7.13 */ - public static void runClient(String className, String clientName, String args[], Log log, + public static void runClient(String className, String clientName, String args[], RouterContext ctx, Log log, ThreadGroup threadGroup, ClassLoader cl) { if (log.shouldLog(Log.INFO)) log.info("Loading up the client application " + clientName + ": " + className + " " + Arrays.toString(args)); I2PThread t; if (threadGroup != null) - t = new I2PThread(threadGroup, new RunApp(className, clientName, args, log, cl)); + t = new I2PThread(threadGroup, new RunApp(className, clientName, args, ctx, log, cl)); else - t = new I2PThread(new RunApp(className, clientName, args, log, cl)); + t = new I2PThread(new RunApp(className, clientName, args, ctx, log, cl)); if (clientName == null) clientName = className + " client"; t.setName(clientName); @@ -214,16 +222,18 @@ public class LoadClientAppsJob extends JobImpl { private final String _className; private final String _appName; private final String _args[]; + private final RouterContext _ctx; private final Log _log; private final ClassLoader _cl; - public RunApp(String className, String appName, String args[], Log log, ClassLoader cl) { + public RunApp(String className, String appName, String args[], RouterContext ctx, Log log, ClassLoader cl) { _className = className; _appName = appName; if (args == null) _args = new String[0]; else _args = args; + _ctx = ctx; _log = log; if (cl == null) _cl = ClassLoader.getSystemClassLoader(); @@ -234,14 +244,53 @@ public class LoadClientAppsJob extends JobImpl { public void run() { try { Class cls = Class.forName(_className, true, _cl); - Method method = cls.getMethod("main", new Class[] { String[].class }); - method.invoke(cls, new Object[] { _args }); + if (isRouterApp(cls)) { + Constructor con = cls.getConstructor(RouterContext.class, ClientAppManager.class, String[].class); + RouterAppManager mgr = _ctx.clientAppManager(); + Object[] conArgs = new Object[] {_ctx, _ctx.clientAppManager(), _args}; + RouterApp app = (RouterApp) con.newInstance(conArgs); + mgr.addAndStart(app); + } else if (isClientApp(cls)) { + Constructor con = cls.getConstructor(I2PAppContext.class, ClientAppManager.class, String[].class); + RouterAppManager mgr = _ctx.clientAppManager(); + Object[] conArgs = new Object[] {_ctx, _ctx.clientAppManager(), _args}; + ClientApp app = (ClientApp) con.newInstance(conArgs); + mgr.addAndStart(app); + } else { + Method method = cls.getMethod("main", new Class[] { String[].class }); + method.invoke(cls, new Object[] { _args }); + } } catch (Throwable t) { _log.log(Log.CRIT, "Error starting up the client class " + _className, t); } if (_log.shouldLog(Log.INFO)) _log.info("Done running client application " + _appName); } + + private static boolean isRouterApp(Class cls) { + return isInterface(cls, RouterApp.class); + } + + private static boolean isClientApp(Class cls) { + return isInterface(cls, ClientApp.class); + } + + private static boolean isInterface(Class cls, Class intfc) { + try { + Class[] intfcs = cls.getInterfaces(); + for (int i = 0; i < intfcs.length; i++) { + if (intfcs[i] == intfc) + return true; + } + } catch (Throwable t) {} + return false; + } + + + + + + } public String getName() { return "Load up any client applications"; } diff --git a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java index 392a8b3c8b668ff5f0aa0a2783ade1d05bb7c6e4..e937cca8c33d61362381dcb2f6d37e69b851668c 100644 --- a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java @@ -8,8 +8,10 @@ package net.i2p.router.startup; * */ +import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; +import java.io.InputStream; import java.io.IOException; import net.i2p.data.DataFormatException; @@ -64,8 +66,8 @@ public class LoadRouterInfoJob extends JobImpl { if (rkf.exists()) _keysExist = true; - FileInputStream fis1 = null; - FileInputStream fis2 = null; + InputStream fis1 = null; + InputStream fis2 = null; try { // if we have a routerinfo but no keys, things go bad in a hurry: // CRIT ...rkdb.PublishLocalRouterInfoJob: Internal error - signing private key not known? rescheduling publish for 30s @@ -74,7 +76,7 @@ public class LoadRouterInfoJob extends JobImpl { // at net.i2p.router.transport.udp.PacketBuilder.buildSessionConfirmedPacket(PacketBuilder.java:574) // so pretend the RI isn't there if there is no keyfile if (_infoExists && _keysExist) { - fis1 = new FileInputStream(rif); + fis1 = new BufferedInputStream(new FileInputStream(rif)); info = new RouterInfo(); info.readBytes(fis1); // Catch this here before it all gets worse @@ -86,7 +88,7 @@ public class LoadRouterInfoJob extends JobImpl { } if (_keysExist) { - fis2 = new FileInputStream(rkf); + fis2 = new BufferedInputStream(new FileInputStream(rkf)); PrivateKey privkey = new PrivateKey(); privkey.readBytes(fis2); SigningPrivateKey signingPrivKey = new SigningPrivateKey(); @@ -96,10 +98,7 @@ public class LoadRouterInfoJob extends JobImpl { SigningPublicKey signingPubKey = new SigningPublicKey(); signingPubKey.readBytes(fis2); - getContext().keyManager().setPrivateKey(privkey); - getContext().keyManager().setSigningPrivateKey(signingPrivKey); - getContext().keyManager().setPublicKey(pubkey); //info.getIdentity().getPublicKey()); - getContext().keyManager().setSigningPublicKey(signingPubKey); // info.getIdentity().getSigningPublicKey()); + getContext().keyManager().setKeys(pubkey, privkey, signingPubKey, signingPrivKey); } } catch (IOException ioe) { _log.log(Log.CRIT, "Error reading the router info from " + rif.getAbsolutePath() + " and the keys from " + rkf.getAbsolutePath(), ioe); diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java new file mode 100644 index 0000000000000000000000000000000000000000..eade1e8d18f354dfad045caccbc80220024fed70 --- /dev/null +++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java @@ -0,0 +1,128 @@ +package net.i2p.router.startup; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import net.i2p.app.*; +import static net.i2p.app.ClientAppState.*; +import net.i2p.router.RouterContext; +import net.i2p.util.ConcurrentHashSet; +import net.i2p.util.Log; + +/** + * Notify the router of events, and provide methods for + * client apps to find each other. + * + * @since 0.9.4 + */ +public class RouterAppManager implements ClientAppManager { + + private final RouterContext _context; + private final Log _log; + private final Set<ClientApp> _clients; + private final ConcurrentHashMap<String, ClientApp> _registered; + + public RouterAppManager(RouterContext ctx) { + _context = ctx; + _log = ctx.logManager().getLog(RouterAppManager.class); + _clients = new ConcurrentHashSet(16); + _registered = new ConcurrentHashMap(8); + } + + public void addAndStart(ClientApp app) { + _clients.add(app); + try { + app.startup(); + } catch (Throwable t) { + _clients.remove(app); + _log.error("Client " + app + " failed to start"); + } + } + + // ClientAppManager methods + + /** + * Must be called on all state transitions except + * from UNINITIALIZED to INITIALIZED. + * + * @param app non-null + * @param state non-null + * @param message may be null + * @param e may be null + */ + public void notify(ClientApp app, ClientAppState state, String message, Exception e) { + switch(state) { + case UNINITIALIZED: + case INITIALIZED: + if (_log.shouldLog(Log.WARN)) + _log.warn("Client " + app.getDisplayName() + " called notify for " + state); + break; + + case STARTING: + case RUNNING: + if (_log.shouldLog(Log.INFO)) + _log.info("Client " + app.getDisplayName() + " called notify for " + state); + break; + + case FORKED: + case STOPPING: + case STOPPED: + _clients.remove(app); + _registered.remove(app.getName(), app); + if (message == null) + message = ""; + if (_log.shouldLog(Log.INFO)) + _log.info("Client " + app.getDisplayName() + " called notify for " + state + + ' ' + message, e); + break; + + case CRASHED: + case START_FAILED: + _clients.remove(app); + _registered.remove(app.getName(), app); + if (message == null) + message = ""; + _log.log(Log.CRIT, "Client " + app.getDisplayName() + ' ' + state + + ' ' + message, e); + break; + } + } + + /** + * Register with the manager under the given name, + * so that other clients may find it. + * Only required for apps used by other apps. + * + * @param app non-null + * @return true if successful, false if duplicate name + */ + public boolean register(ClientApp app) { + if (!_clients.contains(app)) + return false; + // TODO if old app in there is not running and != this app, allow replacement + return _registered.putIfAbsent(app.getName(), app) == null; + } + + /** + * Unregister with the manager. Name must be the same as that from register(). + * Only required for apps used by other apps. + * + * @param app non-null + */ + public void unregister(ClientApp app) { + _registered.remove(app.getName(), app); + } + + /** + * Get a registered app. + * Only used for apps finding other apps. + * Do not hold a static reference. + * If you only need to find a port, use the PortMapper instead. + * + * @param name non-null + * @return client app or null + */ + public ClientApp getRegisteredApp(String name) { + return _registered.get(name); + } +} diff --git a/router/java/src/net/i2p/router/tasks/RouterWatchdog.java b/router/java/src/net/i2p/router/tasks/RouterWatchdog.java index 233c3bd7a055f508b46380df862d9f19b2a90846..15570c0133fc00bc86d527ed6feab4228327362f 100644 --- a/router/java/src/net/i2p/router/tasks/RouterWatchdog.java +++ b/router/java/src/net/i2p/router/tasks/RouterWatchdog.java @@ -4,6 +4,7 @@ import java.io.File; import net.i2p.data.DataHelper; import net.i2p.router.Job; +import net.i2p.router.CommSystemFacade; import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.util.EventLog; @@ -23,8 +24,10 @@ public class RouterWatchdog implements Runnable { private final RouterContext _context; private int _consecutiveErrors; private volatile boolean _isRunning; + private long _lastDump; private static final long MAX_JOB_RUN_LAG = 60*1000; + private static final long MIN_DUMP_INTERVAL= 6*60*60*1000; public RouterWatchdog(RouterContext ctx) { _context = ctx; @@ -69,7 +72,7 @@ public class RouterWatchdog implements Runnable { // Client manager starts complaining after 10 minutes, and we run every minute, // so this will restart 30 minutes after we lose a lease, if the wrapper is present. - if (_consecutiveErrors >= 20 && System.getProperty("wrapper.version") != null) + if (_consecutiveErrors >= 20 && SystemVersion.hasWrapper()) return true; return false; } @@ -113,7 +116,11 @@ public class RouterWatchdog implements Runnable { // This works on linux... // It won't on windows, and we can't call i2prouter.bat either, it does something // completely different... - ThreadDump.dump(_context, 10); + long now = _context.clock().now(); + if (now - _lastDump > MIN_DUMP_INTERVAL) { + _lastDump = now; + ThreadDump.dump(_context, 10); + } } } } @@ -129,11 +136,15 @@ public class RouterWatchdog implements Runnable { boolean ok = verifyJobQueueLiveliness(); // If we aren't connected to the network that's why there's nobody to talk to long netErrors = 0; - RateStat rs = _context.statManager().getRate("udp.sendException"); - if (rs != null) { - Rate r = rs.getRate(60*1000); - if (r != null) - netErrors = r.getLastEventCount(); + if (_context.commSystem().getReachabilityStatus() == CommSystemFacade.STATUS_DISCONNECTED) { + netErrors = 10; + } else { + RateStat rs = _context.statManager().getRate("udp.sendException"); + if (rs != null) { + Rate r = rs.getRate(60*1000); + if (r != null) + netErrors = r.getLastEventCount(); + } } ok = ok && (verifyClientLiveliness() || netErrors >= 5); diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 29f3a23d4a42dbe026f5e9bc8413552548f8f428..68a237f52d2ef6a654f719c4316aafb315413a65 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -31,21 +31,26 @@ import net.i2p.router.transport.ntcp.NTCPAddress; import net.i2p.router.transport.ntcp.NTCPTransport; import net.i2p.router.transport.udp.UDPAddress; import net.i2p.router.transport.udp.UDPTransport; +import net.i2p.util.Addresses; import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer; +import net.i2p.util.SimpleTimer2; import net.i2p.util.Translate; public class CommSystemFacadeImpl extends CommSystemFacade { private final Log _log; private final RouterContext _context; private TransportManager _manager; - private GeoIP _geoIP; + private final GeoIP _geoIP; + private volatile boolean _netMonitorStatus; public CommSystemFacadeImpl(RouterContext context) { _context = context; _log = _context.logManager().getLog(CommSystemFacadeImpl.class); _context.statManager().createRateStat("transport.getBidsJobTime", "How long does it take?", "Transport", new long[] { 10*60*1000l }); + _netMonitorStatus = true; + _geoIP = new GeoIP(_context); startGeoIP(); } @@ -54,6 +59,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { _manager = new TransportManager(_context); _manager.startListening(); startTimestamper(); + startNetMonitor(); } /** @@ -169,8 +175,12 @@ public class CommSystemFacadeImpl extends CommSystemFacade { @Override public short getReachabilityStatus() { if (_manager == null) return STATUS_UNKNOWN; - if (_context.router().isHidden()) return STATUS_OK; - return _manager.getReachabilityStatus(); + if (!_netMonitorStatus) + return STATUS_DISCONNECTED; + short rv = _manager.getReachabilityStatus(); + if (rv != STATUS_HOSED && _context.router().isHidden()) + return STATUS_OK; + return rv; } @Override public void recheckReachability() { _manager.recheckReachability(); } @@ -409,14 +419,13 @@ public class CommSystemFacadeImpl extends CommSystemFacade { * * This is only used in the router console for now, but we put it here because * 1) it's a lot easier, and 2) we could use it in the future for peer selection, - * tunnel selection, shitlisting, etc. + * tunnel selection, banlisting, etc. */ /* We hope the routerinfos are read in and things have settled down by now, but it's not required to be so */ private static final int START_DELAY = 5*60*1000; private static final int LOOKUP_TIME = 30*60*1000; private void startGeoIP() { - _geoIP = new GeoIP(_context); _context.simpleScheduler().addEvent(new QueueAll(), START_DELAY); } @@ -555,6 +564,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { private static final int TIME_START_DELAY = 5*60*1000; private static final int TIME_REPEAT_DELAY = 10*60*1000; + /** @since 0.7.12 */ private void startTimestamper() { _context.simpleScheduler().addPeriodicEvent(new Timestamper(), TIME_START_DELAY, TIME_REPEAT_DELAY); @@ -579,4 +589,28 @@ public class CommSystemFacadeImpl extends CommSystemFacade { _context.clock().setOffset(newOffset); } } + + /** @since 0.9.4 */ + private void startNetMonitor() { + new NetMonitor(); + } + + /** + * Simple check to see if we have a network connection + * @since 0.9.4 + */ + private class NetMonitor extends SimpleTimer2.TimedEvent { + private static final long SHORT_DELAY = 15*1000; + private static final long LONG_DELAY = 3*60*1000; + + public NetMonitor() { + super(_context.simpleTimer2(), 0); + } + + public void timeReached() { + boolean good = Addresses.isConnected(); + _netMonitorStatus = good; + reschedule(good ? LONG_DELAY : SHORT_DELAY); + } + } } diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java index 15ccd18fee5007d4088985cea34280dbeea22aaf..98ca540722c0ac9a9e64e0a95802612f115f405c 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java @@ -8,6 +8,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; +import net.i2p.router.util.PQEntry; import net.i2p.util.I2PThread; import net.i2p.util.Log; @@ -189,8 +190,6 @@ public class FIFOBandwidthLimiter { return _refiller.getCurrentParticipatingBandwidth(); } - public Request createRequest() { return new SimpleRequest(); } - /** * Request some bytes. Does not block. */ @@ -198,11 +197,7 @@ public class FIFOBandwidthLimiter { // try to satisfy without grabbing the global lock if (shortcutSatisfyInboundRequest(bytesIn)) return _noop; - return requestInbound(bytesIn, purpose, null, null); - } - - public Request requestInbound(int bytesIn, String purpose, CompleteListener lsnr, Object attachment) { - SimpleRequest req = new SimpleRequest(bytesIn, 0, purpose, lsnr, attachment); + SimpleRequest req = new SimpleRequest(bytesIn, 0); requestInbound(req, bytesIn, purpose); return req; } @@ -229,15 +224,11 @@ public class FIFOBandwidthLimiter { /** * Request some bytes. Does not block. */ - public Request requestOutbound(int bytesOut, String purpose) { + public Request requestOutbound(int bytesOut, int priority, String purpose) { // try to satisfy without grabbing the global lock if (shortcutSatisfyOutboundRequest(bytesOut)) return _noop; - return requestOutbound(bytesOut, purpose, null, null); - } - - public Request requestOutbound(int bytesOut, String purpose, CompleteListener lsnr, Object attachment) { - SimpleRequest req = new SimpleRequest(0, bytesOut, purpose, lsnr, attachment); + SimpleRequest req = new SimpleRequest(bytesOut, priority); requestOutbound(req, bytesOut, purpose); return req; } @@ -336,7 +327,7 @@ public class FIFOBandwidthLimiter { _unavailableOutboundBurst.set(_maxOutboundBurst); } } else { - // try to pull in up to 1/10th of the burst rate, since we refill every 100ms + // try to pull in up to the burst rate, since we refill periodically int want = (int)maxBurstOut; if (want > (_maxOutbound - avo)) want = _maxOutbound - avo; @@ -489,14 +480,13 @@ public class FIFOBandwidthLimiter { private final void locked_satisfyInboundUnlimited(List<Request> satisfied) { while (!_pendingInboundRequests.isEmpty()) { SimpleRequest req = (SimpleRequest)_pendingInboundRequests.remove(0); - int allocated = req.getPendingInboundRequested(); + int allocated = req.getPendingRequested(); _totalAllocatedInboundBytes.addAndGet(allocated); - req.allocateBytes(allocated, 0); + req.allocateBytes(allocated); satisfied.add(req); long waited = now() - req.getRequestTime(); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Granting inbound request " + req.getRequestName() + " fully for " - + req.getTotalInboundRequested() + " bytes (waited " + _log.debug("Granting inbound request " + req + " fully (waited " + waited + "ms) pending " + _pendingInboundRequests.size()); if (waited > 10) @@ -520,8 +510,8 @@ public class FIFOBandwidthLimiter { // connection decided they dont want the data anymore if (_log.shouldLog(Log.DEBUG)) _log.debug("Aborting inbound request to " - + req.getRequestName() + " (total " - + req.getTotalInboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingInboundRequests.size()); _pendingInboundRequests.remove(i); @@ -537,7 +527,7 @@ public class FIFOBandwidthLimiter { continue; } // ok, they are really waiting for us to give them stuff - int requested = req.getPendingInboundRequested(); + int requested = req.getPendingRequested(); int avi = _availableInbound.get(); int allocated; if (avi >= requested) @@ -546,21 +536,21 @@ public class FIFOBandwidthLimiter { allocated = avi; _availableInbound.addAndGet(0 - allocated); _totalAllocatedInboundBytes.addAndGet(allocated); - req.allocateBytes(allocated, 0); + req.allocateBytes(allocated); satisfied.add(req); - if (req.getPendingInboundRequested() > 0) { + if (req.getPendingRequested() > 0) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Allocating " + allocated + " bytes inbound as a partial grant to " - + req.getRequestName() + " (wanted " - + req.getTotalInboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingInboundRequests.size() + ", longest waited " + locked_getLongestInboundWait() + " in"); } else { if (_log.shouldLog(Log.DEBUG)) _log.debug("Allocating " + allocated + " bytes inbound to finish the partial grant to " - + req.getRequestName() + " (total " - + req.getTotalInboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingInboundRequests.size() + ", longest waited " + locked_getLongestInboundWait() + " out"); @@ -607,14 +597,13 @@ public class FIFOBandwidthLimiter { private final void locked_satisfyOutboundUnlimited(List<Request> satisfied) { while (!_pendingOutboundRequests.isEmpty()) { SimpleRequest req = (SimpleRequest)_pendingOutboundRequests.remove(0); - int allocated = req.getPendingOutboundRequested(); + int allocated = req.getPendingRequested(); _totalAllocatedOutboundBytes.addAndGet(allocated); - req.allocateBytes(0, allocated); + req.allocateBytes(allocated); satisfied.add(req); long waited = now() - req.getRequestTime(); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Granting outbound request " + req.getRequestName() + " fully for " - + req.getTotalOutboundRequested() + " bytes (waited " + _log.debug("Granting outbound request " + req + " fully (waited " + waited + "ms) pending " + _pendingOutboundRequests.size() + ", longest waited " + locked_getLongestOutboundWait() + " out"); @@ -639,8 +628,8 @@ public class FIFOBandwidthLimiter { // connection decided they dont want the data anymore if (_log.shouldLog(Log.DEBUG)) _log.debug("Aborting outbound request to " - + req.getRequestName() + " (total " - + req.getTotalOutboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingOutboundRequests.size()); _pendingOutboundRequests.remove(i); @@ -652,11 +641,11 @@ public class FIFOBandwidthLimiter { // they haven't taken advantage of it yet (most likely they're // IO bound) if (_log.shouldLog(Log.WARN)) - _log.warn("multiple allocations since wait... ntcp shouldn't do this: " + req.getRequestName()); + _log.warn("multiple allocations since wait... ntcp shouldn't do this: " + req); continue; } // ok, they are really waiting for us to give them stuff - int requested = req.getPendingOutboundRequested(); + int requested = req.getPendingRequested(); int avo = _availableOutbound.get(); int allocated; if (avo >= requested) @@ -665,22 +654,22 @@ public class FIFOBandwidthLimiter { allocated = avo; _availableOutbound.addAndGet(0 - allocated); _totalAllocatedOutboundBytes.addAndGet(allocated); - req.allocateBytes(0, allocated); + req.allocateBytes(allocated); satisfied.add(req); - if (req.getPendingOutboundRequested() > 0) { + if (req.getPendingRequested() > 0) { if (req.attachment() != null) { if (_log.shouldLog(Log.INFO)) _log.info("Allocating " + allocated + " bytes outbound as a partial grant to " - + req.getRequestName() + " (wanted " - + req.getTotalOutboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingOutboundRequests.size() + ", longest waited " + locked_getLongestOutboundWait() + " out"); } if (_log.shouldLog(Log.DEBUG)) _log.debug("Allocating " + allocated + " bytes outbound as a partial grant to " - + req.getRequestName() + " (wanted " - + req.getTotalOutboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingOutboundRequests.size() + ", longest waited " + locked_getLongestOutboundWait() + " out"); @@ -688,16 +677,16 @@ public class FIFOBandwidthLimiter { if (req.attachment() != null) { if (_log.shouldLog(Log.INFO)) _log.info("Allocating " + allocated + " bytes outbound to finish the partial grant to " - + req.getRequestName() + " (total " - + req.getTotalOutboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingOutboundRequests.size() + ", longest waited " + locked_getLongestOutboundWait() + " out)"); } if (_log.shouldLog(Log.DEBUG)) _log.debug("Allocating " + allocated + " bytes outbound to finish the partial grant to " - + req.getRequestName() + " (total " - + req.getTotalOutboundRequested() + " bytes, waited " + + req + + " waited " + waited + "ms) pending " + _pendingOutboundRequests.size() + ", longest waited " + locked_getLongestOutboundWait() + " out)"); @@ -788,145 +777,127 @@ public class FIFOBandwidthLimiter { ******/ } - private static long __requestId = 0; - private final class SimpleRequest implements Request { - private int _inAllocated; - private int _inTotal; - private int _outAllocated; - private int _outTotal; + private static class SimpleRequest implements Request { + private int _allocated; + private final int _total; private long _requestId; private long _requestTime; - private String _target; private int _allocationsSinceWait; private boolean _aborted; private boolean _waited; final List<Request> satisfiedBuffer; private CompleteListener _lsnr; private Object _attachment; + private final int _priority; - public SimpleRequest() { + /** + * @param target for debugging, to be removed + */ + public SimpleRequest(int bytes, int priority) { satisfiedBuffer = new ArrayList(1); - init(0, 0, null); - } - public SimpleRequest(int in, int out, String target, CompleteListener lsnr, Object attachment) { - satisfiedBuffer = new ArrayList(1); - _lsnr = lsnr; - _attachment = attachment; - init(in, out, target); - } - public void init(int in, int out, String target) { - _waited = false; - _inTotal = in; - _outTotal = out; - _inAllocated = 0; - _outAllocated = 0; - _aborted = false; - _target = target; - satisfiedBuffer.clear(); - _requestId = ++__requestId; - _requestTime = now(); + _total = bytes; + _priority = priority; } - public String getRequestName() { return "Req" + _requestId + " to " + _target; } + public long getRequestTime() { return _requestTime; } - public int getTotalOutboundRequested() { return _outTotal; } - public int getPendingOutboundRequested() { return _outTotal - _outAllocated; } - public int getTotalInboundRequested() { return _inTotal; } - public int getPendingInboundRequested() { return _inTotal - _inAllocated; } + public int getTotalRequested() { return _total; } + public int getPendingRequested() { return _total - _allocated; } public boolean getAborted() { return _aborted; } public void abort() { _aborted = true; } public CompleteListener getCompleteListener() { return _lsnr; } + public void setCompleteListener(CompleteListener lsnr) { boolean complete = false; - synchronized (SimpleRequest.this) { + synchronized (this) { _lsnr = lsnr; if (isComplete()) { complete = true; } } if (complete && lsnr != null) { - if (_log.shouldLog(Log.INFO)) - _log.info("complete listener set AND completed: " + lsnr); - lsnr.complete(SimpleRequest.this); + //if (_log.shouldLog(Log.INFO)) + // _log.info("complete listener set AND completed: " + lsnr); + lsnr.complete(this); } } - private boolean isComplete() { return (_outAllocated >= _outTotal) && (_inAllocated >= _inTotal); } + private boolean isComplete() { return _allocated >= _total; } public void waitForNextAllocation() { _waited = true; _allocationsSinceWait = 0; boolean complete = false; try { - synchronized (SimpleRequest.this) { + synchronized (this) { if (isComplete()) complete = true; else - SimpleRequest.this.wait(); + wait(); } } catch (InterruptedException ie) {} if (complete && _lsnr != null) - _lsnr.complete(SimpleRequest.this); + _lsnr.complete(this); } + int getAllocationsSinceWait() { return _waited ? _allocationsSinceWait : 0; } - void allocateBytes(int in, int out) { - _inAllocated += in; - _outAllocated += out; + + void allocateBytes(int bytes) { + _allocated += bytes; if (_lsnr == null) _allocationsSinceWait++; - if (isComplete()) { - if (_log.shouldLog(Log.INFO)) - _log.info("allocate " + in +"/"+ out + " completed, listener=" + _lsnr); - } + //if (isComplete()) { + // if (_log.shouldLog(Log.INFO)) + // _log.info("allocate " + bytes + " completed, listener=" + _lsnr); + //} //notifyAllocation(); // handled within the satisfy* methods } + void notifyAllocation() { boolean complete = false; - synchronized (SimpleRequest.this) { + synchronized (this) { if (isComplete()) complete = true; - SimpleRequest.this.notifyAll(); + notifyAll(); } if (complete && _lsnr != null) { - _lsnr.complete(SimpleRequest.this); - if (_log.shouldLog(Log.INFO)) - _log.info("at completion for " + _inTotal + "/" + _outTotal - + ", recvBps=" + _recvBps + "/"+ _recvBps15s + " listener is " + _lsnr); + _lsnr.complete(this); + //if (_log.shouldLog(Log.INFO)) + // _log.info("at completion for " + _total + // + ", recvBps=" + _recvBps + "/"+ _recvBps15s + " listener is " + _lsnr); } } + public void attach(Object obj) { _attachment = obj; } public Object attachment() { return _attachment; } + + // PQEntry methods + public int getPriority() { return _priority; }; + public void setSeqNum(long num) { _requestId = num; }; + public long getSeqNum() { return _requestId; }; + @Override - public String toString() { return getRequestName(); } + public String toString() { + return "Req" + _requestId + " priority " + _priority + + _allocated + '/' + _total + " bytes"; + } } /** - * This is somewhat complicated by having both - * inbound and outbound in a single request. - * Making a request unidirectional would - * be a good simplification. - * But NTCP would have to be changed as it puts them on one queue. + * A bandwidth request, either inbound or outbound. */ - public interface Request { - /** describe this particular request */ - public String getRequestName(); + public interface Request extends PQEntry { /** when was the request made? */ public long getRequestTime(); - /** how many outbound bytes were requested? */ - public int getTotalOutboundRequested(); - /** how many outbound bytes were requested and haven't yet been allocated? */ - public int getPendingOutboundRequested(); - /** how many inbound bytes were requested? */ - public int getTotalInboundRequested(); - /** how many inbound bytes were requested and haven't yet been allocated? */ - public int getPendingInboundRequested(); + /** how many bytes were requested? */ + public int getTotalRequested(); + /** how many bytes were requested and haven't yet been allocated? */ + public int getPendingRequested(); /** block until we are allocated some more bytes */ public void waitForNextAllocation(); /** we no longer want the data requested (the connection closed) */ public void abort(); /** was this request aborted? */ public boolean getAborted(); - /** thar be dragons */ - public void init(int in, int out, String target); public void setCompleteListener(CompleteListener lsnr); /** Only supported if the request is not satisfied */ public void attach(Object obj); @@ -943,14 +914,12 @@ public class FIFOBandwidthLimiter { private static class NoopRequest implements Request { public void abort() {} public boolean getAborted() { return false; } - public int getPendingInboundRequested() { return 0; } - public int getPendingOutboundRequested() { return 0; } - public String getRequestName() { return "noop"; } + public int getPendingRequested() { return 0; } + @Override + public String toString() { return "noop"; } public long getRequestTime() { return 0; } - public int getTotalInboundRequested() { return 0; } - public int getTotalOutboundRequested() { return 0; } + public int getTotalRequested() { return 0; } public void waitForNextAllocation() {} - public void init(int in, int out, String target) {} public CompleteListener getCompleteListener() { return null; } public void setCompleteListener(CompleteListener lsnr) { lsnr.complete(NoopRequest.this); @@ -959,5 +928,9 @@ public class FIFOBandwidthLimiter { throw new UnsupportedOperationException("Don't attach to a satisfied request"); } public Object attachment() { return null; } + // PQEntry methods + public int getPriority() { return 0; }; + public void setSeqNum(long num) {}; + public long getSeqNum() { return 0; }; } } diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java index ddcea3576087cbd6a3299ca7415e529932712a1e..48717ecb84407ef1c9f3a49e32fc4b2fd4dda151 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java @@ -10,12 +10,12 @@ import net.i2p.data.DataHelper; import net.i2p.util.Log; /** - * Thread that runs every 100 ms to "give" bandwidth to + * Thread that runs several times a second to "give" bandwidth to * FIFOBandwidthLimiter. * Instantiated by FIFOBandwidthLimiter. * * As of 0.8.12, this also contains a counter for outbound participating bandwidth. - * This was a good place for it since we needed a 100ms thread for it. + * This was a good place for it since we needed a thread for it. * * Public only for the properties and defaults. */ @@ -72,9 +72,9 @@ public class FIFOBandwidthRefiller implements Runnable { /** * how often we replenish the queues. - * the bandwidth limiter is configured to expect an update 10 times per second + * the bandwidth limiter will get an update this often (ms) */ - private static final long REPLENISH_FREQUENCY = 100; + private static final long REPLENISH_FREQUENCY = 40; FIFOBandwidthRefiller(I2PAppContext context, FIFOBandwidthLimiter limiter) { _limiter = limiter; @@ -293,14 +293,14 @@ public class FIFOBandwidthRefiller implements Runnable { */ private static final int TOTAL_TIME = 4000; private static final int PERIODS = TOTAL_TIME / (int) REPLENISH_FREQUENCY; - /** count in current 100 ms period */ + /** count in current replenish period */ private final AtomicInteger _currentParticipating = new AtomicInteger(); private long _lastPartUpdateTime; private int _lastTotal; /** the actual length of last total period as coalesced (nominally TOTAL_TIME) */ private long _lastTotalTime; private int _lastIndex; - /** buffer of count per 100 ms period, last is at _lastIndex, older at higher indexes (wraps) */ + /** buffer of count per replenish period, last is at _lastIndex, older at higher indexes (wraps) */ private final int[] _counts = new int[PERIODS]; /** the actual length of the period (nominally REPLENISH_FREQUENCY) */ private final long[] _times = new long[PERIODS]; @@ -344,7 +344,7 @@ public class FIFOBandwidthRefiller implements Runnable { } /** - * Run once every 100 ms + * Run once every replenish period * * @since 0.8.12 */ diff --git a/router/java/src/net/i2p/router/transport/GetBidsJob.java b/router/java/src/net/i2p/router/transport/GetBidsJob.java index e014cc6411842a66f29305ee85f72004f74168ce..4215d8f0d174bbf79f98debad2c5b2c9486bd933 100644 --- a/router/java/src/net/i2p/router/transport/GetBidsJob.java +++ b/router/java/src/net/i2p/router/transport/GetBidsJob.java @@ -43,11 +43,11 @@ class GetBidsJob extends JobImpl { Hash to = msg.getTarget().getIdentity().getHash(); msg.timestamp("bid"); - if (context.shitlist().isShitlisted(to)) { + if (context.banlist().isBanlisted(to)) { if (log.shouldLog(Log.WARN)) - log.warn("Attempt to send a message to a shitlisted peer - " + to); + log.warn("Attempt to send a message to a banlisted peer - " + to); //context.messageRegistry().peerFailed(to); - context.statManager().addRateData("transport.bidFailShitlisted", msg.getLifetime(), 0); + context.statManager().addRateData("transport.bidFailBanlisted", msg.getLifetime(), 0); fail(context, msg); return; } @@ -67,7 +67,7 @@ class GetBidsJob extends JobImpl { if (failedCount == 0) { context.statManager().addRateData("transport.bidFailNoTransports", msg.getLifetime(), 0); // This used to be "no common transports" but it is almost always no transports at all - context.shitlist().shitlistRouter(to, _x("No transports (hidden or starting up?)")); + context.banlist().banlistRouter(to, _x("No transports (hidden or starting up?)")); } else if (failedCount >= facade.getTransportCount()) { context.statManager().addRateData("transport.bidFailAllTransports", msg.getLifetime(), 0); // fail after all transports were unsuccessful diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java index 05bfba0bfdf6b9e114970d79d9723df463cc84be..14ee0f3237a38474aad89c85c551a05114a1c95e 100644 --- a/router/java/src/net/i2p/router/transport/TransportImpl.java +++ b/router/java/src/net/i2p/router/transport/TransportImpl.java @@ -269,7 +269,7 @@ public abstract class TransportImpl implements Transport { + " to " + msg.getTarget().getIdentity().getHash().toBase64() + " (details: " + msg + ')'); if (msg.getExpiration() < _context.clock().now()) - _context.statManager().addRateData("transport.expiredOnQueueLifetime", lifetime, lifetime); + _context.statManager().addRateData("transport.expiredOnQueueLifetime", lifetime); if (allowRequeue) { if ( ( (msg.getExpiration() <= 0) || (msg.getExpiration() > _context.clock().now()) ) @@ -343,7 +343,7 @@ public abstract class TransportImpl implements Transport { if (sendSuccessful) { // TODO fix this stat for SSU ticket #698 - _context.statManager().addRateData("transport.sendProcessingTime", lifetime, lifetime); + _context.statManager().addRateData("transport.sendProcessingTime", lifetime); // object churn. 33 ms for NTCP and 788 for SSU, but meaningless due to // differences in how it's computed (immediate vs. round trip) //_context.statManager().addRateData("transport.sendProcessingTime." + getStyle(), lifetime, 0); @@ -351,7 +351,7 @@ public abstract class TransportImpl implements Transport { _context.statManager().addRateData("transport.sendMessageSize", msg.getMessageSize(), sendTime); } else { _context.profileManager().messageFailed(msg.getTarget().getIdentity().getHash(), getStyle()); - _context.statManager().addRateData("transport.sendMessageFailureLifetime", lifetime, lifetime); + _context.statManager().addRateData("transport.sendMessageFailureLifetime", lifetime); } } @@ -433,9 +433,9 @@ public abstract class TransportImpl implements Transport { _context.statManager().addRateData("transport.receiveMessageSize", bytesReceived, msToReceive); } - _context.statManager().addRateData("transport.receiveMessageTime", msToReceive, msToReceive); + _context.statManager().addRateData("transport.receiveMessageTime", msToReceive); if (msToReceive > 1000) { - _context.statManager().addRateData("transport.receiveMessageTimeSlow", msToReceive, msToReceive); + _context.statManager().addRateData("transport.receiveMessageTimeSlow", msToReceive); } //// this functionality is built into the InNetMessagePool @@ -550,8 +550,8 @@ public abstract class TransportImpl implements Transport { } /** called when we establish a peer connection (outbound or inbound) */ public void markReachable(Hash peer, boolean isInbound) { - // if *some* transport can reach them, then we shouldn't shitlist 'em - _context.shitlist().unshitlistRouter(peer); + // if *some* transport can reach them, then we shouldn't banlist 'em + _context.banlist().unbanlistRouter(peer); synchronized (_unreachableEntries) { _unreachableEntries.remove(peer); } diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index fe44032c0f29e3b7e0253a5ea047e0eb54b81df8..0915359110cbe701131c81e30bb448da573201aa 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -57,9 +57,9 @@ public class TransportManager implements TransportEventListener { public TransportManager(RouterContext context) { _context = context; _log = _context.logManager().getLog(TransportManager.class); - _context.statManager().createRateStat("transport.shitlistOnUnreachable", "Add a peer to the shitlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); - _context.statManager().createRateStat("transport.noBidsYetNotAllUnreachable", "Add a peer to the shitlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); - _context.statManager().createRateStat("transport.bidFailShitlisted", "Could not attempt to bid on message, as they were shitlisted", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); + _context.statManager().createRateStat("transport.banlistOnUnreachable", "Add a peer to the banlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); + _context.statManager().createRateStat("transport.noBidsYetNotAllUnreachable", "Add a peer to the banlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); + _context.statManager().createRateStat("transport.bidFailBanlisted", "Could not attempt to bid on message, as they were banlisted", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); _context.statManager().createRateStat("transport.bidFailSelf", "Could not attempt to bid on message, as it targeted ourselves", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); _context.statManager().createRateStat("transport.bidFailNoTransports", "Could not attempt to bid on message, as none of the transports could attempt it", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); _context.statManager().createRateStat("transport.bidFailAllTransports", "Could not attempt to bid on message, as all of the transports had failed", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 }); @@ -418,8 +418,8 @@ public class TransportManager implements TransportEventListener { for (Transport t : _transports.values()) { if (t.isUnreachable(peer)) { unreachableTransports++; - // this keeps GetBids() from shitlisting for "no common transports" - // right after we shitlisted for "unreachable on any transport" below... + // this keeps GetBids() from banlisting for "no common transports" + // right after we banlisted for "unreachable on any transport" below... msg.transportFailed(t.getStyle()); continue; } @@ -434,7 +434,7 @@ public class TransportManager implements TransportEventListener { TransportBid bid = t.bid(msg.getTarget(), msg.getMessageSize()); if (bid != null) { if (bid.getLatencyMs() == TransportBid.TRANSIENT_FAIL) - // this keeps GetBids() from shitlisting for "no common transports" + // this keeps GetBids() from banlisting for "no common transports" msg.transportFailed(t.getStyle()); else if ( (rv == null) || (rv.getLatencyMs() > bid.getLatencyMs()) ) rv = bid; @@ -449,10 +449,10 @@ public class TransportManager implements TransportEventListener { } } if (unreachableTransports >= _transports.size()) { - // Don't shitlist if we aren't talking to anybody, as we may have a network connection issue + // Don't banlist if we aren't talking to anybody, as we may have a network connection issue if (unreachableTransports >= _transports.size() && countActivePeers() > 0) { - _context.statManager().addRateData("transport.shitlistOnUnreachable", msg.getLifetime(), msg.getLifetime()); - _context.shitlist().shitlistRouter(peer, _x("Unreachable on any transport")); + _context.statManager().addRateData("transport.banlistOnUnreachable", msg.getLifetime(), msg.getLifetime()); + _context.banlist().banlistRouter(peer, _x("Unreachable on any transport")); } } else if (rv == null) { _context.statManager().addRateData("transport.noBidsYetNotAllUnreachable", unreachableTransports, msg.getLifetime()); diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index aecd726bd3e80b10624ebdbbc75efc2f2017f260..63acc65c09d80c86902a285bd96d1dd5ae188fc4 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -81,13 +81,7 @@ class UPnPManager { if (!_isRunning) { // Do we have a non-loopback, non-broadcast address? // If not, that's why it failed (HTTPServer won't start) - Set<String> addrs = Addresses.getAddresses(true, false); - addrs.remove("0.0.0.0"); - for (Iterator<String> iter = addrs.iterator(); iter.hasNext(); ) { - if (iter.next().startsWith("127.")) - iter.remove(); - } - if (addrs.isEmpty()) + if (!Addresses.isConnected()) _log.logAlways(Log.WARN, "UPnP start failed - no network connection?"); else _log.error("UPnP start failed - port conflict?"); diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java index a39395d5359dc4381451e13f92005c723cfd9ab7..04da0506b4ff9f37f8c8f38e0cb4cb67c47a75e6 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java @@ -395,8 +395,8 @@ class EstablishState { } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidOutboundSkew", diff, 0); _transport.markReachable(_con.getRemotePeer().calculateHash(), false); - // Only shitlist if we know what time it is - _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff), + // Only banlist if we know what time it is + _context.banlist().banlistRouter(DataHelper.formatDuration(diff), _con.getRemotePeer().calculateHash(), _x("Excessive clock skew: {0}")); _transport.setLastBadSkew(_tsA- _tsB); @@ -586,14 +586,14 @@ class EstablishState { // get inet-addr InetAddress addr = this._con.getChannel().socket().getInetAddress(); byte[] ip = (addr == null) ? null : addr.getAddress(); - if (_context.shitlist().isShitlistedForever(alice.calculateHash())) { + if (_context.banlist().isBanlistedForever(alice.calculateHash())) { if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping inbound connection from permanently shitlisted peer: " + alice.calculateHash().toBase64()); + _log.warn("Dropping inbound connection from permanently banlisted peer: " + alice.calculateHash().toBase64()); // So next time we will not accept the con from this IP, // rather than doing the whole handshake if(ip != null) _context.blocklist().add(ip); - fail("Peer is shitlisted forever: " + alice.calculateHash().toBase64()); + fail("Peer is banlisted forever: " + alice.calculateHash().toBase64()); return; } if(ip != null) @@ -612,8 +612,8 @@ class EstablishState { } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidInboundSkew", diff, 0); _transport.markReachable(alice.calculateHash(), true); - // Only shitlist if we know what time it is - _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff), + // Only banlist if we know what time it is + _context.banlist().banlistRouter(DataHelper.formatDuration(diff), alice.calculateHash(), _x("Excessive clock skew: {0}")); _transport.setLastBadSkew(tsA- _tsB); diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index bbf9e4f1f1b0fe92661c9286940a0ab0220545e1..9149323c8cbcdc87858138e834268b25a6e3fa6e 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -375,8 +375,8 @@ class EventPumper implements Runnable { */ public void wantsWrite(NTCPConnection con, byte data[]) { ByteBuffer buf = ByteBuffer.wrap(data); - FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().requestOutbound(data.length, "NTCP write");//con, buf); - if (req.getPendingOutboundRequested() > 0) { + FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().requestOutbound(data.length, 0, "NTCP write");//con, buf); + if (req.getPendingRequested() > 0) { if (_log.shouldLog(Log.INFO)) _log.info("queued write on " + con + " for " + data.length); _context.statManager().addRateData("ntcp.wantsQueuedWrite", 1); @@ -535,7 +535,7 @@ class EventPumper implements Runnable { if (_log.shouldLog(Log.INFO)) _log.info("Failed outbound " + con, ioe); con.close(); - //_context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "Error connecting", NTCPTransport.STYLE); + //_context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "Error connecting", NTCPTransport.STYLE); _transport.markUnreachable(con.getRemotePeer().calculateHash()); _context.statManager().addRateData("ntcp.connectFailedTimeoutIOE", 1); } catch (NoConnectionPendingException ncpe) { @@ -584,7 +584,7 @@ class EventPumper implements Runnable { // ZERO COPY. The buffer will be returned in Reader.processRead() buf.flip(); FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().requestInbound(read, "NTCP read"); //con, buf); - if (req.getPendingInboundRequested() > 0) { + if (req.getPendingRequested() > 0) { // rare since we generally don't throttle inbound key.interestOps(key.interestOps() & ~SelectionKey.OP_READ); //if (_log.shouldLog(Log.DEBUG)) @@ -790,10 +790,10 @@ class EventPumper implements Runnable { _context.statManager().addRateData("ntcp.connectFailedIOE", 1); _transport.markUnreachable(con.getRemotePeer().calculateHash()); //if (ntcpOnly(con)) { - // _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage()); + // _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage()); // con.close(false); //} else { - // _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage(), NTCPTransport.STYLE); + // _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage(), NTCPTransport.STYLE); con.close(true); //} } catch (UnresolvedAddressException uae) { @@ -801,10 +801,10 @@ class EventPumper implements Runnable { _context.statManager().addRateData("ntcp.connectFailedUnresolved", 1); _transport.markUnreachable(con.getRemotePeer().calculateHash()); //if (ntcpOnly(con)) { - // _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage()); + // _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage()); // con.close(false); //} else { - // _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage(), NTCPTransport.STYLE); + // _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage(), NTCPTransport.STYLE); con.close(true); //} } catch (CancelledKeyException cke) { @@ -823,7 +823,7 @@ class EventPumper implements Runnable { } /** - * If the other peer only supports ntcp, we should shitlist them when we can't reach 'em, + * If the other peer only supports ntcp, we should banlist them when we can't reach 'em, * but if they support other transports (eg ssu) we should allow those transports to be * tried as well. */ diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index eb84d6c909255b2ba059f6604139934e8cb7b55e..b646c8b1a90ec1c85c2bda4a5b89b1f94522db20 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -27,6 +27,7 @@ import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.transport.FIFOBandwidthLimiter; import net.i2p.router.util.CoDelPriorityBlockingQueue; +import net.i2p.router.util.PriBlockingQueue; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.HexDump; import net.i2p.util.Log; @@ -56,11 +57,13 @@ import net.i2p.util.Log; *</pre> * */ -class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { +class NTCPConnection { private final RouterContext _context; private final Log _log; private SocketChannel _chan; private SelectionKey _conKey; + private final FIFOBandwidthLimiter.CompleteListener _inboundListener; + private final FIFOBandwidthLimiter.CompleteListener _outboundListener; /** * queue of ByteBuffer containing data we have read and are ready to process, oldest first * unbounded and lockless @@ -73,7 +76,8 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { */ private final Queue<ByteBuffer> _writeBufs; /** Requests that were not granted immediately */ - private final Set<FIFOBandwidthLimiter.Request> _bwRequests; + private final Set<FIFOBandwidthLimiter.Request> _bwInRequests; + private final Set<FIFOBandwidthLimiter.Request> _bwOutRequests; private boolean _established; private long _establishedOn; private EstablishState _establishState; @@ -86,7 +90,8 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { /** * pending unprepared OutNetMessage instances */ - private final CoDelPriorityBlockingQueue<OutNetMessage> _outbound; + //private final CoDelPriorityBlockingQueue<OutNetMessage> _outbound; + private final PriBlockingQueue<OutNetMessage> _outbound; /** * current prepared OutNetMessage, or null - synchronize on _outbound to modify * FIXME why do we need this??? @@ -154,14 +159,18 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _chan = chan; _readBufs = new ConcurrentLinkedQueue(); _writeBufs = new ConcurrentLinkedQueue(); - _bwRequests = new ConcurrentHashSet(2); - _outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); + _bwInRequests = new ConcurrentHashSet(2); + _bwOutRequests = new ConcurrentHashSet(8); + //_outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); + _outbound = new PriBlockingQueue(ctx, "NTCP-Connection", 32); _isInbound = true; _decryptBlockBuf = new byte[BLOCK_SIZE]; _curReadState = new ReadState(); _establishState = new EstablishState(ctx, transport, this); _conKey = key; _conKey.attach(this); + _inboundListener = new InboundListener(); + _outboundListener = new OutboundListener(); initialize(); } @@ -178,11 +187,15 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _remAddr = remAddr; _readBufs = new ConcurrentLinkedQueue(); _writeBufs = new ConcurrentLinkedQueue(); - _bwRequests = new ConcurrentHashSet(8); - _outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); + _bwInRequests = new ConcurrentHashSet(2); + _bwOutRequests = new ConcurrentHashSet(8); + //_outbound = new CoDelPriorityBlockingQueue(ctx, "NTCP-Connection", 32); + _outbound = new PriBlockingQueue(ctx, "NTCP-Connection", 32); _isInbound = false; _decryptBlockBuf = new byte[BLOCK_SIZE]; _curReadState = new ReadState(); + _inboundListener = new InboundListener(); + _outboundListener = new OutboundListener(); initialize(); } @@ -283,12 +296,16 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _transport.getReader().connectionClosed(this); _transport.getWriter().connectionClosed(this); - for (Iterator<FIFOBandwidthLimiter.Request> iter = _bwRequests.iterator(); iter.hasNext(); ) { - iter.next().abort(); + for (FIFOBandwidthLimiter.Request req :_bwInRequests) { + req.abort(); // we would like to return read ByteBuffers via EventPumper.releaseBuf(), // but we can't risk releasing it twice } - _bwRequests.clear(); + _bwInRequests.clear(); + for (FIFOBandwidthLimiter.Request req :_bwOutRequests) { + req.abort(); + } + _bwOutRequests.clear(); _writeBufs.clear(); ByteBuffer bb; @@ -297,7 +314,8 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { } List<OutNetMessage> pending = new ArrayList(); - _outbound.drainAllTo(pending); + //_outbound.drainAllTo(pending); + _outbound.drainTo(pending); for (OutNetMessage msg : pending) { Object buf = msg.releasePreparationBuffer(); if (buf != null) @@ -485,7 +503,7 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { _establishedOn = System.currentTimeMillis(); _establishState = null; _transport.markReachable(getRemotePeer().calculateHash(), false); - //_context.shitlist().unshitlistRouter(getRemotePeer().calculateHash(), NTCPTransport.STYLE); + //_context.banlist().unbanlistRouter(getRemotePeer().calculateHash(), NTCPTransport.STYLE); boolean msgs = !_outbound.isEmpty(); _nextMetaTime = System.currentTimeMillis() + (META_FREQUENCY / 2) + _context.random().nextInt(META_FREQUENCY); _nextInfoTime = System.currentTimeMillis() + (INFO_FREQUENCY / 2) + _context.random().nextInt(INFO_FREQUENCY); @@ -848,12 +866,12 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { /** * The FifoBandwidthLimiter.CompleteListener callback. - * Does the delayed read or write. + * Does the delayed read. */ - public void complete(FIFOBandwidthLimiter.Request req) { - removeRequest(req); - ByteBuffer buf = (ByteBuffer)req.attachment(); - if (req.getTotalInboundRequested() > 0) { + private class InboundListener implements FIFOBandwidthLimiter.CompleteListener { + public void complete(FIFOBandwidthLimiter.Request req) { + removeIBRequest(req); + ByteBuffer buf = (ByteBuffer)req.attachment(); if (_closed) { EventPumper.releaseBuf(buf); return; @@ -863,20 +881,40 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { // our reads used to be bw throttled (during which time we were no // longer interested in reading from the network), but we aren't // throttled anymore, so we should resume being interested in reading - _transport.getPumper().wantsRead(this); + _transport.getPumper().wantsRead(NTCPConnection.this); //_transport.getReader().wantsRead(this); - } else if (req.getTotalOutboundRequested() > 0 && !_closed) { - _context.statManager().addRateData("ntcp.throttledWriteComplete", (System.currentTimeMillis()-req.getRequestTime())); - write(buf); } } - private void removeRequest(FIFOBandwidthLimiter.Request req) { - _bwRequests.remove(req); + /** + * The FifoBandwidthLimiter.CompleteListener callback. + * Does the delayed write. + */ + private class OutboundListener implements FIFOBandwidthLimiter.CompleteListener { + public void complete(FIFOBandwidthLimiter.Request req) { + removeOBRequest(req); + ByteBuffer buf = (ByteBuffer)req.attachment(); + if (!_closed) { + _context.statManager().addRateData("ntcp.throttledWriteComplete", (System.currentTimeMillis()-req.getRequestTime())); + write(buf); + } + } + } + + private void removeIBRequest(FIFOBandwidthLimiter.Request req) { + _bwInRequests.remove(req); + } + + private void addIBRequest(FIFOBandwidthLimiter.Request req) { + _bwInRequests.add(req); + } + + private void removeOBRequest(FIFOBandwidthLimiter.Request req) { + _bwOutRequests.remove(req); } - private void addRequest(FIFOBandwidthLimiter.Request req) { - _bwRequests.add(req); + private void addOBRequest(FIFOBandwidthLimiter.Request req) { + _bwOutRequests.add(req); } /** @@ -887,15 +925,15 @@ class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { */ public void queuedRecv(ByteBuffer buf, FIFOBandwidthLimiter.Request req) { req.attach(buf); - req.setCompleteListener(this); - addRequest(req); + req.setCompleteListener(_inboundListener); + addIBRequest(req); } /** ditto for writes */ public void queuedWrite(ByteBuffer buf, FIFOBandwidthLimiter.Request req) { req.attach(buf); - req.setCompleteListener(this); - addRequest(req); + req.setCompleteListener(_outboundListener); + addOBRequest(req); } /** diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index c063326d43545434dc8de5c79216ddc12c09754e..9877b698ee48cc13a23ee142241f39b94e6d2828 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -70,11 +70,11 @@ public class NTCPTransport extends TransportImpl { private static final long[] RATES = { 10*60*1000 }; /** - * To prevent trouble. To be raised to 1024 in 0.9.4. + * To prevent trouble. 1024 as of 0.9.4. * * @since 0.9.3 */ - private static final int MIN_PEER_PORT = 500; + private static final int MIN_PEER_PORT = 1024; // Opera doesn't have the char, TODO check UA //private static final String THINSP = " / "; @@ -94,7 +94,7 @@ public class NTCPTransport extends TransportImpl { _context.statManager().createRateStat("ntcp.failsafeCloses", "How many times do we need to proactively close an idle connection to a peer at any given failsafe pass?", "ntcp", RATES); _context.statManager().createRateStat("ntcp.failsafeInvalid", "How many times do we close a connection to a peer to work around a JVM bug?", "ntcp", RATES); _context.statManager().createRateStat("ntcp.accept", "", "ntcp", RATES); - _context.statManager().createRateStat("ntcp.attemptShitlistedPeer", "", "ntcp", RATES); + _context.statManager().createRateStat("ntcp.attemptBanlistedPeer", "", "ntcp", RATES); _context.statManager().createRateStat("ntcp.attemptUnreachablePeer", "", "ntcp", RATES); _context.statManager().createRateStat("ntcp.closeOnBacklog", "", "ntcp", RATES); _context.statManager().createRateStat("ntcp.connectFailedIOE", "", "ntcp", RATES); @@ -167,7 +167,7 @@ public class NTCPTransport extends TransportImpl { void inboundEstablished(NTCPConnection con) { _context.statManager().addRateData("ntcp.inboundEstablished", 1); markReachable(con.getRemotePeer().calculateHash(), true); - //_context.shitlist().unshitlistRouter(con.getRemotePeer().calculateHash()); + //_context.banlist().unbanlistRouter(con.getRemotePeer().calculateHash()); NTCPConnection old; synchronized (_conLock) { old = _conByIdent.put(con.getRemotePeer().calculateHash(), con); @@ -281,10 +281,10 @@ public class NTCPTransport extends TransportImpl { return null; } Hash peer = toAddress.getIdentity().calculateHash(); - if (_context.shitlist().isShitlisted(peer, STYLE)) { - // we aren't shitlisted in general (since we are trying to get a bid), but we have - // recently shitlisted the peer on the NTCP transport, so don't try it - _context.statManager().addRateData("ntcp.attemptShitlistedPeer", 1); + if (_context.banlist().isBanlisted(peer, STYLE)) { + // we aren't banlisted in general (since we are trying to get a bid), but we have + // recently banlisted the peer on the NTCP transport, so don't try it + _context.statManager().addRateData("ntcp.attemptBanlistedPeer", 1); return null; } else if (isUnreachable(peer)) { _context.statManager().addRateData("ntcp.attemptUnreachablePeer", 1); @@ -302,7 +302,7 @@ public class NTCPTransport extends TransportImpl { if (addr == null) { markUnreachable(peer); //_context.statManager().addRateData("ntcp.bidRejectedNoNTCPAddress", 1); - //_context.shitlist().shitlistRouter(toAddress.getIdentity().calculateHash(), "No NTCP address", STYLE); + //_context.banlist().banlistRouter(toAddress.getIdentity().calculateHash(), "No NTCP address", STYLE); if (_log.shouldLog(Log.DEBUG)) _log.debug("no bid when trying to send to " + peer + " as they don't have an ntcp address"); return null; @@ -311,7 +311,7 @@ public class NTCPTransport extends TransportImpl { if ( (addr.getPort() < MIN_PEER_PORT) || (ip == null) ) { _context.statManager().addRateData("ntcp.connectFailedInvalidPort", 1); markUnreachable(peer); - //_context.shitlist().shitlistRouter(toAddress.getIdentity().calculateHash(), "Invalid NTCP address", STYLE); + //_context.banlist().banlistRouter(toAddress.getIdentity().calculateHash(), "Invalid NTCP address", STYLE); if (_log.shouldLog(Log.DEBUG)) _log.debug("no bid when trying to send to " + peer + " as they don't have a valid ntcp address"); return null; diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index 88e89131fac6bc9b0e2b9a0d004a1e8cf503f308..6cfa3cdc333da806eae1b96eb814ce6a2f204786 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -154,8 +154,8 @@ class EstablishmentManager { _context.statManager().createRateStat("udp.sendACKPartial", "Number of partial ACKs sent (duration == number of full ACKs in that ack packet)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.sendBps", "How fast we are transmitting when a packet is acked", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.receiveBps", "How fast we are receiving when a packet is fully received (at most one per second)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.mtuIncrease", "How many retransmissions have there been to the peer when the MTU was increased (period is total packets transmitted)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.mtuDecrease", "How many retransmissions have there been to the peer when the MTU was decreased (period is total packets transmitted)", "udp", UDPTransport.RATES); + _context.statManager().createRateStat("udp.mtuIncrease", "How many retransmissions have there been to the peer when the MTU was increased", "udp", UDPTransport.RATES); + _context.statManager().createRateStat("udp.mtuDecrease", "How many retransmissions have there been to the peer when the MTU was decreased", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.rejectConcurrentActive", "How many messages are currently being sent to the peer when we reject it (period is how many concurrent packets we allow)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.allowConcurrentActive", "How many messages are currently being sent to the peer when we accept it (period is how many concurrent packets we allow)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.rejectConcurrentSequence", "How many consecutive concurrency rejections have we had when we stop rejecting (period is how many concurrent packets we are on)", "udp", UDPTransport.RATES); @@ -233,7 +233,7 @@ class EstablishmentManager { RouterIdentity toIdentity = toRouterInfo.getIdentity(); Hash toHash = toIdentity.calculateHash(); if (toRouterInfo.getNetworkId() != Router.NETWORK_ID) { - _context.shitlist().shitlistRouter(toHash); + _context.banlist().banlistRouter(toHash); _transport.markUnreachable(toHash); _transport.failed(msg, "Remote peer is on the wrong network, cannot establish"); return; @@ -252,7 +252,7 @@ class EstablishmentManager { Arrays.equals(maybeTo.getIP(), _transport.getExternalIP())) { _transport.failed(msg, "Remote peer's IP isn't valid"); _transport.markUnreachable(toHash); - //_context.shitlist().shitlistRouter(msg.getTarget().getIdentity().calculateHash(), "Invalid SSU address", UDPTransport.STYLE); + //_context.banlist().banlistRouter(msg.getTarget().getIdentity().calculateHash(), "Invalid SSU address", UDPTransport.STYLE); _context.statManager().addRateData("udp.establishBadIP", 1); return; } @@ -707,15 +707,15 @@ class EstablishmentManager { /** * dont send our info immediately, just send a small data packet, and 5-10s later, - * if the peer isnt shitlisted, *then* send them our info. this will help kick off + * if the peer isnt banlisted, *then* send them our info. this will help kick off * the oldnet * The "oldnet" was < 0.6.1.10, it is long gone. * The delay really slows down the network. - * The peer is unshitlisted and marked reachable by addRemotePeerState() which calls markReachable() + * The peer is unbanlisted and marked reachable by addRemotePeerState() which calls markReachable() * so the check below is fairly pointless. * If for some strange reason an oldnet router (NETWORK_ID == 1) does show up, * it's handled in UDPTransport.messageReceived() - * (where it will get dropped, marked unreachable and shitlisted at that time). + * (where it will get dropped, marked unreachable and banlisted at that time). */ private void sendInboundComplete(PeerState peer) { // SimpleTimer.getInstance().addEvent(new PublishToNewInbound(peer), 10*1000); @@ -733,15 +733,15 @@ class EstablishmentManager { //_context.simpleScheduler().addEvent(new PublishToNewInbound(peer), 0); Hash hash = peer.getRemotePeer(); - if ((hash != null) && (!_context.shitlist().isShitlisted(hash)) && (!_transport.isUnreachable(hash))) { + if ((hash != null) && (!_context.banlist().isBanlisted(hash)) && (!_transport.isUnreachable(hash))) { // ok, we are fine with them, send them our latest info //if (_log.shouldLog(Log.INFO)) - // _log.info("Publishing to the peer after confirm plus delay (without shitlist): " + peer); + // _log.info("Publishing to the peer after confirm plus delay (without banlist): " + peer); sendOurInfo(peer, true); } else { // nuh uh. if (_log.shouldLog(Log.WARN)) - _log.warn("NOT publishing to the peer after confirm plus delay (WITH shitlist): " + (hash != null ? hash.toString() : "unknown")); + _log.warn("NOT publishing to the peer after confirm plus delay (WITH banlist): " + (hash != null ? hash.toString() : "unknown")); } } @@ -824,8 +824,8 @@ class EstablishmentManager { try { state.generateSessionKey(); } catch (DHSessionKeyBuilder.InvalidPublicParameterException ippe) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Peer " + state + " sent us an invalid DH parameter (or were spoofed)", ippe); + if (_log.shouldLog(Log.WARN)) + _log.warn("Peer " + state + " sent us an invalid DH parameter", ippe); _inboundStates.remove(state.getRemoteHostId()); return; } @@ -1103,9 +1103,9 @@ class EstablishmentManager { case IB_STATE_CONFIRMED_COMPLETELY: RouterIdentity remote = inboundState.getConfirmedIdentity(); if (remote != null) { - if (_context.shitlist().isShitlistedForever(remote.calculateHash())) { + if (_context.banlist().isBanlistedForever(remote.calculateHash())) { if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping inbound connection from permanently shitlisted peer: " + remote.calculateHash()); + _log.warn("Dropping inbound connection from permanently banlisted peer: " + remote.calculateHash()); // So next time we will not accept the con, rather than doing the whole handshake _context.blocklist().add(inboundState.getSentIP()); inboundState.fail(); @@ -1299,7 +1299,7 @@ class EstablishmentManager { } String err = "Took too long to establish OB connection, state = " + outboundState.getState(); Hash peer = outboundState.getRemoteIdentity().calculateHash(); - //_context.shitlist().shitlistRouter(peer, err, UDPTransport.STYLE); + //_context.banlist().banlistRouter(peer, err, UDPTransport.STYLE); _transport.markUnreachable(peer); _transport.dropPeer(peer, false, err); //_context.profileManager().commErrorOccurred(peer); diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java index b49cb0d2612799d6a42d95bcd149c3c42161de55..5ebb64078c3b39d5b84d42a5475c9c7e129546de 100644 --- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java +++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java @@ -143,7 +143,7 @@ class IntroductionManager { continue; } if ( /* _context.profileOrganizer().isFailing(cur.getRemotePeer()) || */ - _context.shitlist().isShitlisted(cur.getRemotePeer()) || + _context.banlist().isBanlisted(cur.getRemotePeer()) || _transport.wasUnreachable(cur.getRemotePeer())) { if (_log.shouldLog(Log.INFO)) _log.info("Peer is failing, shistlisted or was unreachable: " + cur); @@ -255,7 +255,7 @@ class IntroductionManager { try { to = InetAddress.getByAddress(ip); } catch (UnknownHostException uhe) { - // shitlist Bob? + // banlist Bob? if (_log.shouldLog(Log.WARN)) _log.warn("IP for alice to hole punch to is invalid", uhe); _context.statManager().addRateData("udp.relayBadIP", 1); diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java index 797060c5838bfab1fb5a5d5db1103de39934356e..9b0a55221cb76484086c5efe443ee33735596098 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java @@ -265,8 +265,8 @@ class OutboundEstablishState { try { generateSessionKey(); } catch (DHSessionKeyBuilder.InvalidPublicParameterException ippe) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Peer " + getRemoteHostId() + " sent us an invalid DH parameter (or were spoofed)", ippe); + if (_log.shouldLog(Log.WARN)) + _log.warn("Peer " + getRemoteHostId() + " sent us an invalid DH parameter", ippe); valid = false; } if (valid) diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java index d90c24cf1247839aaca5323e394ff630b38948b0..d4c8be83369d1d394157781de1a05b63f5fd952a 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java @@ -80,8 +80,8 @@ class OutboundMessageFragments { _context.statManager().createRateStat("udp.sendAggressiveFailed", "How many volleys was a packet sent before we gave up", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.outboundActiveCount", "How many messages are in the peer's active pool", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.outboundActivePeers", "How many peers we are actively sending to", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.sendRejected", "What volley are we on when the peer was throttled (time == message lifetime)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.partialACKReceived", "How many fragments were partially ACKed (time == message lifetime)", "udp", UDPTransport.RATES); + _context.statManager().createRateStat("udp.sendRejected", "What volley are we on when the peer was throttled", "udp", UDPTransport.RATES); + _context.statManager().createRateStat("udp.partialACKReceived", "How many fragments were partially ACKed", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.sendSparse", "How many fragments were partially ACKed and hence not resent (time == message lifetime)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.sendPiggyback", "How many acks were piggybacked on a data packet (time == message lifetime)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.sendPiggybackPartial", "How many partial acks were piggybacked on a data packet (time == message lifetime)", "udp", UDPTransport.RATES); @@ -152,25 +152,18 @@ class OutboundMessageFragments { public void add(OutNetMessage msg) { I2NPMessage msgBody = msg.getMessage(); RouterInfo target = msg.getTarget(); - if ( (msgBody == null) || (target == null) ) + if (target == null) return; - // todo: make sure the outNetMessage is initialzed once and only once - OutboundMessageState state = new OutboundMessageState(_context); - boolean ok = state.initialize(msg, msgBody); - if (ok) { - PeerState peer = _transport.getPeerState(target.getIdentity().calculateHash()); - if (peer == null) { - _transport.failed(msg, "Peer disconnected quickly"); - state.releaseResources(); - return; - } + PeerState peer = _transport.getPeerState(target.getIdentity().calculateHash()); + try { + // will throw IAE if peer == null + OutboundMessageState state = new OutboundMessageState(_context, msg, peer); peer.add(state); add(peer); - //_context.statManager().addRateData("udp.outboundActiveCount", active, 0); - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn("Error initializing " + msg); + } catch (IllegalArgumentException iae) { + _transport.failed(msg, "Peer disconnected quickly"); + return; } } diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java index 5e8d9a35b4695427995461b0959b994a896bc819..276ec13c3060f0c812917f3044d20898549c5bfe 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java @@ -19,17 +19,19 @@ class OutboundMessageState implements CDPQEntry { private final I2PAppContext _context; private final Log _log; /** may be null if we are part of the establishment */ - private OutNetMessage _message; - private long _messageId; + private final OutNetMessage _message; + private final long _messageId; /** will be null, unless we are part of the establishment */ - private PeerState _peer; - private long _expiration; + private final PeerState _peer; + private final long _expiration; private ByteArray _messageBuf; /** fixed fragment size across the message */ private int _fragmentSize; + /** size of the I2NP message */ + private final int _totalSize; /** sends[i] is how many times the fragment has been sent, or -1 if ACKed */ private short _fragmentSends[]; - private long _startedOn; + private final long _startedOn; private long _nextSendTime; private int _pushCount; private short _maxSends; @@ -59,43 +61,15 @@ class OutboundMessageState implements CDPQEntry { private static final long EXPIRATION = 10*1000; - public OutboundMessageState(I2PAppContext context) { - _context = context; - _log = _context.logManager().getLog(OutboundMessageState.class); - } - -/**** - public boolean initialize(OutNetMessage msg) { - if (msg == null) return false; - try { - return initialize(msg, msg.getMessage(), null); - } catch (OutOfMemoryError oom) { - throw oom; - } catch (Exception e) { - _log.log(Log.CRIT, "Error initializing " + msg, e); - return false; - } - } -****/ - + /** * Called from UDPTransport * TODO make two constructors, remove this, and make more things final * @return success * @throws IAE if too big */ - public boolean initialize(I2NPMessage msg, PeerState peer) { - if (msg == null) - return false; - - try { - return initialize(null, msg, peer); - } catch (OutOfMemoryError oom) { - throw oom; - } catch (Exception e) { - _log.log(Log.CRIT, "Error initializing " + msg, e); - return false; - } + public OutboundMessageState(I2PAppContext context, I2NPMessage msg, PeerState peer) { + this(context, null, msg, peer); } /** @@ -104,18 +78,8 @@ class OutboundMessageState implements CDPQEntry { * @return success * @throws IAE if too big */ - public boolean initialize(OutNetMessage m, I2NPMessage msg) { - if ( (m == null) || (msg == null) ) - return false; - - try { - return initialize(m, msg, null); - } catch (OutOfMemoryError oom) { - throw oom; - } catch (Exception e) { - _log.log(Log.CRIT, "Error initializing " + msg, e); - return false; - } + public OutboundMessageState(I2PAppContext context, OutNetMessage m, PeerState peer) { + this(context, m, m.getMessage(), peer); } /** @@ -124,28 +88,26 @@ class OutboundMessageState implements CDPQEntry { * @return success * @throws IAE if too big */ - private boolean initialize(OutNetMessage m, I2NPMessage msg, PeerState peer) { + private OutboundMessageState(I2PAppContext context, OutNetMessage m, I2NPMessage msg, PeerState peer) { + if (msg == null || peer == null) + throw new IllegalArgumentException(); + _context = context; + _log = _context.logManager().getLog(OutboundMessageState.class); _message = m; _peer = peer; int size = msg.getRawMessageSize(); acquireBuf(size); - try { - int len = msg.toRawByteArray(_messageBuf.getData()); - _messageBuf.setValid(len); - _messageId = msg.getUniqueId(); - - _startedOn = _context.clock().now(); - _nextSendTime = _startedOn; - _expiration = _startedOn + EXPIRATION; - //_expiration = msg.getExpiration(); - - //if (_log.shouldLog(Log.DEBUG)) - // _log.debug("Raw byte array for " + _messageId + ": " + Base64.encode(_messageBuf.getData(), 0, len)); - return true; - } catch (IllegalStateException ise) { - releaseBuf(); - return false; - } + _totalSize = msg.toRawByteArray(_messageBuf.getData()); + _messageBuf.setValid(_totalSize); + _messageId = msg.getUniqueId(); + + _startedOn = _context.clock().now(); + _nextSendTime = _startedOn; + _expiration = _startedOn + EXPIRATION; + //_expiration = msg.getExpiration(); + + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug("Raw byte array for " + _messageId + ": " + Base64.encode(_messageBuf.getData(), 0, len)); } /** @@ -203,7 +165,6 @@ class OutboundMessageState implements CDPQEntry { public OutNetMessage getMessage() { return _message; } public long getMessageId() { return _messageId; } public PeerState getPeer() { return _peer; } - public void setPeer(PeerState peer) { _peer = peer; } public boolean isExpired() { return _expiration < _context.clock().now(); @@ -224,8 +185,7 @@ class OutboundMessageState implements CDPQEntry { ByteArray messageBuf = _messageBuf; int rv = 0; if ( (messageBuf != null) && (fragmentSends != null) ) { - int totalSize = messageBuf.getValid(); - int lastSize = totalSize % _fragmentSize; + int lastSize = _totalSize % _fragmentSize; if (lastSize == 0) lastSize = _fragmentSize; for (int i = 0; i < fragmentSends.length; i++) { @@ -286,11 +246,22 @@ class OutboundMessageState implements CDPQEntry { public long getNextSendTime() { return _nextSendTime; } public void setNextSendTime(long when) { _nextSendTime = when; } + + /** + * The max number of sends for any fragment, which is the + * same as the push count, at least as it's coded now. + */ public int getMaxSends() { return _maxSends; } + + /** + * The number of times we've pushed some fragments, which is the + * same as the max sends, at least as it's coded now. + */ public int getPushCount() { return _pushCount; } /** note that we have pushed the message fragments */ public void push() { + // these will never be different... _pushCount++; if (_pushCount > _maxSends) _maxSends = (short)_pushCount; @@ -301,23 +272,35 @@ class OutboundMessageState implements CDPQEntry { } + /** + * Whether fragment() has been called. + * NOT whether it has more than one fragment. + * + * Caller should synchronize + * + * @return true iff fragment() has been called previously + */ public boolean isFragmented() { return _fragmentSends != null; } /** * Prepare the message for fragmented delivery, using no more than * fragmentSize bytes per fragment. * + * Caller should synchronize + * + * @throws IllegalStateException if called more than once */ public void fragment(int fragmentSize) { - int totalSize = _messageBuf.getValid(); - int numFragments = totalSize / fragmentSize; - if (numFragments * fragmentSize < totalSize) + if (_fragmentSends != null) + throw new IllegalStateException(); + int numFragments = _totalSize / fragmentSize; + if (numFragments * fragmentSize < _totalSize) numFragments++; // This should never happen, as 534 bytes * 64 fragments > 32KB, and we won't bid on > 32KB if (numFragments > InboundMessageState.MAX_FRAGMENTS) - throw new IllegalArgumentException("Fragmenting a " + totalSize + " message into " + numFragments + " fragments - too many!"); + throw new IllegalArgumentException("Fragmenting a " + _totalSize + " message into " + numFragments + " fragments - too many!"); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Fragmenting a " + totalSize + " message into " + numFragments + " fragments"); + _log.debug("Fragmenting a " + _totalSize + " message into " + numFragments + " fragments"); //_fragmentEnd = new int[numFragments]; _fragmentSends = new short[numFragments]; @@ -327,7 +310,13 @@ class OutboundMessageState implements CDPQEntry { _fragmentSize = fragmentSize; } - /** how many fragments in the message */ + /** + * How many fragments in the message. + * Only valid after fragment() has been called. + * Returns -1 before then. + * + * Caller should synchronize + */ public int getFragmentCount() { if (_fragmentSends == null) return -1; @@ -335,15 +324,26 @@ class OutboundMessageState implements CDPQEntry { return _fragmentSends.length; } - public int getFragmentSize() { return _fragmentSize; } + /** + * The size of the I2NP message. Does not include any SSU overhead. + * + * Caller should synchronize + */ + public int getMessageSize() { return _totalSize; } - /** should we continue sending this fragment? */ + /** + * Should we continue sending this fragment? + * Only valid after fragment() has been called. + * Throws NPE before then. + * + * Caller should synchronize + */ public boolean shouldSend(int fragmentNum) { return _fragmentSends[fragmentNum] >= (short)0; } public int fragmentSize(int fragmentNum) { if (_messageBuf == null) return -1; if (fragmentNum + 1 == _fragmentSends.length) { - int valid = _messageBuf.getValid(); + int valid = _totalSize; if (valid <= _fragmentSize) return valid; // bugfix 0.8.12 @@ -406,7 +406,7 @@ class OutboundMessageState implements CDPQEntry { System.arraycopy(_messageBuf.getData(), start, out, outOffset, toSend); if (_log.shouldLog(Log.DEBUG)) _log.debug("Raw fragment[" + fragmentNum + "] for " + _messageId - + "[" + start + "-" + (start+toSend) + "/" + _messageBuf.getValid() + "/" + _fragmentSize + "]: " + + "[" + start + "-" + (start+toSend) + "/" + _totalSize + "/" + _fragmentSize + "]: " + Base64.encode(out, outOffset, toSend)); return toSend; } else { @@ -467,13 +467,11 @@ class OutboundMessageState implements CDPQEntry { @Override public String toString() { short sends[] = _fragmentSends; - ByteArray messageBuf = _messageBuf; StringBuilder buf = new StringBuilder(256); buf.append("OB Message ").append(_messageId); if (sends != null) buf.append(" with ").append(sends.length).append(" fragments"); - if (messageBuf != null) - buf.append(" of size ").append(messageBuf.getValid()); + buf.append(" of size ").append(_totalSize); buf.append(" volleys: ").append(_maxSends); buf.append(" lifetime: ").append(getLifetime()); if (sends != null) { diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java index d6bb57806345e1a0e770aaf0a667e777e2a1599b..e6af198a87bb1c422fb3126ce3f66dc5cf55f029 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -1071,7 +1071,7 @@ class PacketBuilder { if (_log.shouldLog(_log.WARN)) _log.warn("Cannot build a relay request to " + state.getRemoteIdentity().calculateHash() + ", as their UDP address is invalid: addr=" + addr + " index=" + i); - // TODO implement some sort of introducer shitlist + // TODO implement some sort of introducer banlist continue; } rv.add(buildRelayRequest(iaddr, iport, ikey, tag, ourIntroKey, state.getIntroNonce(), true)); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java index 964e79332896f409869890fd9b8ac0f40ff44049..a0b5d687111038af3e6d7723ceda9ad7afb66ef8 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java @@ -17,6 +17,7 @@ import net.i2p.data.SessionKey; import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; import net.i2p.router.util.CoDelPriorityBlockingQueue; +import net.i2p.router.util.PriBlockingQueue; import net.i2p.util.Log; import net.i2p.util.ConcurrentHashSet; @@ -209,7 +210,8 @@ class PeerState { * Priority queue of messages that have not yet been sent. * They are taken from here and put in _outboundMessages. */ - private final CoDelPriorityBlockingQueue<OutboundMessageState> _outboundQueue; + //private final CoDelPriorityBlockingQueue<OutboundMessageState> _outboundQueue; + private final PriBlockingQueue<OutboundMessageState> _outboundQueue; /** which outbound message is currently being retransmitted */ private OutboundMessageState _retransmitter; @@ -287,7 +289,6 @@ class PeerState { */ public static final int LARGE_MTU = 1484; - /** 600 */ private static final int MIN_RTO = 100 + ACKSender.ACK_FREQUENCY; private static final int INIT_RTO = 3*1000; public static final int INIT_RTT = INIT_RTO / 2; @@ -323,7 +324,8 @@ class PeerState { _rttDeviation = _rtt; _inboundMessages = new HashMap(8); _outboundMessages = new ArrayList(32); - _outboundQueue = new CoDelPriorityBlockingQueue(ctx, "UDP-PeerState", 32); + //_outboundQueue = new CoDelPriorityBlockingQueue(ctx, "UDP-PeerState", 32); + _outboundQueue = new PriBlockingQueue(ctx, "UDP-PeerState", 32); // all createRateStat() moved to EstablishmentManager _remoteIP = remoteIP; _remotePeer = remotePeer; @@ -711,7 +713,7 @@ class PeerState { //_receiveACKBytes = 0; _receiveBytes = 0; _receivePeriodBegin = now; - _context.statManager().addRateData("udp.receiveBps", _receiveBps, 0); + _context.statManager().addRateData("udp.receiveBps", _receiveBps); } if (_wantACKSendSince <= 0) @@ -1099,31 +1101,32 @@ class PeerState { if (numSends >= 2 && _log.shouldLog(Log.INFO)) _log.info("acked after numSends=" + numSends + " w/ lifetime=" + lifetime + " and size=" + bytesACKed); - _context.statManager().addRateData("udp.sendBps", _sendBps, lifetime); + _context.statManager().addRateData("udp.sendBps", _sendBps); } + /** This is the value specified in RFC 2988 */ + private static final float RTT_DAMPENING = 0.125f; + /** * Adjust the tcp-esque timeouts. * Caller should synch on this */ private void recalculateTimeouts(long lifetime) { + // the rttDev calculation matches that recommended in RFC 2988 (beta = 1/4) _rttDeviation = _rttDeviation + (int)(0.25d*(Math.abs(lifetime-_rtt)-_rttDeviation)); + float scale = RTT_DAMPENING; // the faster we are going, the slower we want to reduce the rtt - float scale = 0.1f; - if (_sendBps > 0) - scale = lifetime / ((float)lifetime + (float)_sendBps); - if (scale < 0.001f) scale = 0.001f; + //if (_sendBps > 0) + // scale = lifetime / ((float)lifetime + (float)_sendBps); + //if (scale < 0.001f) scale = 0.001f; _rtt = (int)(_rtt*(1.0f-scale) + (scale)*lifetime); - _rto = _rtt + (_rttDeviation<<2); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Recalculating timeouts w/ lifetime=" + lifetime + ": rtt=" + _rtt - + " rttDev=" + _rttDeviation + " rto=" + _rto); - if (_rto < minRTO()) - _rto = minRTO(); - else if (_rto > MAX_RTO) - _rto = MAX_RTO; + // K = 4 + _rto = Math.min(MAX_RTO, Math.max(minRTO(), _rtt + (_rttDeviation<<2))); + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug("Recalculating timeouts w/ lifetime=" + lifetime + ": rtt=" + _rtt + // + " rttDev=" + _rttDeviation + " rto=" + _rto); } /** @@ -1138,12 +1141,12 @@ class PeerState { if (_context.random().nextLong(_mtuDecreases) <= 0) { _mtu = _largeMTU; _mtuIncreases++; - _context.statManager().addRateData("udp.mtuIncrease", _mtuIncreases, _mtuDecreases); + _context.statManager().addRateData("udp.mtuIncrease", _mtuIncreases); } } else if (!wantLarge && _mtu == _largeMTU) { _mtu = MIN_MTU; _mtuDecreases++; - _context.statManager().addRateData("udp.mtuDecrease", _mtuDecreases, _mtuIncreases); + _context.statManager().addRateData("udp.mtuDecrease", _mtuDecreases); } } else { _mtu = DEFAULT_MTU; @@ -1175,7 +1178,7 @@ class PeerState { _packetsRetransmitted = packets; } *****/ - _context.statManager().addRateData("udp.congestionOccurred", _sendWindowBytes, _sendBps); + _context.statManager().addRateData("udp.congestionOccurred", _sendWindowBytes); _context.statManager().addRateData("udp.congestedRTO", _rto, _rttDeviation); synchronized (this) { congestionOccurred(); @@ -1247,7 +1250,7 @@ class PeerState { synchronized(this) { congestionOccurred(); } - _context.statManager().addRateData("udp.congestionOccurred", _sendWindowBytes, _sendBps); + _context.statManager().addRateData("udp.congestionOccurred", _sendWindowBytes); _currentSecondECNReceived = true; _lastReceiveTime = _context.clock().now(); } @@ -1320,7 +1323,12 @@ class PeerState { _transport.failed(state, false); return; } - state.setPeer(this); + if (state.getPeer() != this) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Not for me!", new Exception("I did it")); + _transport.failed(state, false); + return; + } if (_log.shouldLog(Log.DEBUG)) _log.debug("Adding to " + _remotePeer + ": " + state.getMessageId()); int rv = 0; @@ -1397,7 +1405,8 @@ class PeerState { tempList = new ArrayList(_outboundMessages); _outboundMessages.clear(); } - _outboundQueue.drainAllTo(tempList); + //_outboundQueue.drainAllTo(tempList); + _outboundQueue.drainTo(tempList); for (OutboundMessageState oms : tempList) { _transport.failed(oms, false); } @@ -1448,14 +1457,14 @@ class PeerState { iter.remove(); if (_retransmitter == state) _retransmitter = null; - _context.statManager().addRateData("udp.sendFailed", state.getPushCount(), state.getLifetime()); + _context.statManager().addRateData("udp.sendFailed", state.getPushCount()); if (failed == null) failed = new ArrayList(4); failed.add(state); } else if (state.getPushCount() > OutboundMessageFragments.MAX_VOLLEYS) { iter.remove(); if (state == _retransmitter) _retransmitter = null; - _context.statManager().addRateData("udp.sendAggressiveFailed", state.getPushCount(), state.getLifetime()); + _context.statManager().addRateData("udp.sendAggressiveFailed", state.getPushCount()); if (failed == null) failed = new ArrayList(4); failed.add(state); } // end (pushCount > maxVolleys) @@ -1620,7 +1629,7 @@ class PeerState { /** * how much payload data can we shove in there? - * @return MTU - 87, i.e. 521 or 1401 + * @return MTU - 87, i.e. 533 or 1397 */ private static final int fragmentSize(int mtu) { // 46 + 20 + 8 + 13 = 74 + 13 = 87 @@ -1655,7 +1664,7 @@ class PeerState { if ( (retrans != null) && (retrans != state) ) { // choke it, since there's already another message retransmitting to this // peer. - _context.statManager().addRateData("udp.blockedRetransmissions", _packetsRetransmitted, _packetsTransmitted); + _context.statManager().addRateData("udp.blockedRetransmissions", _packetsRetransmitted); int max = state.getMaxSends(); if ( (max <= 0) && (!THROTTLE_INITIAL_SEND) ) { //if (state.getMessage() != null) @@ -1691,7 +1700,7 @@ class PeerState { // _throttle.unchoke(peer.getRemotePeer()); return ShouldSend.YES; } else { - _context.statManager().addRateData("udp.sendRejected", state.getPushCount(), state.getLifetime()); + _context.statManager().addRateData("udp.sendRejected", state.getPushCount()); //if (state.getMessage() != null) // state.getMessage().timestamp("send rejected, available=" + getSendWindowBytesRemaining()); if (_log.shouldLog(Log.INFO)) @@ -1756,15 +1765,14 @@ class PeerState { if (_log.shouldLog(Log.INFO)) _log.info("Received ack of " + messageId + " by " + _remotePeer + " after " + state.getLifetime() + " and " + numSends + " sends"); - _context.statManager().addRateData("udp.sendConfirmTime", state.getLifetime(), state.getLifetime()); + _context.statManager().addRateData("udp.sendConfirmTime", state.getLifetime()); if (state.getFragmentCount() > 1) - _context.statManager().addRateData("udp.sendConfirmFragments", state.getFragmentCount(), state.getLifetime()); - if (numSends > 1) - _context.statManager().addRateData("udp.sendConfirmVolley", numSends, state.getFragmentCount()); + _context.statManager().addRateData("udp.sendConfirmFragments", state.getFragmentCount()); + _context.statManager().addRateData("udp.sendConfirmVolley", numSends); _transport.succeeded(state); int numFragments = state.getFragmentCount(); // this adjusts the rtt/rto/window/etc - messageACKed(numFragments*state.getFragmentSize(), state.getLifetime(), numSends); + messageACKed(state.getMessageSize(), state.getLifetime(), numSends); //if (getSendWindowBytesRemaining() > 0) // _throttle.unchoke(peer.getRemotePeer()); @@ -1824,7 +1832,7 @@ class PeerState { if (bitfield.received(i)) numACKed++; - _context.statManager().addRateData("udp.partialACKReceived", numACKed, state.getLifetime()); + _context.statManager().addRateData("udp.partialACKReceived", numACKed); if (_log.shouldLog(Log.INFO)) _log.info("Received partial ack of " + state.getMessageId() + " by " + _remotePeer @@ -1832,17 +1840,16 @@ class PeerState { + isComplete + ": " + state); if (isComplete) { - _context.statManager().addRateData("udp.sendConfirmTime", state.getLifetime(), state.getLifetime()); + _context.statManager().addRateData("udp.sendConfirmTime", state.getLifetime()); if (state.getFragmentCount() > 1) - _context.statManager().addRateData("udp.sendConfirmFragments", state.getFragmentCount(), state.getLifetime()); - if (numSends > 1) - _context.statManager().addRateData("udp.sendConfirmVolley", numSends, state.getFragmentCount()); + _context.statManager().addRateData("udp.sendConfirmFragments", state.getFragmentCount()); + _context.statManager().addRateData("udp.sendConfirmVolley", numSends); //if (state.getMessage() != null) // state.getMessage().timestamp("partial ack to complete after " + numSends); _transport.succeeded(state); // this adjusts the rtt/rto/window/etc - messageACKed(state.getFragmentCount()*state.getFragmentSize(), state.getLifetime(), 0); + messageACKed(state.getMessageSize(), state.getLifetime(), numSends); //if (state.getPeer().getSendWindowBytesRemaining() > 0) // _throttle.unchoke(state.getPeer().getRemotePeer()); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index 9b00962b385052efafb8375bd3c94b188e0a69c2..e32decb03e97fcc2817c6e90cc091ebc51a90c07 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -734,7 +734,13 @@ class PeerTestManager { return; } UDPAddress addr = new UDPAddress(raddr); - SessionKey charlieIntroKey = new SessionKey(addr.getIntroKey()); + byte[] ikey = addr.getIntroKey(); + if (ikey == null) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Unable to pick a charlie"); + return; + } + SessionKey charlieIntroKey = new SessionKey(ikey); //UDPPacket packet = _packetBuilder.buildPeerTestToAlice(aliceIP, from.getPort(), aliceIntroKey, charlieIntroKey, nonce); //_transport.send(packet); diff --git a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java index 9f6f625a78e5597e63527c16889e6631c51723ca..b7b06bb8d0a47c17e95a499a50d1785393270b52 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java @@ -52,9 +52,9 @@ class UDPReceiver { _socket = socket; _transport = transport; _runner = new Runner(); - _context.statManager().createRateStat("udp.receivePacketSize", "How large packets received are", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.receiveRemaining", "How many packets are left sitting on the receiver's queue", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInbound", "How many packet are queued up but not yet received when we drop", "udp", UDPTransport.RATES); + //_context.statManager().createRateStat("udp.receivePacketSize", "How large packets received are", "udp", UDPTransport.RATES); + //_context.statManager().createRateStat("udp.receiveRemaining", "How many packets are left sitting on the receiver's queue", "udp", UDPTransport.RATES); + //_context.statManager().createRateStat("udp.droppedInbound", "How many packet are queued up but not yet received when we drop", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.receiveHolePunch", "How often we receive a NAT hole punch", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.ignorePacketFromDroplist", "Packet lifetime for those dropped on the drop list", "udp", UDPTransport.RATES); } @@ -165,7 +165,7 @@ class UDPReceiver { if (_transport.isInDropList(from)) { if (_log.shouldLog(Log.INFO)) _log.info("Ignoring packet from the drop-listed peer: " + from); - _context.statManager().addRateData("udp.ignorePacketFromDroplist", packet.getLifetime(), 0); + _context.statManager().addRateData("udp.ignorePacketFromDroplist", packet.getLifetime()); packet.release(); return 0; } @@ -253,7 +253,6 @@ class UDPReceiver { public void run() { //_socketChanged = false; - FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().createRequest(); while (_keepRunning) { //if (_socketChanged) { // Thread.currentThread().setName(_name + "." + _id); @@ -292,14 +291,15 @@ class UDPReceiver { if (size > 0) { //FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().requestInbound(size, "UDP receiver"); //_context.bandwidthLimiter().requestInbound(req, size, "UDP receiver"); - req = _context.bandwidthLimiter().requestInbound(size, "UDP receiver"); - while (req.getPendingInboundRequested() > 0) + FIFOBandwidthLimiter.Request req = + _context.bandwidthLimiter().requestInbound(size, "UDP receiver"); + while (req.getPendingRequested() > 0) req.waitForNextAllocation(); - int queued = receive(packet); - _context.statManager().addRateData("udp.receivePacketSize", size, queued); + receive(packet); + //_context.statManager().addRateData("udp.receivePacketSize", size); } else { - _context.statManager().addRateData("udp.receiveHolePunch", 1, 0); + _context.statManager().addRateData("udp.receiveHolePunch", 1); // nat hole punch packets are 0 bytes if (_log.shouldLog(Log.INFO)) _log.info("Received a 0 byte udp packet from " + packet.getPacket().getAddress() + ":" + packet.getPacket().getPort()); diff --git a/router/java/src/net/i2p/router/transport/udp/UDPSender.java b/router/java/src/net/i2p/router/transport/udp/UDPSender.java index e169d3a8cff75d29ca67f385304b4d2a51e2c7a8..885cc7299d469bd17d027a3576c8bfa124c75bcf 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPSender.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPSender.java @@ -191,7 +191,6 @@ class UDPSender { private class Runner implements Runnable { //private volatile boolean _socketChanged; - FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().createRequest(); public void run() { if (_log.shouldLog(Log.DEBUG)) _log.debug("Running the UDP sender"); @@ -211,8 +210,9 @@ class UDPSender { // ?? int size2 = packet.getPacket().getLength(); if (size > 0) { //_context.bandwidthLimiter().requestOutbound(req, size, "UDP sender"); - req = _context.bandwidthLimiter().requestOutbound(size, "UDP sender"); - while (req.getPendingOutboundRequested() > 0) + FIFOBandwidthLimiter.Request req = + _context.bandwidthLimiter().requestOutbound(size, 0, "UDP sender"); + while (req.getPendingRequested() > 0) req.waitForNextAllocation(); } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index 3874a9d4f873fd878f96bcc115a0aee7f3c5295a..366095d93171bbb88f23ed451fd9c9cd0cd5e6a1 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -113,11 +113,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public static final int DEFAULT_INTERNAL_PORT = 8887; /** - * To prevent trouble. To be raised to 1024 in 0.9.4. + * To prevent trouble. 1024 as of 0.9.4. * * @since 0.9.3 */ - static final int MIN_PEER_PORT = 500; + static final int MIN_PEER_PORT = 1024; /** Limits on port told to us by others, * We should have an exception if it matches the existing low port. @@ -563,7 +563,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _log.error("The router " + from + " told us we have an invalid IP - " + Addresses.toString(ourIP, ourPort) + ". Lets throw tomatoes at them"); markUnreachable(from); - //_context.shitlist().shitlistRouter(from, "They said we had an invalid IP", STYLE); + //_context.banlist().banlistRouter(from, "They said we had an invalid IP", STYLE); return; } else if (inboundRecent && _externalListenPort > 0 && _externalListenHost != null) { // use OS clock since its an ordering thing, not a time thing @@ -913,7 +913,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _activeThrottle.unchoke(peer.getRemotePeer()); markReachable(peer.getRemotePeer(), peer.isInbound()); - //_context.shitlist().unshitlistRouter(peer.getRemotePeer(), STYLE); + //_context.banlist().unbanlistRouter(peer.getRemotePeer(), STYLE); //if (SHOULD_FLOOD_PEERS) // _flooder.addPeer(peer); @@ -956,13 +956,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority /* if (remoteIdentHash != null) { - _context.shitlist().shitlistRouter(remoteIdentHash, "Sent us a peer from the wrong network"); + _context.banlist().banlistRouter(remoteIdentHash, "Sent us a peer from the wrong network"); dropPeer(remoteIdentHash); if (_log.shouldLog(Log.ERROR)) _log.error("Dropping the peer " + remoteIdentHash + " because they are in the wrong net"); } else if (remoteIdent != null) { - _context.shitlist().shitlistRouter(remoteIdent.calculateHash(), "Sent us a peer from the wrong network"); + _context.banlist().banlistRouter(remoteIdent.calculateHash(), "Sent us a peer from the wrong network"); dropPeer(remoteIdent.calculateHash()); if (_log.shouldLog(Log.ERROR)) _log.error("Dropping the peer " + remoteIdent.calculateHash() @@ -978,8 +978,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _context.simpleScheduler().addEvent(new RemoveDropList(remote), DROPLIST_PERIOD); } markUnreachable(peerHash); - _context.shitlist().shitlistRouter(peerHash, "Part of the wrong network, version = " + ((RouterInfo) entry).getOption("router.version")); - //_context.shitlist().shitlistRouter(peerHash, "Part of the wrong network", STYLE); + _context.banlist().banlistRouter(peerHash, "Part of the wrong network, version = " + ((RouterInfo) entry).getOption("router.version")); + //_context.banlist().banlistRouter(peerHash, "Part of the wrong network", STYLE); dropPeer(peerHash, false, "wrong network"); if (_log.shouldLog(Log.WARN)) _log.warn("Dropping the peer " + peerHash + " because they are in the wrong net: " + entry); @@ -1013,13 +1013,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority boolean isInDropList(RemoteHostId peer) { return _dropList.contains(peer); } - void dropPeer(Hash peer, boolean shouldShitlist, String why) { + void dropPeer(Hash peer, boolean shouldBanlist, String why) { PeerState state = getPeerState(peer); if (state != null) - dropPeer(state, shouldShitlist, why); + dropPeer(state, shouldBanlist, why); } - void dropPeer(PeerState peer, boolean shouldShitlist, String why) { + void dropPeer(PeerState peer, boolean shouldBanlist, String why) { if (_log.shouldLog(Log.INFO)) { long now = _context.clock().now(); StringBuilder buf = new StringBuilder(4096); @@ -1028,7 +1028,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority long timeSinceAck = now - peer.getLastACKSend(); long timeSinceSendOK = now - peer.getLastSendFullyTime(); int consec = peer.getConsecutiveFailedSends(); - buf.append("Dropping remote peer: ").append(peer.toString()).append(" shitlist? ").append(shouldShitlist); + buf.append("Dropping remote peer: ").append(peer.toString()).append(" banlist? ").append(shouldBanlist); buf.append(" lifetime: ").append(now - peer.getKeyEstablishedTime()); buf.append(" time since send/fully/recv/ack: ").append(timeSinceSend).append(" / "); buf.append(timeSinceSendOK).append(" / "); @@ -1067,13 +1067,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _log.info(buf.toString(), new Exception("Dropped by")); } synchronized(_addDropLock) { - locked_dropPeer(peer, shouldShitlist, why); + locked_dropPeer(peer, shouldBanlist, why); } if (needsRebuild()) rebuildExternalAddress(); } - private void locked_dropPeer(PeerState peer, boolean shouldShitlist, String why) { + private void locked_dropPeer(PeerState peer, boolean shouldBanlist, String why) { peer.dropOutbound(); peer.expireInboundMessages(); _introManager.remove(peer); @@ -1083,9 +1083,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (peer.getRemotePeer() != null) { dropPeerCapacities(peer); - if (shouldShitlist) { + if (shouldBanlist) { markUnreachable(peer.getRemotePeer()); - //_context.shitlist().shitlistRouter(peer.getRemotePeer(), "dropped after too many retries", STYLE); + //_context.banlist().banlistRouter(peer.getRemotePeer(), "dropped after too many retries", STYLE); } long now = _context.clock().now(); _context.statManager().addRateData("udp.droppedPeer", now - peer.getLastReceiveTime(), now - peer.getKeyEstablishedTime()); @@ -1110,8 +1110,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _expireEvent.remove(peer); // deal with races to make sure we drop the peers fully - if ( (altByIdent != null) && (peer != altByIdent) ) locked_dropPeer(altByIdent, shouldShitlist, "recurse"); - if ( (altByHost != null) && (peer != altByHost) ) locked_dropPeer(altByHost, shouldShitlist, "recurse"); + if ( (altByIdent != null) && (peer != altByIdent) ) locked_dropPeer(altByIdent, shouldBanlist, "recurse"); + if ( (altByHost != null) && (peer != altByHost) ) locked_dropPeer(altByHost, shouldBanlist, "recurse"); } private boolean needsRebuild() { @@ -1419,12 +1419,15 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority * "injected" message from the EstablishmentManager */ void send(I2NPMessage msg, PeerState peer) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Injecting a data message to a new peer: " + peer); - OutboundMessageState state = new OutboundMessageState(_context); - boolean ok = state.initialize(msg, peer); - if (ok) + try { + OutboundMessageState state = new OutboundMessageState(_context, msg, peer); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Injecting a data message to a new peer: " + peer); _fragments.add(state); + } catch (IllegalArgumentException iae) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Shouldnt happen", new Exception("I did it")); + } } // we don't need the following, since we have our own queueing @@ -2253,7 +2256,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append("</i>"); appended = true; } - if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) { + if (_context.banlist().isBanlisted(peer.getRemotePeer(), STYLE)) { if (!appended) buf.append("<br>"); buf.append(" <i>").append(_("Banned")).append("</i>"); appended = true; @@ -2595,6 +2598,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority // if old != unsolicited && now - lastUpdated > STATUS_GRACE_PERIOD) // // fall through... + case CommSystemFacade.STATUS_DISCONNECTED: case CommSystemFacade.STATUS_HOSED: _reachabilityStatus = status; _reachabilityStatusLastUpdated = now; diff --git a/router/java/src/net/i2p/router/tunnel/OutboundReceiver.java b/router/java/src/net/i2p/router/tunnel/OutboundReceiver.java index d67dcc39f3a39d18a5b56d66d9a7d2de0eebe8d8..db40ff00ad6d393d2b9132625d5b575e677f5c77 100644 --- a/router/java/src/net/i2p/router/tunnel/OutboundReceiver.java +++ b/router/java/src/net/i2p/router/tunnel/OutboundReceiver.java @@ -20,6 +20,7 @@ class OutboundReceiver implements TunnelGateway.Receiver { private final Log _log; private final TunnelCreatorConfig _config; private RouterInfo _nextHopCache; + private final int _priority; private static final long MAX_LOOKUP_TIME = 15*1000; private static final int PRIORITY = OutNetMessage.PRIORITY_MY_DATA; @@ -29,6 +30,7 @@ class OutboundReceiver implements TunnelGateway.Receiver { _log = ctx.logManager().getLog(OutboundReceiver.class); _config = cfg; _nextHopCache = _context.netDb().lookupRouterInfoLocally(_config.getPeer(1)); + _priority = PRIORITY + cfg.getPriority(); // all createRateStat() in TunnelDispatcher } @@ -73,7 +75,7 @@ class OutboundReceiver implements TunnelGateway.Receiver { m.setMessage(msg); m.setExpiration(msg.getMessageExpiration()); m.setTarget(ri); - m.setPriority(PRIORITY); + m.setPriority(_priority); _context.outNetMessagePool().add(m); _config.incrementProcessedMessages(); } diff --git a/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java b/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java index 7f814244507a0e2c62db16729f28007559278606..a294238f4fc2b50cfa4e2bc880035b2efb09fe94 100644 --- a/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java +++ b/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java @@ -4,6 +4,7 @@ import net.i2p.data.Hash; import net.i2p.data.TunnelId; import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.i2np.TunnelDataMessage; +import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; import net.i2p.util.Log; @@ -26,7 +27,7 @@ class OutboundTunnelEndpoint { _config = config; _processor = processor; _handler = new RouterFragmentHandler(ctx, new DefragmentedHandler()); - _outDistributor = new OutboundMessageDistributor(ctx, 200); + _outDistributor = new OutboundMessageDistributor(ctx, OutNetMessage.PRIORITY_PARTICIPATING); } public void dispatch(TunnelDataMessage msg, Hash recvFrom) { _config.incrementProcessedMessages(); diff --git a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java index 5306179a350f9be8e34ac1da9539aa48d4c04d94..f8ff4ed4a4df5ddf9cb9bd359f7b2cdf411f86b5 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java @@ -34,10 +34,12 @@ public class TunnelCreatorConfig implements TunnelInfo { private boolean _failed; private int _failures; private boolean _reused; + private int _priority; public TunnelCreatorConfig(RouterContext ctx, int length, boolean isInbound) { this(ctx, length, isInbound, null); } + public TunnelCreatorConfig(RouterContext ctx, int length, boolean isInbound, Hash destination) { _context = ctx; if (length <= 0) @@ -204,6 +206,20 @@ public class TunnelCreatorConfig implements TunnelInfo { */ public void setReused() { _reused = true; } + /** + * Outbound message priority - for outbound tunnels only + * @return -25 to +25, default 0 + * @since 0.9.4 + */ + public int getPriority() { return _priority; } + + /** + * Outbound message priority - for outbound tunnels only + * @param priority -25 to +25, default 0 + * @since 0.9.4 + */ + public void setPriority(int priority) { _priority = priority; } + @Override public String toString() { // H0:1235-->H1:2345-->H2:2345 diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java b/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java index a4c048eb95b4c19f84246e671b571015604a4be9..818c88bd10a9fff90b695727099b44f36808b796 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java @@ -6,6 +6,7 @@ import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.i2np.I2NPMessageException; import net.i2p.data.i2np.TunnelGatewayMessage; import net.i2p.data.i2np.UnknownI2NPMessage; +import net.i2p.router.OutNetMessage; import net.i2p.router.RouterContext; import net.i2p.util.Log; @@ -27,7 +28,7 @@ class TunnelGatewayZeroHop extends TunnelGateway { if (config.isInbound()) _inDistributor = new InboundMessageDistributor(context, config.getDestination()); else - _outDistributor = new OutboundMessageDistributor(context, 400); + _outDistributor = new OutboundMessageDistributor(context, OutNetMessage.PRIORITY_MY_DATA); } /** diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index 6303b385c4efde96761776569dea8eb7fad55fae..2c3a5ffd72178a8efe6ac5bb214235b319e5e3a9 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -10,6 +10,7 @@ import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.Hash; import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.RouterInfo; +import net.i2p.router.CommSystemFacade; import net.i2p.router.RouterContext; import net.i2p.router.TunnelManagerFacade; import net.i2p.stat.Rate; @@ -104,6 +105,8 @@ class BuildExecutor implements Runnable { } private int allowed() { + if (_context.commSystem().getReachabilityStatus() == CommSystemFacade.STATUS_DISCONNECTED) + return 0; int maxKBps = _context.bandwidthLimiter().getOutboundKBytesPerSecond(); int allowed = maxKBps / 6; // Max. 1 concurrent build per 6 KB/s outbound RateStat rs = _context.statManager().getRate("tunnel.buildRequestTime"); diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java index 16b2031335e4981a4e6e144da512230a648c5625..64f2cb41bac7f350b09ca1a945c7b2084f4ab2b9 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -181,12 +181,13 @@ class BuildHandler implements Runnable { return; } - long dropBefore = System.currentTimeMillis() - (BuildRequestor.REQUEST_TIMEOUT/4); + long now = _context.clock().now(); + long dropBefore = now - (BuildRequestor.REQUEST_TIMEOUT/4); if (state.recvTime <= dropBefore) { if (_log.shouldLog(Log.WARN)) _log.warn("Not even trying to handle/decrypt the request " + state.msg.getUniqueId() - + ", since we received it a long time ago: " + (System.currentTimeMillis() - state.recvTime)); - _context.statManager().addRateData("tunnel.dropLoadDelay", System.currentTimeMillis() - state.recvTime, 0); + + ", since we received it a long time ago: " + (now - state.recvTime)); + _context.statManager().addRateData("tunnel.dropLoadDelay", now - state.recvTime, 0); _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: Too slow")); return; } @@ -324,7 +325,7 @@ class BuildHandler implements Runnable { /** @return handle time or -1 if it wasn't completely handled */ private long handleRequest(BuildMessageState state) { - long timeSinceReceived = System.currentTimeMillis()-state.recvTime; + long timeSinceReceived = _context.clock().now()-state.recvTime; if (_log.shouldLog(Log.DEBUG)) _log.debug(state.msg.getUniqueId() + ": handling request after " + timeSinceReceived); @@ -533,7 +534,7 @@ class BuildHandler implements Runnable { // response = TunnelHistory.TUNNEL_REJECT_PROBABALISTIC_REJECT; int proactiveDrops = countProactiveDrops(); - long recvDelay = System.currentTimeMillis()-state.recvTime; + long recvDelay = _context.clock().now()-state.recvTime; if (response == 0) { float pDrop = ((float) recvDelay) / (float) (BuildRequestor.REQUEST_TIMEOUT*3); pDrop = (float)Math.pow(pDrop, 16); @@ -771,7 +772,7 @@ class BuildHandler implements Runnable { BuildMessageState cur = _inboundBuildMessages.peek(); boolean accept = true; if (cur != null) { - long age = System.currentTimeMillis() - cur.recvTime; + long age = _context.clock().now() - cur.recvTime; if (age >= BuildRequestor.REQUEST_TIMEOUT/4) { _context.statManager().addRateData("tunnel.dropLoad", age, sz); _context.throttle().setTunnelStatus(_x("Dropping tunnel requests: High load")); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index 8304a1c7098d7d8ae69187c6876e9e2a31926413..d14c32420daf765bf757f1b4cae5ede94fde037f 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -1128,7 +1128,9 @@ public class TunnelPool { // don't need to worry about prev/next hop } cfg.setExpiration(expiration); - + if (!settings.isInbound()) + cfg.setPriority(settings.getPriority()); + if (_log.shouldLog(Log.DEBUG)) _log.debug("Config contains " + peers + ": " + cfg); synchronized (_inProgress) { diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index 1b6c424eca69dfa9b61a9c8fa7c6e5b736013c99..9698cb65eefe7620849cf9ec0f0c386502334821 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -659,7 +659,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { int len = tun.getLength(); if (len > 1 && tun.getPeer(1).equals(peer)) { if (_log.shouldLog(Log.WARN)) - _log.warn("Removing OB tunnel, first hop shitlisted: " + tun); + _log.warn("Removing OB tunnel, first hop banlisted: " + tun); pool.tunnelFailed(tun, peer); } } @@ -675,7 +675,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { int len = tun.getLength(); if (len > 1 && tun.getPeer(len - 2).equals(peer)) { if (_log.shouldLog(Log.WARN)) - _log.warn("Removing IB tunnel, prev. hop shitlisted: " + tun); + _log.warn("Removing IB tunnel, prev. hop banlisted: " + tun); pool.tunnelFailed(tun, peer); } } diff --git a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java index c384f5e7bc9f5c540f4e0c2f31d457d37139fbbe..42bbd1dd113385487c813ce49d0543b0cc81a9a9 100644 --- a/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java +++ b/router/java/src/net/i2p/router/util/CoDelPriorityBlockingQueue.java @@ -27,11 +27,6 @@ import net.i2p.util.Log; */ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlockingQueue<E> { - private final I2PAppContext _context; - private final Log _log; - private final String _name; - private final AtomicLong _seqNum = new AtomicLong(); - // following 4 are state variables defined by sample code, locked by this /** Time when we'll declare we're above target (0 if below) */ private long _first_above_time; @@ -75,7 +70,6 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlocking private final String STAT_DROP; private final String STAT_DELAY; - private static final long[] RATES = {5*60*1000, 60*60*1000}; public static final int MIN_PRIORITY = 100; private static final int[] PRIORITIES = {MIN_PRIORITY, 200, 300, 400, 500}; /** if priority is >= this, never drop */ @@ -86,10 +80,7 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlocking * @param name for stats */ public CoDelPriorityBlockingQueue(I2PAppContext ctx, String name, int initialCapacity) { - super(initialCapacity); - _context = ctx; - _log = ctx.logManager().getLog(CoDelPriorityBlockingQueue.class); - _name = name; + super(ctx, name, initialCapacity); STAT_DROP = ("codel." + name + ".drop.").intern(); STAT_DELAY = ("codel." + name + ".delay").intern(); for (int i = 0; i < PRIORITIES.length; i++) { @@ -177,7 +168,7 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlocking @Override protected void timestamp(E o) { - o.setSeqNum(_seqNum.incrementAndGet()); + super.timestamp(o); o.setEnqueueTime(_context.clock().now()); if (o.getPriority() < MIN_PRIORITY && _log.shouldLog(Log.WARN)) _log.warn(_name + " added item with low priority " + o.getPriority() + @@ -295,7 +286,9 @@ public class CoDelPriorityBlockingQueue<E extends CDPQEntry> extends PriBlocking private void drop(E entry) { long delay = _context.clock().now() - entry.getEnqueueTime(); - _context.statManager().addRateData(STAT_DROP + entry.getPriority(), delay); + // round down for the stat + int priority = entry.getPriority() / 100 * 100; + _context.statManager().addRateData(STAT_DROP + priority, delay); if (_log.shouldLog(Log.WARN)) _log.warn("CDPQ #" + _id + ' ' + _name + " dropped item with delay " + delay + ", priority " + entry.getPriority() + ", seq " + diff --git a/router/java/src/net/i2p/router/util/PriBlockingQueue.java b/router/java/src/net/i2p/router/util/PriBlockingQueue.java index 486728bc486eab0d28ccd19ccee37accdd3f3464..9145fbd2eb104f082661b71e458d3dbad556b800 100644 --- a/router/java/src/net/i2p/router/util/PriBlockingQueue.java +++ b/router/java/src/net/i2p/router/util/PriBlockingQueue.java @@ -5,6 +5,9 @@ import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import net.i2p.I2PAppContext; +import net.i2p.util.Log; + /** * Priority Blocking Queue using methods in the entries, * as definied in PQEntry, to store priority and sequence number, @@ -16,32 +19,79 @@ import java.util.concurrent.atomic.AtomicLong; */ public class PriBlockingQueue<E extends PQEntry> extends PriorityBlockingQueue<E> { + protected final I2PAppContext _context; + protected final Log _log; + protected final String _name; private final AtomicLong _seqNum = new AtomicLong(); + private final String STAT_FULL; + protected static final long[] RATES = {5*60*1000, 60*60*1000}; protected static final int BACKLOG_SIZE = 256; + protected static final int MAX_SIZE = 512; - public PriBlockingQueue(int initialCapacity) { + /** + * Bounded queue with a hardcoded failsafe max size, + * except when using put(), which is unbounded. + */ + public PriBlockingQueue(I2PAppContext ctx, String name, int initialCapacity) { super(initialCapacity, new PriorityComparator()); + _context = ctx; + _log = ctx.logManager().getLog(PriorityBlockingQueue.class); + _name = name; + STAT_FULL = ("pbq." + name + ".full").intern(); + ctx.statManager().createRequiredRateStat(STAT_FULL, "queue full", "Router", RATES); } + /** + * OpenJDK add(o) calls offer(o), so use offer(o) to avoid dup stamping. + * Returns false if full + * @deprecated use offer(o) + */ @Override public boolean add(E o) { timestamp(o); + if (size() >= MAX_SIZE) { + _context.statManager().addRateData(STAT_FULL, 1); + return false; + } return super.add(o); } + /** + * Returns false if full + */ @Override public boolean offer(E o) { timestamp(o); + if (size() >= MAX_SIZE) { + _context.statManager().addRateData(STAT_FULL, 1); + return false; + } return super.offer(o); } + /** + * OpenJDK offer(o, timeout, unit) calls offer(o), so use offer(o) to avoid dup stamping. + * Non blocking. Returns false if full. + * @param timeout ignored + * @param unit ignored + * @deprecated use offer(o) + */ @Override public boolean offer(E o, long timeout, TimeUnit unit) { timestamp(o); + if (size() >= MAX_SIZE) { + _context.statManager().addRateData(STAT_FULL, 1); + return false; + } return super.offer(o, timeout, unit); } + /** + * OpenJDK put(o) calls offer(o), so use offer(o) to avoid dup stamping. + * Non blocking. Does not add if full. + * @deprecated use offer(o) + */ @Override public void put(E o) { timestamp(o); diff --git a/router/java/src/net/i2p/router/util/RouterPasswordManager.java b/router/java/src/net/i2p/router/util/RouterPasswordManager.java new file mode 100644 index 0000000000000000000000000000000000000000..6b5fbb7f0cb5b4cf852a900aa128692f080152b2 --- /dev/null +++ b/router/java/src/net/i2p/router/util/RouterPasswordManager.java @@ -0,0 +1,197 @@ +package net.i2p.router.util; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.i2p.data.Base64; +import net.i2p.data.DataHelper; +import net.i2p.data.SessionKey; +import net.i2p.router.Router; +import net.i2p.router.RouterContext; +import net.i2p.util.PasswordManager; + +/** + * Manage both plaintext and salted/hashed password storage in + * router.config. + * + * @since 0.9.4 + */ +public class RouterPasswordManager extends PasswordManager { + protected final RouterContext _context; + + private static final String PROP_MIGRATED = "router.passwordManager.migrated"; + // migrate these to hash + private static final String PROP_I2CP_OLD_PW = "i2cp.password"; + private static final String PROP_I2CP_OLD_USER = "i2cp.username"; + private static final String PROP_I2CP_NEW = "i2cp.auth"; +/**** + // migrate these to b64 + private static final String[] MIGRATE_FROM = { + // This has a separate router.reseedProxy.username prop, + // so let's not mess with it + "router.reseedProxy.password", + // Don't migrate these until we have a console form for them, + // which we aren't likely to ever bother with + "routerconsole.keyPassword", + "routerconsole.keystorePassword", + "i2cp.keyPassword", + "i2cp.keystorePassword" + }; + private static final String[] MIGRATE_TO = { + "router.reseedProxy.auth", + "routerconsole.ssl.key.auth", + "routerconsole.ssl.keystore.auth", + "i2cp.ssl.key.auth", + "i2cp.ssl.keystore.auth" + }; +****/ + + public RouterPasswordManager(RouterContext ctx) { + super(ctx); + _context = ctx; + migrate(); + } + + /** + * Migrate from plaintext to salt/hash + * + * @return success or nothing to migrate + */ + protected boolean migrate() { + synchronized(RouterPasswordManager.class) { + if (_context.getBooleanProperty(PROP_MIGRATED)) + return true; + // i2cp.password + String user = _context.getProperty(PROP_I2CP_OLD_USER); + String pw = _context.getProperty(PROP_I2CP_OLD_PW); + if (pw != null && user != null && pw.length() > 0 && user.length() > 0) { + saveHash(PROP_I2CP_NEW, user, pw); + } + // obfuscation of plaintext passwords + Map<String, String> toAdd = new HashMap(5); + List<String> toDel = new ArrayList(5); + /**** + for (int i = 0; i < MIGRATE_FROM.length; i++) { + if ((pw = _context.getProperty(MIGRATE_FROM[i])) != null) { + toAdd.put(MIGRATE_TO[i], Base64.encode(DataHelper.getUTF8(pw))); + toDel.add(MIGRATE_FROM[i]); + } + } + ****/ + toDel.add(PROP_I2CP_OLD_USER); + toDel.add(PROP_I2CP_OLD_PW); + toAdd.put(PROP_MIGRATED, "true"); + return _context.router().saveConfig(toAdd, toDel); + } + } + + /** + * Same as saveHash() + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return success + */ + public boolean save(String realm, String user, String pw) { + return saveHash(realm, user, pw); + } + + /** + * This will fail if pw contains a '#' + * or if user contains '#' or '=' or starts with '!' + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return success + */ + public boolean savePlain(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_PW, pw); + List<String> toDel = new ArrayList(4); + toDel.add(pfx + PROP_B64); + toDel.add(pfx + PROP_MD5); + toDel.add(pfx + PROP_CRYPT); + toDel.add(pfx + PROP_SHASH); + return _context.router().saveConfig(toAdd, toDel); + } + + + /** + * This will fail if + * if user contains '#' or '=' or starts with '!' + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return success + */ + public boolean saveB64(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + String b64 = Base64.encode(DataHelper.getUTF8(pw)); + Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_B64, b64); + List<String> toDel = new ArrayList(4); + toDel.add(pfx + PROP_PW); + toDel.add(pfx + PROP_MD5); + toDel.add(pfx + PROP_CRYPT); + toDel.add(pfx + PROP_SHASH); + return _context.router().saveConfig(toAdd, toDel); + } + + /** + * This will fail if + * user contains '#' or '=' or starts with '!' + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @param pw plain text, already trimmed + * @return success + */ + public boolean saveHash(String realm, String user, String pw) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + byte[] salt = new byte[SALT_LENGTH]; + _context.random().nextBytes(salt); + byte[] pwHash = _context.keyGenerator().generateSessionKey(salt, DataHelper.getUTF8(pw)).getData(); + byte[] shashBytes = new byte[SHASH_LENGTH]; + System.arraycopy(salt, 0, shashBytes, 0, SALT_LENGTH); + System.arraycopy(pwHash, 0, shashBytes, SALT_LENGTH, SessionKey.KEYSIZE_BYTES); + String shash = Base64.encode(shashBytes); + Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_SHASH, shash); + List<String> toDel = new ArrayList(4); + toDel.add(pfx + PROP_PW); + toDel.add(pfx + PROP_B64); + toDel.add(pfx + PROP_MD5); + toDel.add(pfx + PROP_CRYPT); + return _context.router().saveConfig(toAdd, toDel); + } + + /** + * Remove password, any kind. + * + * @param realm e.g. i2cp, routerconsole, etc. + * @param user null or "" for no user, already trimmed + * @return success + */ + public boolean remove(String realm, String user) { + String pfx = realm; + if (user != null && user.length() > 0) + pfx += '.' + user; + List<String> toDel = new ArrayList(5); + toDel.add(pfx + PROP_PW); + toDel.add(pfx + PROP_B64); + toDel.add(pfx + PROP_MD5); + toDel.add(pfx + PROP_CRYPT); + toDel.add(pfx + PROP_SHASH); + return _context.router().saveConfig(null, toDel); + } +} diff --git a/router/java/test/junit/net/i2p/router/SSUDemo.java b/router/java/test/junit/net/i2p/router/SSUDemo.java index b94367c5674e30a393f00ea3c94d669e39891af3..603f54c0d163ae881968aa62bee5a712f1a5b3af 100644 --- a/router/java/test/junit/net/i2p/router/SSUDemo.java +++ b/router/java/test/junit/net/i2p/router/SSUDemo.java @@ -57,7 +57,7 @@ public class SSUDemo { // we want SNTP synchronization for replay prevention envProps.setProperty("time.disabled", "false"); // allow 127.0.0.1/10.0.0.1/etc (useful for testing). If this is false, - // peers who say they're on an invalid IP are shitlisted + // peers who say they're on an invalid IP are banlisted envProps.setProperty("i2np.udp.allowLocal", "true"); // explicit IP+port. at least one router on the net has to have their IP+port // set, since there has to be someone to detect one's IP off. most don't need @@ -173,9 +173,9 @@ public class SSUDemo { out.setOnSendJob(new AfterACK()); // queue up the message, establishing a new SSU session if necessary, using // their direct SSU address if they have one, or their indirect SSU addresses - // if they don't. If we cannot contact them, we will 'shitlist' their address, + // if they don't. If we cannot contact them, we will 'banlist' their address, // during which time we will not even attempt to send messages to them. We also - // drop their netDb info when we shitlist them, in case their info is no longer + // drop their netDb info when we banlist them, in case their info is no longer // correct. Since the netDb is disabled for all meaningful purposes, the SSUDemo // will be responsible for fetching such information. _us.outNetMessagePool().add(out); @@ -278,4 +278,4 @@ public class SSUDemo { } public String getName() { return "Handle netDb store"; } } -} \ No newline at end of file +}