forked from I2P_Developers/i2p.i2p
Compare commits
274 Commits
i2p-0.8.9
...
i2p-0.8.12
Author | SHA1 | Date | |
---|---|---|---|
cc16834455 | |||
708e943c44 | |||
a2d6dd2c5b | |||
![]() |
7d6ab5ca41 | ||
![]() |
a9e03504de | ||
![]() |
3b59af11f6 | ||
![]() |
3a2286f874 | ||
![]() |
ab0e8d94a2 | ||
![]() |
be7770e679 | ||
![]() |
60c5f06689 | ||
![]() |
b391ed15ed | ||
d8e297dde7 | |||
f956539b4b | |||
![]() |
2dcc75ad2a | ||
![]() |
6409f07c9b | ||
![]() |
b38f6606c1 | ||
![]() |
0a239e1d4a | ||
![]() |
30e298d98b | ||
![]() |
3729aa31fd | ||
![]() |
3f4d154414 | ||
![]() |
4c76a93adb | ||
![]() |
ce0e0b2004 | ||
fa0b7d9acc | |||
c82dbd82b1 | |||
![]() |
b3e162e706 | ||
![]() |
f6d821c932 | ||
![]() |
45fb0ad9f3 | ||
5346dc1a98 | |||
f92edb44ba | |||
![]() |
2250ce642a | ||
![]() |
f4b52b7ccd | ||
![]() |
59f80086db | ||
![]() |
8e7bd9280d | ||
![]() |
daca27ea45 | ||
![]() |
7b49493924 | ||
![]() |
848f30955d | ||
![]() |
d9e4c4d7f4 | ||
ebad5ad61c | |||
bbcd6243e7 | |||
95eabfaaf8 | |||
![]() |
0874b3e461 | ||
![]() |
ac8d65ad78 | ||
![]() |
bd14dc3112 | ||
![]() |
cefe20f11d | ||
78229227d2 | |||
61810b7215 | |||
fb4d85ff8b | |||
937d2c54c8 | |||
![]() |
5b37df5bc9 | ||
![]() |
add3bcedf6 | ||
![]() |
7284af9329 | ||
![]() |
959932b827 | ||
![]() |
f9b2100d75 | ||
![]() |
a2454e8e7d | ||
4322cb3ee5 | |||
![]() |
a7311a5752 | ||
b18e7c7839 | |||
18b8ddc419 | |||
48841481f0 | |||
bf45e31c62 | |||
1488cd0f48 | |||
![]() |
5b05d86ec6 | ||
![]() |
212981dfee | ||
![]() |
7864404a8c | ||
51e4003089 | |||
6da32a1ccb | |||
eb32e2e23e | |||
![]() |
5673a6554b | ||
![]() |
fe5c34ebae | ||
![]() |
6ce5e8bd03 | ||
27f05879b1 | |||
60297f56d7 | |||
c92c664d3d | |||
24c1473b1d | |||
9e88fdeec9 | |||
69e5760b37 | |||
5a715f385a | |||
f9818a2b1d | |||
900defcd42 | |||
15cbb6bb71 | |||
a0c6287d2c | |||
14f61bbbb3 | |||
cd30545c08 | |||
![]() |
00c0171d31 | ||
![]() |
1e5afa8568 | ||
e117e3310c | |||
8448001a17 | |||
032b7d8230 | |||
![]() |
6caa1c3e81 | ||
b47deadc97 | |||
60e25b98b7 | |||
474909ae66 | |||
caada2bfa0 | |||
ec460794eb | |||
![]() |
929d471aa8 | ||
![]() |
6c4dbc545d | ||
![]() |
f8a3afd672 | ||
![]() |
5f81e923ca | ||
![]() |
d9f5a8621d | ||
![]() |
27d9616126 | ||
![]() |
50e3cdba05 | ||
![]() |
6fa01a3b2d | ||
![]() |
fc7d8f72b0 | ||
![]() |
03ff4dc0fd | ||
![]() |
1d842f024a | ||
1c4b0335a5 | |||
50606a6828 | |||
25b0603fde | |||
937ae8ad60 | |||
6d4a9abd35 | |||
533f7620ad | |||
49d88f0060 | |||
1c4d1e9a62 | |||
51f20c2c33 | |||
258effcc84 | |||
3bd641abd0 | |||
be1d95e991 | |||
bd82a0c435 | |||
0f384c86fe | |||
5362e7cf15 | |||
4c2c198c0a | |||
51899e9ea0 | |||
3fc312a66b | |||
e9d0d79809 | |||
69cae1a052 | |||
cc71e3a5ca | |||
c5f98a04fa | |||
489a0ead14 | |||
88e7d60e3e | |||
0d145fc77f | |||
b2e4ab4a30 | |||
c9cccd7581 | |||
![]() |
58f562d1bd | ||
0a76a0db22 | |||
080cc962fb | |||
b3fcdb8e46 | |||
f6cff78528 | |||
5fd20fc77c | |||
9ae07688a5 | |||
9a2a51518a | |||
c0b9fe0340 | |||
d3564dfcb5 | |||
8480788856 | |||
6bcf40b41a | |||
6b811b36b9 | |||
8619fd2c05 | |||
d9dcb1e583 | |||
bf461ee77e | |||
![]() |
2537f48d08 | ||
1339209fa9 | |||
8744c83ff6 | |||
09731ffd3a | |||
6d5678c14e | |||
e4004e6f83 | |||
17773a2de9 | |||
![]() |
97ead4cdd6 | ||
![]() |
18c850c085 | ||
![]() |
6b49c03eb8 | ||
![]() |
95dd34f009 | ||
f630d2dd27 | |||
f69f06b038 | |||
5a934050d4 | |||
df8cd90b85 | |||
![]() |
85d7cfb9e0 | ||
![]() |
f97779bed7 | ||
![]() |
f4f5873692 | ||
f3e2dfacdf | |||
9d0bafb8fa | |||
1119612684 | |||
dc6c568e9f | |||
bef8fe0c8c | |||
3e97958100 | |||
cac1ad35bf | |||
579af7e3ad | |||
e4ee5e3016 | |||
caaa8dacad | |||
ff499844a2 | |||
97fe1baf6a | |||
7aff01ea84 | |||
7f467dbdc8 | |||
0675c4caeb | |||
66f25e845a | |||
fcbee9d9c5 | |||
624badfb5f | |||
![]() |
4677b27e49 | ||
f9c3d58b47 | |||
5b5c39bf45 | |||
37e3e9e2cf | |||
af42b9e9a8 | |||
3fbe8e70e6 | |||
6a234759d5 | |||
85a8b587cd | |||
![]() |
6849427b4f | ||
![]() |
bb1b9d63df | ||
![]() |
5efd19e4e0 | ||
![]() |
c0a63bcd76 | ||
![]() |
6fc0e0fe22 | ||
![]() |
ef3f184233 | ||
20733d3bd2 | |||
530b481ffd | |||
8ecf423dfc | |||
![]() |
67cc3ad5b0 | ||
![]() |
e6dcd3a892 | ||
![]() |
e257cc8b05 | ||
![]() |
26d3646630 | ||
![]() |
668df37d20 | ||
![]() |
9e6885d9b3 | ||
2a57c24e9d | |||
e53290db18 | |||
96d5d75d56 | |||
![]() |
32a4ccc575 | ||
![]() |
1c0554ab6e | ||
![]() |
347c579da5 | ||
![]() |
835db4341f | ||
bf0947ee82 | |||
a3a1110b41 | |||
fc074234af | |||
1e8e067a80 | |||
fd25ead0bd | |||
6892469e0e | |||
8f31713f6a | |||
a9698dd89e | |||
223de5606e | |||
e4b5b97268 | |||
669b26a171 | |||
e3723d7c9f | |||
33d566be36 | |||
e8fe115ffe | |||
d7a5e3ef53 | |||
042da4d921 | |||
05522addba | |||
f4fa5d115a | |||
b7ba422983 | |||
7f1c5b2e1a | |||
157a78857d | |||
ef93532c96 | |||
fe6fd13a6a | |||
05cd98f9b4 | |||
1a2bd800d9 | |||
661604dd4e | |||
1fc6d0ad54 | |||
1a6e9257f3 | |||
1cd0177f87 | |||
c90097eca7 | |||
![]() |
a01c11ca1a | ||
![]() |
a57b57f306 | ||
![]() |
10e412d494 | ||
![]() |
6a798fb7b5 | ||
![]() |
23ad969332 | ||
b475e31f70 | |||
![]() |
fda3ef2cfc | ||
892ef4abe1 | |||
81093d1342 | |||
abd823ab95 | |||
3bc284b522 | |||
5f7c971345 | |||
46a1506c51 | |||
0202faf7f9 | |||
bff518a038 | |||
0b293c517f | |||
afd9c2b2c0 | |||
331da7f4fe | |||
![]() |
25a257b6f1 | ||
82ac0db333 | |||
3dbefa8d01 | |||
e8712a3a11 | |||
104594ed59 | |||
a6ce41fac5 | |||
a97834d2b7 | |||
![]() |
485a3ee11a | ||
![]() |
b835dbcf4c | ||
![]() |
6a13d22556 | ||
![]() |
a296dedebe | ||
![]() |
161e7ca8b2 |
@@ -10,6 +10,7 @@ trans.it = apps/i2ptunnel/locale/messages_it.po
|
||||
trans.nl = apps/i2ptunnel/locale/messages_nl.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
|
||||
trans.vi = apps/i2ptunnel/locale/messages_vi.po
|
||||
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
|
||||
|
||||
@@ -19,6 +20,7 @@ source_lang = en
|
||||
trans.ar = apps/routerconsole/locale/messages_ar.po
|
||||
trans.da = apps/routerconsole/locale/messages_da.po
|
||||
trans.de = apps/routerconsole/locale/messages_de.po
|
||||
trans.et_EE = apps/routerconsole/locale/messages_ee.po
|
||||
trans.es = apps/routerconsole/locale/messages_es.po
|
||||
trans.fi = apps/routerconsole/locale/messages_fi.po
|
||||
trans.fr = apps/routerconsole/locale/messages_fr.po
|
||||
@@ -92,6 +94,7 @@ trans.nl = apps/susimail/locale/messages_nl.po
|
||||
trans.ru = apps/susimail/locale/messages_ru.po
|
||||
trans.sv_SE = apps/susimail/locale/messages_sv.po
|
||||
trans.pl = apps/susimail/locale/messages_pl.po
|
||||
trans.uk_UA = apps/susimail/locale/messages_uk.po
|
||||
trans.vi = apps/susimail/locale/messages_vi.po
|
||||
trans.zh_CN = apps/susimail/locale/messages_zh.po
|
||||
|
||||
@@ -102,6 +105,7 @@ trans.de = debian/po/de.po
|
||||
trans.es = debian/po/es.po
|
||||
trans.pl = debian/po/pl.po
|
||||
trans.ru = debian/po/ru.po
|
||||
trans.sv_SE = debian/po/sv.po
|
||||
trans.uk_UA = debian/po/uk.po
|
||||
|
||||
[main]
|
||||
|
41
LICENSE.txt
41
LICENSE.txt
@@ -2,7 +2,7 @@ This product includes both public domain code and licensed code as described bel
|
||||
For all code, unless otherwise stated in the appropriate license, the following applies:
|
||||
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
@@ -92,34 +92,34 @@ Installer:
|
||||
See licenses/LICENSE-Launch4j.txt (in binary packages)
|
||||
See installer/lib/launch4j/LICENSE.txt (in source packages)
|
||||
The following projects are used by Launch4j...
|
||||
MinGW binutils (http://www.mingw.org/)
|
||||
MinGW binutils (http://www.mingw.org/)
|
||||
|
||||
Commons BeanUtils (http://jakarta.apache.org/commons/beanutils/)
|
||||
Commons BeanUtils (http://jakarta.apache.org/commons/beanutils/)
|
||||
|
||||
Commons Logging (http://jakarta.apache.org/commons/logging/)
|
||||
See licenses/LICENSE-Apache1.1.txt
|
||||
Commons Logging (http://jakarta.apache.org/commons/logging/)
|
||||
See licenses/LICENSE-Apache2.0.txt
|
||||
See licenses/NOTICE-Commons-Logging.txt
|
||||
|
||||
XStream (http://xstream.codehaus.org/)
|
||||
XStream (http://xstream.codehaus.org/)
|
||||
Copyright (c) 2003-2004, Joe Walnes
|
||||
See licenses/LICENSE-XStream.txt
|
||||
|
||||
JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
|
||||
JGoodies Forms (http://www.jgoodies.com/freeware/forms/)
|
||||
Copyright (c) 2002-2004 JGoodies Karsten Lentzsch. All rights reserved.
|
||||
See licenses/LICENSE-JGoodies-Forms.txt
|
||||
|
||||
JGoodies Looks (http://www.jgoodies.com/freeware/looks/)
|
||||
JGoodies Looks (http://www.jgoodies.com/freeware/looks/)
|
||||
Copyright (c) 2003 JGoodies Karsten Lentzsch. All rights reserved.
|
||||
See licenses/LICENSE-JGoodies-Looks.txt
|
||||
|
||||
Foxtrot (http://foxtrot.sourceforge.net/)
|
||||
Foxtrot (http://foxtrot.sourceforge.net/)
|
||||
Copyright (c) 2002, Simone Bordet & Marco Cravero. All rights reserved.
|
||||
See licenses/LICENSE-Foxtrot.txt
|
||||
|
||||
Nuvola Icon Theme (http://www.icon-king.com)
|
||||
Nuvola Icon Theme (http://www.icon-king.com)
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
Forms were created using Abeille Forms Designer (https://abeille.dev.java.net/)
|
||||
Forms were created using Abeille Forms Designer (https://abeille.dev.java.net/)
|
||||
|
||||
Izpack 4.3.0:
|
||||
Copyright (c) 2001-2008 Julien Ponge
|
||||
@@ -127,7 +127,7 @@ Installer:
|
||||
|
||||
|
||||
|
||||
Java Service Wrapper Community Edition 32-bit 3.5.9:
|
||||
Java Service Wrapper Community Edition 32-bit 3.5.13:
|
||||
Copyright (C) 1999-2011 Tanuki Software, Ltd. All Rights Reserved.
|
||||
See licenses/LICENSE-Wrapper.txt
|
||||
|
||||
@@ -135,10 +135,6 @@ Java Service Wrapper Community Edition 32-bit 3.5.9:
|
||||
Jbigi Libraries (jbigi.jar):
|
||||
JNI code public domain.
|
||||
|
||||
GMP 4.1.3 / 4.1.4:
|
||||
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
GMP 4.3.2 / 5.0.2:
|
||||
Copyright 1991, 1996, 1999, 2000, 2007 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv3.txt
|
||||
@@ -156,18 +152,19 @@ Applications:
|
||||
|
||||
I2PSnark:
|
||||
Copyright (C) 2003 Mark J. Wielaard
|
||||
GPLv2 (or any later version)
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
Silk icons: See licenses/LICENSE-SilkIcons.txt
|
||||
|
||||
I2PTunnel:
|
||||
(c) 2003 - 2004 mihi
|
||||
GPLv2 with exception.
|
||||
GPLv2 (or any later version) with exception.
|
||||
See licenses/LICENSE-I2PTunnel.txt
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
|
||||
I2PTunnel SOCKS Proxy:
|
||||
Copyright (c) 2004 by human
|
||||
GPLv2 with exception.
|
||||
GPLv2 (or any later version) with exception.
|
||||
See licenses/LICENSE-I2PTunnel.txt
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
|
||||
@@ -177,7 +174,6 @@ Applications:
|
||||
|
||||
Jetty 5.1.15:
|
||||
Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.
|
||||
See licenses/LICENSE-Apache1.1.txt
|
||||
See licenses/LICENSE-Apache2.0.txt
|
||||
See licenses/NOTICE-Commons-Logging.txt
|
||||
|
||||
@@ -197,6 +193,7 @@ Applications:
|
||||
Flag icons:
|
||||
- Jersey and EU flag icons: public domain, courtesy Xrmap flag
|
||||
collection http://www.arvernes.com/wiki/index.php/Xrmap
|
||||
- Guernsey and Isle of Man flags from the Open Clip Art Library, released into the public domain
|
||||
- All other flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
|
||||
Silk icons: See licenses/LICENSE-SilkIcons.txt
|
||||
|
||||
@@ -216,18 +213,20 @@ Applications:
|
||||
|
||||
SusiDNS:
|
||||
Copyright (C) 2005 <susi23@mail.i2p>
|
||||
GPLv2 (or any later version)
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
Uses Apache Jakarta Standard Tag Library 1.1.2:
|
||||
See licenses/LICENSE-Apache2.0.txt
|
||||
|
||||
SusiMail:
|
||||
Copyright (C) 2004-2005 <susi23@mail.i2p>
|
||||
GPLv2 (or any later version)
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
|
||||
Systray:
|
||||
Public domain.
|
||||
Bundles systray4j code:
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
Bundles systray4j-2.4.1:
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
|
||||
|
||||
|
@@ -29,6 +29,7 @@ import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintStream;
|
||||
import java.net.Socket;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@@ -434,7 +435,7 @@ public class DoCMDS implements Runnable {
|
||||
if (token.countTokens() != 0) {
|
||||
Command = token.nextToken();
|
||||
Command =
|
||||
Command.toLowerCase();
|
||||
Command.toLowerCase(Locale.US);
|
||||
if (token.countTokens() != 0) {
|
||||
Arg = token.nextToken();
|
||||
} else {
|
||||
|
@@ -30,6 +30,7 @@ import java.io.OutputStream;
|
||||
import java.net.ConnectException;
|
||||
import java.net.NoRouteToHostException;
|
||||
import java.net.Socket;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import net.i2p.I2PException;
|
||||
import net.i2p.client.streaming.I2PSocket;
|
||||
@@ -144,7 +145,7 @@ public class TCPtoI2P implements Runnable {
|
||||
in = sock.getInputStream();
|
||||
out = sock.getOutputStream();
|
||||
line = lnRead(in);
|
||||
input = line.toLowerCase();
|
||||
input = line.toLowerCase(Locale.US);
|
||||
Destination dest = null;
|
||||
if (input.endsWith(".i2p")) {
|
||||
//dest = I2PTunnel.destFromName(input);
|
||||
|
@@ -27,6 +27,7 @@ import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
@@ -71,7 +72,7 @@ class ConfigIterator implements Iterator<Map.Entry<String, String>> {
|
||||
inputLine = ConfigParser.stripComments(inputLine);
|
||||
String[] splitLine = inputLine.split("=");
|
||||
if (splitLine.length == 2) {
|
||||
next = new ConfigEntry(splitLine[0].trim().toLowerCase(), splitLine[1].trim());
|
||||
next = new ConfigEntry(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
|
||||
return true;
|
||||
}
|
||||
inputLine = input.readLine();
|
||||
|
@@ -32,6 +32,7 @@ import java.io.StringReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import net.i2p.util.SecureFile;
|
||||
@@ -92,7 +93,7 @@ class ConfigParser {
|
||||
inputLine = ConfigParser.stripComments(inputLine);
|
||||
String[] splitLine = inputLine.split("=");
|
||||
if (splitLine.length == 2) {
|
||||
result.put(splitLine[0].trim().toLowerCase(), splitLine[1].trim());
|
||||
result.put(splitLine[0].trim().toLowerCase(Locale.US), splitLine[1].trim());
|
||||
}
|
||||
inputLine = input.readLine();
|
||||
}
|
||||
|
@@ -23,11 +23,15 @@ package org.klomp.snark;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.CharsetEncoder;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.crypto.SHA1;
|
||||
import net.i2p.util.SecureFile;
|
||||
@@ -67,6 +71,8 @@ public class Storage
|
||||
public static final int MAX_PIECES = 10*1024;
|
||||
public static final long MAX_TOTAL_SIZE = MAX_PIECE_SIZE * (long) MAX_PIECES;
|
||||
|
||||
private static final Map<String, String> _filterNameCache = new ConcurrentHashMap();
|
||||
|
||||
/**
|
||||
* Creates a new storage based on the supplied MetaInfo. This will
|
||||
* try to create and/or check all needed files in the MetaInfo.
|
||||
@@ -568,20 +574,49 @@ public class Storage
|
||||
/**
|
||||
* Removes 'suspicious' characters from the given file name.
|
||||
* http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
|
||||
* Then replace chars not supported in the charset.
|
||||
*
|
||||
* This is called frequently and it can be pretty slow so cache the result.
|
||||
*
|
||||
* TODO: If multiple files in the same torrent map to the same filter name,
|
||||
* the whole torrent will blow up. Check at torrent creation?
|
||||
*/
|
||||
public static String filterName(String name)
|
||||
{
|
||||
if (name.equals(".") || name.equals(" "))
|
||||
return "_";
|
||||
String rv = name;
|
||||
if (rv.startsWith("."))
|
||||
rv = '_' + rv.substring(1);
|
||||
if (rv.endsWith(".") || rv.endsWith(" "))
|
||||
rv = rv.substring(0, rv.length() - 1) + '_';
|
||||
for (int i = 0; i < ILLEGAL.length; i++) {
|
||||
if (rv.indexOf(ILLEGAL[i]) >= 0)
|
||||
rv = rv.replace(ILLEGAL[i], '_');
|
||||
String rv = _filterNameCache.get(name);
|
||||
if (rv != null)
|
||||
return rv;
|
||||
if (name.equals(".") || name.equals(" ")) {
|
||||
rv = "_";
|
||||
} else {
|
||||
rv = name;
|
||||
if (rv.startsWith("."))
|
||||
rv = '_' + rv.substring(1);
|
||||
if (rv.endsWith(".") || rv.endsWith(" "))
|
||||
rv = rv.substring(0, rv.length() - 1) + '_';
|
||||
for (int i = 0; i < ILLEGAL.length; i++) {
|
||||
if (rv.indexOf(ILLEGAL[i]) >= 0)
|
||||
rv = rv.replace(ILLEGAL[i], '_');
|
||||
}
|
||||
// Replace characters not supported in the charset
|
||||
if (!Charset.defaultCharset().name().equals("UTF-8")) {
|
||||
try {
|
||||
CharsetEncoder enc = Charset.defaultCharset().newEncoder();
|
||||
if (!enc.canEncode(rv)) {
|
||||
String repl = rv;
|
||||
for (int i = 0; i < rv.length(); i++) {
|
||||
char c = rv.charAt(i);
|
||||
if (!enc.canEncode(c))
|
||||
repl = repl.replace(c, '_');
|
||||
}
|
||||
rv = repl;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
_filterNameCache.put(name, rv);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@@ -30,6 +30,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -325,7 +326,7 @@ public class TrackerClient extends I2PAppThread
|
||||
// don't show secondary tracker problems to the user
|
||||
if (tr.isPrimary)
|
||||
snark.setTrackerProblems(tr.trackerProblems);
|
||||
if (tr.trackerProblems.toLowerCase().startsWith(NOT_REGISTERED)) {
|
||||
if (tr.trackerProblems.toLowerCase(Locale.US).startsWith(NOT_REGISTERED)) {
|
||||
// Give a guy some time to register it if using opentrackers too
|
||||
if (trackers.size() == 1) {
|
||||
stop = true;
|
||||
|
@@ -14,6 +14,7 @@ import java.util.Comparator;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
@@ -245,6 +246,9 @@ public class I2PSnarkServlet extends Default {
|
||||
}
|
||||
}
|
||||
out.write("</div>\n");
|
||||
String newURL = req.getParameter("newURL");
|
||||
if (newURL != null && newURL.trim().length() > 0 && req.getMethod().equals("GET"))
|
||||
_manager.addMessage(_("Click \"Add torrent\" button to fetch torrent"));
|
||||
out.write("<div class=\"page\"><div class=\"mainsection\"><div class=\"snarkMessages\"><table><tr><td align=\"left\"><pre>");
|
||||
List msgs = _manager.getMessages();
|
||||
for (int i = msgs.size()-1; i >= 0; i--) {
|
||||
@@ -490,6 +494,8 @@ public class I2PSnarkServlet extends Default {
|
||||
*****/
|
||||
if (newURL != null) {
|
||||
if (newURL.startsWith("http://")) {
|
||||
if (!_manager.util().connected())
|
||||
_manager.addMessage(_("Opening the I2P tunnel"));
|
||||
_manager.addMessage(_("Fetching {0}", urlify(newURL)));
|
||||
I2PAppThread fetch = new I2PAppThread(new FetchAndAdd(_manager, newURL), "Fetch and add", true);
|
||||
fetch.start();
|
||||
@@ -578,7 +584,7 @@ public class I2PSnarkServlet extends Default {
|
||||
File f = new File(name);
|
||||
f.delete();
|
||||
_manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath()));
|
||||
List files = meta.getFiles();
|
||||
List<List<String>> files = meta.getFiles();
|
||||
String dataFile = snark.getBaseName();
|
||||
f = new File(_manager.getDataDir(), dataFile);
|
||||
if (files == null) { // single file torrent
|
||||
@@ -588,23 +594,36 @@ public class I2PSnarkServlet extends Default {
|
||||
_manager.addMessage(_("Data file could not be deleted: {0}", f.getAbsolutePath()));
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < files.size(); i++) { // pass 1 delete files
|
||||
// step 1 delete files
|
||||
for (int i = 0; i < files.size(); i++) {
|
||||
// multifile torrents have the getFiles() return lists of lists of filenames, but
|
||||
// each of those lists just contain a single file afaict...
|
||||
File df = Storage.getFileFromNames(f, (List) files.get(i));
|
||||
File df = Storage.getFileFromNames(f, files.get(i));
|
||||
if (df.delete())
|
||||
_manager.addMessage(_("Data file deleted: {0}", df.getAbsolutePath()));
|
||||
else
|
||||
_manager.addMessage(_("Data file could not be deleted: {0}", df.getAbsolutePath()));
|
||||
}
|
||||
for (int i = files.size() - 1; i >= 0; i--) { // pass 2 delete dirs - not foolproof,
|
||||
// we could sort and do a strict bottom-up
|
||||
File df = Storage.getFileFromNames(f, (List) files.get(i));
|
||||
df = df.getParentFile();
|
||||
if (df == null || !df.exists())
|
||||
continue;
|
||||
if(df.delete())
|
||||
// step 2 make Set of dirs with reverse sort
|
||||
Set<File> dirs = new TreeSet(Collections.reverseOrder());
|
||||
for (List<String> list : files) {
|
||||
for (int i = 1; i < list.size(); i++) {
|
||||
dirs.add(Storage.getFileFromNames(f, list.subList(0, i)));
|
||||
}
|
||||
}
|
||||
// step 3 delete dirs bottom-up
|
||||
for (File df : dirs) {
|
||||
if (df.delete()) {
|
||||
_manager.addMessage(_("Data dir deleted: {0}", df.getAbsolutePath()));
|
||||
} else if (_log.shouldLog(Log.WARN)) {
|
||||
_log.warn("Could not delete dir " + df);
|
||||
}
|
||||
}
|
||||
// step 4 delete base
|
||||
if (f.delete()) {
|
||||
_manager.addMessage(_("Data dir deleted: {0}", f.getAbsolutePath()));
|
||||
} else if (_log.shouldLog(Log.WARN)) {
|
||||
_log.warn("Could not delete dir " + f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -727,10 +746,10 @@ public class I2PSnarkServlet extends Default {
|
||||
l = l.substring(skip.length());
|
||||
if (r.startsWith(skip))
|
||||
r = r.substring(skip.length());
|
||||
String llc = l.toLowerCase();
|
||||
String llc = l.toLowerCase(Locale.US);
|
||||
if (llc.startsWith("the ") || llc.startsWith("the.") || llc.startsWith("the_"))
|
||||
l = l.substring(4);
|
||||
String rlc = r.toLowerCase();
|
||||
String rlc = r.toLowerCase(Locale.US);
|
||||
if (rlc.startsWith("the ") || rlc.startsWith("the.") || rlc.startsWith("the_"))
|
||||
r = r.substring(4);
|
||||
return collator.compare(l, r);
|
||||
@@ -1173,8 +1192,9 @@ public class I2PSnarkServlet extends Default {
|
||||
}
|
||||
|
||||
private void writeAddForm(PrintWriter out, HttpServletRequest req) throws IOException {
|
||||
// display incoming parameter if a GET so links will work
|
||||
String newURL = req.getParameter("newURL");
|
||||
if ( (newURL == null) || (newURL.trim().length() <= 0) )
|
||||
if (newURL == null || newURL.trim().length() <= 0 || req.getMethod().equals("POST"))
|
||||
newURL = "";
|
||||
else
|
||||
newURL = DataHelper.stripHTML(newURL); // XSS
|
||||
@@ -1219,7 +1239,7 @@ public class I2PSnarkServlet extends Default {
|
||||
else
|
||||
baseFile = DataHelper.stripHTML(baseFile); // XSS
|
||||
|
||||
out.write("<div class=\"newtorrentsection\"><div class=\"snarkNewTorrent\">\n");
|
||||
out.write("<a name=\"add\"></a><div class=\"newtorrentsection\"><div class=\"snarkNewTorrent\">\n");
|
||||
// *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
|
||||
out.write("<form action=\"_post\" method=\"POST\">\n");
|
||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n");
|
||||
@@ -1446,7 +1466,7 @@ public class I2PSnarkServlet extends Default {
|
||||
out.write(": <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" spellcheck=\"false\" >"
|
||||
+ opts.toString() + "</textarea><br>\n" +
|
||||
|
||||
"<tr><td> <td><input type=\"submit\" value=\"");
|
||||
"<tr><td> <td><input type=\"submit\" class=\"accept\" value=\"");
|
||||
out.write(_("Save configuration"));
|
||||
out.write("\" name=\"foo\" >\n" +
|
||||
"</table></div></div></form>");
|
||||
@@ -1739,6 +1759,7 @@ public class I2PSnarkServlet extends Default {
|
||||
// We don't have the hash of the torrent file
|
||||
//buf.append("<br>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
|
||||
// .append(MAGGOT).append(hex).append(':').append(hex).append("</a>");
|
||||
buf.append("<br>").append(_("Torrent file")).append(": ").append(snark.getName());
|
||||
buf.append("</div></th></tr>");
|
||||
}
|
||||
if (ls == null) {
|
||||
@@ -1836,7 +1857,7 @@ public class I2PSnarkServlet extends Default {
|
||||
if (complete) {
|
||||
buf.append("<a href=\"").append(path).append("\">");
|
||||
// thumbnail ?
|
||||
String plc = item.toString().toLowerCase();
|
||||
String plc = item.toString().toLowerCase(Locale.US);
|
||||
if (plc.endsWith(".jpg") || plc.endsWith(".jpeg") || plc.endsWith(".png") ||
|
||||
plc.endsWith(".gif") || plc.endsWith(".ico")) {
|
||||
buf.append("<img alt=\"\" border=\"0\" class=\"thumb\" src=\"")
|
||||
@@ -1916,7 +1937,7 @@ public class I2PSnarkServlet extends Default {
|
||||
// instead of this mishmash. We can't get to HttpContext.setMimeMapping()
|
||||
// from here? We could do it from a web.xml perhaps.
|
||||
// Or could we put our own org/mortbay/http/mime.properties file in the war?
|
||||
String plc = path.toLowerCase();
|
||||
String plc = path.toLowerCase(Locale.US);
|
||||
String mime = getServletContext().getMimeType(path);
|
||||
if (mime == null)
|
||||
mime = "";
|
||||
@@ -2039,13 +2060,31 @@ private static class FetchAndAdd implements Runnable {
|
||||
try { if (in != null) in.close(); } catch (IOException ioe) {}
|
||||
}
|
||||
} else {
|
||||
_manager.addMessage(_("Torrent was not retrieved from {0}", urlify(_url)));
|
||||
// Generate a retry link, but sadly can't have a form inside a table
|
||||
// So make this an ugly GET
|
||||
StringBuilder buf = new StringBuilder(1024);
|
||||
// FIXME don't lose peer setting
|
||||
//String peerParam = req.getParameter("p");
|
||||
//if (peerParam != null)
|
||||
// buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
buf.append(_("Torrent was not retrieved from {0}", urlify(_url)));
|
||||
String link = _url.replace("&", "&").replace(" ", "%20").replace(":", "%3A").replace("/", "%2F");
|
||||
/**** FIXME ticket #575
|
||||
buf.append(" - [<a href=\"/i2psnark/?newURL=").append(link).append("#add\" >");
|
||||
buf.append(_("Retry"));
|
||||
buf.append("</a>]");
|
||||
****/
|
||||
_manager.addMessage(buf.toString());
|
||||
}
|
||||
} finally {
|
||||
if (file != null) file.delete();
|
||||
}
|
||||
}
|
||||
|
||||
private String _(String s) {
|
||||
return _manager.util().getString(s);
|
||||
}
|
||||
|
||||
private String _(String s, String o) {
|
||||
return _manager.util().getString(s, o);
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-10-07 13:59+0000\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:16+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:46+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"Language-Team: German (http://www.transifex.net/projects/p/I2P/team/de/)\n"
|
||||
@@ -170,7 +170,7 @@ msgstr "Kann dies nicht öffnen: \"{0}\""
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:737
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:792
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Torrent mit diesem Infohash läuft schon: {0}"
|
||||
@@ -201,7 +201,7 @@ msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "Torrent in \"{0}\" ist nicht gültig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:699
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2057
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
@@ -219,7 +219,7 @@ msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent hinzugefügt: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:748
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Hole {0}"
|
||||
@@ -319,7 +319,7 @@ msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo für {0} erhalten"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1257
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:528
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Starte Torrent {0}"
|
||||
@@ -333,175 +333,185 @@ msgstr "Konnte mich nicht mit I2P verbinden!"
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Konnte {0} nicht hinzufügen."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr "I2PSnark - Anonymer BitTorrent-Klient"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
|
||||
msgid "Torrents"
|
||||
msgstr "Torrents"
|
||||
|
||||
#: ../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:224
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052
|
||||
msgid "I2PSnark"
|
||||
msgstr "I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
msgid "Refresh page"
|
||||
msgstr "Aktualisiere Seite"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:233
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ../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:251
|
||||
msgid "Click \"Add torrent\" button to fetch torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
|
||||
msgid "Status"
|
||||
msgstr "Zustand"
|
||||
|
||||
#: ../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:296
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
|
||||
msgid "Hide Peers"
|
||||
msgstr "Teilnehmer ausblenden"
|
||||
|
||||
#: ../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:303
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305
|
||||
msgid "Show Peers"
|
||||
msgstr "Teilnehmer einblenden"
|
||||
|
||||
#: ../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:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718
|
||||
msgid "Torrent"
|
||||
msgstr "Torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316
|
||||
msgid "Estimated time remaining"
|
||||
msgstr "geschätzte verbleibende Zeit"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
msgid "ETA"
|
||||
msgstr "Dauer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323
|
||||
msgid "Downloaded"
|
||||
msgstr "heruntergeladen"
|
||||
|
||||
#. 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:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340
|
||||
msgid "RX"
|
||||
msgstr " "
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:330
|
||||
msgid "Uploaded"
|
||||
msgstr "hochgeladen"
|
||||
|
||||
#. 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:333
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:350
|
||||
msgid "TX"
|
||||
msgstr " "
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338
|
||||
msgid "Down Rate"
|
||||
msgstr "eingehend"
|
||||
|
||||
#. 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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
|
||||
msgid "Rate"
|
||||
msgstr " "
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
|
||||
msgid "Up Rate"
|
||||
msgstr "ausgehend"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Stoppe alle Torrents und den I2P-Tunnel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374
|
||||
msgid "Stop All"
|
||||
msgstr "Stoppe alle"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Starte alle Torrents und den I2P-Tunnel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:385
|
||||
msgid "Start All"
|
||||
msgstr "Starte alle"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
msgid "No torrents loaded."
|
||||
msgstr "keine Torrents geladen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
|
||||
msgid "Totals"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:411
|
||||
#, 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:410
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:414
|
||||
#, 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:499
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:498
|
||||
#, fuzzy
|
||||
msgid "Opening the I2P tunnel"
|
||||
msgstr "Stoppe alle Torrents und den I2P-Tunnel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
|
||||
#, 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:547
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:574
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnetlink wurde gelöscht: {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:561
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Torrentdatei gelöscht: {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:592
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Daten gelöscht: {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:594
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, 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:607
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:624
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Datenverzeichnis wurde gelöscht: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
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:659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr "Torrent erstellt für \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
@@ -510,118 +520,118 @@ 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:663
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
|
||||
#, 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:666
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
|
||||
#, 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:669
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
|
||||
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:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr "Stoppe alle Torrents und beende den I2P-Tunnel."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr "I2P-Tunnel geschlossen."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:705
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr "Öffne den I2P-Tunnel und starte alle Torrents."
|
||||
|
||||
#: ../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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
msgid "Tracker Error"
|
||||
msgstr "Trackerfehler"
|
||||
|
||||
#: ../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:830
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:858
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:867
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:871
|
||||
#, 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:824
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848
|
||||
msgid "Seeding"
|
||||
msgstr "Verteile"
|
||||
|
||||
#: ../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:852
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1829
|
||||
msgid "Complete"
|
||||
msgstr "vollständig"
|
||||
|
||||
#: ../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:855
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:860
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../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:864
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:869
|
||||
msgid "Stalled"
|
||||
msgstr "Stillstand"
|
||||
|
||||
#: ../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:873
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:876
|
||||
msgid "No Peers"
|
||||
msgstr "keine Teilnehmer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:859
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878
|
||||
msgid "Stopped"
|
||||
msgstr "angehalten"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:910
|
||||
msgid "Torrent details"
|
||||
msgstr "Details"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:903
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:922
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:918
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
|
||||
msgid "View files"
|
||||
msgstr "Zeige Dateien"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:920
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
|
||||
msgid "Open file"
|
||||
msgstr "Öffne Datei"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:981
|
||||
msgid "Stop the torrent"
|
||||
msgstr "Torrent stoppen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983
|
||||
msgid "Stop"
|
||||
msgstr "Stopp"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
|
||||
msgid "Start the torrent"
|
||||
msgstr "Torrent starten"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995
|
||||
msgid "Start"
|
||||
msgstr "Start"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
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"
|
||||
@@ -629,7 +639,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 quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:992
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
@@ -638,18 +648,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:995
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1025
|
||||
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 quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
@@ -658,182 +668,182 @@ msgstr ""
|
||||
"Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle "
|
||||
"heruntergeladenen Daten löschen wollen?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080
|
||||
msgid "Seed"
|
||||
msgstr "Quelle"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1103
|
||||
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:1086
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105
|
||||
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:1106
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1125
|
||||
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:1108
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1127
|
||||
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:1166
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1185
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr "Details beim Tracker {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215
|
||||
msgid "Add Torrent"
|
||||
msgstr "Torrent hinzufügen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217
|
||||
msgid "From URL"
|
||||
msgstr "Quell-URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
"Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen "
|
||||
"Maggotlink an!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
|
||||
msgid "Add torrent"
|
||||
msgstr "Füge Torrent hinzu"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
|
||||
#, 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:1210
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230
|
||||
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:1233
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
|
||||
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:1236
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256
|
||||
msgid "Data to seed"
|
||||
msgstr "Daten zum Verteilen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
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:1242
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1262
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
|
||||
msgid "Tracker"
|
||||
msgstr "Tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
msgid "Select a tracker"
|
||||
msgstr "Wähle einen Tracker"
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1269
|
||||
msgid "Open trackers only"
|
||||
msgstr "Benutze nur OpenTracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
|
||||
msgid "or"
|
||||
msgstr "oder"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "Geben Sie eine Tracker-Announce-URL an!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290
|
||||
msgid "Create torrent"
|
||||
msgstr "Erstelle Torrent"
|
||||
|
||||
#: ../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:1311
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
|
||||
msgid "Configuration"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1315
|
||||
msgid "Data directory"
|
||||
msgstr "Datenverzeichnis"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
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:1301
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
|
||||
msgid "Files readable by all"
|
||||
msgstr "Dateien von allen lesbar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325
|
||||
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:1309
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329
|
||||
msgid "Auto start"
|
||||
msgstr "Autostart"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1313
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
|
||||
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:1317
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337
|
||||
msgid "Theme"
|
||||
msgstr "Aufmachung"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "Refresh time"
|
||||
msgstr "Auffrischungsintervall"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1363
|
||||
msgid "Never"
|
||||
msgstr "Nie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1369
|
||||
msgid "Startup delay"
|
||||
msgstr "Startverzögerung"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1371
|
||||
msgid "minutes"
|
||||
msgstr "Minuten"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Gesamtlimit an Hochladern"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1398
|
||||
msgid "peers"
|
||||
msgstr "Teilnehmer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Bandbreitenbegrenzung beim Hochladen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Halbe verfügbare Bandbreite wird empfohlen."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Routerbandbreite ansehen oder ändern"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Benutze auch OpenTracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
@@ -841,155 +851,163 @@ msgstr ""
|
||||
"Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den "
|
||||
"OpenTrackern bekannt gegeben."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1419
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "OpenTracker-Announce-URLs"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1431
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Einstellungen eingehend"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1417
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1437
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Einstellungen ausgehend"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
msgid "I2CP host"
|
||||
msgstr "I2CP-Host"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
msgid "I2CP port"
|
||||
msgstr "I2CP-Port"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1465
|
||||
msgid "I2CP options"
|
||||
msgstr "I2CP-Optionen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
msgid "Save configuration"
|
||||
msgstr "Einstellungen speichern"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1495
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr "ungültige Magnet-URL {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
|
||||
#, 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:1539
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559
|
||||
#, 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:1540
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
|
||||
#, 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:1702
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
|
||||
msgid "Completion"
|
||||
msgstr "Fortschritt"
|
||||
|
||||
#. 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:1726
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775
|
||||
msgid "Size"
|
||||
msgstr "Größe"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1711
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
|
||||
msgid "Files"
|
||||
msgstr "Dateien"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1713
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1733
|
||||
msgid "Pieces"
|
||||
msgstr "Stücke"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
|
||||
msgid "Piece size"
|
||||
msgstr "Stückgröße"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756
|
||||
msgid "Magnet link"
|
||||
msgstr "Magnetlink"
|
||||
|
||||
#: ../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:1773
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812
|
||||
msgid "Directory"
|
||||
msgstr "Verzeichnis"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782
|
||||
msgid "Priority"
|
||||
msgstr "Priorität"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1787
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Eine Hierarchie nach oben"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1797
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1817
|
||||
msgid "Torrent not found?"
|
||||
msgstr "Torrentdatei nicht gefunden?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "Datei nicht gefunden im Torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
|
||||
msgid "complete"
|
||||
msgstr "vollständig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1820
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1840
|
||||
msgid "bytes remaining"
|
||||
msgstr "Bytes ausstehend"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1845
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1871
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891
|
||||
msgid "High"
|
||||
msgstr "hoch"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1876
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1896
|
||||
msgid "Normal"
|
||||
msgstr "normal"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1881
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1901
|
||||
msgid "Skip"
|
||||
msgstr "auslassen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1890
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1910
|
||||
msgid "Save priorities"
|
||||
msgstr "Prioritäten speichern"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2026
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent geholt von {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent läuft schon: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2029
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent ist schon in der Warteschlange: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent in {0} war nicht gültig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
|
||||
#. FIXME don't lose peer setting
|
||||
#. String peerParam = req.getParameter("p");
|
||||
#. if (peerParam != null)
|
||||
#. buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2069
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Torrent wurde nicht geladen von {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-09-23 20:16+0000\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:18+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"
|
||||
@@ -153,7 +153,7 @@ msgstr ""
|
||||
#: ../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/web/I2PSnarkServlet.java:2035
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr ""
|
||||
@@ -180,7 +180,7 @@ msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:699
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2057
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
@@ -196,7 +196,7 @@ msgid "Torrent added: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:748
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr ""
|
||||
@@ -292,7 +292,7 @@ msgid "Metainfo received for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1257
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:528
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr ""
|
||||
@@ -306,309 +306,300 @@ msgstr ""
|
||||
msgid "Unable to add {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:220
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
|
||||
msgid "Torrents"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:224
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052
|
||||
msgid "I2PSnark"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
msgid "Refresh page"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:233
|
||||
msgid "Forum"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:251
|
||||
msgid "Click \"Add torrent\" button to fetch torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:296
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
|
||||
msgid "Hide Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:303
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305
|
||||
msgid "Show Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718
|
||||
msgid "Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316
|
||||
msgid "Estimated time remaining"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
msgid "ETA"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323
|
||||
msgid "Downloaded"
|
||||
msgstr ""
|
||||
|
||||
#. 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:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340
|
||||
msgid "RX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:330
|
||||
msgid "Uploaded"
|
||||
msgstr ""
|
||||
|
||||
#. 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:333
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:350
|
||||
msgid "TX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338
|
||||
msgid "Down Rate"
|
||||
msgstr ""
|
||||
|
||||
#. 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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
|
||||
msgid "Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
|
||||
msgid "Up Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374
|
||||
msgid "Stop All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:385
|
||||
msgid "Start All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
msgid "No torrents loaded."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
|
||||
msgid "Totals"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:411
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:414
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:498
|
||||
msgid "Opening the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../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:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:561
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:592
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:594
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:624
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
#, 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:663
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:705
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
msgid "Tracker Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:830
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:858
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:867
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:871
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../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:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848
|
||||
msgid "Seeding"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:852
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1829
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:855
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:860
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:864
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:869
|
||||
msgid "Stalled"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:873
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:876
|
||||
msgid "No Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:859
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:910
|
||||
msgid "Torrent details"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:903
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:922
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:918
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
|
||||
msgid "View files"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:920
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
|
||||
msgid "Open file"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:981
|
||||
msgid "Stop the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
|
||||
msgid "Start the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
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 quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:992
|
||||
#, 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:995
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
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.
|
||||
@@ -617,336 +608,362 @@ msgstr ""
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
|
||||
#, 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:1014
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1025
|
||||
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 quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030
|
||||
#, 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:1014
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1103
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1086
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1125
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1108
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1127
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1185
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215
|
||||
msgid "Add Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217
|
||||
msgid "From URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
|
||||
msgid "Add torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
|
||||
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:1236
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256
|
||||
msgid "Data to seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:1262
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
|
||||
msgid "Tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
msgid "Select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1249
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1269
|
||||
msgid "Open trackers only"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290
|
||||
msgid "Create torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:1311
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1315
|
||||
msgid "Data directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
|
||||
msgid "Files readable by all"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325
|
||||
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:1329
|
||||
msgid "Auto start"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1313
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "Refresh time"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1363
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1369
|
||||
msgid "Startup delay"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1371
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
msgid "Total uploader limit"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1398
|
||||
msgid "peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Use open trackers also"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415
|
||||
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:1399
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1419
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1431
|
||||
msgid "Inbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1417
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1437
|
||||
msgid "Outbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
msgid "I2CP host"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
msgid "I2CP port"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1465
|
||||
msgid "I2CP options"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
msgid "Save configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1495
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
|
||||
msgid "Completion"
|
||||
msgstr ""
|
||||
|
||||
#. 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:1726
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1711
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1713
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1733
|
||||
msgid "Pieces"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
|
||||
msgid "Piece size"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756
|
||||
msgid "Magnet link"
|
||||
msgstr ""
|
||||
|
||||
#: ../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:1773
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1787
|
||||
msgid "Up to higher level directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1797
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1817
|
||||
msgid "Torrent not found?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
|
||||
msgid "File not found in torrent?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
|
||||
msgid "complete"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1820
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1840
|
||||
msgid "bytes remaining"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1845
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1871
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1876
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1896
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1881
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1901
|
||||
msgid "Skip"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1890
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1910
|
||||
msgid "Save priorities"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2026
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2029
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
|
||||
#. FIXME don't lose peer setting
|
||||
#. String peerParam = req.getParameter("p");
|
||||
#. if (peerParam != null)
|
||||
#. buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2069
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
@@ -14,9 +14,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-10-07 13:58+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:47+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"POT-Creation-Date: 2011-12-27 22:38+0000\n"
|
||||
"PO-Revision-Date: 2011-12-18 10:52+0000\n"
|
||||
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
"Language: es\n"
|
||||
@@ -171,7 +171,7 @@ msgstr "No se puede abrir \"{0}\""
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:737
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:792
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2036
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Ya hay un Torrent con este hash: {0}."
|
||||
@@ -202,7 +202,7 @@ msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "El archivo .torrent en \"{0}\" no es válido."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:699
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2058
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}."
|
||||
@@ -218,7 +218,7 @@ msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent añadido: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:748
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Recogiendo {0}"
|
||||
@@ -319,7 +319,7 @@ msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo recibida para {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1257
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:528
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Iniciando el torrent {0}"
|
||||
@@ -333,174 +333,183 @@ msgstr "Imposible conectarse con I2P"
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Imposible añadir {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:204
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
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:221
|
||||
msgid "Torrents"
|
||||
msgstr "Torrents"
|
||||
|
||||
#: ../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:224
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:231
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052
|
||||
msgid "I2PSnark"
|
||||
msgstr "I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
msgid "Refresh page"
|
||||
msgstr "Actualizar página"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:233
|
||||
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:251
|
||||
msgid "Click \"Add torrent\" button to fetch torrent"
|
||||
msgstr "Click en el botón \"Añadir torrent\" para cargar un torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
|
||||
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:296
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
|
||||
msgid "Hide Peers"
|
||||
msgstr "ocultar pares"
|
||||
|
||||
#: ../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:303
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:305
|
||||
msgid "Show Peers"
|
||||
msgstr "mostrar pares"
|
||||
|
||||
#: ../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:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1702
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718
|
||||
msgid "Torrent"
|
||||
msgstr "Torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316
|
||||
msgid "Estimated time remaining"
|
||||
msgstr "Tiempo restante para completar la descarga"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
msgid "ETA"
|
||||
msgstr "Tiempo"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:323
|
||||
msgid "Downloaded"
|
||||
msgstr "Descargado"
|
||||
|
||||
#. 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:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340
|
||||
msgid "RX"
|
||||
msgstr "Bajado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:330
|
||||
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:333
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:350
|
||||
msgid "TX"
|
||||
msgstr "Subido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338
|
||||
msgid "Down Rate"
|
||||
msgstr "Tasa 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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
|
||||
msgid "Rate"
|
||||
msgstr "Tasa"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
|
||||
msgid "Up Rate"
|
||||
msgstr "Tasa de subida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Detener todos los torrents y el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:370
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:374
|
||||
msgid "Stop All"
|
||||
msgstr "Detener todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Iniciar todos los torrents y el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:381
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:385
|
||||
msgid "Start All"
|
||||
msgstr "Arrancar todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:400
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
msgid "No torrents loaded."
|
||||
msgstr "No está cargado ningún torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
|
||||
msgid "Totals"
|
||||
msgstr "Total"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:411
|
||||
#, 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:410
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:414
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "1 par conectado"
|
||||
msgstr[1] "{0} pares conectados"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:499
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:498
|
||||
msgid "Opening the I2P tunnel"
|
||||
msgstr "Abriendo el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{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:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnet eliminado: {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:561
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Borrado archivo torrent: {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:592
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Borrado el archivo de datos: {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:594
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "No se pudo borrar el archivo de datos: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:624
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Ha sido borrada la carpeta de datos: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Error al crear el torrents - Tienes que elegir un rastreador."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:678
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr "Torrent creado para \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
@@ -509,117 +518,117 @@ msgstr ""
|
||||
"Muchos rastreadores en I2P requieren que te registres, antes de que puedas "
|
||||
"subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr "Error al crear el torrent \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr "No se puede crear un torrent para datos inexistentes: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
"Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr "Deteniendo todos los torrents y cerrando el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr "Túnel I2P cerrado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:705
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr "Abriendo el túnel I2P e iniciando los torrents ..."
|
||||
|
||||
#: ../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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:827
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
msgid "Tracker Error"
|
||||
msgstr "Error del rastrador"
|
||||
|
||||
#: ../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:830
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:846
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:858
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:867
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:871
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] "1 par"
|
||||
msgstr[1] "{0} pares"
|
||||
|
||||
#: ../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:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848
|
||||
msgid "Seeding"
|
||||
msgstr "sembrando"
|
||||
|
||||
#: ../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:852
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1724
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1830
|
||||
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:855
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:860
|
||||
msgid "OK"
|
||||
msgstr "bien"
|
||||
|
||||
#: ../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:864
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:869
|
||||
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:873
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:876
|
||||
msgid "No Peers"
|
||||
msgstr "sin pares"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:859
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:878
|
||||
msgid "Stopped"
|
||||
msgstr "detenido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:910
|
||||
msgid "Torrent details"
|
||||
msgstr "Detalles del torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:903
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1167
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:922
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:918
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
|
||||
msgid "View files"
|
||||
msgstr "mostrar archivos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:920
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
|
||||
msgid "Open file"
|
||||
msgstr "abrir archivo"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:962
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:981
|
||||
msgid "Stop the torrent"
|
||||
msgstr "Detener el torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983
|
||||
msgid "Stop"
|
||||
msgstr "Detener"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
|
||||
msgid "Start the torrent"
|
||||
msgstr "Iniciar el torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995
|
||||
msgid "Start"
|
||||
msgstr "Iniciar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr ""
|
||||
"Quita el torrent de la lista de los torrents activos borrando el archivo ."
|
||||
@@ -628,7 +637,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 quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:992
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
@@ -637,18 +646,18 @@ msgstr ""
|
||||
"¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos "
|
||||
"bajados no se borrarán.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1025
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
msgstr "Borrar el archivo torrent y el/los archivo(s) de datos pertenecientes"
|
||||
|
||||
#. 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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
@@ -657,184 +666,184 @@ msgstr ""
|
||||
"¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos "
|
||||
"los datos descargados de este torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
|
||||
msgid "Unknown"
|
||||
msgstr "desconocido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1080
|
||||
msgid "Seed"
|
||||
msgstr "Semilla"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1103
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr "no interesante (El par no tiene partes que nos interesen.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1086
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1105
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr "moderado (De momento el par no nos permite solicitar más partes.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1125
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr "desinteresado (No tenemos las partes que el par quiere.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1108
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1127
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "moderando (De momento no se le permite al par solicitar más partes.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1185
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr "Detalles en el rastreador {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215
|
||||
msgid "Add Torrent"
|
||||
msgstr "Añadir un torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1197
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217
|
||||
msgid "From URL"
|
||||
msgstr "URL fuente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
"¡Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un "
|
||||
"enlace maggot!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
|
||||
msgid "Add torrent"
|
||||
msgstr "Añadir torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr "También puedes copiar archivos torrent a {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr ""
|
||||
"Quitar un archivo torrent resultará en que se detenga el torrent "
|
||||
"perteneciente."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
|
||||
msgid "Create Torrent"
|
||||
msgstr "Crear un torrent"
|
||||
|
||||
#. 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:1256
|
||||
msgid "Data to seed"
|
||||
msgstr "Datos para sembrar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
"Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
|
||||
|
||||
#: ../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:1262
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
|
||||
msgid "Tracker"
|
||||
msgstr "Rastreador"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
msgid "Select a tracker"
|
||||
msgstr "¡Selecciona un 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:1269
|
||||
msgid "Open trackers only"
|
||||
msgstr "Sólo rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1267
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "¡Especifica una URL para anunciar al rastreador!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290
|
||||
msgid "Create torrent"
|
||||
msgstr "Crear torrent"
|
||||
|
||||
#: ../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:1311
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
|
||||
msgid "Configuration"
|
||||
msgstr "Preferencias"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1315
|
||||
msgid "Data directory"
|
||||
msgstr "Carpeta de datos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr "Para cambiar, ¡modifica el archivo i2psnark.config y reinicia!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
|
||||
msgid "Files readable by all"
|
||||
msgstr "Archivos legibles por todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325
|
||||
msgid "If checked, other users may access the downloaded files"
|
||||
msgstr ""
|
||||
"Si está activada, otros usuarios pueden acceder a los archivos descargados."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1309
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1329
|
||||
msgid "Auto start"
|
||||
msgstr "Arranque automático"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1313
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr "Si marcado, los torrents añadidos se iniciarán de forma automática."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1337
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "Refresh time"
|
||||
msgstr "Tiempo de actualización"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1363
|
||||
msgid "Never"
|
||||
msgstr "Nunca"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1369
|
||||
msgid "Startup delay"
|
||||
msgstr "Tiempo de espera al arrancar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1371
|
||||
msgid "minutes"
|
||||
msgstr "minutos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Límite global de subidores"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1398
|
||||
msgid "peers"
|
||||
msgstr "pares"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1402
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Límite del ancho de banda para la subida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1385
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Se recomienda la mitad del ancho de banda disponible."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Mostrar y cambiar preferencias del ancho de banda del enrutador"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Usar también rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
@@ -842,155 +851,171 @@ msgstr ""
|
||||
"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además "
|
||||
"de a los rastreadores especificados."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1419
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "URL(s) para anunciar a rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1431
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Preferencias de entrada"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1417
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1437
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Preferencias de salida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
msgid "I2CP host"
|
||||
msgstr "Anfitrión I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
msgid "I2CP port"
|
||||
msgstr "Puerto I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1465
|
||||
msgid "I2CP options"
|
||||
msgstr "Opciones I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
msgid "Save configuration"
|
||||
msgstr "Guardar ajustes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1495
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr "URL de magnet no válida: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr "Hash de información no válido en la URL magnet {0}"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559
|
||||
#, 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:1560
|
||||
#, 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
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
|
||||
msgid "Completion"
|
||||
msgstr "Finalización"
|
||||
|
||||
#. 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:1726
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1776
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1711
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
|
||||
msgid "Files"
|
||||
msgstr "Archivos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1713
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1733
|
||||
msgid "Pieces"
|
||||
msgstr "Partes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
|
||||
msgid "Piece size"
|
||||
msgstr "Tamaño de las partes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1736
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756
|
||||
msgid "Magnet link"
|
||||
msgstr "Enlace de magnet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1792
|
||||
#. We don't have the hash of the torrent file
|
||||
#. buf.append("<br>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
|
||||
#. .append(MAGGOT).append(hex).append(':').append(hex).append("</a>");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762
|
||||
#, fuzzy
|
||||
msgid "Torrent file"
|
||||
msgstr "Detalles del torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1813
|
||||
msgid "Directory"
|
||||
msgstr "Carpeta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1762
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1783
|
||||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1788
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Subir una herarquía"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1797
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1818
|
||||
msgid "Torrent not found?"
|
||||
msgstr "¿No se encotró el archivo torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1827
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "¿Archivo no encontrado en el torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1840
|
||||
msgid "complete"
|
||||
msgstr "completo"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1820
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1841
|
||||
msgid "bytes remaining"
|
||||
msgstr "Bytes faltando"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1845
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866
|
||||
msgid "Open"
|
||||
msgstr "abrir"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1871
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892
|
||||
msgid "High"
|
||||
msgstr "alta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1876
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897
|
||||
msgid "Normal"
|
||||
msgstr "normal"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1881
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902
|
||||
msgid "Skip"
|
||||
msgstr "dejar de lado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1890
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1911
|
||||
msgid "Save priorities"
|
||||
msgstr "Guardar prioridades"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent obtenido desde {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2027
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2048
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent ya en marcha: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2029
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent ya encolado: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent en {0} no era válido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
|
||||
#. FIXME don't lose peer setting
|
||||
#. String peerParam = req.getParameter("p");
|
||||
#. if (peerParam != null)
|
||||
#. buf.append("<input type=\"hidden\" name=\"p\" value=\"").append(peerParam).append("\" >\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2070
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "El torrent no se ha podido obtener de {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2073
|
||||
msgid "Retry"
|
||||
msgstr "Reintentar"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@ import java.io.OutputStream;
|
||||
import java.io.PipedInputStream;
|
||||
import java.io.PipedOutputStream;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.RejectedExecutionException;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
@@ -177,23 +178,24 @@ class HTTPResponseOutputStream extends FilterOutputStream {
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Response header [" + key + "] = [" + val + "]");
|
||||
|
||||
if ("Connection".equalsIgnoreCase(key)) {
|
||||
String lcKey = key.toLowerCase(Locale.US);
|
||||
if ("connection".equals(lcKey)) {
|
||||
out.write("Connection: close\r\n".getBytes());
|
||||
connectionSent = true;
|
||||
} else if ("Proxy-Connection".equalsIgnoreCase(key)) {
|
||||
} else if ("proxy-connection".equals(lcKey)) {
|
||||
out.write("Proxy-Connection: close\r\n".getBytes());
|
||||
proxyConnectionSent = true;
|
||||
} else if ( ("Content-encoding".equalsIgnoreCase(key)) && ("x-i2p-gzip".equalsIgnoreCase(val)) ) {
|
||||
} else if ("content-encoding".equals(lcKey) && "x-i2p-gzip".equals(val.toLowerCase(Locale.US))) {
|
||||
_gzip = true;
|
||||
} else if ("Proxy-Authenticate".equalsIgnoreCase(key)) {
|
||||
} else if ("proxy-authenticate".equals(lcKey)) {
|
||||
// filter this hop-by-hop header; outproxy authentication must be configured in I2PTunnelHTTPClient
|
||||
} else {
|
||||
if ("Content-Length".equalsIgnoreCase(key)) {
|
||||
if ("content-length".equals(lcKey)) {
|
||||
// save for compress decision on server side
|
||||
try {
|
||||
_dataExpected = Long.parseLong(val);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
} else if ("Content-Type".equalsIgnoreCase(key)) {
|
||||
} else if ("content-type".equals(lcKey)) {
|
||||
// save for compress decision on server side
|
||||
_contentType = val;
|
||||
}
|
||||
|
@@ -46,6 +46,7 @@ import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.StringTokenizer;
|
||||
@@ -233,7 +234,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
public void runCommand(String cmd, Logging l) {
|
||||
if (cmd.indexOf(" ") == -1) cmd += " ";
|
||||
int iii = cmd.indexOf(" ");
|
||||
String cmdname = cmd.substring(0, iii).toLowerCase();
|
||||
String cmdname = cmd.substring(0, iii).toLowerCase(Locale.US);
|
||||
String allargs = cmd.substring(iii + 1);
|
||||
String[] args = split(allargs, " "); // .split(" "); // java 1.4
|
||||
|
||||
@@ -737,7 +738,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
String proxy = "";
|
||||
boolean isShared = true;
|
||||
if (args.length > 1) {
|
||||
if ("true".equalsIgnoreCase(args[1].trim())) {
|
||||
if (Boolean.valueOf(args[1].trim()).booleanValue()) {
|
||||
isShared = true;
|
||||
if (args.length == 3)
|
||||
proxy = args[2];
|
||||
@@ -806,7 +807,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
String proxy = "";
|
||||
boolean isShared = true;
|
||||
if (args.length > 1) {
|
||||
if ("true".equalsIgnoreCase(args[1].trim())) {
|
||||
if (Boolean.valueOf(args[1].trim()).booleanValue()) {
|
||||
isShared = true;
|
||||
if (args.length == 3)
|
||||
proxy = args[2];
|
||||
@@ -877,7 +878,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
|
||||
boolean isShared = true;
|
||||
if (args.length > 2) {
|
||||
if ("true".equalsIgnoreCase(args[2].trim())) {
|
||||
if (Boolean.valueOf(args[2].trim()).booleanValue()) {
|
||||
isShared = true;
|
||||
} else if ("false".equalsIgnoreCase(args[2].trim())) {
|
||||
_log.warn("args[2] == [" + args[2] + "] and rejected explicitly");
|
||||
@@ -944,7 +945,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
|
||||
boolean isShared = false;
|
||||
if (args.length > 1)
|
||||
isShared = "true".equalsIgnoreCase(args[1].trim());
|
||||
isShared = Boolean.valueOf(args[1].trim()).booleanValue();
|
||||
|
||||
ownDest = !isShared;
|
||||
try {
|
||||
@@ -988,7 +989,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
|
||||
boolean isShared = false;
|
||||
if (args.length == 2)
|
||||
isShared = "true".equalsIgnoreCase(args[1].trim());
|
||||
isShared = Boolean.valueOf(args[1].trim()).booleanValue();
|
||||
|
||||
ownDest = !isShared;
|
||||
String privateKeyFile = null;
|
||||
|
@@ -11,6 +11,7 @@ import java.net.Socket;
|
||||
import java.net.SocketException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
@@ -193,7 +194,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R
|
||||
restofline = request.substring(pos); // ":80 HTTP/1.1" or " HTTP/1.1"
|
||||
}
|
||||
|
||||
if (host.toLowerCase().endsWith(".i2p")) {
|
||||
if (host.toLowerCase(Locale.US).endsWith(".i2p")) {
|
||||
// Destination gets the host name
|
||||
destination = host;
|
||||
} else if (host.indexOf(".") != -1) {
|
||||
@@ -209,7 +210,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R
|
||||
destination = currentProxy;
|
||||
usingWWWProxy = true;
|
||||
newRequest.append("CONNECT ").append(host).append(restofline).append("\r\n"); // HTTP spec
|
||||
} else if (host.toLowerCase().equals("localhost")) {
|
||||
} else if (host.toLowerCase(Locale.US).equals("localhost")) {
|
||||
writeErrorMessage(ERR_LOCALHOST, out);
|
||||
s.close();
|
||||
return;
|
||||
@@ -224,7 +225,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R
|
||||
_log.debug(getPrefix(requestId) + "REST :" + restofline + ":");
|
||||
_log.debug(getPrefix(requestId) + "DEST :" + destination + ":");
|
||||
}
|
||||
} else if (line.toLowerCase().startsWith("proxy-authorization: basic ")) {
|
||||
} else if (line.toLowerCase(Locale.US).startsWith("proxy-authorization: basic ")) {
|
||||
// strip Proxy-Authenticate from the response in HTTPResponseOutputStream
|
||||
// save for auth check below
|
||||
authorization = line.substring(27); // "proxy-authorization: basic ".length()
|
||||
@@ -261,7 +262,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R
|
||||
}
|
||||
}
|
||||
|
||||
if (destination == null || !"CONNECT".equalsIgnoreCase(method)) {
|
||||
if (destination == null || method == null || !"CONNECT".equals(method.toUpperCase(Locale.US))) {
|
||||
writeErrorMessage(ERR_BAD_PROTOCOL, out);
|
||||
s.close();
|
||||
return;
|
||||
|
@@ -336,7 +336,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug(getPrefix(requestId) + "Line=[" + line + "]");
|
||||
|
||||
String lowercaseLine = line.toLowerCase();
|
||||
String lowercaseLine = line.toLowerCase(Locale.US);
|
||||
if (lowercaseLine.startsWith("connection: ") ||
|
||||
lowercaseLine.startsWith("keep-alive: ") ||
|
||||
lowercaseLine.startsWith("proxy-connection: "))
|
||||
@@ -365,7 +365,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
}
|
||||
// "http://" + "foo.i2p/bar/baz.html" + " HTTP/1.0"
|
||||
request = "http://" + uri + subRequest.substring(protopos);
|
||||
} else if (request.toLowerCase().startsWith("http://i2p/")) {
|
||||
} else if (request.toLowerCase(Locale.US).startsWith("http://i2p/")) {
|
||||
// http://i2p/b64key/bar/baz.html HTTP/1.0
|
||||
String subRequest = request.substring("http://i2p/".length());
|
||||
int protopos = subRequest.indexOf(" ");
|
||||
@@ -433,11 +433,11 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
destination = host;
|
||||
host = getHostName(destination);
|
||||
line = method + ' ' + request.substring(pos);
|
||||
} else if (host.toLowerCase().equals(LOCAL_SERVER)) {
|
||||
} else if (host.toLowerCase(Locale.US).equals(LOCAL_SERVER)) {
|
||||
// so we don't do any naming service lookups
|
||||
destination = host;
|
||||
usingInternalServer = true;
|
||||
} else if (host.toLowerCase().endsWith(".i2p")) {
|
||||
} else if (host.toLowerCase(Locale.US).endsWith(".i2p")) {
|
||||
// Destination gets the host name
|
||||
destination = host;
|
||||
// Host becomes the destination's "{b32}.b32.i2p" string, or "i2p" on lookup failure
|
||||
@@ -498,7 +498,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
if (host == null || "i2p".equals(host)) {
|
||||
// Host lookup failed - resolvable only with addresshelper
|
||||
// Store in local HashMap unless there is conflict
|
||||
String old = addressHelpers.putIfAbsent(destination.toLowerCase(), ahelperKey);
|
||||
String old = addressHelpers.putIfAbsent(destination.toLowerCase(Locale.US), ahelperKey);
|
||||
ahelperNew = old == null;
|
||||
if ((!ahelperNew) && !old.equals(ahelperKey)) {
|
||||
// Conflict: handle when URL reconstruction done
|
||||
@@ -570,7 +570,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
line = method + " " + request.substring(pos);
|
||||
// end of (host endsWith(".i2p"))
|
||||
|
||||
} else if (host.toLowerCase().equals("localhost") || host.equals("127.0.0.1") ||
|
||||
} else if (host.toLowerCase(Locale.US).equals("localhost") || host.equals("127.0.0.1") ||
|
||||
host.startsWith("192.168.")) {
|
||||
// if somebody is trying to get to 192.168.example.com, oh well
|
||||
if (out != null) {
|
||||
@@ -758,7 +758,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
if (method == null || destination == null) {
|
||||
//l.log("No HTTP method found in the request.");
|
||||
if (out != null) {
|
||||
if ("http://".equalsIgnoreCase(protocol))
|
||||
if (protocol != null && "http://".equals(protocol.toLowerCase(Locale.US)))
|
||||
out.write(getErrorPage("denied", ERR_REQUEST_DENIED));
|
||||
else
|
||||
out.write(getErrorPage("protocol", ERR_BAD_PROTOCOL));
|
||||
@@ -804,15 +804,15 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
// look it up again as the naming service does not do negative caching
|
||||
// so it will be slow.
|
||||
Destination clientDest = null;
|
||||
String addressHelper = addressHelpers.get(destination.toLowerCase());
|
||||
String addressHelper = addressHelpers.get(destination.toLowerCase(Locale.US));
|
||||
if (addressHelper != null) {
|
||||
clientDest = _context.namingService().lookup(addressHelper);
|
||||
// remove bad entries
|
||||
if (clientDest == null)
|
||||
addressHelpers.remove(destination.toLowerCase());
|
||||
addressHelpers.remove(destination.toLowerCase(Locale.US));
|
||||
} else if ("i2p".equals(host)) {
|
||||
clientDest = null;
|
||||
} else if (destination.length() == 60 && destination.toLowerCase().endsWith(".b32.i2p")) {
|
||||
} else if (destination.length() == 60 && destination.toLowerCase(Locale.US).endsWith(".b32.i2p")) {
|
||||
// use existing session to look up for efficiency
|
||||
verifySocketManager();
|
||||
I2PSession sess = sockMgr.getSession();
|
||||
@@ -841,7 +841,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
header = getErrorPage("dnfp", ERR_DESTINATION_UNKNOWN);
|
||||
else if (ahelperPresent)
|
||||
header = getErrorPage("dnfb", ERR_DESTINATION_UNKNOWN);
|
||||
else if (destination.length() == 60 && destination.toLowerCase().endsWith(".b32.i2p"))
|
||||
else if (destination.length() == 60 && destination.toLowerCase(Locale.US).endsWith(".b32.i2p"))
|
||||
header = getErrorPage("dnf", ERR_DESTINATION_UNKNOWN);
|
||||
else {
|
||||
header = getErrorPage("dnfh", ERR_DESTINATION_UNKNOWN);
|
||||
@@ -935,15 +935,15 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
ahelperKey + "</textarea></td></tr></table>\n" +
|
||||
"<hr><div class=\"formaction\">"+
|
||||
"<form method=\"GET\" action=\"" + targetRequest + "\">" +
|
||||
"<button type=\"submit\">" + _("Continue to {0} without saving", destination) + "</button>" +
|
||||
"<button type=\"submit\" class=\"go\">" + _("Continue to {0} without saving", destination) + "</button>" +
|
||||
"</form>\n<form method=\"GET\" action=\"http://" + LOCAL_SERVER + "/add\">" +
|
||||
"<input type=\"hidden\" name=\"host\" value=\"" + destination + "\">\n" +
|
||||
"<input type=\"hidden\" name=\"dest\" value=\"" + ahelperKey + "\">\n" +
|
||||
"<input type=\"hidden\" name=\"nonce\" value=\"" + _proxyNonce + "\">\n" +
|
||||
"<button type=\"submit\" name=\"router\" value=\"router\">" + _("Save {0} to router address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
"<button type=\"submit\" class=\"accept\" name=\"router\" value=\"router\">" + _("Save {0} to router address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
if (_context.namingService().getName().equals("BlockfileNamingService")) {
|
||||
// only blockfile supports multiple books
|
||||
out.write(("<button type=\"submit\" name=\"master\" value=\"master\">" + _("Save {0} to master address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
out.write(("<br><button type=\"submit\" name=\"master\" value=\"master\">" + _("Save {0} to master address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
out.write(("<button type=\"submit\" name=\"private\" value=\"private\">" + _("Save {0} to private address book and continue to eepsite", destination) + "</button>\n").getBytes("UTF-8"));
|
||||
}
|
||||
out.write(("<input type=\"hidden\" name=\"url\" value=\"" + targetRequest + "\">\n" +
|
||||
@@ -984,7 +984,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
*/
|
||||
private final String getHostName(String host) {
|
||||
if (host == null) return null;
|
||||
if (host.length() == 60 && host.toLowerCase().endsWith(".b32.i2p"))
|
||||
if (host.length() == 60 && host.toLowerCase(Locale.US).endsWith(".b32.i2p"))
|
||||
return host;
|
||||
Destination dest = _context.namingService().lookup(host);
|
||||
if (dest == null) return "i2p";
|
||||
@@ -1097,7 +1097,11 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
out.write("\">http://".getBytes());
|
||||
out.write(uri.getBytes());
|
||||
out.write("</a>".getBytes());
|
||||
if (usingWWWProxy) out.write(("<br>WWW proxy: " + wwwProxy).getBytes());
|
||||
if (usingWWWProxy) {
|
||||
out.write(("<br><br><b>").getBytes());
|
||||
out.write(_("HTTP Outproxy").getBytes("UTF-8"));
|
||||
out.write((":</b> " + wwwProxy).getBytes());
|
||||
}
|
||||
if (jumpServers != null && jumpServers.length() > 0) {
|
||||
out.write("<br><br>".getBytes());
|
||||
out.write(_("Click a link below to look for an address helper by using a \"jump\" service:").getBytes("UTF-8"));
|
||||
@@ -1184,7 +1188,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
}
|
||||
}
|
||||
****/
|
||||
return protocol.equalsIgnoreCase("http://");
|
||||
return protocol.toLowerCase(Locale.US).equals("http://");
|
||||
}
|
||||
|
||||
private final static byte[] ERR_404 =
|
||||
@@ -1349,7 +1353,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
"</head><body>\n" +
|
||||
"<div class=logo>\n" +
|
||||
"<a href=\"http://127.0.0.1:7657/\" title=\"" + _("Router Console") + "\"><img src=\"http://proxy.i2p/themes/console/images/i2plogo.png\" alt=\"I2P Router Console\" border=\"0\"></a><hr>\n" +
|
||||
"<a href=\"http://127.0.0.1:7657/config\">" + _("Configuration") + "</a> <a href=\"http://127.0.0.1:7657/help.jsp\">" + _("Help") + "</a> <a href=\"http://127.0.0.1:7657/susidns/index.jsp\">" + _("Addressbook") + "</a>\n" +
|
||||
"<a href=\"http://127.0.0.1:7657/config\">" + _("Configuration") + "</a> <a href=\"http://127.0.0.1:7657/help.jsp\">" + _("Help") + "</a> <a href=\"http://127.0.0.1:7657/susidns/index\">" + _("Addressbook") + "</a>\n" +
|
||||
"</div>" +
|
||||
"<div class=warning id=warning>\n" +
|
||||
"<h3>" +
|
||||
|
@@ -10,6 +10,7 @@ import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.client.streaming.I2PSocketManager;
|
||||
@@ -101,7 +102,8 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
|
||||
// Ref: RFC 2617
|
||||
// If the socket is an InternalSocket, no auth required.
|
||||
String authRequired = getTunnel().getClientOptions().getProperty(PROP_AUTH);
|
||||
if (authRequired != null && (authRequired.equalsIgnoreCase("true") || authRequired.equalsIgnoreCase("basic"))) {
|
||||
if (Boolean.valueOf(authRequired).booleanValue() ||
|
||||
(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");
|
||||
|
@@ -42,7 +42,7 @@ public class I2PTunnelHTTPClientRunner extends I2PTunnelRunner {
|
||||
*/
|
||||
@Override
|
||||
protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin,
|
||||
Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException, IOException {
|
||||
Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException {
|
||||
try {
|
||||
i2pin.close();
|
||||
} catch (IOException ioe) {
|
||||
|
@@ -14,6 +14,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
@@ -45,6 +46,8 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
private static final String SERVER_HEADER = "Server";
|
||||
private static final String[] SERVER_SKIPHEADERS = {SERVER_HEADER};
|
||||
private static final long HEADER_TIMEOUT = 60*1000;
|
||||
private static final long START_INTERVAL = (60 * 1000) * 3;
|
||||
private long _startedOn = 0L;
|
||||
|
||||
private final static byte[] ERR_UNAVAILABLE =
|
||||
("HTTP/1.1 503 Service Unavailable\r\n"+
|
||||
@@ -80,6 +83,14 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
getTunnel().getContext().statManager().createRateStat("i2ptunnel.httpNullWorkaround", "How often an http server works around a streaming lib or i2ptunnel bug", "I2PTunnel.HTTPServer", new long[] { 60*1000, 10*60*1000 });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startRunning() {
|
||||
super.startRunning();
|
||||
_startedOn = getTunnel().getContext().clock().now();
|
||||
// Would be better if this was set when the inbound tunnel becomes alive.
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called by the thread pool of I2PSocket handlers
|
||||
*
|
||||
@@ -167,8 +178,10 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
try {
|
||||
socket.close();
|
||||
} catch (IOException ioe) {}
|
||||
if (_log.shouldLog(Log.ERROR))
|
||||
_log.error("Error connecting to HTTP server " + remoteHost + ':' + remotePort, ex);
|
||||
// Don't complain too early, Jetty may not be ready.
|
||||
int level = getTunnel().getContext().clock().now() - _startedOn > START_INTERVAL ? Log.ERROR : Log.WARN;
|
||||
if (_log.shouldLog(level))
|
||||
_log.log(level, "Error connecting to HTTP server " + remoteHost + ':' + remotePort, ex);
|
||||
} catch (IOException ex) {
|
||||
try {
|
||||
socket.close();
|
||||
@@ -507,16 +520,17 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
else
|
||||
value = "";
|
||||
|
||||
if ("Accept-encoding".equalsIgnoreCase(name))
|
||||
if ("accept-encoding".equals(name.toLowerCase(Locale.US)))
|
||||
name = "Accept-encoding";
|
||||
else if ("X-Accept-encoding".equalsIgnoreCase(name))
|
||||
else if ("x-accept-encoding".equals(name.toLowerCase(Locale.US)))
|
||||
name = "X-Accept-encoding";
|
||||
|
||||
// For incoming, we remove certain headers to prevent spoofing.
|
||||
// For outgoing, we remove certain headers to improve anonymity.
|
||||
boolean skip = false;
|
||||
String lcName = name.toLowerCase(Locale.US);
|
||||
for (String skipHeader: skipHeaders) {
|
||||
if (skipHeader.equalsIgnoreCase(name)) {
|
||||
if (skipHeader.toLowerCase(Locale.US).equals(lcName)) {
|
||||
skip = true;
|
||||
break;
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import net.i2p.I2PException;
|
||||
import net.i2p.client.streaming.I2PSocket;
|
||||
import net.i2p.data.Base32;
|
||||
import net.i2p.data.Destination;
|
||||
@@ -112,7 +113,7 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase {
|
||||
in.start();
|
||||
Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + __clientId + " out", true);
|
||||
out.start();
|
||||
} catch (Exception ex) {
|
||||
} catch (I2PException ex) {
|
||||
if (_log.shouldLog(Log.ERROR))
|
||||
_log.error("Error connecting", ex);
|
||||
//l.log("Error connecting: " + ex.getMessage());
|
||||
@@ -122,6 +123,17 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase {
|
||||
mySockets.remove(sockLock);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// generally NoRouteToHostException
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Error connecting", ex);
|
||||
//l.log("Error connecting: " + ex.getMessage());
|
||||
closeSocket(s);
|
||||
if (i2ps != null) {
|
||||
synchronized (sockLock) {
|
||||
mySockets.remove(sockLock);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import java.io.InputStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketException;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
import net.i2p.client.streaming.I2PSocket;
|
||||
@@ -197,18 +198,16 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
|
||||
String field[]=s.split(" ",5);
|
||||
String command;
|
||||
int idx=0;
|
||||
|
||||
if(field[0].charAt(0)==':')
|
||||
idx++;
|
||||
|
||||
try {
|
||||
command = field[idx++];
|
||||
if (field[0].charAt(0) == ':')
|
||||
idx++;
|
||||
command = field[idx++].toUpperCase(Locale.US);
|
||||
} catch (IndexOutOfBoundsException ioobe) {
|
||||
// wtf, server sent borked command?
|
||||
throw new IOException("Dropping defective message: index out of bounds while extracting command.");
|
||||
throw new IOException("Dropping defective message: [" + s + ']');
|
||||
}
|
||||
|
||||
if ("USER".equalsIgnoreCase(command)) {
|
||||
if ("USER".equals(command)) {
|
||||
if (field.length < idx + 4)
|
||||
throw new IOException("Too few parameters in USER message: " + s);
|
||||
// USER zzz1 hostname localhost :zzz
|
||||
@@ -221,7 +220,7 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
|
||||
break;
|
||||
}
|
||||
buf.append(s).append("\r\n");
|
||||
if ("SERVER".equalsIgnoreCase(command))
|
||||
if ("SERVER".equals(command))
|
||||
break;
|
||||
}
|
||||
//if (_log.shouldLog(Log.DEBUG))
|
||||
|
@@ -143,6 +143,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
|
||||
InputStream i2pin = i2ps.getInputStream();
|
||||
OutputStream i2pout = i2ps.getOutputStream(); //new BufferedOutputStream(i2ps.getOutputStream(), MAX_PACKET_SIZE);
|
||||
if (initialI2PData != null) {
|
||||
// why synchronize this? we could be in here a LONG time for large initial data
|
||||
synchronized (slock) {
|
||||
// this does not increment totalSent
|
||||
i2pout.write(initialI2PData);
|
||||
@@ -182,8 +183,11 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("runner has a timeout job, totalReceived = " + totalReceived
|
||||
+ " totalSent = " + totalSent + " job = " + onTimeout);
|
||||
// should we only look at totalReceived?
|
||||
if ( (totalSent <= 0) && (totalReceived <= 0) )
|
||||
// Run even if totalSent > 0, as that's probably POST data.
|
||||
// This will be run even if initialSocketData != null, it's the timeout job's
|
||||
// responsibility to know that and decide whether or not to write to the socket.
|
||||
// HTTPClient never sets initialSocketData.
|
||||
if (totalReceived <= 0)
|
||||
onTimeout.run();
|
||||
}
|
||||
|
||||
@@ -234,7 +238,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
|
||||
}
|
||||
|
||||
protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin,
|
||||
Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException, IOException {
|
||||
Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException {
|
||||
try {
|
||||
out.flush();
|
||||
} catch (IOException ioe) {
|
||||
|
@@ -177,7 +177,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
|
||||
if (_usePool) {
|
||||
String usePool = getTunnel().getClientOptions().getProperty(PROP_USE_POOL);
|
||||
if (usePool != null)
|
||||
_usePool = "true".equalsIgnoreCase(usePool);
|
||||
_usePool = Boolean.valueOf(usePool).booleanValue();
|
||||
else
|
||||
_usePool = DEFAULT_USE_POOL;
|
||||
}
|
||||
|
@@ -482,7 +482,7 @@ public class TunnelController implements Logging {
|
||||
/** default true */
|
||||
public String getSharedClient() { return _config.getProperty("sharedClient", "true"); }
|
||||
/** default true */
|
||||
public boolean getStartOnLoad() { return "true".equalsIgnoreCase(_config.getProperty("startOnLoad", "true")); }
|
||||
public boolean getStartOnLoad() { return Boolean.valueOf(_config.getProperty("startOnLoad", "true")).booleanValue(); }
|
||||
public boolean getPersistentClientKey() { return Boolean.valueOf(_config.getProperty("option.persistentClientKey")).booleanValue(); }
|
||||
public String getMyDestination() {
|
||||
if (_tunnel != null) {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package net.i2p.i2ptunnel.irc;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@@ -91,7 +92,7 @@ public class DCCClientManager extends EventReceiver {
|
||||
* @param localPort bind to port or 0; if nonzero it will be the rv
|
||||
*/
|
||||
private int newIncoming(String b32, int port, String type, int localPort) {
|
||||
b32 = b32.toLowerCase();
|
||||
b32 = b32.toLowerCase(Locale.US);
|
||||
// do some basic verification before starting the client
|
||||
if (b32.length() != 60 || !b32.endsWith(".b32.i2p"))
|
||||
return -1;
|
||||
|
@@ -111,18 +111,19 @@ public class I2PTunnelDCCServer extends I2PTunnelServer {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Incoming DCC connection for I2P port " + myPort +
|
||||
" sending to " + local.ia + ':' + local.port);
|
||||
Socket s = new Socket(local.ia, local.port);
|
||||
_sockList.add(socket);
|
||||
new I2PTunnelRunner(s, socket, slock, null, _sockList);
|
||||
local.socket = socket;
|
||||
local.expire = getTunnel().getContext().clock().now() + OUTBOUND_EXPIRE;
|
||||
_active.put(Integer.valueOf(myPort), local);
|
||||
} catch (SocketException ex) {
|
||||
try {
|
||||
socket.close();
|
||||
} catch (IOException ioe) {}
|
||||
if (_log.shouldLog(Log.ERROR))
|
||||
_log.error("Error connecting to server " + remoteHost + ':' + remotePort, ex);
|
||||
Socket s = new Socket(local.ia, local.port);
|
||||
_sockList.add(socket);
|
||||
new I2PTunnelRunner(s, socket, slock, null, _sockList);
|
||||
local.socket = socket;
|
||||
local.expire = getTunnel().getContext().clock().now() + OUTBOUND_EXPIRE;
|
||||
_active.put(Integer.valueOf(myPort), local);
|
||||
} catch (SocketException ex) {
|
||||
try {
|
||||
socket.close();
|
||||
} catch (IOException ioe) {}
|
||||
_log.error("Error relaying incoming DCC connection to IRC client at " + local.ia + ':' + local.port, ex);
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
_log.error("Error while waiting for I2PConnections", ex);
|
||||
}
|
||||
|
@@ -1,5 +1,10 @@
|
||||
package net.i2p.i2ptunnel.irc;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
@@ -50,12 +55,13 @@ abstract class IRCFilter {
|
||||
"CAP"
|
||||
};
|
||||
|
||||
if(field[0].charAt(0)==':')
|
||||
idx++;
|
||||
|
||||
try { command = field[idx++]; }
|
||||
catch (IndexOutOfBoundsException ioobe) // wtf, server sent borked command?
|
||||
{
|
||||
try {
|
||||
if (field[0].charAt(0) == ':')
|
||||
idx++;
|
||||
command = field[idx++].toUpperCase(Locale.US);
|
||||
} catch (IndexOutOfBoundsException ioobe) {
|
||||
// wtf, server sent borked command?
|
||||
//_log.warn("Dropping defective message: index out of bounds while extracting command.");
|
||||
return null;
|
||||
}
|
||||
@@ -69,9 +75,9 @@ abstract class IRCFilter {
|
||||
} catch(NumberFormatException nfe){}
|
||||
|
||||
|
||||
if ("PING".equalsIgnoreCase(command))
|
||||
if ("PING".equals(command))
|
||||
return "PING 127.0.0.1"; // no way to know what the ircd to i2ptunnel server con is, so localhost works
|
||||
if ("PONG".equalsIgnoreCase(command)) {
|
||||
if ("PONG".equals(command)) {
|
||||
// Turn the received ":irc.freshcoffee.i2p PONG irc.freshcoffee.i2p :127.0.0.1"
|
||||
// into ":127.0.0.1 PONG 127.0.0.1 " so that the caller can append the client's extra parameter
|
||||
// though, does 127.0.0.1 work for irc clients connecting remotely? and for all of them? sure would
|
||||
@@ -88,16 +94,16 @@ abstract class IRCFilter {
|
||||
|
||||
// Allow all allowedCommands
|
||||
for(int i=0;i<allowedCommands.length;i++) {
|
||||
if(allowedCommands[i].equalsIgnoreCase(command))
|
||||
if(allowedCommands[i].equals(command))
|
||||
return s;
|
||||
}
|
||||
|
||||
// Allow PRIVMSG, but block CTCP.
|
||||
if("PRIVMSG".equalsIgnoreCase(command) || "NOTICE".equalsIgnoreCase(command))
|
||||
if("PRIVMSG".equals(command) || "NOTICE".equals(command))
|
||||
{
|
||||
String msg;
|
||||
msg = field[idx++];
|
||||
|
||||
|
||||
if(msg.indexOf(0x01) >= 0) // CTCP marker ^A can be anywhere, not just immediately after the ':'
|
||||
{
|
||||
// CTCP
|
||||
@@ -126,7 +132,7 @@ abstract class IRCFilter {
|
||||
}
|
||||
// XDCC looks safe, ip/port happens over regular DCC
|
||||
// http://en.wikipedia.org/wiki/XDCC
|
||||
if (msg.toUpperCase().startsWith("XDCC ") && helper != null && helper.isEnabled())
|
||||
if (msg.toUpperCase(Locale.US).startsWith("XDCC ") && helper != null && helper.isEnabled())
|
||||
return s;
|
||||
if (ALLOW_ALL_CTCP_IN)
|
||||
return s;
|
||||
@@ -134,11 +140,99 @@ abstract class IRCFilter {
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
// Block the rest
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private static final Set<String> _allowedOutbound;
|
||||
static {
|
||||
final String[] allowedCommands =
|
||||
{
|
||||
// Commands that regular users might use
|
||||
"ADMIN",
|
||||
"AWAY", // should be harmless
|
||||
"CAP", // http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
|
||||
"CYCLE",
|
||||
"DCCALLOW",
|
||||
"HELPME", "HELPOP", // helpop is what unrealircd uses by default
|
||||
"INVITE",
|
||||
"ISON", // jIRCii uses this for a ping (response is 303)
|
||||
"JOIN",
|
||||
"KICK",
|
||||
"KNOCK",
|
||||
"LIST",
|
||||
"LUSERS",
|
||||
"MAP", // seems safe enough, the ircd should protect themselves though
|
||||
"MODE",
|
||||
"MOTD",
|
||||
"NAMES",
|
||||
"NICK",
|
||||
// "NOTICE", // can contain CTCP
|
||||
"OPER",
|
||||
// "PART", // replace with filtered PART to hide client part messages
|
||||
"PASS",
|
||||
// "PING",
|
||||
// "PONG", // replaced with a filtered PING/PONG since some clients send the server IP (thanks aardvax!)
|
||||
// "QUIT", // replace with a filtered QUIT to hide client quit messages
|
||||
"RULES",
|
||||
"SETNAME",
|
||||
"SILENCE",
|
||||
"STATS",
|
||||
"TOPIC",
|
||||
"USERHOST",
|
||||
"VHOST",
|
||||
"WATCH",
|
||||
"WHO",
|
||||
"WHOIS",
|
||||
"WHOWAS",
|
||||
// the next few are default aliases on unreal (+ anope)
|
||||
"BOTSERV", "BS",
|
||||
"CHANSERV", "CS",
|
||||
"HELPSERV",
|
||||
"HOSTSERV", "HS",
|
||||
"MEMOSERV", "MS",
|
||||
"NICKSERV", "NS",
|
||||
"OPERSERV", "OS",
|
||||
"STATSERV",
|
||||
// IRCop commands
|
||||
"ADCHAT",
|
||||
"ADDMOTD",
|
||||
"ADDOMOTD",
|
||||
"CHATOPS",
|
||||
"CHGHOST",
|
||||
"CHGIDENT",
|
||||
"CHGNAME",
|
||||
"CLOSE",
|
||||
"DCCDENY",
|
||||
"DIE",
|
||||
"GLOBOPS",
|
||||
"GZLINE",
|
||||
"HTM", // "High Traffic Mode"
|
||||
"KILL",
|
||||
"KLINE",
|
||||
"LOCOPS",
|
||||
"NACHAT",
|
||||
"OPERMOTD",
|
||||
"REHASH",
|
||||
"RESTART",
|
||||
"SAJOIN",
|
||||
"SAMODE",
|
||||
"SAPART",
|
||||
"SDESC",
|
||||
"SETHOST",
|
||||
"SETIDENT",
|
||||
"SHUN",
|
||||
"SPAMFILTER",
|
||||
"SQUIT",
|
||||
"TEMPSHUN",
|
||||
"UNDCCDENY",
|
||||
"WALLOPS",
|
||||
"ZLINE"
|
||||
};
|
||||
_allowedOutbound = new HashSet(Arrays.asList(allowedCommands));
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* Modify or filter a single outbound line.
|
||||
@@ -147,37 +241,8 @@ abstract class IRCFilter {
|
||||
* @return the original or modified line, or null if it should be dropped.
|
||||
*/
|
||||
public static String outboundFilter(String s, StringBuffer expectedPong, DCCHelper helper) {
|
||||
|
||||
|
||||
String field[]=s.split(" ",3);
|
||||
String command;
|
||||
final String[] allowedCommands =
|
||||
{
|
||||
// "NOTICE", // can contain CTCP
|
||||
"MODE",
|
||||
"JOIN",
|
||||
"NICK",
|
||||
"WHO",
|
||||
"WHOIS",
|
||||
"LIST",
|
||||
"NAMES",
|
||||
"NICK",
|
||||
// "QUIT", // replace with a filtered QUIT to hide client quit messages
|
||||
"SILENCE",
|
||||
"MAP", // seems safe enough, the ircd should protect themselves though
|
||||
// "PART", // replace with filtered PART to hide client part messages
|
||||
"OPER",
|
||||
// "PONG", // replaced with a filtered PING/PONG since some clients send the server IP (thanks aardvax!)
|
||||
// "PING",
|
||||
"KICK",
|
||||
"HELPME",
|
||||
"RULES",
|
||||
"TOPIC",
|
||||
"ISON", // jIRCii uses this for a ping (response is 303)
|
||||
"INVITE",
|
||||
"AWAY", // should be harmless
|
||||
// http://tools.ietf.org/html/draft-mitchell-irc-capabilities-01
|
||||
"CAP"
|
||||
};
|
||||
|
||||
if(field[0].length()==0)
|
||||
return null; // W T F?
|
||||
@@ -186,7 +251,7 @@ abstract class IRCFilter {
|
||||
if(field[0].charAt(0)==':')
|
||||
return null; // wtf
|
||||
|
||||
command = field[0].toUpperCase();
|
||||
String command = field[0].toUpperCase(Locale.US);
|
||||
|
||||
if ("PING".equals(command)) {
|
||||
// Most clients just send a PING and are happy with any old PONG. Others,
|
||||
@@ -228,11 +293,8 @@ abstract class IRCFilter {
|
||||
return "PONG 127.0.0.1"; // no way to know what the ircd to i2ptunnel server con is, so localhost works
|
||||
|
||||
// Allow all allowedCommands
|
||||
for(int i=0;i<allowedCommands.length;i++)
|
||||
{
|
||||
if(allowedCommands[i].equals(command))
|
||||
return s;
|
||||
}
|
||||
if (_allowedOutbound.contains(command))
|
||||
return s;
|
||||
|
||||
// mIRC sends "NOTICE user :DCC Send file (IP)"
|
||||
// in addition to the CTCP version
|
||||
@@ -272,7 +334,7 @@ abstract class IRCFilter {
|
||||
return filterDCCOut(field[0] + ' ' + field[1] + " :\001DCC ", msg.substring(4), helper);
|
||||
// XDCC looks safe, ip/port happens over regular DCC
|
||||
// http://en.wikipedia.org/wiki/XDCC
|
||||
if (msg.toUpperCase().startsWith("XDCC ") && helper != null && helper.isEnabled())
|
||||
if (msg.toUpperCase(Locale.US).startsWith("XDCC ") && helper != null && helper.isEnabled())
|
||||
return s;
|
||||
if (ALLOW_ALL_CTCP_OUT)
|
||||
return s;
|
||||
|
@@ -14,6 +14,7 @@ import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.I2PException;
|
||||
@@ -198,8 +199,8 @@ public class SOCKS4aServer extends SOCKSServer {
|
||||
I2PSocket destSock;
|
||||
|
||||
try {
|
||||
if (connHostName.toLowerCase().endsWith(".i2p") ||
|
||||
connHostName.toLowerCase().endsWith(".onion")) {
|
||||
if (connHostName.toLowerCase(Locale.US).endsWith(".i2p") ||
|
||||
connHostName.toLowerCase(Locale.US).endsWith(".onion")) {
|
||||
_log.debug("connecting to " + connHostName + "...");
|
||||
// Let's not due a new Dest for every request, huh?
|
||||
//I2PSocketManager sm = I2PSocketManagerFactory.createManager();
|
||||
|
@@ -16,6 +16,7 @@ import java.net.SocketException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
@@ -355,7 +356,7 @@ public class SOCKS5Server extends SOCKSServer {
|
||||
I2PSocket destSock;
|
||||
|
||||
try {
|
||||
if (connHostName.toLowerCase().endsWith(".i2p")) {
|
||||
if (connHostName.toLowerCase(Locale.US).endsWith(".i2p")) {
|
||||
_log.debug("connecting to " + connHostName + "...");
|
||||
// Let's not due a new Dest for every request, huh?
|
||||
//I2PSocketManager sm = I2PSocketManagerFactory.createManager();
|
||||
|
@@ -114,7 +114,7 @@ public class EditBean extends IndexBean {
|
||||
public boolean isSharedClient(int tunnel) {
|
||||
TunnelController tun = getController(tunnel);
|
||||
if (tun != null)
|
||||
return "true".equalsIgnoreCase(tun.getSharedClient());
|
||||
return Boolean.valueOf(tun.getSharedClient()).booleanValue();
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
@@ -14,6 +14,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
@@ -185,10 +186,10 @@ public class IndexBean {
|
||||
else if ("start".equals(_action))
|
||||
return start();
|
||||
else if ("Save changes".equals(_action) || // IE workaround:
|
||||
(_action.toLowerCase().indexOf("s</span>ave") >= 0))
|
||||
(_action.toLowerCase(Locale.US).indexOf("s</span>ave") >= 0))
|
||||
return saveChanges();
|
||||
else if ("Delete this proxy".equals(_action) || // IE workaround:
|
||||
(_action.toLowerCase().indexOf("d</span>elete") >= 0))
|
||||
(_action.toLowerCase(Locale.US).indexOf("d</span>elete") >= 0))
|
||||
return deleteTunnel();
|
||||
else if ("Estimate".equals(_action))
|
||||
return PrivateKeyFile.estimateHashCashTime(_hashCashValue);
|
||||
@@ -265,7 +266,7 @@ public class IndexBean {
|
||||
}
|
||||
// Only modify other shared tunnels
|
||||
// if the current tunnel is shared, and of supported type
|
||||
if ("true".equalsIgnoreCase(cur.getSharedClient()) && isClient(cur.getType())) {
|
||||
if (Boolean.valueOf(cur.getSharedClient()).booleanValue() && isClient(cur.getType())) {
|
||||
// all clients use the same I2CP session, and as such, use the same I2CP options
|
||||
List controllers = _group.getControllers();
|
||||
|
||||
@@ -277,7 +278,7 @@ public class IndexBean {
|
||||
|
||||
// Only modify this non-current tunnel
|
||||
// if it belongs to a shared destination, and is of supported type
|
||||
if ("true".equalsIgnoreCase(c.getSharedClient()) && isClient(c.getType())) {
|
||||
if (Boolean.valueOf(c.getSharedClient()).booleanValue() && isClient(c.getType())) {
|
||||
Properties cOpt = c.getConfig("");
|
||||
if (_tunnelQuantity != null) {
|
||||
cOpt.setProperty("option.inbound.quantity", _tunnelQuantity);
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#
|
||||
# Translators:
|
||||
# blabla, 2011.
|
||||
# <blabla@trash-mail.com>, 2011.
|
||||
# ducki2p <ducki2p@gmail.com>, 2011.
|
||||
# foo <foo@bar>, 2009.
|
||||
# mixxy, 2011.
|
||||
@@ -12,8 +13,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-10-07 13:59+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:43+0000\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:16+0000\n"
|
||||
"PO-Revision-Date: 2011-11-28 01:24+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"Language-Team: German (http://www.transifex.net/projects/p/I2P/team/de/)\n"
|
||||
"Language: de\n"
|
||||
@@ -22,15 +23,15 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Dies scheint kein gültiges Ziel zu sein:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
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:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@@ -41,84 +42,88 @@ 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:930
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Ziel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:936
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Weiter zu {0}, ohne zu speichern"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:941
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, 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:944
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, 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:945
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, 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:1101
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1102
|
||||
msgid "HTTP Outproxy"
|
||||
msgstr "HTTP-Outproxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1107
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr ""
|
||||
"Durch Klicken auf einen der untenstehenden Links bekommen Sie einen "
|
||||
"Adresshelfer von einem \"Sprung\"-Service:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1319
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
|
||||
msgid "Added via address helper"
|
||||
msgstr "Durch Adresshelfer hinzugefügt"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1343
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Weiterleitung zu {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
msgid "Router Console"
|
||||
msgstr "Routerkonsole"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Addressbook"
|
||||
msgstr "Adressbuch"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Configuration"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1361
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
"{0} wurde ins {1} Adressbuch geschrieben. Du wirst nun weitergeleitet."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1362
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
"Konnte {0} nicht im {1} Adressbuch speichern. Du wirst nun weitergeleitet."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1364
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Klick hier, wenn du nicht automatisch weitergeleitet wirst!"
|
||||
|
||||
@@ -127,7 +132,7 @@ msgstr "Klick hier, wenn du nicht automatisch weitergeleitet wirst!"
|
||||
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."
|
||||
@@ -135,86 +140,86 @@ 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:222
|
||||
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:234
|
||||
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:247
|
||||
msgid "Stopping tunnel"
|
||||
msgstr "Beende Tunnel ..."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315
|
||||
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:318
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Einstellungen nicht gespeichert"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:435
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436
|
||||
msgid "New Tunnel"
|
||||
msgstr "Neuer Tunnel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
msgid "Standard client"
|
||||
msgstr "Standardklient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
msgid "HTTP client"
|
||||
msgstr "HTTP-Klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
msgid "IRC client"
|
||||
msgstr "IRC-Klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
msgid "Standard server"
|
||||
msgstr "Standardserver"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
msgid "HTTP server"
|
||||
msgstr "HTTP-Server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "SOCKS-4/4a/5-Proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "SOCKS-IRC-Proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "CONNECT/SSL/HTTPS-Proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
msgid "IRC server"
|
||||
msgstr "IRC-Server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
msgid "Streamr client"
|
||||
msgstr "Streamr-Klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
msgid "Streamr server"
|
||||
msgstr "Streamr-Server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467
|
||||
msgid "HTTP bidir"
|
||||
msgstr "HTTP Bidir"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Host nicht gesetzt"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:558
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Port nicht gesetzt"
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2ptunnel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-09-04 22:56+0000\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:18+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:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@@ -34,80 +34,84 @@ msgid ""
|
||||
"\"{1}\">here</a>."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:930
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:936
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:941
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, 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:944
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:945
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1101
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1102
|
||||
msgid "HTTP Outproxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1107
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1319
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
|
||||
msgid "Added via address helper"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1343
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
msgid "Router Console"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Addressbook"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1361
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1362
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1364
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr ""
|
||||
|
||||
@@ -116,92 +120,92 @@ msgstr ""
|
||||
msgid "internal"
|
||||
msgstr ""
|
||||
|
||||
#: ../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 ""
|
||||
|
||||
#: ../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 ""
|
||||
|
||||
#. 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 ""
|
||||
|
||||
#. 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 ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315
|
||||
msgid "Configuration changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:317
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:318
|
||||
msgid "Failed to save configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:435
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436
|
||||
msgid "New Tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
msgid "Standard client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
msgid "HTTP client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
msgid "IRC client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
msgid "Standard server"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
msgid "HTTP server"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
msgid "IRC server"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
msgid "Streamr client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
msgid "Streamr server"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467
|
||||
msgid "HTTP bidir"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:558
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr ""
|
||||
|
@@ -5,6 +5,7 @@
|
||||
#
|
||||
# Translators:
|
||||
# "blabla", 2011.
|
||||
# <blabla@trash-mail.com>, 2011.
|
||||
# ducki2p <ducki2p@gmail.com>, 2011.
|
||||
# foo <foo@bar>, 2009.
|
||||
# <punkibastardo@gmail.com>, 2011.
|
||||
@@ -13,8 +14,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-10-07 13:58+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 01:44+0000\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-11-28 01:53+0000\n"
|
||||
"Last-Translator: blabla <blabla@trash-mail.com>\n"
|
||||
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
|
||||
"team/es/)\n"
|
||||
@@ -24,15 +25,15 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Éste parece ser un destino falso:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr "El ayudante de direcciones no te puede ayudar con un destino así."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@@ -43,85 +44,89 @@ msgstr ""
|
||||
"\"{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:930
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Destino"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:936
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Acceder a {0} sin guardar"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:941
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, 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."
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:944
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, 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."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:945
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, 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."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1101
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1102
|
||||
msgid "HTTP Outproxy"
|
||||
msgstr "Puerta de salida HTTP"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1107
|
||||
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\":"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1319
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
|
||||
msgid "Added via address helper"
|
||||
msgstr "Agregado por el ayudante de direcciones."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1343
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Redireccionando a {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
msgid "Router Console"
|
||||
msgstr "Consola del Router"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Addressbook"
|
||||
msgstr "Libreta de direcciones"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Configuration"
|
||||
msgstr "Ajustes"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Help"
|
||||
msgstr "Ayuda"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1361
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} ha sido guardado en la libreta {1}, accediendo ahora."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1362
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "No se ha podido guardar {0} en la libreta {1}, accediendo ahora."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1364
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "¡Haz click aquí si no estás siendo enviado automáticamente!"
|
||||
|
||||
@@ -130,7 +135,7 @@ 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."
|
||||
@@ -138,86 +143,86 @@ 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:435
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436
|
||||
msgid "New Tunnel"
|
||||
msgstr "Nuevo túnel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
msgid "Standard client"
|
||||
msgstr "Cliente estándar"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
msgid "HTTP client"
|
||||
msgstr "Cliente HTTP"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
msgid "IRC client"
|
||||
msgstr "Cliente IRC"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
msgid "Standard server"
|
||||
msgstr "Servidor estándar"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
msgid "HTTP server"
|
||||
msgstr "Servidor HTTP"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "Proxy SOCKS 4/4a/5"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "Proxy IRC SOCKS"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "Proxy CONNECT/SSL/HTTPS"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
msgid "IRC server"
|
||||
msgstr "Servidor de IRC"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
msgid "Streamr client"
|
||||
msgstr "Cliente Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
msgid "Streamr server"
|
||||
msgstr "Servidor Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467
|
||||
msgid "HTTP bidir"
|
||||
msgstr "HTTP bidir"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Host no establecido"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:558
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Puerto no establecido"
|
||||
@@ -581,7 +586,7 @@ msgstr "destino local"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
|
||||
msgid "(if known)"
|
||||
msgstr "(Si se conoce)"
|
||||
msgstr "(si se conoce)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
|
||||
msgid "Local Authorization"
|
||||
@@ -652,7 +657,7 @@ msgstr "Nombre de la página"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
|
||||
msgid "(leave blank for outproxies)"
|
||||
msgstr "(Dejar en blanco para outproxies)"
|
||||
msgstr "(dejar en blanco para puertas de salida)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
|
||||
msgid "Private key file"
|
||||
@@ -808,7 +813,7 @@ msgstr "Apunta a"
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "Preview"
|
||||
msgstr "Vista previa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
@@ -882,7 +887,7 @@ msgstr "En espera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Outproxy"
|
||||
msgstr "Puerta de salida"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
@@ -890,4 +895,4 @@ msgstr "ninguno"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Nuevo túnel de cliente"
|
||||
msgstr "Nuevo túnel cliente"
|
||||
|
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2ptunnel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-10-07 16:06+0000\n"
|
||||
"PO-Revision-Date: 2011-10-07 23:21+0500\n"
|
||||
"POT-Creation-Date: 2011-10-19 16:40+0000\n"
|
||||
"PO-Revision-Date: 2011-10-20 00:56+0500\n"
|
||||
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
@@ -18,92 +18,92 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Это плохой адрес:"
|
||||
msgstr "Кажется это плохой адрес назначения:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr "С таким адресом назначения i2paddresshelper вам не поможет!"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, 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 "Для перехода по ссылке из локальной адресной книги, нажмите <a href=\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a href=\"{1}\">здесь</a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:930
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Адрес назначения"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:936
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Продолжить переход к {0} без сохранения"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:941
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в адресную книгу роутера (router address book) и продолжить переход к eep-сайту"
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:944
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в основную (master) адресную книгу и продолжить переход к eep-сайту"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:945
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в приватную адресную книгу и продолжить переход к eep-сайту"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1101
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1103
|
||||
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr "Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1319
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1321
|
||||
msgid "Added via address helper"
|
||||
msgstr "Добавлен через address helper"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1343
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1345
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Перенаправляем к {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1351
|
||||
msgid "Router Console"
|
||||
msgstr "Консоль маршрутизатора I2P"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1352
|
||||
msgid "Addressbook"
|
||||
msgstr "Адресная книга"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1352
|
||||
msgid "Configuration"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1352
|
||||
msgid "Help"
|
||||
msgstr "Помощь"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1357
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} сохранён в {1}, перенаправляем."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Не удалось сохранить {0} в {1} адресную книгу, перенаправляем."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1360
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Нажмите сюда если автоматическое перенаправление не сработало"
|
||||
|
||||
|
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-09-23 19:52+0000\n"
|
||||
"POT-Creation-Date: 2011-12-15 20:14+0000\n"
|
||||
"PO-Revision-Date: 2011-08-26 09:28+0000\n"
|
||||
"Last-Translator: digitalmannen <digitalmannen@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/"
|
||||
@@ -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:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Detta verkar vara ett felaktigt mål"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:485
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr "i2padresshjälp kan inte hjälpa dig med ett sådant mål!"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@@ -37,82 +37,87 @@ msgstr ""
|
||||
"För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a "
|
||||
"här </ a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:930
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Värd"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Mål"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:936
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Fortsätt till {0} utan att spara"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:941
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr "Spara {0} till routeradressboken och fortsätt till eepsite "
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:944
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr "Spara {0} till huvudadressboken och fortsätt till eepsite "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:945
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr "Spara {0} till privatadressbok och fortsätt till eepsite "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1101
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1102
|
||||
#, fuzzy
|
||||
msgid "HTTP Outproxy"
|
||||
msgstr "Utproxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1107
|
||||
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"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1319
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
|
||||
msgid "Added via address helper"
|
||||
msgstr "Tillagd via adresshjälpen "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1343
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Om dirigerar till {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
msgid "Router Console"
|
||||
msgstr "Router konsol "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Addressbook"
|
||||
msgstr "Adressbok"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1350
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Help"
|
||||
msgstr "Hjälp"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1361
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Spara {0} till {1}adressboken, omdirigerar nu "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1362
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Misslyckades med att spara {0} till {1}adressboken, omdirigerar nu "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1358
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1364
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Klicka här om du inte omdirigeras automatiskt "
|
||||
|
||||
@@ -121,7 +126,7 @@ 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."
|
||||
@@ -129,86 +134,86 @@ 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:435
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436
|
||||
msgid "New Tunnel"
|
||||
msgstr "Ny tunnel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
msgid "Standard client"
|
||||
msgstr "Standard klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
msgid "HTTP client"
|
||||
msgstr "HTTP-klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
msgid "IRC client"
|
||||
msgstr "IRC-klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
msgid "Standard server"
|
||||
msgstr "Standard server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
msgid "HTTP server"
|
||||
msgstr "HTTP server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "SOCKS 4/4a/5 proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "SOCKS IRC proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "CONNECT/SSL/HTTPS proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
msgid "IRC server"
|
||||
msgstr "IRC-server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
msgid "Streamr client"
|
||||
msgstr "Klient för Streamr "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
msgid "Streamr server"
|
||||
msgstr "Server för Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467
|
||||
msgid "HTTP bidir"
|
||||
msgstr "HTTP bidir"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:554
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Ingen värd angiven"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:558
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Ingen port angiven"
|
||||
|
902
apps/i2ptunnel/locale/messages_uk.po
Normal file
902
apps/i2ptunnel/locale/messages_uk.po
Normal file
@@ -0,0 +1,902 @@
|
||||
# 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:
|
||||
# Denis <gribua@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-12-12 11:18+0000\n"
|
||||
"PO-Revision-Date: 2011-12-16 22:15+0000\n"
|
||||
"Last-Translator: Denis <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.net/projects/p/I2P/team/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: uk_UA\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Скоріше всього це поганий адрес призначення:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:487
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr "i2paddresshelper не може допомогти Вам з місцем призначення як це!"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:556
|
||||
#, 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 ""
|
||||
"Для того щоб перейти по локальному посиланню з локальної адресної книги, "
|
||||
"натисніть ось<a href=\"{0}\">тут</a>. Для переходу по новому addresshelper-"
|
||||
"посиланню, натисніть будь-ласка <a href=\"{1}\">тут</a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:933
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Адреса призначення"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:938
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Продовжити до {0} без збереження"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:943
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr ""
|
||||
"Зберегти {0} в адресну книгу роутера и продовжити перехід до eep-сайту"
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:946
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr ""
|
||||
"Зберегти {0} в основну адресну книгу і продовжити перехід до еер-сайту"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:947
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr ""
|
||||
"Зберегти {0} в приватну адресну книгу і продовжити перехід до еер-сайту."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1102
|
||||
msgid "HTTP Outproxy"
|
||||
msgstr "Вихідний HTTP проксі"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1107
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" "
|
||||
"service:"
|
||||
msgstr ""
|
||||
"\"Jump\" сервіси, які, можливо, знають необхідне Вам addresshelper-"
|
||||
"посилання."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
|
||||
msgid "Added via address helper"
|
||||
msgstr "Додано через address helper"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1349
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Перенаправляємо до {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1355
|
||||
msgid "Router Console"
|
||||
msgstr "Консоль роутера"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Addressbook"
|
||||
msgstr "Адресна книга"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Configuration"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1356
|
||||
msgid "Help"
|
||||
msgstr "Допомога"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1361
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} збережено в {1} адресної книги, перенапрявляємо."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1362
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Не вдалось зберегти {0} в {1} адресної книги, перенаправляємо."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1364
|
||||
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
|
||||
msgid "internal"
|
||||
msgstr "внутрішній"
|
||||
|
||||
#: ../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 ""
|
||||
"Неправильно передана форма, можливо ви використовуєте дію браузера \"назад\""
|
||||
" або \"оновити\". Будь-ласка повторіть спробу."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:222
|
||||
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
|
||||
msgid "Starting tunnel"
|
||||
msgstr "Випуск тунелю"
|
||||
|
||||
#. and give them something to look at in any case
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:247
|
||||
msgid "Stopping tunnel"
|
||||
msgstr "Зупинка тунелю"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:315
|
||||
msgid "Configuration changes saved"
|
||||
msgstr "Налаштування збережені"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:318
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Помилка під час зберігання налаштувань"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:436
|
||||
msgid "New Tunnel"
|
||||
msgstr "Новий тунель"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456
|
||||
msgid "Standard client"
|
||||
msgstr "Звичайний клієнт"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457
|
||||
msgid "HTTP client"
|
||||
msgstr "HTTP клієнт"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458
|
||||
msgid "IRC client"
|
||||
msgstr "IRC клієнт"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459
|
||||
msgid "Standard server"
|
||||
msgstr "Звичайний сервер"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460
|
||||
msgid "HTTP server"
|
||||
msgstr "HTTP сервер"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "SOCKS 4/4a/5 проксі"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "SOCKS IRC проксі"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "CONNECT/SSL/HTTPS проксі"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464
|
||||
msgid "IRC server"
|
||||
msgstr "IRC сервер"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465
|
||||
msgid "Streamr client"
|
||||
msgstr "Streamr клієнт"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466
|
||||
msgid "Streamr server"
|
||||
msgstr "Streamr сервер"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467
|
||||
msgid "HTTP bidir"
|
||||
msgstr ""
|
||||
"HTTP bidir (експерементальний двухнаправлений режим, інструкцію запитуйте у "
|
||||
"sponge)"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Хост не заданий"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Порт не заданий"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Client Tunnel"
|
||||
msgstr "Менеджер Тунелів I2P - Редагування Клієнтського Тунелю"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
|
||||
msgid "Edit proxy settings"
|
||||
msgstr "Редагування настройок проксі"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
|
||||
msgid "New proxy settings"
|
||||
msgstr "Нові налаштування проксі"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr "Назва"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr "Тип"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr "Опис"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
|
||||
msgid "Target"
|
||||
msgstr "Ціль"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162
|
||||
msgid "Access Point"
|
||||
msgstr "Точка доступу"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
|
||||
msgid "required"
|
||||
msgstr "необхідно"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
|
||||
msgid "Reachable by"
|
||||
msgstr "Доступно цим"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
|
||||
msgid "Outproxies"
|
||||
msgstr "Список вихідних проксі (Outproxies)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
|
||||
msgid "Tunnel Destination"
|
||||
msgstr "Адреса Призначення Тунелю"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
|
||||
msgid "name or destination"
|
||||
msgstr "ім'я або призначення"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
|
||||
msgid "b32 not recommended"
|
||||
msgstr "b32 не рекомендується"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
|
||||
msgid "Shared Client"
|
||||
msgstr "Колективний Клієнт"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
|
||||
msgid ""
|
||||
"(Share tunnels with other clients and irc/httpclients? Change requires "
|
||||
"restart of client proxy)"
|
||||
msgstr ""
|
||||
"(Використовувати тунелі спільно з іншими клієнтами і irc/httpclients? Зміна"
|
||||
" налаштування потребує перезапуску тунелю)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
|
||||
msgid "Auto Start"
|
||||
msgstr "Автозапуск"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
|
||||
msgid "(Check the Box for 'YES')"
|
||||
msgstr "(Виберіть чекбокс 'ТАК')"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
|
||||
msgid "Enable DCC"
|
||||
msgstr "Включити DCC"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
|
||||
msgid "Advanced networking options"
|
||||
msgstr "Розширені мережеві опції"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:234
|
||||
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:236
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
|
||||
msgid "Tunnel Options"
|
||||
msgstr "Опції Тунелю"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:238
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
|
||||
msgid "Length"
|
||||
msgstr "Довжина"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
|
||||
msgid "0 hop tunnel (low anonymity, low latency)"
|
||||
msgstr "0 хоп тунель (низька анонімність, низький пінг)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
|
||||
msgid "1 hop tunnel (medium anonymity, medium latency)"
|
||||
msgstr "1 хоп тунель (середня анонімність, середній пінг)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
|
||||
msgid "2 hop tunnel (high anonymity, high latency)"
|
||||
msgstr "2 хоп тунель (висока анонімність, великий пінг)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:257
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
|
||||
msgid "3 hop tunnel (very high anonymity, poor performance)"
|
||||
msgstr ""
|
||||
"3 хоп тунель (дуже висока анонімність, погана продуктивність (комп'ютера))"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:266
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
|
||||
msgid "hop tunnel (very poor performance)"
|
||||
msgstr "хоп тунель (дуже погана продуктивність (комп'ютера))"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:271
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
|
||||
msgid "Variance"
|
||||
msgstr "Розбіжність"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:278
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
|
||||
msgid "0 hop variance (no randomisation, consistant performance)"
|
||||
msgstr "0 хоп розкид (без рандомізації, фіксована продуктивність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:282
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
|
||||
msgid ""
|
||||
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
|
||||
msgstr ""
|
||||
"+0-1 хоп розкид (помірна збільшена рандомізація, понижена продуктивність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:286
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
|
||||
msgid ""
|
||||
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
|
||||
msgstr ""
|
||||
"+0-2 хоп розкид (дуже збільшена рандомізація, понижена продуктивність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:290
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
|
||||
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
|
||||
msgstr ""
|
||||
"+/- 0-1 хоп розкид (стандартна рандомізація, стандартна продуктивнсть)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:294
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
|
||||
msgid "+/- 0-2 hop variance (not recommended)"
|
||||
msgstr "+/- 0-2 хоп розкид (не рекомендовано)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:306
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
|
||||
msgid "hop variance"
|
||||
msgstr "хоп розбіжність"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
|
||||
msgid "Count"
|
||||
msgstr "Кількість"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:318
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
|
||||
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
|
||||
msgstr ""
|
||||
"1 вхідний, 1 вихідний тунель (низька пропускна спроможність, низька "
|
||||
"надійність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:322
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
|
||||
msgid ""
|
||||
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
|
||||
"reliability)"
|
||||
msgstr ""
|
||||
"2 вхідні, 2 вихідні тунелі (стандартна пропускна спроможність, стандартна "
|
||||
"надійність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:326
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
|
||||
msgid ""
|
||||
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
|
||||
msgstr ""
|
||||
"3 вхідні, 3 вихідні тунелі (висока пропускна спроможність, висока "
|
||||
"надійність)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:335
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
|
||||
msgid "tunnels"
|
||||
msgstr "тунелів"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
|
||||
msgid "Backup Count"
|
||||
msgstr "Резервна кількість"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
|
||||
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
|
||||
msgstr ""
|
||||
"0 резервних тунелів (0 надлишок, відсутність додаткового навантаження на "
|
||||
"систему) "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:351
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
|
||||
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
|
||||
msgstr ""
|
||||
"1 резервний тунель в кожному напрямку (низька надлишковість, низьке "
|
||||
"використання ресурсів системи)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:355
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
|
||||
msgid ""
|
||||
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
|
||||
msgstr ""
|
||||
"2 резервні тунелі в кожному напрямку (середня надмірність, середнє "
|
||||
"навантаження на систему)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:359
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
|
||||
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
|
||||
msgstr ""
|
||||
"3 резервні тунелі в кожному напрямку (висока надмірність, високе "
|
||||
"навантаження на систему)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:368
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
|
||||
msgid "backup tunnels"
|
||||
msgstr "резервних тунелів"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:375
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
|
||||
msgid "Profile"
|
||||
msgstr "Режим"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
|
||||
msgid "interactive connection"
|
||||
msgstr "оптимізувати для малих затримок (irc)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
|
||||
msgid "bulk connection (downloads/websites/BT)"
|
||||
msgstr ""
|
||||
"оптимізувати для великого об'єму (завантаження/веб-серфінг/Бітторрент)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
msgid "Delay Connect"
|
||||
msgstr "Затримка Зєднання"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:392
|
||||
msgid "for request/response connections"
|
||||
msgstr ""
|
||||
"оптимізація для з'єднань, які починаються з запиту клієнта/відповіді "
|
||||
"сервера. "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
|
||||
msgid "Router I2CP Address"
|
||||
msgstr "I2CP Адрес Роутера"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr "Порт"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
|
||||
msgid "Reduce tunnel quantity when idle"
|
||||
msgstr "Зменьшувати кількість тунелів при простої"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:418
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:432
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:462
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:496
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
|
||||
msgid "Enable"
|
||||
msgstr "Включити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
|
||||
msgid "Reduced tunnel count"
|
||||
msgstr "Зменшення числа тунелів"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:446
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489
|
||||
msgid "Idle minutes"
|
||||
msgstr "Хвилин простою"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
|
||||
msgid "Close tunnels when idle"
|
||||
msgstr "Закривати тунелі при простою"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436
|
||||
msgid "New Keys on Reopen"
|
||||
msgstr "Генерувати новий ключ при перезапуску"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
|
||||
msgid "Disable"
|
||||
msgstr "Вимкнути"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
|
||||
msgid "Delay tunnel open until required"
|
||||
msgstr "Відкласти запуск до першого запиту"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
|
||||
msgid "Persistent private key"
|
||||
msgstr "Постійний секретний ключ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:466
|
||||
msgid "File"
|
||||
msgstr "Файл"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220
|
||||
msgid "Local destination"
|
||||
msgstr "Локальний адрес призначення"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474
|
||||
msgid "(if known)"
|
||||
msgstr "(Якщо відомий)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
|
||||
msgid "Local Authorization"
|
||||
msgstr "Локальна Авторизація"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:500
|
||||
msgid "Username"
|
||||
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
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
|
||||
msgid "Outproxy Authorization"
|
||||
msgstr "Авторизація outproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
|
||||
msgid "Jump URL List"
|
||||
msgstr "URL спиок \"Jump\"-сервісів"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
|
||||
msgid "Custom options"
|
||||
msgstr "Вибіркові параметри"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:522
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
|
||||
msgid ""
|
||||
"NOTE: If tunnel is currently running, most changes will not take effect "
|
||||
"until tunnel is stopped and restarted."
|
||||
msgstr ""
|
||||
"Примітка: Якщо тунель зараз активний, то більшість змін не почнуть діяти до "
|
||||
"того моменту поки тунель не зупинять і перезапустять."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
|
||||
msgid "Cancel"
|
||||
msgstr "Відмінити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:528
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
|
||||
msgid "Delete"
|
||||
msgstr "Удалити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:530
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
|
||||
msgid "Save"
|
||||
msgstr "Зберегти"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Server Tunnel"
|
||||
msgstr "Менеджер I2P Тунелів — Редагування Серверного Тунелю."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
|
||||
msgid "Edit server settings"
|
||||
msgstr "Редагувати настройок сервера"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
|
||||
msgid "New server settings"
|
||||
msgstr "Нові серверні настройки"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
|
||||
msgid "Website name"
|
||||
msgstr "Назва веб-сайту"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
|
||||
msgid "(leave blank for outproxies)"
|
||||
msgstr "(залишити пустим для outproxy)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
|
||||
msgid "Private key file"
|
||||
msgstr "Файл секретного ключа"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
|
||||
msgid "Add to local addressbook"
|
||||
msgstr "Добавити в локальну адресну книгу"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
|
||||
msgid "Hostname Signature"
|
||||
msgstr "Підпис Хоста"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
|
||||
msgid "Encrypt Leaseset"
|
||||
msgstr "Шифрувати Leaseset"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
|
||||
msgid "Encryption Key"
|
||||
msgstr "Ключ Шифрування"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
|
||||
msgid "Generate New Key"
|
||||
msgstr "Згенерувати новий ключ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
|
||||
msgid "Generate"
|
||||
msgstr "Згенерувати"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
|
||||
msgid "(Tunnel must be stopped first)"
|
||||
msgstr "(Спочатку необхідно зупинити тунель)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
|
||||
msgid "Restricted Access List"
|
||||
msgstr "Обмежений Доступ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
|
||||
msgid "Whitelist"
|
||||
msgstr "Білий список"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
|
||||
msgid "Blacklist"
|
||||
msgstr "Чоний список"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
|
||||
msgid "Access List"
|
||||
msgstr "Список доступа"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
|
||||
msgid "Inbound connection limits (0=unlimited)"
|
||||
msgstr "Обмеження вхідних зєднань (0=необмежено)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
|
||||
msgid "Per client"
|
||||
msgstr "На клієнта"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
|
||||
msgid "Per minute"
|
||||
msgstr "В хвилину"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
|
||||
msgid "Per hour"
|
||||
msgstr "В годину"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
|
||||
msgid "Per day"
|
||||
msgstr "На добу"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
|
||||
msgid "Total"
|
||||
msgstr "Всього"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
|
||||
msgid "Max concurrent connections (0=unlimited)"
|
||||
msgstr "Максимум одночасних зєднань (0=необмежено)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
|
||||
msgid "New Certificate type"
|
||||
msgstr "Новий тип сертифіката"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
|
||||
msgid "None"
|
||||
msgstr "Жоден"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
|
||||
msgid "Hashcash (effort)"
|
||||
msgstr "Hashcash (зусиль)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
|
||||
msgid "Hashcash Calc Time"
|
||||
msgstr "Час генерації hashcash"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
|
||||
msgid "Estimate"
|
||||
msgstr "Прогноз"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
|
||||
msgid "Hidden"
|
||||
msgstr "Прихований"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
|
||||
msgid "Signed (signed by)"
|
||||
msgstr "Підписаний (вказано ким підписано)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
|
||||
msgid "Modify Certificate"
|
||||
msgstr "Змінити Сертифікат"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
|
||||
msgid "Modify"
|
||||
msgstr "Змінтити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr "Менеджер Тунелів I2P — Список"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr "Повідомлення про стан"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr "Оновити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr "Зупинити все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr "Запустити все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr "Перезапустити все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr "Перезапустити настройки"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr "Серверні I2P тунелі"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr "Вказує на"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "Попередній перегляд"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr "Base32-адрес"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr "Попередній перегляд недоступний"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr "Запускається..."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr "Зупинити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr "Працює"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr "Зупинений"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr "Запустити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr "Новий серверний тунель"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr "Стандартний"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr "Створити"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr "Клієнтскі I2P тунелі"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr "Мережевий інтерфейс"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr "Режим очікування"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Outproxy (зовнішній проксі)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr "ні"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Новий клієнтський тунель"
|
||||
|
||||
|
@@ -0,0 +1,18 @@
|
||||
package net.i2p.client.streaming;
|
||||
|
||||
import net.i2p.client.streaming.I2PSocket;
|
||||
import net.i2p.client.streaming.I2PSocketManager;
|
||||
import net.i2p.I2PException;
|
||||
import java.net.ConnectException;
|
||||
import java.nio.channels.SelectableChannel;
|
||||
|
||||
/**
|
||||
* @since 0.8.11
|
||||
*/
|
||||
public abstract class AcceptingChannel extends SelectableChannel {
|
||||
abstract I2PSocket accept() throws I2PException, ConnectException;
|
||||
I2PSocketManager _socketManager;
|
||||
AcceptingChannel(I2PSocketManager manager) {
|
||||
this._socketManager = manager;
|
||||
}
|
||||
}
|
@@ -31,6 +31,11 @@ public interface I2PServerSocket {
|
||||
*/
|
||||
public I2PSocket accept() throws I2PException, ConnectException, SocketTimeoutException;
|
||||
|
||||
/**
|
||||
* @since 0.8.11
|
||||
*/
|
||||
public AcceptingChannel getChannel();
|
||||
|
||||
/**
|
||||
* Set Sock Option accept timeout
|
||||
* @param x timeout in ms
|
||||
|
@@ -76,6 +76,19 @@ public class I2PSocketEepGet extends EepGet {
|
||||
return rv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overridden to disable inline gunzipping
|
||||
* @since 0.8.10
|
||||
*/
|
||||
@Override
|
||||
protected void readHeaders() throws IOException {
|
||||
try {
|
||||
super.readHeaders();
|
||||
} finally {
|
||||
_isGzippedResponse = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up the address, get a socket from the I2PSocketManager supplied in the constructor,
|
||||
* and send the request.
|
||||
|
@@ -44,7 +44,7 @@ fi
|
||||
# list specific files in core/ and router/ here, so we don't scan the whole tree
|
||||
ROUTERFILES="\
|
||||
../../../core/java/src/net/i2p/data/DataHelper.java \
|
||||
../../../router/java/src/net/i2p/router/Router.java \
|
||||
../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java \
|
||||
../../../router/java/src/net/i2p/router/RouterThrottleImpl.java \
|
||||
../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java \
|
||||
../../../router/java/src/net/i2p/router/transport/TransportManager.java \
|
||||
|
@@ -48,6 +48,17 @@ public class CSSHelper extends HelperBase {
|
||||
return Messages.getLanguage(_context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show / hide news on home page
|
||||
* @param val if non-null, "1" to show, else hide
|
||||
* @since 0.8.12
|
||||
*/
|
||||
public void setNews(String val) {
|
||||
// Protected with nonce in css.jsi
|
||||
if (val != null)
|
||||
NewsFetcher.getInstance(_context).showNews(val.equals("1"));
|
||||
}
|
||||
|
||||
/** change refresh and save it */
|
||||
public void setRefresh(String r) {
|
||||
_context.router().setConfigSetting(PROP_REFRESH, r);
|
||||
|
@@ -1,11 +1,13 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import net.i2p.data.DataHelper;
|
||||
|
||||
/**
|
||||
* Handler to deal with form submissions from the advanced config form and act
|
||||
@@ -39,28 +41,26 @@ public class ConfigAdvancedHandler extends FormHandler {
|
||||
*
|
||||
*/
|
||||
private void saveChanges() {
|
||||
HashSet unsetKeys = new HashSet(_context.router().getConfigMap().keySet());
|
||||
Set<String> unsetKeys = new HashSet(_context.router().getConfigSettings());
|
||||
if (_config != null) {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(_config.getBytes())));
|
||||
String line = null;
|
||||
Properties props = new Properties();
|
||||
try {
|
||||
while ( (line = reader.readLine()) != null) {
|
||||
int eq = line.indexOf('=');
|
||||
if (eq == -1) continue;
|
||||
if (eq >= line.length() - 1) continue;
|
||||
String key = line.substring(0, eq).trim();
|
||||
String val = line.substring(eq + 1).trim();
|
||||
_context.router().setConfigSetting(key, val);
|
||||
unsetKeys.remove(key);
|
||||
}
|
||||
DataHelper.loadProps(props, new ByteArrayInputStream(_config.getBytes()));
|
||||
} catch (IOException ioe) {
|
||||
_log.error("Config error", ioe);
|
||||
addFormError(ioe.toString());
|
||||
addFormError(_("Error updating the configuration - please see the error logs"));
|
||||
return;
|
||||
}
|
||||
|
||||
Iterator cleaner = unsetKeys.iterator();
|
||||
while (cleaner.hasNext()) {
|
||||
String unsetKey = (String)cleaner.next();
|
||||
for (Map.Entry e : props.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
String val = (String) e.getValue();
|
||||
_context.router().setConfigSetting(key, val);
|
||||
unsetKeys.remove(key);
|
||||
}
|
||||
|
||||
for (String unsetKey : unsetKeys) {
|
||||
_context.router().removeConfigSetting(unsetKey);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class ConfigAdvancedHandler extends FormHandler {
|
||||
if (saved)
|
||||
addFormNotice(_("Configuration saved successfully"));
|
||||
else
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs"));
|
||||
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
|
||||
|
||||
//if (_forceRestart) {
|
||||
// addFormNotice("Performing a soft restart");
|
||||
|
@@ -1,8 +1,7 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
|
||||
public class ConfigAdvancedHelper extends HelperBase {
|
||||
@@ -10,11 +9,11 @@ public class ConfigAdvancedHelper extends HelperBase {
|
||||
|
||||
public String getSettings() {
|
||||
StringBuilder buf = new StringBuilder(4*1024);
|
||||
Set names = _context.router().getConfigSettings();
|
||||
TreeSet sortedNames = new TreeSet(names);
|
||||
for (Iterator iter = sortedNames.iterator(); iter.hasNext(); ) {
|
||||
String name = (String)iter.next();
|
||||
String val = _context.router().getConfigSetting(name);
|
||||
TreeMap<String, String> sorted = new TreeMap();
|
||||
sorted.putAll(_context.router().getConfigMap());
|
||||
for (Map.Entry<String, String> e : sorted.entrySet()) {
|
||||
String name = e.getKey();
|
||||
String val = e.getValue();
|
||||
buf.append(name).append('=').append(val).append('\n');
|
||||
}
|
||||
return buf.toString();
|
||||
|
@@ -5,6 +5,7 @@ import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
@@ -131,8 +132,8 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
|
||||
// label (IE)
|
||||
String xStart = _("Start");
|
||||
if (_action.toLowerCase().startsWith(xStart + "<span class=hide> ") &&
|
||||
_action.toLowerCase().endsWith("</span>")) {
|
||||
if (_action.toLowerCase(Locale.US).startsWith(xStart + "<span class=hide> ") &&
|
||||
_action.toLowerCase(Locale.US).endsWith("</span>")) {
|
||||
// IE sucks
|
||||
String app = _action.substring(xStart.length() + 18, _action.length() - 7);
|
||||
int appnum = -1;
|
||||
|
@@ -256,19 +256,21 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
buf.append("disabled=\"true\" ");
|
||||
}
|
||||
buf.append("></td><td align=\"center\" width=\"15%\">");
|
||||
// The icons were way too much, so there's an X in each button class,
|
||||
// remove if you wnat to put them back
|
||||
if (showStartButton && (!ro) && !edit) {
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" class=\"Xaccept\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
}
|
||||
if (showEditButton && (!edit) && !ro)
|
||||
buf.append("<button type=\"submit\" name=\"edit\" value=\"Edit ").append(index).append("\" >" + _("Edit") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" class=\"Xadd\" name=\"edit\" value=\"Edit ").append(index).append("\" >" + _("Edit") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
if (showStopButton && (!edit))
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"Stop ").append(index).append("\" >" + _("Stop") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" class=\"Xstop\" name=\"action\" value=\"Stop ").append(index).append("\" >" + _("Stop") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
if (showUpdateButton && (!edit) && !ro) {
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"Check ").append(index).append("\" >" + _("Check for updates") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"Update ").append(index).append("\" >" + _("Update") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" class=\"Xcheck\" name=\"action\" value=\"Check ").append(index).append("\" >" + _("Check for updates") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
buf.append("<button type=\"submit\" class=\"Xdownload\" name=\"action\" value=\"Update ").append(index).append("\" >" + _("Update") + "<span class=hide> ").append(index).append("</span></button>");
|
||||
}
|
||||
if (showDeleteButton && (!edit) && !ro) {
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"Delete ").append(index)
|
||||
buf.append("<button type=\"submit\" class=\"Xdelete\" name=\"action\" value=\"Delete ").append(index)
|
||||
.append("\" onclick=\"if (!confirm('")
|
||||
.append(_("Are you sure you want to delete {0}?", _(name)))
|
||||
.append("')) { return false; }\">")
|
||||
|
@@ -159,7 +159,7 @@ public class ConfigLoggingHandler extends FormHandler {
|
||||
if (saved)
|
||||
addFormNotice(_("Log configuration saved"));
|
||||
else
|
||||
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
|
||||
addFormError("Error saving the configuration (applied but not saved) - please see the error logs");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package net.i2p.router.web;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Render the configuration menu at the top of all the config pages.
|
||||
* refactored from confignav.jsp to reduce size and make translation easier
|
||||
* @author zzz
|
||||
*/
|
||||
@@ -10,29 +11,45 @@ public class ConfigNavHelper extends HelperBase {
|
||||
|
||||
/** configX.jsp */
|
||||
private static final String pages[] =
|
||||
{"", "ui", "service", "update", "tunnels",
|
||||
{"", "net", "ui", "service", "update", "tunnels",
|
||||
"clients", "peer", "keyring", "logging", "stats",
|
||||
"reseed", "advanced" };
|
||||
|
||||
private static final String titles[] =
|
||||
{_x("Network"), _x("UI"), _x("Service"), _x("Update"), _x("Tunnels"),
|
||||
{_x("Bandwidth"), _x("Network"), _x("UI"), _x("Service"), _x("Update"), _x("Tunnels"),
|
||||
_x("Clients"), _x("Peers"), _x("Keyring"), _x("Logging"), _x("Stats"),
|
||||
_x("Reseeding"), _x("Advanced") };
|
||||
|
||||
public void renderNavBar(String requestURI) throws IOException {
|
||||
/**
|
||||
* @param graphical false for text-mode browsers
|
||||
*/
|
||||
public void renderNavBar(String requestURI, boolean graphical) throws IOException {
|
||||
StringBuilder buf = new StringBuilder(1024);
|
||||
// TODO fix up the non-light themes
|
||||
String theme = _context.getProperty(CSSHelper.PROP_THEME_NAME);
|
||||
boolean span = graphical && (theme == null || theme.equals(CSSHelper.DEFAULT_THEME));
|
||||
if (!span)
|
||||
buf.append("<center>");
|
||||
for (int i = 0; i < pages.length; i++) {
|
||||
String page = "config" + pages[i];
|
||||
if (requestURI.endsWith(page) || requestURI.endsWith(page + ".jsp")) {
|
||||
// we are there
|
||||
if (span)
|
||||
buf.append("<span class=\"tab2\">");
|
||||
buf.append(_(titles[i]));
|
||||
} else {
|
||||
// we are not there, make a link
|
||||
if (span)
|
||||
buf.append("<span class=\"tab\">");
|
||||
buf.append("<a href=\"").append(page).append("\">").append(_(titles[i])).append("</a>");
|
||||
}
|
||||
if (i != pages.length - 1)
|
||||
if (span)
|
||||
buf.append(" </span>\n");
|
||||
else if (i != pages.length - 1)
|
||||
buf.append(" |\n");
|
||||
}
|
||||
if (!span)
|
||||
buf.append("</center>");
|
||||
_out.write(buf.toString());
|
||||
}
|
||||
}
|
||||
|
@@ -44,7 +44,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
private String _reseedFrom;
|
||||
private boolean _enableLoadTesting;
|
||||
private String _sharePct;
|
||||
private static final boolean _ratesOnly = false; // always false - delete me
|
||||
private boolean _ratesOnly;
|
||||
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
|
||||
|
||||
@Override
|
||||
@@ -120,6 +120,11 @@ public class ConfigNetHandler extends FormHandler {
|
||||
_sharePct = (pct != null ? pct.trim() : null);
|
||||
}
|
||||
|
||||
/** @since 0.8.12 */
|
||||
public void setRatesOnly(String foo) {
|
||||
_ratesOnly = true;
|
||||
}
|
||||
|
||||
private void recheckReachability() {
|
||||
_context.commSystem().recheckReachability();
|
||||
addFormNotice(_("Rechecking router reachability..."));
|
||||
@@ -169,7 +174,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
String oldNPort = _context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_PORT, "");
|
||||
String oldAutoHost = _context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_IP, "true");
|
||||
String sAutoPort = _context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_PORT, "true");
|
||||
boolean oldAutoPort = "true".equalsIgnoreCase(sAutoPort);
|
||||
boolean oldAutoPort = Boolean.valueOf(sAutoPort).booleanValue();
|
||||
if (_ntcpHostname == null) _ntcpHostname = "";
|
||||
if (_ntcpPort == null) _ntcpPort = "";
|
||||
if (_ntcpAutoIP == null) _ntcpAutoIP = "true";
|
||||
@@ -274,12 +279,10 @@ public class ConfigNetHandler extends FormHandler {
|
||||
}
|
||||
|
||||
boolean saved = _context.router().saveConfig();
|
||||
if ( (_action != null) && (_("Save changes").equals(_action)) ) {
|
||||
if (saved)
|
||||
addFormNotice(_("Configuration saved successfully"));
|
||||
else
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs"));
|
||||
}
|
||||
if (saved)
|
||||
addFormNotice(_("Configuration saved successfully"));
|
||||
else
|
||||
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
|
||||
|
||||
if (switchRequired) {
|
||||
hiddenSwitch();
|
||||
@@ -341,10 +344,11 @@ public class ConfigNetHandler extends FormHandler {
|
||||
|
||||
private void updateRates() {
|
||||
boolean updated = false;
|
||||
boolean bwUpdated = false;
|
||||
|
||||
if (_sharePct != null) {
|
||||
String old = _context.router().getConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE);
|
||||
if ( (old == null) || (!old.equalsIgnoreCase(_sharePct)) ) {
|
||||
if ( (old == null) || (!old.equals(_sharePct)) ) {
|
||||
_context.router().setConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE, _sharePct);
|
||||
addFormNotice(_("Updating bandwidth share percentage"));
|
||||
updated = true;
|
||||
@@ -361,7 +365,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BURST_BANDWIDTH, "" + rate);
|
||||
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BANDWIDTH_PEAK, "" + kb);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
updated = true;
|
||||
bwUpdated = true;
|
||||
}
|
||||
if ( (_outboundRate != null) && (_outboundRate.length() > 0) &&
|
||||
!_outboundRate.equals(_context.getProperty(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH, "" + FIFOBandwidthRefiller.DEFAULT_OUTBOUND_BANDWIDTH))) {
|
||||
@@ -372,6 +376,11 @@ public class ConfigNetHandler extends FormHandler {
|
||||
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BURST_BANDWIDTH, "" + rate);
|
||||
_context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH_PEAK, "" + kb);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
bwUpdated = true;
|
||||
}
|
||||
|
||||
if (bwUpdated) {
|
||||
addFormNotice(_("Updated bandwidth limits"));
|
||||
updated = true;
|
||||
}
|
||||
|
||||
@@ -427,9 +436,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
***********/
|
||||
|
||||
|
||||
if (updated && !_ratesOnly) {
|
||||
if (updated)
|
||||
_context.bandwidthLimiter().reinitialize();
|
||||
addFormNotice(_("Updated bandwidth limits"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -68,8 +68,8 @@ public class ConfigNetHelper extends HelperBase {
|
||||
}
|
||||
|
||||
public String getEnableTimeSyncChecked() {
|
||||
String disabled = _context.getProperty(Timestamper.PROP_DISABLED, "false");
|
||||
if ( (disabled != null) && ("true".equalsIgnoreCase(disabled)) )
|
||||
boolean disabled = _context.getBooleanProperty(Timestamper.PROP_DISABLED);
|
||||
if (disabled)
|
||||
return "";
|
||||
else
|
||||
return CHECKED;
|
||||
@@ -77,7 +77,7 @@ public class ConfigNetHelper extends HelperBase {
|
||||
|
||||
/** @param prop must default to false */
|
||||
public String getChecked(String prop) {
|
||||
if (Boolean.valueOf(_context.getProperty(prop)).booleanValue())
|
||||
if (_context.getBooleanProperty(prop))
|
||||
return CHECKED;
|
||||
return "";
|
||||
}
|
||||
@@ -130,7 +130,7 @@ public class ConfigNetHelper extends HelperBase {
|
||||
|
||||
/** default true */
|
||||
public String getUpnpChecked() {
|
||||
if (Boolean.valueOf(_context.getProperty(TransportManager.PROP_ENABLE_UPNP, "true")).booleanValue())
|
||||
if (_context.getBooleanPropertyDefaultTrue(TransportManager.PROP_ENABLE_UPNP))
|
||||
return CHECKED;
|
||||
return "";
|
||||
}
|
||||
@@ -228,7 +228,7 @@ public class ConfigNetHelper extends HelperBase {
|
||||
public String getSharePercentageBox() {
|
||||
int pct = (int) (100 * _context.router().getSharePercentage());
|
||||
StringBuilder buf = new StringBuilder(256);
|
||||
buf.append("<select style=\"text-align: right;\" name=\"sharePercentage\">\n");
|
||||
buf.append("<select style=\"text-align: right !important;\" name=\"sharePercentage\">\n");
|
||||
boolean found = false;
|
||||
for (int i = 30; i <= 110; i += 10) {
|
||||
int val = i;
|
||||
|
@@ -9,11 +9,13 @@ import net.i2p.router.RouterContext;
|
||||
*
|
||||
*/
|
||||
public class ConfigRestartBean {
|
||||
/** all these are tagged below so no need to _x them here */
|
||||
static final String[] SET1 = {"shutdownImmediate", "Shutdown immediately", "cancelShutdown", "Cancel shutdown"};
|
||||
static final String[] SET2 = {"restartImmediate", "Restart immediately", "cancelShutdown", "Cancel restart"};
|
||||
static final String[] SET3 = {"restart", "Restart", "shutdown", "Shutdown"};
|
||||
static final String[] SET4 = {"shutdown", "Shutdown"};
|
||||
/** all these are tagged below so no need to _x them here.
|
||||
* order is: form value, form class, display text.
|
||||
*/
|
||||
static final String[] SET1 = {"shutdownImmediate", "stop", "Shutdown immediately", "cancelShutdown", "cancel", "Cancel shutdown"};
|
||||
static final String[] SET2 = {"restartImmediate", "reload", "Restart immediately", "cancelShutdown", "cancel", "Cancel restart"};
|
||||
static final String[] SET3 = {"restart", "reload", "Restart", "shutdown", "stop", "Shutdown"};
|
||||
static final String[] SET4 = {"shutdown", "stop", "Shutdown"};
|
||||
|
||||
public static String getNonce() {
|
||||
RouterContext ctx = ContextHelper.getContext(null);
|
||||
@@ -58,21 +60,21 @@ public class ConfigRestartBean {
|
||||
long timeRemaining = ctx.router().getShutdownTimeRemaining();
|
||||
StringBuilder buf = new StringBuilder(128);
|
||||
if ((shuttingDown || restarting) && timeRemaining <= 0) {
|
||||
buf.append("<center><b>");
|
||||
buf.append("<h4>");
|
||||
if (restarting)
|
||||
buf.append(_("Restart imminent", ctx));
|
||||
else
|
||||
buf.append(_("Shutdown imminent", ctx));
|
||||
buf.append("</b></center>");
|
||||
buf.append("</h4>");
|
||||
} else if (shuttingDown) {
|
||||
buf.append("<center><b>");
|
||||
buf.append("<h4>");
|
||||
buf.append(_("Shutdown in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
|
||||
buf.append("</b></center><br>");
|
||||
buf.append("</h4><hr>");
|
||||
buttons(ctx, buf, urlBase, systemNonce, SET1);
|
||||
} else if (restarting) {
|
||||
buf.append("<center><b>");
|
||||
buf.append("<h4>");
|
||||
buf.append(_("Restart in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
|
||||
buf.append("</b></center><br>");
|
||||
buf.append("</h4><hr>");
|
||||
buttons(ctx, buf, urlBase, systemNonce, SET2);
|
||||
} else {
|
||||
if (ctx.hasWrapper())
|
||||
@@ -83,12 +85,16 @@ public class ConfigRestartBean {
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
/** @param s value,label,... pairs */
|
||||
/** @param s value,class,label,... triplets */
|
||||
private static void buttons(RouterContext ctx, StringBuilder buf, String url, String nonce, String[] s) {
|
||||
buf.append("<form action=\"").append(url).append("\" method=\"POST\">\n");
|
||||
buf.append("<input type=\"hidden\" name=\"consoleNonce\" value=\"").append(nonce).append("\" >\n");
|
||||
for (int i = 0; i < s.length; i+= 2)
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"").append(s[i]).append("\" >").append(_(s[i+1], ctx)).append("</button>\n");
|
||||
for (int i = 0; i < s.length; i+= 3) {
|
||||
buf.append("<button type=\"submit\" name=\"action\" value=\"")
|
||||
.append(s[i]).append("\" class=\"")
|
||||
.append(s[i+1]).append("\" >")
|
||||
.append(_(s[i+2], ctx)).append("</button>\n");
|
||||
}
|
||||
buf.append("</form>\n");
|
||||
}
|
||||
|
||||
|
@@ -139,7 +139,7 @@ public class ConfigTunnelsHandler extends FormHandler {
|
||||
if (saved)
|
||||
addFormNotice(_("Exploratory tunnel configuration saved successfully."));
|
||||
else
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs."));
|
||||
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
|
||||
}
|
||||
}
|
||||
private static final int getInt(Object val) {
|
||||
|
@@ -63,6 +63,7 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
private static final int MAX_BACKUP_QUANTITY = 3;
|
||||
private static final int MAX_VARIANCE = 2;
|
||||
private static final int MIN_NEG_VARIANCE = -1;
|
||||
|
||||
private void renderForm(StringBuilder buf, int index, String prefix, String name, TunnelPoolSettings in, TunnelPoolSettings out) {
|
||||
|
||||
buf.append("<tr><th colspan=\"3\"><a name=\"").append(prefix).append("\">");
|
||||
@@ -80,8 +81,8 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH ||
|
||||
out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include very long tunnels.") + "</font></th></tr>");
|
||||
if (in.getQuantity() + in.getBackupQuantity() >= WARN_QUANTITY ||
|
||||
out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
|
||||
if (in.getTotalQuantity() >= WARN_QUANTITY ||
|
||||
out.getTotalQuantity() >= WARN_QUANTITY)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include high tunnel quantities.") + "</font></th></tr>");
|
||||
|
||||
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> " + _("Inbound") + "</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> " + _("Outbound") + "</th></tr>\n");
|
||||
|
@@ -33,7 +33,7 @@ public class ConfigUIHandler extends FormHandler {
|
||||
_("Refresh the page to view.") +
|
||||
"</a>");
|
||||
} else {
|
||||
addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs."));
|
||||
addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -53,14 +53,14 @@ public class ConfigUIHelper extends HelperBase {
|
||||
* Any language-specific flag added to the icon set must be
|
||||
* added to the top-level build.xml for the updater.
|
||||
*/
|
||||
private static final String langs[] = {"ar", "da", "de", "en", "es", "fi",
|
||||
private static final String langs[] = {"ar", "da", "de", "ee", "en", "es", "fi",
|
||||
"fr", "it", "nl", "pl", "pt", "ru",
|
||||
"sv", "uk", "vi", "zh"};
|
||||
private static final String flags[] = {"lang_ar", "dk", "de", "us", "es", "fi",
|
||||
private static final String flags[] = {"lang_ar", "dk", "de", "ee", "us", "es", "fi",
|
||||
"fr", "it", "nl", "pl", "pt", "ru",
|
||||
"se", "ua", "vn", "cn"};
|
||||
private static final String xlangs[] = {_x("Arabic"), _x("Danish"),
|
||||
_x("German"), _x("English"), _x("Spanish"),_x("Finnish"),
|
||||
_x("German"), _x("Estonian"), _x("English"), _x("Spanish"), _x("Finnish"),
|
||||
_x("French"), _x("Italian"), _x("Dutch"), _x("Polish"),
|
||||
_x("Portuguese"), _x("Russian"), _x("Swedish"),
|
||||
_x("Ukrainian"), _x("Vietnamese"), _x("Chinese")};
|
||||
|
@@ -24,7 +24,8 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
public static final String OLD_DEFAULT_NEWS_URL = "http://complication.i2p/news.xml";
|
||||
public static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml";
|
||||
public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
|
||||
public static final String DEFAULT_REFRESH_FREQUENCY = 36*60*60*1000 + "";
|
||||
public static final long DEFAULT_REFRESH_FREQ = 36*60*60*1000l;
|
||||
public static final String DEFAULT_REFRESH_FREQUENCY = Long.toString(DEFAULT_REFRESH_FREQ);
|
||||
public static final String PROP_UPDATE_POLICY = "router.updatePolicy";
|
||||
public static final String DEFAULT_UPDATE_POLICY = "download";
|
||||
public static final String PROP_SHOULD_PROXY = "router.updateThroughProxy";
|
||||
@@ -52,6 +53,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
"http://inr.i2p/i2p/i2pupdate.su2\r\n" +
|
||||
"http://stats.i2p/i2p/i2pupdate.su2\r\n" +
|
||||
"http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" +
|
||||
"http://update.killyourtv.i2p/i2pupdate.su2\r\n" +
|
||||
"http://update.postman.i2p/i2pupdate.su2" ;
|
||||
|
||||
private static final String NO_PACK200_URLS =
|
||||
@@ -59,6 +61,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
"http://inr.i2p/i2p/i2pupdate.sud\r\n" +
|
||||
"http://stats.i2p/i2p/i2pupdate.sud\r\n" +
|
||||
"http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
|
||||
"http://update.killyourtv.i2p/i2pupdate.sud\r\n" +
|
||||
"http://update.postman.i2p/i2pupdate.sud" ;
|
||||
|
||||
public static final String DEFAULT_UPDATE_URL;
|
||||
@@ -100,7 +103,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
if ( (oldURL == null) || (!_newsURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_NEWS_URL, _newsURL);
|
||||
NewsFetcher.getInstance(_context).invalidateNews();
|
||||
addFormNotice(_("Updating news URL to") + " " + _newsURL);
|
||||
addFormNotice(_("Updating news URL to {0}", _newsURL));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +111,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldHost = _context.router().getConfigSetting(PROP_PROXY_HOST);
|
||||
if ( (oldHost == null) || (!_proxyHost.equals(oldHost)) ) {
|
||||
_context.router().setConfigSetting(PROP_PROXY_HOST, _proxyHost);
|
||||
addFormNotice(_("Updating proxy host to") + " " + _proxyHost);
|
||||
addFormNotice(_("Updating proxy host to {0}", _proxyHost));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,27 +119,27 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldPort = _context.router().getConfigSetting(PROP_PROXY_PORT);
|
||||
if ( (oldPort == null) || (!_proxyPort.equals(oldPort)) ) {
|
||||
_context.router().setConfigSetting(PROP_PROXY_PORT, _proxyPort);
|
||||
addFormNotice(_("Updating proxy port to") + " " + _proxyPort);
|
||||
addFormNotice(_("Updating proxy port to {0}", _proxyPort));
|
||||
}
|
||||
}
|
||||
|
||||
_context.router().setConfigSetting(PROP_SHOULD_PROXY, "" + _updateThroughProxy);
|
||||
_context.router().setConfigSetting(PROP_UPDATE_UNSIGNED, "" + _updateUnsigned);
|
||||
|
||||
String oldFreqStr = _context.router().getConfigSetting(PROP_REFRESH_FREQUENCY);
|
||||
long oldFreq = -1;
|
||||
if (oldFreqStr != null)
|
||||
try { oldFreq = Long.parseLong(oldFreqStr); } catch (NumberFormatException nfe) {}
|
||||
String oldFreqStr = _context.getProperty(PROP_REFRESH_FREQUENCY, DEFAULT_REFRESH_FREQUENCY);
|
||||
long oldFreq = DEFAULT_REFRESH_FREQ;
|
||||
try { oldFreq = Long.parseLong(oldFreqStr); } catch (NumberFormatException nfe) {}
|
||||
if (_refreshFrequency != oldFreq) {
|
||||
_context.router().setConfigSetting(PROP_REFRESH_FREQUENCY, ""+_refreshFrequency);
|
||||
addFormNotice(_("Updating refresh frequency to") + " " + DataHelper.formatDuration2(_refreshFrequency));
|
||||
addFormNotice(_("Updating refresh frequency to {0}",
|
||||
_refreshFrequency <= 0 ? _("Never") : DataHelper.formatDuration2(_refreshFrequency)));
|
||||
}
|
||||
|
||||
if ( (_updatePolicy != null) && (_updatePolicy.length() > 0) ) {
|
||||
String oldPolicy = _context.router().getConfigSetting(PROP_UPDATE_POLICY);
|
||||
if ( (oldPolicy == null) || (!_updatePolicy.equals(oldPolicy)) ) {
|
||||
_context.router().setConfigSetting(PROP_UPDATE_POLICY, _updatePolicy);
|
||||
addFormNotice(_("Updating update policy to") + " " + _updatePolicy);
|
||||
addFormNotice(_("Updating update policy to {0}", _updatePolicy));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +155,9 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
if ( (_trustedKeys != null) && (_trustedKeys.length() > 0) ) {
|
||||
_trustedKeys = _trustedKeys.replace("\r\n", ",").replace("\n", ",");
|
||||
String oldKeys = new TrustedUpdate(_context).getTrustedKeysString();
|
||||
if ( (oldKeys == null) || (!_trustedKeys.equals(oldKeys)) ) {
|
||||
oldKeys = oldKeys.replace("\r\n", ",");
|
||||
if (!_trustedKeys.equals(oldKeys)) {
|
||||
// note that keys are not validated here and no console error message will be generated
|
||||
_context.router().setConfigSetting(PROP_TRUSTED_KEYS, _trustedKeys);
|
||||
addFormNotice(_("Updating trusted keys."));
|
||||
}
|
||||
@@ -162,7 +167,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldURL = _context.router().getConfigSetting(PROP_ZIP_URL);
|
||||
if ( (oldURL == null) || (!_zipURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_ZIP_URL, _zipURL);
|
||||
addFormNotice(_("Updating unsigned update URL to") + " " + _zipURL);
|
||||
addFormNotice(_("Updating unsigned update URL to {0}", _zipURL));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -75,7 +75,7 @@ public class ConfigUpdateHelper extends HelperBase {
|
||||
public String getRefreshFrequencySelectBox() {
|
||||
String freq = _context.getProperty(ConfigUpdateHandler.PROP_REFRESH_FREQUENCY,
|
||||
ConfigUpdateHandler.DEFAULT_REFRESH_FREQUENCY);
|
||||
long ms = -1;
|
||||
long ms = ConfigUpdateHandler.DEFAULT_REFRESH_FREQ;
|
||||
try {
|
||||
ms = Long.parseLong(freq);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
|
@@ -9,19 +9,19 @@ class ContextHelper {
|
||||
|
||||
/** @throws IllegalStateException if no context available */
|
||||
public static RouterContext getContext(String contextId) {
|
||||
List contexts = RouterContext.listContexts();
|
||||
List<RouterContext> contexts = RouterContext.listContexts();
|
||||
if ( (contexts == null) || (contexts.isEmpty()) )
|
||||
throw new IllegalStateException("No contexts. This is usually because the router is either starting up or shutting down.");
|
||||
if ( (contextId == null) || (contextId.trim().length() <= 0) )
|
||||
return (RouterContext)contexts.get(0);
|
||||
return contexts.get(0);
|
||||
for (int i = 0; i < contexts.size(); i++) {
|
||||
RouterContext context = (RouterContext)contexts.get(i);
|
||||
RouterContext context = contexts.get(i);
|
||||
Hash hash = context.routerHash();
|
||||
if (hash == null) continue;
|
||||
if (hash.toBase64().startsWith(contextId))
|
||||
return context;
|
||||
}
|
||||
// not found, so just give them the first we can find
|
||||
return (RouterContext)contexts.get(0);
|
||||
return contexts.get(0);
|
||||
}
|
||||
}
|
||||
|
@@ -195,7 +195,7 @@ public class GraphHelper extends FormHandler {
|
||||
if (persistent)
|
||||
_out.write(" checked=\"true\"");
|
||||
_out.write(">" +
|
||||
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
|
||||
"<hr><div class=\"formaction\"><input type=\"submit\" class=\"acceot\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
|
@@ -14,14 +14,14 @@ import org.mortbay.jetty.servlet.WebApplicationHandler;
|
||||
* Convert foo.jsp to foo_xx.jsp for language xx.
|
||||
* This is appropriate for jsps with large amounts of text.
|
||||
*
|
||||
* Also, as of 0.8.2, rewrite "/" and "/index.html" to "/index.jsp",x
|
||||
* Also, as of 0.8.2, rewrite "/" and "/index.html" to "/index.jsp",
|
||||
* and "/foo" to "/foo.jsp".
|
||||
*
|
||||
* @author zzz
|
||||
*/
|
||||
public class LocaleWebAppHandler extends WebApplicationHandler
|
||||
{
|
||||
private I2PAppContext _context;
|
||||
private final I2PAppContext _context;
|
||||
|
||||
public LocaleWebAppHandler(I2PAppContext ctx) {
|
||||
super();
|
||||
@@ -32,7 +32,7 @@ public class LocaleWebAppHandler extends WebApplicationHandler
|
||||
* Handle foo.jsp by converting to foo_xx.jsp
|
||||
* for language xx, where xx is the language for the default locale,
|
||||
* or as specified in the routerconsole.lang property.
|
||||
* Unless language==="en".
|
||||
* Unless language == "en".
|
||||
*/
|
||||
@Override
|
||||
public void handle(String pathInContext,
|
||||
|
@@ -5,9 +5,16 @@ import java.util.List;
|
||||
|
||||
import net.i2p.util.FileUtil;
|
||||
|
||||
import org.mortbay.http.Version;
|
||||
|
||||
public class LogsHelper extends HelperBase {
|
||||
public LogsHelper() {}
|
||||
|
||||
/** @since 0.8.12 */
|
||||
public String getJettyVersion() {
|
||||
return Version.getImplVersion();
|
||||
}
|
||||
|
||||
public String getLogs() {
|
||||
String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
|
||||
return _("File location") + ": <b><code>" + _context.logManager().currentFile() + "</code></b><br><br>" + str;
|
||||
|
@@ -305,7 +305,7 @@ public class NetDbRenderer {
|
||||
buf.append("<tr><th align=\"left\">" + _("Country") + "</th><th>" + _("Count") + "</th></tr>\n");
|
||||
for (String country : countryList) {
|
||||
int num = countries.count(country);
|
||||
buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append("\"");
|
||||
buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\"");
|
||||
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ");
|
||||
buf.append(_(_context.commSystem().getCountryName(country)));
|
||||
buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n");
|
||||
@@ -365,7 +365,7 @@ public class NetDbRenderer {
|
||||
buf.append("<b>" + _("Address(es)") + ":</b> ");
|
||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||
if(country != null) {
|
||||
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append('\"');
|
||||
buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
|
||||
buf.append(" title=\"").append(_(_context.commSystem().getCountryName(country))).append('\"');
|
||||
buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ");
|
||||
}
|
||||
|
@@ -24,8 +24,8 @@ import net.i2p.util.Log;
|
||||
* track of whether that has an announcement for a new version.
|
||||
*/
|
||||
public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
private I2PAppContext _context;
|
||||
private Log _log;
|
||||
private final RouterContext _context;
|
||||
private final Log _log;
|
||||
private boolean _updateAvailable;
|
||||
private boolean _unsignedUpdateAvailable;
|
||||
private long _lastFetch;
|
||||
@@ -34,13 +34,13 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
private String _unsignedUpdateVersion;
|
||||
private String _lastModified;
|
||||
private boolean _invalidated;
|
||||
private File _newsFile;
|
||||
private File _tempFile;
|
||||
private final File _newsFile;
|
||||
private final File _tempFile;
|
||||
private static NewsFetcher _instance;
|
||||
private volatile boolean _isRunning;
|
||||
|
||||
//public static final synchronized NewsFetcher getInstance() { return _instance; }
|
||||
public static final synchronized NewsFetcher getInstance(I2PAppContext ctx) {
|
||||
public static final synchronized NewsFetcher getInstance(RouterContext ctx) {
|
||||
if (_instance != null)
|
||||
return _instance;
|
||||
_instance = new NewsFetcher(ctx);
|
||||
@@ -52,8 +52,10 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
/** @since 0.7.14 not configurable */
|
||||
private static final String BACKUP_NEWS_URL = "http://www.i2p2.i2p/_static/news/news.xml";
|
||||
private static final String PROP_LAST_CHECKED = "router.newsLastChecked";
|
||||
/** @since 0.8.12 */
|
||||
private static final String PROP_LAST_HIDDEN = "routerconsole.newsLastHidden";
|
||||
|
||||
private NewsFetcher(I2PAppContext ctx) {
|
||||
private NewsFetcher(RouterContext ctx) {
|
||||
_context = ctx;
|
||||
_log = ctx.logManager().getLog(NewsFetcher.class);
|
||||
_instance = this;
|
||||
@@ -94,9 +96,40 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
public boolean unsignedUpdateAvailable() { return _unsignedUpdateAvailable; }
|
||||
public String unsignedUpdateVersion() { return _unsignedUpdateVersion; }
|
||||
|
||||
/**
|
||||
* Is the news newer than the last time it was hidden?
|
||||
* @since 0.8.12
|
||||
*/
|
||||
public boolean shouldShowNews() {
|
||||
if (_lastUpdated <= 0)
|
||||
return true;
|
||||
String h = _context.getProperty(PROP_LAST_HIDDEN);
|
||||
if (h == null)
|
||||
return true;
|
||||
long last = 0;
|
||||
try {
|
||||
last = Long.parseLong(h);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
return _lastUpdated > last;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save config with the timestamp of the current news to hide, or 0 to show
|
||||
* @since 0.8.12
|
||||
*/
|
||||
public void showNews(boolean yes) {
|
||||
long stamp = yes ? 0 : _lastUpdated;
|
||||
_context.router().setConfigSetting(PROP_LAST_HIDDEN, Long.toString(stamp));
|
||||
_context.router().saveConfig();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return HTML
|
||||
*/
|
||||
public String status() {
|
||||
StringBuilder buf = new StringBuilder(128);
|
||||
long now = _context.clock().now();
|
||||
buf.append("<i>");
|
||||
if (_lastUpdated > 0) {
|
||||
buf.append(Messages.getString("News last updated {0} ago.",
|
||||
DataHelper.formatDuration2(now - _lastUpdated),
|
||||
@@ -108,6 +141,18 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
DataHelper.formatDuration2(now - _lastFetch),
|
||||
_context));
|
||||
}
|
||||
buf.append("</i>");
|
||||
String consoleNonce = System.getProperty("router.consoleNonce");
|
||||
if (_lastUpdated > 0 && consoleNonce != null) {
|
||||
if (shouldShowNews()) {
|
||||
buf.append(" <a href=\"/?news=0&consoleNonce=").append(consoleNonce).append("\">")
|
||||
.append(Messages.getString("Hide news", _context));
|
||||
} else {
|
||||
buf.append(" <a href=\"/?news=1&consoleNonce=").append(consoleNonce).append("\">")
|
||||
.append(Messages.getString("Show news", _context));
|
||||
}
|
||||
buf.append("</a>");
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
@@ -232,16 +277,15 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
if (get.fetch()) {
|
||||
String lastmod = get.getLastModified();
|
||||
if (lastmod != null) {
|
||||
if (!(_context.isRouterContext())) return;
|
||||
long modtime = RFC822Date.parse822Date(lastmod);
|
||||
if (modtime <= 0) return;
|
||||
String lastUpdate = _context.getProperty(UpdateHandler.PROP_LAST_UPDATE_TIME);
|
||||
if (lastUpdate == null) {
|
||||
// we don't know what version you have, so stamp it with the current time,
|
||||
// and we'll look for something newer next time around.
|
||||
((RouterContext)_context).router().setConfigSetting(UpdateHandler.PROP_LAST_UPDATE_TIME,
|
||||
"" + _context.clock().now());
|
||||
((RouterContext)_context).router().saveConfig();
|
||||
_context.router().setConfigSetting(UpdateHandler.PROP_LAST_UPDATE_TIME,
|
||||
Long.toString(_context.clock().now()));
|
||||
_context.router().saveConfig();
|
||||
return;
|
||||
}
|
||||
long ms = 0;
|
||||
@@ -267,7 +311,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
String url = _context.getProperty(ConfigUpdateHandler.PROP_ZIP_URL);
|
||||
if (url == null || url.length() <= 0)
|
||||
return;
|
||||
UpdateHandler handler = new UnsignedUpdateHandler((RouterContext)_context, url,
|
||||
UpdateHandler handler = new UnsignedUpdateHandler(_context, url,
|
||||
_unsignedUpdateVersion);
|
||||
handler.update();
|
||||
}
|
||||
@@ -329,18 +373,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
if (shouldInstall()) {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Policy requests update, so we update");
|
||||
UpdateHandler handler = null;
|
||||
if (_context.isRouterContext()) {
|
||||
handler = new UpdateHandler((RouterContext)_context);
|
||||
} else {
|
||||
List contexts = RouterContext.listContexts();
|
||||
if (!contexts.isEmpty())
|
||||
handler = new UpdateHandler((RouterContext)contexts.get(0));
|
||||
else
|
||||
_log.log(Log.CRIT, "No router context to update with?");
|
||||
}
|
||||
if (handler != null)
|
||||
handler.update();
|
||||
UpdateHandler handler = new UpdateHandler(_context);
|
||||
handler.update();
|
||||
} else {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Policy requests manual update, so we do nothing");
|
||||
@@ -373,10 +407,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
_log.warn("Transfer complete, but no file? - probably 304 Not Modified");
|
||||
}
|
||||
_lastFetch = now;
|
||||
if (_context.isRouterContext()) {
|
||||
((RouterContext)_context).router().setConfigSetting(PROP_LAST_CHECKED, "" + now);
|
||||
((RouterContext)_context).router().saveConfig();
|
||||
}
|
||||
_context.router().setConfigSetting(PROP_LAST_CHECKED, Long.toString(now));
|
||||
_context.router().saveConfig();
|
||||
}
|
||||
|
||||
public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
|
||||
|
@@ -17,4 +17,9 @@ public class NewsHelper extends ContentHelper {
|
||||
_page = (new File(_context.getBaseDir(), "docs/initialNews/initialNews.xml")).getAbsolutePath();
|
||||
return super.getContent();
|
||||
}
|
||||
|
||||
/** @since 0.8.12 */
|
||||
public boolean shouldShowNews() {
|
||||
return NewsFetcher.getInstance(_context).shouldShowNews();
|
||||
}
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ import net.i2p.desktopgui.Main;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.I2PAppThread;
|
||||
import net.i2p.util.PortMapper;
|
||||
import net.i2p.util.SecureDirectory;
|
||||
import net.i2p.util.SecureFileOutputStream;
|
||||
import net.i2p.util.ShellCommand;
|
||||
@@ -207,6 +208,7 @@ public class RouterConsoleRunner {
|
||||
|
||||
// add standard listeners
|
||||
if (_listenPort != null) {
|
||||
Integer lport = Integer.parseInt(_listenPort);
|
||||
StringTokenizer tok = new StringTokenizer(_listenHost, " ,");
|
||||
while (tok.hasMoreTokens()) {
|
||||
String host = tok.nextToken().trim();
|
||||
@@ -215,7 +217,6 @@ public class RouterConsoleRunner {
|
||||
// _server.addListener('[' + host + "]:" + _listenPort);
|
||||
//else
|
||||
// _server.addListener(host + ':' + _listenPort);
|
||||
Integer lport = Integer.parseInt(_listenPort);
|
||||
InetAddrPort iap = new InetAddrPort(host, lport);
|
||||
SocketListener lsnr = new SocketListener(iap);
|
||||
lsnr.setMinThreads(1); // default 2
|
||||
@@ -230,6 +231,8 @@ public class RouterConsoleRunner {
|
||||
System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + ioe);
|
||||
}
|
||||
}
|
||||
// XXX: what if listenhosts do not include 127.0.0.1? (Should that ever even happen?)
|
||||
I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_CONSOLE,lport);
|
||||
}
|
||||
|
||||
// add SSL listeners
|
||||
@@ -267,6 +270,7 @@ public class RouterConsoleRunner {
|
||||
System.err.println("Unable to bind routerconsole to " + host + " port " + sslPort + " for SSL: " + e);
|
||||
}
|
||||
}
|
||||
I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_HTTPS_CONSOLE,sslPort);
|
||||
} else {
|
||||
System.err.println("Unable to create or access keystore for SSL: " + keyStore.getAbsolutePath());
|
||||
}
|
||||
@@ -341,25 +345,29 @@ public class RouterConsoleRunner {
|
||||
}
|
||||
}
|
||||
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());
|
||||
Thread newsThread = new I2PAppThread(fetcher, "NewsFetcher", true);
|
||||
newsThread.start();
|
||||
|
||||
Thread t = new I2PAppThread(new StatSummarizer(), "StatSummarizer", true);
|
||||
t.setPriority(Thread.NORM_PRIORITY - 1);
|
||||
t.start();
|
||||
|
||||
List<RouterContext> contexts = RouterContext.listContexts();
|
||||
if (contexts != null) {
|
||||
RouterContext ctx = contexts.get(0);
|
||||
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(ctx);
|
||||
Thread newsThread = new I2PAppThread(fetcher, "NewsFetcher", true);
|
||||
newsThread.setPriority(Thread.NORM_PRIORITY - 1);
|
||||
newsThread.start();
|
||||
|
||||
if (PluginStarter.pluginsEnabled(ctx)) {
|
||||
t = new I2PAppThread(new PluginStarter(ctx), "PluginStarter", true);
|
||||
t.setPriority(Thread.NORM_PRIORITY - 1);
|
||||
t.start();
|
||||
ctx.addShutdownTask(new PluginStopper(ctx));
|
||||
}
|
||||
ctx.addShutdownTask(new NewsShutdown(fetcher, newsThread));
|
||||
// stat summarizer registers its own hook
|
||||
ctx.addShutdownTask(new ServerShutdown());
|
||||
}
|
||||
} // else log CRIT ?
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -52,7 +52,7 @@ public class StatSummarizer implements Runnable {
|
||||
private Thread _thread;
|
||||
|
||||
public StatSummarizer() {
|
||||
_context = (RouterContext)RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm
|
||||
_context = RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm
|
||||
_log = _context.logManager().getLog(getClass());
|
||||
_listeners = new CopyOnWriteArrayList();
|
||||
_instance = this;
|
||||
|
@@ -12,8 +12,8 @@ import net.i2p.router.RouterContext;
|
||||
*
|
||||
*/
|
||||
public class SummaryBarRenderer {
|
||||
private RouterContext _context;
|
||||
private SummaryHelper _helper;
|
||||
private final RouterContext _context;
|
||||
private final SummaryHelper _helper;
|
||||
|
||||
public SummaryBarRenderer(RouterContext context, SummaryHelper helper) {
|
||||
_context = context;
|
||||
@@ -28,14 +28,18 @@ public class SummaryBarRenderer {
|
||||
StringBuilder buf = new StringBuilder(8*1024);
|
||||
String theme = _context.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
|
||||
|
||||
buf.append("<a href=\"/\" target=\"_top\"><img src=\"")
|
||||
// TODO - the bar would render more cleanly if we specified the img height and width here,
|
||||
// but unfortunately the images in the different themes are different sizes.
|
||||
// They range in height from 37 to 43 px. But there's a -2 bottom margin...
|
||||
// So put it in a div.
|
||||
buf.append("<div style=\"height: 36px;\"><a href=\"/\" target=\"_top\"><img src=\"")
|
||||
.append(CSSHelper.BASE_THEME_PATH)
|
||||
.append(theme)
|
||||
.append("/images/i2plogo.png\" alt=\"")
|
||||
.append(_("I2P Router Console"))
|
||||
.append("\" title=\"")
|
||||
.append(_("I2P Router Console"))
|
||||
.append("\"></a><hr>")
|
||||
.append("\"></a></div><hr>")
|
||||
|
||||
.append("<h3><a href=\"/help\" target=\"_top\" title=\"")
|
||||
.append(_("I2P Router Help & FAQ"))
|
||||
@@ -57,31 +61,25 @@ public class SummaryBarRenderer {
|
||||
.append(_("I2P Services"))
|
||||
.append("</a></h3>\n" +
|
||||
|
||||
"<hr><table>" +
|
||||
"<hr class=\"b\"><table><tr><td>" +
|
||||
|
||||
"<tr><td><a href=\"/susidns/index.jsp\" target=\"_blank\" title=\"")
|
||||
.append(_("Manage your I2P hosts file here (I2P domain name resolution)"))
|
||||
"<a href=\"/susimail/susimail\" target=\"blank\" title=\"")
|
||||
.append(_("Anonymous webmail client"))
|
||||
.append("\">")
|
||||
.append(_("Addressbook"))
|
||||
.append(_("Email"))
|
||||
.append("</a>\n" +
|
||||
|
||||
"<a href=\"/i2psnark/\" target=\"_blank\" title=\"")
|
||||
.append(_("Built-in anonymous BitTorrent Client"))
|
||||
.append("\">")
|
||||
.append(_("Torrents"))
|
||||
.append("</a>\n" +
|
||||
|
||||
"<a href=\"/susimail/susimail\" target=\"blank\" title=\"")
|
||||
.append(_("Anonymous webmail client"))
|
||||
.append("\">")
|
||||
.append(_("Webmail"))
|
||||
.append("</a>\n" +
|
||||
|
||||
"<a href=\"http://127.0.0.1:7658/\" target=\"_blank\" title=\"")
|
||||
.append(_("Anonymous resident webserver"))
|
||||
.append(_("Local web server"))
|
||||
.append("\">")
|
||||
.append(_("Webserver"))
|
||||
.append("</a>")
|
||||
.append(_("Website"))
|
||||
.append("</a>\n")
|
||||
|
||||
.append(NavHelper.getClientAppLinks(_context))
|
||||
|
||||
@@ -91,7 +89,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("Configure I2P Router"))
|
||||
.append("\">")
|
||||
.append(_("I2P Internals"))
|
||||
.append("</a></h3><hr>\n" +
|
||||
.append("</a></h3><hr class=\"b\">\n" +
|
||||
|
||||
"<table><tr><td>\n" +
|
||||
|
||||
@@ -149,6 +147,12 @@ public class SummaryBarRenderer {
|
||||
.append(_("Local Destinations"))
|
||||
.append("\">")
|
||||
.append(_("I2PTunnel"))
|
||||
.append("</a>\n" +
|
||||
|
||||
"<a href=\"/susidns/index\" target=\"_blank\" title=\"")
|
||||
.append(_("Manage your I2P hosts file here (I2P domain name resolution)"))
|
||||
.append("\">")
|
||||
.append(_("Addressbook"))
|
||||
.append("</a>\n");
|
||||
|
||||
File javadoc = new File(_context.getBaseDir(), "docs/javadoc/index.html");
|
||||
@@ -166,7 +170,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("I2P Router Help"))
|
||||
.append("\">")
|
||||
.append(_("General"))
|
||||
.append("</a></h3><hr>\n" +
|
||||
.append("</a></h3><hr class=\"b\">\n" +
|
||||
|
||||
"<table><tr>" +
|
||||
"<td align=\"left\"><b>")
|
||||
@@ -200,7 +204,7 @@ public class SummaryBarRenderer {
|
||||
.append(_helper.getUptime())
|
||||
.append("</td></tr></table>\n" +
|
||||
|
||||
"<hr><h4><a href=\"/config#help\" target=\"_top\" title=\"")
|
||||
"<hr><h4><a href=\"/confignet#help\" target=\"_top\" title=\"")
|
||||
.append(_("Help with configuring your firewall and router for optimal I2P performance"))
|
||||
.append("\">")
|
||||
.append(_("Network"))
|
||||
@@ -210,7 +214,10 @@ public class SummaryBarRenderer {
|
||||
|
||||
|
||||
// display all the time so we display the final failure message, and plugin update messages too
|
||||
buf.append(UpdateHandler.getStatus());
|
||||
String status = UpdateHandler.getStatus();
|
||||
if (status.length() > 0) {
|
||||
buf.append("<h4>").append(status).append("</h4><hr>\n");
|
||||
}
|
||||
if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) {
|
||||
if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) {
|
||||
// nothing
|
||||
@@ -229,13 +236,13 @@ public class SummaryBarRenderer {
|
||||
buf.append("<form action=\"").append(uri).append("\" method=\"POST\">\n");
|
||||
buf.append("<input type=\"hidden\" name=\"updateNonce\" value=\"").append(nonce).append("\" >\n");
|
||||
if (_helper.updateAvailable()) {
|
||||
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >")
|
||||
buf.append("<button type=\"submit\" class=\"download\" name=\"updateAction\" value=\"signed\" >")
|
||||
// Note to translators: parameter is a version, e.g. "0.8.4"
|
||||
.append(_("Download {0} Update", _helper.getUpdateVersion()))
|
||||
.append("</button><br>\n");
|
||||
}
|
||||
if (_helper.unsignedUpdateAvailable()) {
|
||||
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >")
|
||||
buf.append("<button type=\"submit\" class=\"download\" name=\"updateAction\" value=\"Unsigned\" >")
|
||||
// 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>
|
||||
@@ -255,7 +262,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("Show all current peer connections"))
|
||||
.append("\">")
|
||||
.append(_("Peers"))
|
||||
.append("</a></h3><hr>\n" +
|
||||
.append("</a></h3><hr class=\"b\">\n" +
|
||||
|
||||
"<table>\n" +
|
||||
|
||||
@@ -301,10 +308,10 @@ public class SummaryBarRenderer {
|
||||
|
||||
boolean anotherLine = false;
|
||||
if (_helper.showFirewallWarning()) {
|
||||
buf.append("<h4><a href=\"/config\" target=\"_top\" title=\"")
|
||||
buf.append("<h4><a href=\"/confignet\" target=\"_top\" title=\"")
|
||||
.append(_("Help with firewall configuration"))
|
||||
.append("\">")
|
||||
.append(_("Check NAT/firewall"))
|
||||
.append(_("Check network connection and NAT/firewall"))
|
||||
.append("</a></h4>");
|
||||
anotherLine = true;
|
||||
}
|
||||
@@ -324,7 +331,7 @@ public class SummaryBarRenderer {
|
||||
String uri = _helper.getRequestURI();
|
||||
buf.append("<p><form action=\"").append(uri).append("\" method=\"POST\">\n");
|
||||
buf.append("<input type=\"hidden\" name=\"reseedNonce\" value=\"").append(nonce).append("\" >\n");
|
||||
buf.append("<button type=\"submit\" value=\"Reseed\" >").append(_("Reseed")).append("</button></form></p>\n");
|
||||
buf.append("<button type=\"submit\" class=\"reload\" value=\"Reseed\" >").append(_("Reseed")).append("</button></form></p>\n");
|
||||
}
|
||||
anotherLine = true;
|
||||
}
|
||||
@@ -344,7 +351,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("Configure router bandwidth allocation"))
|
||||
.append("\" target=\"_top\">")
|
||||
.append(_("Bandwidth in/out"))
|
||||
.append("</a></h3><hr>" +
|
||||
.append("</a></h3><hr class=\"b\">" +
|
||||
"<table>\n" +
|
||||
|
||||
"<tr><td align=\"left\"><b>")
|
||||
@@ -381,7 +388,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("View existing tunnels and tunnel build status"))
|
||||
.append("\">")
|
||||
.append(_("Tunnels"))
|
||||
.append("</a></h3><hr>" +
|
||||
.append("</a></h3><hr class=\"b\">" +
|
||||
"<table>\n" +
|
||||
|
||||
"<tr><td align=\"left\"><b>")
|
||||
@@ -412,7 +419,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("What's in the router's job queue?"))
|
||||
.append("\">")
|
||||
.append(_("Congestion"))
|
||||
.append("</a></h3><hr>" +
|
||||
.append("</a></h3><hr class=\"b\">" +
|
||||
"<table>\n" +
|
||||
|
||||
"<tr><td align=\"left\"><b>")
|
||||
@@ -425,15 +432,17 @@ public class SummaryBarRenderer {
|
||||
.append(_("Message delay"))
|
||||
.append(":</b></td><td align=\"right\">")
|
||||
.append(_helper.getMessageDelay())
|
||||
.append("</td></tr>\n" +
|
||||
.append("</td></tr>\n");
|
||||
|
||||
"<tr><td align=\"left\"><b>")
|
||||
if (!_context.getBooleanPropertyDefaultTrue("router.disableTunnelTesting")) {
|
||||
buf.append("<tr><td align=\"left\"><b>")
|
||||
.append(_("Tunnel lag"))
|
||||
.append(":</b></td><td align=\"right\">")
|
||||
.append(_helper.getTunnelLag())
|
||||
.append("</td></tr>\n" +
|
||||
.append("</td></tr>\n");
|
||||
}
|
||||
|
||||
"<tr><td align=\"left\"><b>")
|
||||
buf.append("<tr><td align=\"left\"><b>")
|
||||
.append(_("Backlog"))
|
||||
.append(":</b></td><td align=\"right\">")
|
||||
.append(_helper.getInboundBacklog())
|
||||
|
@@ -367,7 +367,7 @@ public class SummaryHelper extends HelperBase {
|
||||
List<Destination> clients = new ArrayList(_context.clientManager().listClients());
|
||||
|
||||
StringBuilder buf = new StringBuilder(512);
|
||||
buf.append("<h3><a href=\"/i2ptunnel/\" target=\"_blank\" title=\"").append(_("Add/remove/edit & control your client and server tunnels")).append("\">").append(_("Local Destinations")).append("</a></h3><hr><div class=\"tunnels\">");
|
||||
buf.append("<h3><a href=\"/i2ptunnel/\" target=\"_blank\" title=\"").append(_("Add/remove/edit & control your client and server tunnels")).append("\">").append(_("Local Destinations")).append("</a></h3><hr class=\"b\"><div class=\"tunnels\">");
|
||||
if (!clients.isEmpty()) {
|
||||
Collections.sort(clients, new AlphaComparator());
|
||||
buf.append("<table>");
|
||||
|
@@ -28,7 +28,7 @@ import net.i2p.stat.RateStat;
|
||||
import net.i2p.util.ObjectCounter;
|
||||
|
||||
/**
|
||||
*
|
||||
* tunnels.jsp
|
||||
*/
|
||||
public class TunnelRenderer {
|
||||
private RouterContext _context;
|
||||
@@ -133,12 +133,12 @@ public class TunnelRenderer {
|
||||
out.write("<div class=\"statusnotes\"><b>" + _("Limited display to the {0} tunnels with the highest usage", DISPLAY_LIMIT) + "</b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>" + _("Inactive participating tunnels") + ": " + inactive + "</b></div>\n");
|
||||
out.write("<div class=\"statusnotes\"><b>" + _("Lifetime bandwidth usage") + ": " + DataHelper.formatSize2(processed*1024) + "B</b></div>\n");
|
||||
renderPeers(out);
|
||||
//renderPeers(out);
|
||||
}
|
||||
|
||||
private static class TunnelComparator implements Comparator {
|
||||
public int compare(Object l, Object r) {
|
||||
return (int) (((HopConfig)r).getProcessedMessagesCount() - ((HopConfig)l).getProcessedMessagesCount());
|
||||
private static class TunnelComparator implements Comparator<HopConfig> {
|
||||
public int compare(HopConfig l, HopConfig r) {
|
||||
return (int) (r.getProcessedMessagesCount() - l.getProcessedMessagesCount());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,6 +228,7 @@ public class TunnelRenderer {
|
||||
DataHelper.formatSize2(processedOut*1024) + "B " + _("out") + "</b></center></div>");
|
||||
}
|
||||
|
||||
/****
|
||||
private void renderPeers(Writer out) throws IOException {
|
||||
// count up the peers in the local pools
|
||||
ObjectCounter<Hash> lc = new ObjectCounter();
|
||||
@@ -265,9 +266,11 @@ public class TunnelRenderer {
|
||||
out.write("</b> <td> </td> <td align=\"center\"><b>" + partCount);
|
||||
out.write("</b> <td> </td></tr></table></div>\n");
|
||||
}
|
||||
****/
|
||||
|
||||
/* duplicate of that in tunnelPoolManager for now */
|
||||
/** @return total number of non-fallback expl. + client tunnels */
|
||||
/****
|
||||
private int countTunnelsPerPeer(ObjectCounter<Hash> lc) {
|
||||
List<TunnelPool> pools = new ArrayList();
|
||||
_context.tunnelManager().listPools(pools);
|
||||
@@ -286,8 +289,10 @@ public class TunnelRenderer {
|
||||
}
|
||||
return tunnelCount;
|
||||
}
|
||||
****/
|
||||
|
||||
/** @return total number of part. tunnels */
|
||||
/****
|
||||
private int countParticipatingPerPeer(ObjectCounter<Hash> pc) {
|
||||
List<HopConfig> participating = _context.tunnelDispatcher().listParticipatingTunnels();
|
||||
for (HopConfig cfg : participating) {
|
||||
@@ -301,12 +306,6 @@ public class TunnelRenderer {
|
||||
return participating.size();
|
||||
}
|
||||
|
||||
private static class HashComparator implements Comparator {
|
||||
public int compare(Object l, Object r) {
|
||||
return ((Hash)l).toBase64().compareTo(((Hash)r).toBase64());
|
||||
}
|
||||
}
|
||||
|
||||
private static class CountryComparator implements Comparator<Hash> {
|
||||
public CountryComparator(CommSystemFacade comm) {
|
||||
this.comm = comm;
|
||||
@@ -326,7 +325,9 @@ public class TunnelRenderer {
|
||||
|
||||
private CommSystemFacade comm;
|
||||
}
|
||||
****/
|
||||
|
||||
/** cap string */
|
||||
private String getCapacity(Hash peer) {
|
||||
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
|
||||
if (info != null) {
|
||||
|
@@ -12,6 +12,7 @@ import net.i2p.I2PAppContext;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.SecureDirectory;
|
||||
import net.i2p.util.PortMapper;
|
||||
|
||||
import org.mortbay.http.HttpContext;
|
||||
import org.mortbay.http.HttpListener;
|
||||
@@ -136,12 +137,16 @@ public class WebAppStarter {
|
||||
|
||||
/** see comments in ConfigClientsHandler */
|
||||
static Server getConsoleServer() {
|
||||
PortMapper pm = I2PAppContext.getGlobalContext().portMapper();
|
||||
int p1 = pm.getPort(PortMapper.SVC_CONSOLE);
|
||||
int p2 = pm.getPort(PortMapper.SVC_HTTPS_CONSOLE);
|
||||
Collection c = Server.getHttpServers();
|
||||
for (int i = 0; i < c.size(); i++) {
|
||||
Server s = (Server) c.toArray()[i];
|
||||
HttpListener[] hl = s.getListeners();
|
||||
for (int j = 0; j < hl.length; j++) {
|
||||
if (hl[j].getPort() == 7657)
|
||||
int port = hl[j].getPort();
|
||||
if (port == p1 || port == p2)
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
@@ -4,14 +4,14 @@
|
||||
|
||||
<html><head>
|
||||
<%@include file="css.jsi" %>
|
||||
<%=intl.title("config networking")%>
|
||||
<%=intl.title("configure bandwidth")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsi" %>
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
|
||||
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h1><%=intl._("I2P Network Configuration")%></h1>
|
||||
<h1><%=intl._("I2P Bandwidth Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@include file="confignav.jsi" %>
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
<form action="" method="POST">
|
||||
<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
|
||||
<input type="hidden" name="action" value="blah" >
|
||||
<input type="hidden" name="ratesOnly" value="1" >
|
||||
<h3><%=intl._("Bandwidth limiter")%></h3><p>
|
||||
<img src="/themes/console/images/itoopie_xsm.png" alt="">
|
||||
<b><%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b>
|
||||
</p>
|
||||
<div class="wideload"><p><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" >
|
||||
@@ -53,10 +55,10 @@
|
||||
</tr><tr>
|
||||
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td>
|
||||
<td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
|
||||
</td></tr></table></p></div></p>
|
||||
</td></tr></table></p></div></p><p>
|
||||
<% int share = nethelper.getShareBandwidth();
|
||||
if (share < 12) {
|
||||
out.print("<p><b>");
|
||||
out.print("<b>");
|
||||
out.print(intl._("NOTE"));
|
||||
out.print("</b>: ");
|
||||
out.print(intl._("You have configured I2P to share only {0} KBps.", share));
|
||||
@@ -64,218 +66,18 @@
|
||||
|
||||
out.print(intl._("I2P requires at least 12KBps to enable sharing. "));
|
||||
out.print(intl._("Please enable sharing (participating in tunnels) by configuring more bandwidth. "));
|
||||
out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network.")+"</p>");
|
||||
out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network."));
|
||||
} else {
|
||||
out.print("<p>");
|
||||
out.print(intl._("You have configured I2P to share {0} KBps.", share));
|
||||
out.print("\n");
|
||||
|
||||
out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")+"</p><hr>");
|
||||
out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network."));
|
||||
}
|
||||
%>
|
||||
<p><a href="confignet"><%=intl._("Advanced network configuration page")%></a></p><hr>
|
||||
<div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
|
||||
</div>
|
||||
<% /********
|
||||
<!--
|
||||
<b>Enable load testing: </b>
|
||||
<input type="checkbox" class="optbox" name="enableloadtesting" value="true" <jsp:getProperty name="nethelper" property="enableLoadTesting" /> />
|
||||
<p>If enabled, your router will periodically anonymously probe some of your peers
|
||||
to see what sort of throughput they can handle. This improves your router's ability
|
||||
to pick faster peers, but can cost substantial bandwidth. Relevant data from the
|
||||
load testing is fed into the profiles as well as the
|
||||
<a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p>
|
||||
<br>
|
||||
-->
|
||||
*********/ %>
|
||||
<h3><%=intl._("IP and Transport Configuration")%></h3><p>
|
||||
<b><%=intl._("The default settings will work for most people.")%>
|
||||
<a href="#chelp"><%=intl._("There is help below.")%></a></b>
|
||||
</p><p><b><%=intl._("UPnP Configuration")%>:</b><br>
|
||||
<input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> >
|
||||
<%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._("UPnP status")%></a>
|
||||
</p><p><b><%=intl._("IP Configuration")%>:</b><br>
|
||||
<%=intl._("Externally reachable hostname or IP address")%>:<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> >
|
||||
<%=intl._("Use all auto-detect methods")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> >
|
||||
<%=intl._("Disable UPnP IP address detection")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> >
|
||||
<%=intl._("Ignore local interface IP address")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> >
|
||||
<%=intl._("Use SSU IP address detection only")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> >
|
||||
<%=intl._("Specify hostname or IP")%>:
|
||||
<input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" >
|
||||
<% String[] ips = nethelper.getAddresses();
|
||||
if (ips.length > 0) {
|
||||
out.print(intl._("or") + " <select name=\"udpHost2\"><option value=\"\" selected=\"true\">"+intl._("Select Interface")+"</option>\n");
|
||||
for (int i = 0; i < ips.length; i++) {
|
||||
out.print("<option value=\"");
|
||||
out.print(ips[i]);
|
||||
out.print("\">");
|
||||
out.print(ips[i]);
|
||||
out.print("</option>\n");
|
||||
}
|
||||
out.print("</select>\n");
|
||||
}
|
||||
%>
|
||||
<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> >
|
||||
<%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
|
||||
</p><p>
|
||||
<%=intl._("Action when IP changes")%>:<br>
|
||||
<input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
|
||||
<%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
|
||||
(<i><%=intl._("Experimental")%></i>)
|
||||
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
|
||||
<%=intl._("UDP port:")%>
|
||||
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>
|
||||
<% /********
|
||||
<!-- let's keep this simple...
|
||||
<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
|
||||
Require SSU introductions
|
||||
<i>(Enable if you cannot open your firewall)</i>
|
||||
</p><p>
|
||||
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
|
||||
-->
|
||||
*********/ %>
|
||||
</p><p>
|
||||
<b><%=intl._("TCP Configuration")%>:</b><br>
|
||||
<%=intl._("Externally reachable hostname or IP address")%>:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> >
|
||||
<%=intl._("Use auto-detected IP address")%>
|
||||
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
|
||||
<%=intl._("if we are not firewalled")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> >
|
||||
<%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> >
|
||||
<%=intl._("Specify hostname or IP")%>:
|
||||
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" ><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> >
|
||||
<%=intl._("Disable inbound (Firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> >
|
||||
<%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
|
||||
</p><p>
|
||||
<%=intl._("Externally reachable TCP port")%>:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> >
|
||||
<%=intl._("Use the same port configured for UDP")%>
|
||||
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
|
||||
<%=intl._("Specify Port")%>:
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
|
||||
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >
|
||||
</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p>
|
||||
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
|
||||
</p><p>
|
||||
<%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
|
||||
<%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
|
||||
<%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%>
|
||||
<%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
|
||||
</p>
|
||||
<% /********
|
||||
<!-- let's keep this simple...
|
||||
<input type="submit" name="recheckReachability" value="Check network reachability..." />
|
||||
</p>
|
||||
-->
|
||||
*********/ %>
|
||||
<p>
|
||||
<%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
|
||||
<%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:
|
||||
<ul>
|
||||
<li class="tidylist"><%=intl._("No UPnP-compatible device present")%>
|
||||
<li class="tidylist"><%=intl._("UPnP disabled on the device")%>
|
||||
<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%>
|
||||
<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%>
|
||||
<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%>
|
||||
<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%>
|
||||
</ul></p><p>
|
||||
<a href="peers#upnp"><%=intl._("Review the UPnP status here.")%></a>
|
||||
<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
|
||||
<p><%=intl._("Hostnames entered above will be published in the network database.")%>
|
||||
<%=intl._("They are <b>not private</b>.")%>
|
||||
<%=intl._("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
|
||||
<%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
|
||||
<%=intl._("When in doubt, leave the settings at the defaults.")%>
|
||||
</p>
|
||||
<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p>
|
||||
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
|
||||
<%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
|
||||
<%=intl._("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
|
||||
<ul>
|
||||
<li class="tidylist"><b><%=intl._("OK")%></b> -
|
||||
<%=intl._("Your UDP port does not appear to be firewalled.")%>
|
||||
<li class="tidylist"><b><%=intl._("Firewalled")%></b> -
|
||||
<%=intl._("Your UDP port appears to be firewalled.")%>
|
||||
<%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
|
||||
<%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%>
|
||||
<%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
|
||||
<%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
|
||||
<%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
|
||||
<%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
|
||||
<li class="tidylist"><b><%=intl._("Testing")%></b> -
|
||||
<%=intl._("The router is currently testing whether your UDP port is firewalled.")%>
|
||||
<li class="tidylist"><b><%=intl._("Hidden")%></b> -
|
||||
<%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> -
|
||||
<%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
|
||||
<%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> -
|
||||
<%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%>
|
||||
<%=intl._("For best participation as a floodfill router, you should open your firewall.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> -
|
||||
<%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
|
||||
<%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%>
|
||||
<%=intl._("Please open your firewall or disable inbound TCP above.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> -
|
||||
<%=intl._("You have configured inbound TCP, however you have disabled UDP.")%>
|
||||
<%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
|
||||
<%=intl._("Please open your firewall or enable UDP.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> -
|
||||
<%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%>
|
||||
<%=intl._("Correct your clock setting if this error persists.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> -
|
||||
<%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%>
|
||||
<%=intl._("Correct the address or disable inbound TCP above.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> -
|
||||
<%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%>
|
||||
<%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
|
||||
<%=intl._("I2P was unable to bind to port 8887 or other configured port.")%>
|
||||
<%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%>
|
||||
<%=intl._("This may be a transient error, if the other program is no longer using the port.")%>
|
||||
<%=intl._("However, a restart is always required after this error.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
|
||||
<%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%>
|
||||
<%=intl._("Therefore your router cannot accept inbound connections.")%>
|
||||
<%=intl._("Please configure a TCP host and port above or enable UDP.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> -
|
||||
<%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%>
|
||||
<%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
|
||||
</ul></p><hr>
|
||||
<% /********
|
||||
<!--
|
||||
<b>Dynamic Router Keys: </b>
|
||||
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
|
||||
<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
|
||||
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
|
||||
'hidden' among other I2P users at your ISP, and further analysis would link
|
||||
the router identities further.</p>
|
||||
<p>Note that when I2P detects an IP address change, it will automatically
|
||||
initiate a restart in order to rekey and to disconnect from peers before they
|
||||
update their profiles - any long lasting client connections will be disconnected,
|
||||
though such would likely already be the case anyway, since the IP address changed.
|
||||
</p>
|
||||
<br>
|
||||
-->
|
||||
*********/ %>
|
||||
</div></form></div></div></body></html>
|
||||
</div></form>
|
||||
</div></div></body></html>
|
||||
|
@@ -30,7 +30,7 @@
|
||||
<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>
|
||||
<div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
|
||||
<br><b><%=intl._("NOTE")%>:</b> <%=intl._("Some changes may require a restart to take effect.")%>
|
||||
</div></form></div></div></div></body></html>
|
||||
|
@@ -41,11 +41,11 @@ button span.hide{
|
||||
<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
|
||||
<%=intl._("All changes require restart to take effect.")%></i>
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<% if (request.getParameter("edit") == null) { %>
|
||||
<input type="submit" name="edit" value="<%=intl._("Add Client")%>" />
|
||||
<input type="submit" name="edit" class="add" value="<%=intl._("Add Client")%>" />
|
||||
<% } %>
|
||||
<input type="submit" name="action" value="<%=intl._("Save Client Configuration")%>" />
|
||||
<input type="submit" class="accept" name="action" value="<%=intl._("Save Client Configuration")%>" />
|
||||
</div></form></div>
|
||||
|
||||
<h3><a name="i2cp"></a><%=intl._("Advanced Client Interface Configuration")%></h3>
|
||||
@@ -89,8 +89,8 @@ button span.hide{
|
||||
<%=intl._("Many clients do not support SSL or authorization.")%>
|
||||
<i><%=intl._("All changes require restart to take effect.")%></i>
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Save Interface Configuration")%>" />
|
||||
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<input type="submit" class="accept" name="action" value="<%=intl._("Save Interface Configuration")%>" />
|
||||
</div></form>
|
||||
|
||||
<h3><a name="webapp"></a><%=intl._("WebApp Configuration")%></h3><p>
|
||||
@@ -103,7 +103,7 @@ button span.hide{
|
||||
<jsp:getProperty name="clientshelper" property="form2" />
|
||||
<p><i><%=intl._("All changes require restart to take effect.")%></i>
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Save WebApp Configuration")%>" />
|
||||
<input type="submit" name="action" class="accept" value="<%=intl._("Save WebApp Configuration")%>" />
|
||||
</div></form></div>
|
||||
|
||||
<% if (clientshelper.showPlugins()) { %>
|
||||
@@ -114,7 +114,7 @@ button span.hide{
|
||||
<input type="hidden" name="nonce" value="<%=pageNonce%>" >
|
||||
<jsp:getProperty name="clientshelper" property="form3" />
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Save Plugin Configuration")%>" />
|
||||
<input type="submit" name="action" class="accept" value="<%=intl._("Save Plugin Configuration")%>" />
|
||||
</div></form></div>
|
||||
|
||||
<h3><a name="plugin"></a><%=intl._("Plugin Installation")%></h3><p>
|
||||
@@ -125,7 +125,7 @@ button span.hide{
|
||||
<p>
|
||||
<input type="text" size="60" name="pluginURL" >
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Install Plugin")%>" />
|
||||
<input type="submit" name="action" class="download" value="<%=intl._("Install Plugin")%>" />
|
||||
</div></form></div>
|
||||
<% } %>
|
||||
</div></div></body></html>
|
||||
|
@@ -41,7 +41,7 @@
|
||||
<td><input type="text" size="55" name="key" ></td>
|
||||
</tr><tr>
|
||||
<td align="right" colspan="2">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Delete key")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Add key")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="action" class="delete" value="<%=intl._("Delete key")%>" >
|
||||
<input type="submit" name="action" class="add" value="<%=intl._("Add key")%>" >
|
||||
</td></tr></table></p></div></form></div></div></body></html>
|
||||
|
@@ -26,7 +26,7 @@
|
||||
<h3><%=intl._("Configure I2P Logging Options")%></h3>
|
||||
<div class="wideload">
|
||||
<table border="0" cellspacing="5">
|
||||
<tr><td class="mediumtags" align="right"><b><%=intl._("Logging filename")%>:</b></td>
|
||||
<tr><td class="mediumtags" align="right"><b><%=intl._("Log file")%>:</b></td>
|
||||
<td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" >
|
||||
<br> <i><%=intl._("(the symbol '@' will be replaced during log rotation)")%></i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log record format")%>:</b></td>
|
||||
@@ -48,6 +48,6 @@
|
||||
<td><jsp:getProperty name="logginghelper" property="newClassBox" /></td>
|
||||
</tr><tr><td colspan="2"><hr></td>
|
||||
</tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@@ -7,9 +7,9 @@
|
||||
<jsp:setProperty name="navHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<% navHelper.storeWriter(out); %>
|
||||
<div class="confignav" id="confignav">
|
||||
<center>
|
||||
<%
|
||||
// moved to java for ease of translation and to avoid 10 copies
|
||||
navHelper.renderNavBar(request.getRequestURI());
|
||||
// allowIFrame variable from summary.jsi
|
||||
navHelper.renderNavBar(request.getRequestURI(), allowIFrame);
|
||||
%>
|
||||
</center></div>
|
||||
</div>
|
||||
|
217
apps/routerconsole/jsp/confignet.jsp
Normal file
217
apps/routerconsole/jsp/confignet.jsp
Normal file
@@ -0,0 +1,217 @@
|
||||
<%@page contentType="text/html" %>
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<%@include file="css.jsi" %>
|
||||
<%=intl.title("config networking")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsi" %>
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
|
||||
<jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h1><%=intl._("I2P Network Configuration")%></h1>
|
||||
<div class="main" id="main">
|
||||
<%@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" />
|
||||
<div class="configure">
|
||||
<form action="" method="POST">
|
||||
<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
|
||||
<input type="hidden" name="action" value="blah" >
|
||||
<h3><%=intl._("IP and Transport Configuration")%></h3><p>
|
||||
<img src="/themes/console/images/itoopie_xsm.png" alt="">
|
||||
<b><%=intl._("The default settings will work for most people.")%>
|
||||
<a href="#chelp"><%=intl._("There is help below.")%></a></b>
|
||||
</p><p><b><%=intl._("UPnP Configuration")%>:</b><br>
|
||||
<input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> >
|
||||
<%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._("UPnP status")%></a>
|
||||
</p><p><b><%=intl._("IP Configuration")%>:</b><br>
|
||||
<%=intl._("Externally reachable hostname or IP address")%>:<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> >
|
||||
<%=intl._("Use all auto-detect methods")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> >
|
||||
<%=intl._("Disable UPnP IP address detection")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> >
|
||||
<%=intl._("Ignore local interface IP address")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> >
|
||||
<%=intl._("Use SSU IP address detection only")%><br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> >
|
||||
<%=intl._("Specify hostname or IP")%>:
|
||||
<input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" >
|
||||
<% String[] ips = nethelper.getAddresses();
|
||||
if (ips.length > 0) {
|
||||
out.print(intl._("or") + " <select name=\"udpHost2\"><option value=\"\" selected=\"true\">"+intl._("Select Interface")+"</option>\n");
|
||||
for (int i = 0; i < ips.length; i++) {
|
||||
out.print("<option value=\"");
|
||||
out.print(ips[i]);
|
||||
out.print("\">");
|
||||
out.print(ips[i]);
|
||||
out.print("</option>\n");
|
||||
}
|
||||
out.print("</select>\n");
|
||||
}
|
||||
%>
|
||||
<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> >
|
||||
<%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
|
||||
</p><p>
|
||||
<%=intl._("Action when IP changes")%>:<br>
|
||||
<input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
|
||||
<%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
|
||||
(<i><%=intl._("Experimental")%></i>)
|
||||
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
|
||||
<%=intl._("UDP port:")%>
|
||||
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>
|
||||
<% /********
|
||||
<!-- let's keep this simple...
|
||||
<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
|
||||
Require SSU introductions
|
||||
<i>(Enable if you cannot open your firewall)</i>
|
||||
</p><p>
|
||||
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
|
||||
-->
|
||||
*********/ %>
|
||||
</p><p>
|
||||
<b><%=intl._("TCP Configuration")%>:</b><br>
|
||||
<%=intl._("Externally reachable hostname or IP address")%>:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> >
|
||||
<%=intl._("Use auto-detected IP address")%>
|
||||
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
|
||||
<%=intl._("if we are not firewalled")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> >
|
||||
<%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> >
|
||||
<%=intl._("Specify hostname or IP")%>:
|
||||
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" ><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> >
|
||||
<%=intl._("Disable inbound (Firewalled)")%><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> >
|
||||
<%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
|
||||
</p><p>
|
||||
<%=intl._("Externally reachable TCP port")%>:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> >
|
||||
<%=intl._("Use the same port configured for UDP")%>
|
||||
<i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
|
||||
<%=intl._("Specify Port")%>:
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
|
||||
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
|
||||
</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p>
|
||||
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
|
||||
</p><p>
|
||||
<%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
|
||||
<%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
|
||||
<%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%>
|
||||
<%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
|
||||
</p>
|
||||
<% /********
|
||||
<!-- let's keep this simple...
|
||||
<input type="submit" name="recheckReachability" value="Check network reachability..." />
|
||||
</p>
|
||||
-->
|
||||
*********/ %>
|
||||
<p>
|
||||
<%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
|
||||
<%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:
|
||||
<ul>
|
||||
<li class="tidylist"><%=intl._("No UPnP-compatible device present")%>
|
||||
<li class="tidylist"><%=intl._("UPnP disabled on the device")%>
|
||||
<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%>
|
||||
<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%>
|
||||
<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%>
|
||||
<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%>
|
||||
</ul></p><p>
|
||||
<a href="peers#upnp"><%=intl._("Review the UPnP status here.")%></a>
|
||||
<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
|
||||
<p><%=intl._("Hostnames entered above will be published in the network database.")%>
|
||||
<%=intl._("They are <b>not private</b>.")%>
|
||||
<%=intl._("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
|
||||
<%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
|
||||
<%=intl._("When in doubt, leave the settings at the defaults.")%>
|
||||
</p>
|
||||
<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p>
|
||||
<%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
|
||||
<%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
|
||||
<%=intl._("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
|
||||
<ul>
|
||||
<li class="tidylist"><b><%=intl._("OK")%></b> -
|
||||
<%=intl._("Your UDP port does not appear to be firewalled.")%>
|
||||
<li class="tidylist"><b><%=intl._("Firewalled")%></b> -
|
||||
<%=intl._("Your UDP port appears to be firewalled.")%>
|
||||
<%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
|
||||
<%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%>
|
||||
<%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
|
||||
<%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
|
||||
<%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
|
||||
<%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
|
||||
<li class="tidylist"><b><%=intl._("Testing")%></b> -
|
||||
<%=intl._("The router is currently testing whether your UDP port is firewalled.")%>
|
||||
<li class="tidylist"><b><%=intl._("Hidden")%></b> -
|
||||
<%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> -
|
||||
<%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
|
||||
<%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> -
|
||||
<%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%>
|
||||
<%=intl._("For best participation as a floodfill router, you should open your firewall.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> -
|
||||
<%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
|
||||
<%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%>
|
||||
<%=intl._("Please open your firewall or disable inbound TCP above.")%>
|
||||
<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> -
|
||||
<%=intl._("You have configured inbound TCP, however you have disabled UDP.")%>
|
||||
<%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
|
||||
<%=intl._("Please open your firewall or enable UDP.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> -
|
||||
<%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%>
|
||||
<%=intl._("Correct your clock setting if this error persists.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> -
|
||||
<%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%>
|
||||
<%=intl._("Correct the address or disable inbound TCP above.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> -
|
||||
<%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%>
|
||||
<%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
|
||||
<%=intl._("I2P was unable to bind to port 8887 or other configured port.")%>
|
||||
<%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%>
|
||||
<%=intl._("This may be a transient error, if the other program is no longer using the port.")%>
|
||||
<%=intl._("However, a restart is always required after this error.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
|
||||
<%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%>
|
||||
<%=intl._("Therefore your router cannot accept inbound connections.")%>
|
||||
<%=intl._("Please configure a TCP host and port above or enable UDP.")%>
|
||||
<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> -
|
||||
<%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%>
|
||||
<%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
|
||||
</ul></p><hr>
|
||||
<% /********
|
||||
<!--
|
||||
<b>Dynamic Router Keys: </b>
|
||||
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
|
||||
<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
|
||||
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
|
||||
'hidden' among other I2P users at your ISP, and further analysis would link
|
||||
the router identities further.</p>
|
||||
<p>Note that when I2P detects an IP address change, it will automatically
|
||||
initiate a restart in order to rekey and to disconnect from peers before they
|
||||
update their profiles - any long lasting client connections will be disconnected,
|
||||
though such would likely already be the case anyway, since the IP address changed.
|
||||
</p>
|
||||
<br>
|
||||
-->
|
||||
*********/ %>
|
||||
</div></form></div></div></body></html>
|
@@ -39,8 +39,8 @@
|
||||
<h3><%=intl._("Manually Ban / Unban a Peer")%></h3>
|
||||
<p><%=intl._("Banning will prevent the participation of this peer in tunnels you create.")%></p>
|
||||
<div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Ban peer until restart")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Unban peer")%>" />
|
||||
<input type="submit" name="action" class="delete" value="<%=intl._("Ban peer until restart")%>" />
|
||||
<input type="submit" name="action" class="accept" value="<%=intl._("Unban peer")%>" />
|
||||
<% if (! "".equals(peer)) { %>
|
||||
<!-- <font color="blue"><---- click to verify action</font> -->
|
||||
<% } %>
|
||||
@@ -57,7 +57,7 @@
|
||||
<input type="text" size="8" name="speed" value="<%=speed%>" />
|
||||
<%=intl._("Capacity")%>:
|
||||
<input type="text" size="8" name="capacity" value="<%=capacity%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
|
||||
<input type="submit" name="action" class="add" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
|
||||
</form>
|
||||
<a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2>
|
||||
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
|
||||
|
@@ -75,7 +75,7 @@
|
||||
|
||||
</table></div>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Save changes and reseed now")%>" />
|
||||
<input type="submit" name="action" value="<%=intl._("Save changes")%>" />
|
||||
<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
|
||||
<input type="submit" name="action" class="download" value="<%=intl._("Save changes and reseed now")%>" />
|
||||
<input type="submit" name="action" class="accept" value="<%=intl._("Save changes")%>" />
|
||||
</div></form></div></div></body></html>
|
||||
|
@@ -24,9 +24,9 @@
|
||||
<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>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Shutdown gracefully")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Shutdown immediately")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Cancel graceful shutdown")%>" >
|
||||
<input type="submit" class="stop" name="action" value="<%=intl._("Shutdown gracefully")%>" >
|
||||
<input type="submit" class="stop" name="action" value="<%=intl._("Shutdown immediately")%>" >
|
||||
<input type="submit" class="cancel" name="action" value="<%=intl._("Cancel graceful shutdown")%>" >
|
||||
</div>
|
||||
<% if (System.getProperty("wrapper.version") != null) { %>
|
||||
<p><%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%>
|
||||
@@ -34,8 +34,8 @@
|
||||
<%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%>
|
||||
<%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="<%=intl._("Graceful restart")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Hard restart")%>" >
|
||||
<input type="submit" class="reload" name="action" value="<%=intl._("Graceful restart")%>" >
|
||||
<input type="submit" class="reload" name="action" value="<%=intl._("Hard restart")%>" >
|
||||
<% } %></div>
|
||||
|
||||
<% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>
|
||||
|
@@ -111,7 +111,7 @@ function toggleAll(category)
|
||||
<td colspan="2"><%=intl._("Advanced filter")%>:
|
||||
<input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" ></td></tr>
|
||||
<tr class="tablefooter"><td colspan="3" align="right">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
|
||||
</td></tr>
|
||||
</table></div></form></div></div></body></html>
|
||||
|
@@ -38,7 +38,7 @@
|
||||
<%=intl._("Client tunnel changes are temporary and are not saved.")%>
|
||||
<%=intl._("To make permanent client tunnel changes see the")%> <a href="i2ptunnel/index.jsp"><%=intl._("i2ptunnel page")%></a>.
|
||||
<hr><div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
|
||||
</div>
|
||||
</form></div></div></div></body></html>
|
||||
|
@@ -47,9 +47,9 @@
|
||||
<% } %>
|
||||
<h3><%=uihelper._("Router Console Language")%></h3>
|
||||
<jsp:getProperty name="uihelper" property="langSettings" />
|
||||
<%=uihelper._("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>
|
||||
<hr><div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" >
|
||||
<p><%=uihelper._("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>
|
||||
</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></body></html>
|
||||
|
@@ -20,7 +20,7 @@
|
||||
<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">
|
||||
<i><jsp:getProperty name="updatehelper" property="newsStatus" /></i></div>
|
||||
<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" />" >
|
||||
@@ -37,7 +37,7 @@
|
||||
<tr><td colspan="2"></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News Updates")%>:</b></td>
|
||||
<% } // if canInstall %>
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" value="<%=intl._("Check for updates")%>" />
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" class="check" value="<%=intl._("Check for updates")%>" />
|
||||
<% } %></td></tr>
|
||||
<tr><td colspan="2"><br></td></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News URL")%>:</b></td>
|
||||
@@ -68,6 +68,6 @@
|
||||
<% } // if canInstall %>
|
||||
<tr class="tablefooter"><td colspan="2">
|
||||
<div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="action" value="<%=intl._("Save")%>" >
|
||||
<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="action" class="accept" value="<%=intl._("Save")%>" >
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@@ -32,6 +32,7 @@
|
||||
String conNonceParam = request.getParameter("consoleNonce");
|
||||
if (conNonceParam != null && conNonceParam.equals(System.getProperty("router.consoleNonce"))) {
|
||||
intl.setLang(request.getParameter("lang"));
|
||||
intl.setNews(request.getParameter("news"));
|
||||
}
|
||||
%>
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
|
||||
|
@@ -41,7 +41,7 @@ your computer's time.</li> */
|
||||
%>
|
||||
<li class="tidylist"><b>Reachability:</b>
|
||||
The router's view of whether it can be contacted by other routers.
|
||||
Further information is on the <a href="config.jsp#help">configuration page</a>.
|
||||
Further information is on the <a href="confignet#help">configuration page</a>.
|
||||
</li></ul><h3>Peers</h3><ul>
|
||||
<li class="tidylist"><b>Active:</b>
|
||||
The first number is the number of peers you've sent or received a message from in the last few minutes.
|
||||
@@ -49,16 +49,16 @@ This may range from 8-10 to several hundred, depending on your total bandwidth,
|
||||
shared bandwidth, and locally-generated traffic.
|
||||
The second number is the number of peers seen in the last hour or so.
|
||||
Do not be concerned if these numbers vary widely.
|
||||
First enable all stats to <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.</li>
|
||||
<a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Fast:</b>
|
||||
This is the number of peers you use for building client tunnels. It is generally in the
|
||||
range 8-30. Your fast peers are shown on the <a href="profiles.jsp">profiles page</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Enable graphing]</a>.</li>
|
||||
<a href="configstats.jsp#router.fastPeers">[Enable graphing]</a></li>
|
||||
<li class="tidylist"><b>High Capacity:</b>
|
||||
This is the number of peers you use for building some of your exploratory tunnels. It is generally in the
|
||||
range 8-75. The fast peers are included in the high capacity tier.
|
||||
Your high capacity peers are shown on the <a href="profiles.jsp">profiles page</a>.
|
||||
First enable all stats to <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.</li>
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a></li>
|
||||
<li class="tidylist"><b>Well Integrated:</b>
|
||||
This is the number of peers you use for network database inquiries.
|
||||
These are usually the "floodfill" peers.
|
||||
@@ -73,7 +73,7 @@ shared bandwidth, and locally-generated traffic.
|
||||
I2P does not require a router to know every other router.</li>
|
||||
</ul><h3>Bandwidth in/out</h3><div align="justify">
|
||||
Should be self-explanatory. All values are in bytes per second, not bits per second.
|
||||
Change your bandwidth limits on the <a href="config.jsp#help">configuration page</a>.
|
||||
Change your bandwidth limits on the <a href="confignet#help">configuration page</a>.
|
||||
Bandwidth is <a href="graphs.jsp">graphed</a> by default.</div>
|
||||
|
||||
<h3>Local destinations</h3><div align="justify">
|
||||
@@ -92,7 +92,7 @@ Tunnels built by other routers through your router.
|
||||
This may vary widely depending on network demand, your
|
||||
shared bandwidth, and amount of locally-generated traffic.
|
||||
The recommended method for limiting participating tunnels is
|
||||
to change your share percentage on the <a href="config.jsp#help">configuration page</a>.
|
||||
to change your share percentage on the <a href="confignet#help">configuration page</a>.
|
||||
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Share ratio:</b>
|
||||
|
@@ -36,7 +36,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
|
||||
الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.</li>
|
||||
<li class="tidylist"><b>إمكانية الوصول</b>
|
||||
امكانية الاتصال الخارجي بالموجه
|
||||
المزيد من التفاصيل في <a href="config.jsp#help">صفحة الاعدادات</a>.</li>
|
||||
المزيد من التفاصيل في <a href="confignet#help">صفحة الاعدادات</a>.</li>
|
||||
</ul><h3>النظائر</h3><ul>
|
||||
<li class="tidylist"><b>مفعل</b>
|
||||
هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية.
|
||||
@@ -65,7 +65,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
|
||||
</li>
|
||||
</ul><h3>سرعة الاتصال الداخلي/خارجي</h3><div align="justify">
|
||||
السرعة ب بايت في الثانية
|
||||
غير السرعة في <a href="config.jsp#help">صفحة الاعدادات</a>.
|
||||
غير السرعة في <a href="confignet#help">صفحة الاعدادات</a>.
|
||||
السرعة <a href="graphs.jsp">مرسومة</a> </div>
|
||||
<h3>الوجهات الداخلية</h3><div align="justify">
|
||||
الاتصالات الداخلية
|
||||
@@ -82,7 +82,7 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
|
||||
<li class="tidylist"><b>المشاركة</b>
|
||||
الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك.
|
||||
هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة...
|
||||
يمكنك تغيير درجة المشاركة بـ <a href="config.jsp#help">صفحة الاعدادات</a>.
|
||||
يمكنك تغيير درجة المشاركة بـ <a href="confignet#help">صفحة الاعدادات</a>.
|
||||
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
|
||||
the <a href="configadvanced.jsp">صفحة الاعدادات المتقدمة</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>نسبة المشاركة</b>
|
||||
|
@@ -37,14 +37,13 @@ La version d'I2P qui vous affiche actuellement cette page.</li>
|
||||
Indique depuis combien de temps le routeur tourne.</li>
|
||||
<li class="tidylist"><b>Réseau:</b>
|
||||
Statut de joignabilité du routeur par les autres routeurs.
|
||||
Plus d'infos sur la page de <a href="config.jsp#help">configuration</a>.
|
||||
Plus d'infos sur la page de <a href="confignet#help">configuration</a>.
|
||||
</li></ul><h3>Pairs</h3><ul>
|
||||
<li class="tidylist"><b>Actifs:</b>
|
||||
le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de
|
||||
8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le
|
||||
second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence.
|
||||
<a href="configstats.jsp#router.activePeers">[Activer le graphique]</a> (activer auparavant "toutes
|
||||
les statistiques").</li>
|
||||
<a href="configstats.jsp#router.activePeers">[Activer le graphique]</a></li>
|
||||
<li class="tidylist"><b>Rapides:</b>
|
||||
le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de
|
||||
8 à 30. Vos pairs rapides sont détaillés sur la page <a href="profiles.jsp">profils</a>.
|
||||
@@ -53,8 +52,7 @@ le nombre de pairs que vous mettez à contribution pour construire vos tunnels c
|
||||
nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75.
|
||||
Les pairs rapides font partie du groupe des "Hautes capacités". Vos pairs à hautes capacités sont aussi listés sur
|
||||
la page <a href="profiles.jsp">profils</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Activer le graphique]</a> (activer auparavant "toutes les
|
||||
statistiques").</li>
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Activer le graphique]</a></li>
|
||||
<li class="tidylist"><b>Bien intégrés:</b>
|
||||
vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par
|
||||
diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page
|
||||
@@ -65,7 +63,7 @@ taille totale du réseau; il varie en fonction de votre bande passante totale et
|
||||
local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.
|
||||
</li></ul><h3>Bande passante entrée/sortie</h3><div align="justify">
|
||||
Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos
|
||||
limites de bande passante sur la page de <a href="config.jsp#help">configuration</a>.
|
||||
limites de bande passante sur la page de <a href="confignet#help">configuration</a>.
|
||||
Le <a href="graphs.jsp">graphique de bande passante</a> est activé par défaut.</div>
|
||||
|
||||
<h3>Destinations locales</h3><div align="justify">
|
||||
@@ -80,7 +78,7 @@ pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels e
|
||||
<li class="tidylist"><b>Participants:</b> les tunnels créés par d'autres routeurs et qui passent par le votre. Leur
|
||||
nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local.
|
||||
La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la
|
||||
<a href="config.jsp#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
|
||||
<a href="confignet#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
|
||||
<tt>router.maxParticipatingTunnels=nnn</tt> dans la <a href="configadvanced.jsp">configuration avancée</a>.
|
||||
<a href="configstats.jsp#tunnel.participatingTunnels">[Activer le graphique]</a>.</li>
|
||||
<li class="tidylist"><b>Rapport de partage:</b> le nombre de tunnels participants que vous routez pour les autres,
|
||||
|
@@ -39,7 +39,7 @@ De versie van de I2P software die je nu gebruikt.</li>
|
||||
Hoe lang je I2P router al draait.</li>
|
||||
<li class="tidylist"><b>Netwerk Bereikbaarheid:</b>
|
||||
De bereikbaarheid van je router door andere routers.
|
||||
Meer informatie is te vinden op de <a href="config.jsp#help">configuratie pagina</a>.</li>
|
||||
Meer informatie is te vinden op de <a href="confignet#help">configuratie pagina</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Peers</h3><ul>
|
||||
@@ -78,7 +78,7 @@ Voor I2P is het niet nodig dat een router alle andere routers kent.
|
||||
|
||||
<h3>Bandbreedte in/out</h3><div align="justify">
|
||||
Dit zou zichzelf moeten verklaren. Alle waarden zijn in bytes per seconde, niet in bits per seconde.
|
||||
Wijzig je bandbreedte limieten op de <a href="config.jsp#help">configuratie pagina</a>.
|
||||
Wijzig je bandbreedte limieten op de <a href="confignet#help">configuratie pagina</a>.
|
||||
Bandbreedte wordt standaard <a href="graphs.jsp">geplot</a>.</div>
|
||||
|
||||
<h3>Tunnels</h3><div align="justify">
|
||||
@@ -93,7 +93,7 @@ Tunnels gebouwd door andere routers die door je eigen router heen lopen.
|
||||
Dit kan erg variëren afhankelijk van de vraag vanuit het netwerk,
|
||||
je gedeelde bandbreedte en hoeveelheid lokaal gegenereerd verkeer.
|
||||
De aanbevolen methode om het aantal deelnemende tunnels te beperken
|
||||
is door het share percentage te wijzigen op de <a href="config.jsp#help">configuratie pagina</a>.
|
||||
is door het share percentage te wijzigen op de <a href="confignet#help">configuratie pagina</a>.
|
||||
Je kan het totale aantal ook beperken met de instelling <tt>router.maxParticipatingTunnels=nnn</tt> op
|
||||
de <a href="configadvanced.jsp">geavanceerde configuratie pagina</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Share rato:</b>
|
||||
|
@@ -45,7 +45,7 @@
|
||||
</li>
|
||||
<li class="tidylist"><b>Доступность:</b>
|
||||
|
||||
Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на <a href="config.jsp#help">странице сетевых настроек</a>.
|
||||
Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на <a href="confignet#help">странице сетевых настроек</a>.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
</li>
|
||||
<li class="tidylist"><b>Транзитные:</b>
|
||||
|
||||
Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице <a href="config.jsp#help">сетевых настроек</a>. Также можно задать точный ограничитель количества через параметр <tt>router.maxParticipatingTunnels=nnn</tt> на странице <a href="configadvanced.jsp">дополнительных настроек</a>.
|
||||
Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице <a href="confignet#help">сетевых настроек</a>. Также можно задать точный ограничитель количества через параметр <tt>router.maxParticipatingTunnels=nnn</tt> на странице <a href="configadvanced.jsp">дополнительных настроек</a>.
|
||||
|
||||
<a href="configstats.jsp#tunnel.participatingTunnels">[Включить построение графика]</a>.
|
||||
</li>
|
||||
|
@@ -18,39 +18,46 @@
|
||||
<div class="news" id="news">
|
||||
<jsp:useBean class="net.i2p.router.web.NewsHelper" id="newshelper" scope="request" />
|
||||
<jsp:setProperty name="newshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml"); %>
|
||||
<%
|
||||
if (newshelper.shouldShowNews()) {
|
||||
java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml");
|
||||
%>
|
||||
<jsp:setProperty name="newshelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
|
||||
<jsp:setProperty name="newshelper" property="maxLines" value="300" />
|
||||
<jsp:getProperty name="newshelper" property="content" />
|
||||
|
||||
<hr>
|
||||
<%
|
||||
} // shouldShowNews()
|
||||
%>
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
|
||||
<jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br>
|
||||
<jsp:getProperty name="updatehelper" property="newsStatus" /><br>
|
||||
</div><div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
|
||||
<div class="welcome">
|
||||
<div class="langbox">
|
||||
<a href="/?lang=en&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a>
|
||||
<a href="/?lang=ar&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
|
||||
<a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
|
||||
<a href="/?lang=da&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a>
|
||||
<a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
|
||||
<a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a>
|
||||
<a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a>
|
||||
<a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br/>
|
||||
<a href="/?lang=it&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a>
|
||||
<a href="/?lang=nl&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
|
||||
<a href="/?lang=pl&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a>
|
||||
<a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
|
||||
<a href="/?lang=ru&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
|
||||
<a href="/?lang=sv&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
|
||||
<a href="/?lang=uk&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Ukrainian" alt="Ukrainian"></a>
|
||||
<a href="/?lang=vi&consoleNonce=<%=consoleNonce%>"><img style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a>
|
||||
<a href="/?lang=en&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a>
|
||||
<a href="/?lang=ar&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
|
||||
<a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
|
||||
<a href="/?lang=da&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a>
|
||||
<a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
|
||||
<a href="/?lang=ee&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ee" title="Eesti" alt="Eesti"></a>
|
||||
<a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a>
|
||||
<a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a>
|
||||
<a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br>
|
||||
<a href="/?lang=it&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a>
|
||||
<a href="/?lang=nl&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
|
||||
<a href="/?lang=pl&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a>
|
||||
<a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
|
||||
<a href="/?lang=ru&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
|
||||
<a href="/?lang=sv&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
|
||||
<a href="/?lang=uk&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Ukrainian" alt="Ukrainian"></a>
|
||||
<a href="/?lang=vi&consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a>
|
||||
</div>
|
||||
<a name="top"></a>
|
||||
<h2><%=intl._("Welcome to I2P")%></h2>
|
||||
</div>
|
||||
<% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
|
||||
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
|
||||
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
|
||||
<jsp:setProperty name="contenthelper" property="maxLines" value="300" />
|
||||
<jsp:setProperty name="contenthelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
|
@@ -21,13 +21,15 @@
|
||||
<b>I2P version:</b> <%=net.i2p.router.RouterVersion.FULL_VERSION%><br>
|
||||
<b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)<br>
|
||||
<b>Wrapper version:</b> <%=System.getProperty("wrapper.version", "none")%><br>
|
||||
<jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" />
|
||||
<jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<b>Server version:</b> <jsp:getProperty name="logsHelper" property="jettyVersion" /><br>
|
||||
<b>Platform:</b> <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
|
||||
<b>Processor:</b> <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
|
||||
<b>Jbigi:</b> <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
|
||||
<b>Encoding:</b> <%=System.getProperty("file.encoding")%></p>
|
||||
<b>Encoding:</b> <%=System.getProperty("file.encoding")%><br>
|
||||
<b>Charset:</b> <%=java.nio.charset.Charset.defaultCharset().name()%></p>
|
||||
<p><%=intl._("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")%></p>
|
||||
<jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" />
|
||||
<jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h3><%=intl._("Critical Logs")%></h3><a name="criticallogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="criticalLogs" />
|
||||
<h3><%=intl._("Router Logs")%> (<a href="configlogging"><%=intl._("configure")%></a>)</h3>
|
||||
|
@@ -38,16 +38,16 @@
|
||||
} else if (allowIFrame) {
|
||||
// since we don't have an iframe this will reload the base page, and
|
||||
// the new delay will be passed to the iframe above
|
||||
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n");
|
||||
out.print("<b>");
|
||||
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n" +
|
||||
"<b>");
|
||||
// We have intl defined when this is included, but not when compiled standalone.
|
||||
out.print(intl._("Refresh (s)"));
|
||||
out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");
|
||||
out.print("<button type=\"submit\" value=\"Enable\" >");
|
||||
out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n" +
|
||||
"<button type=\"submit\" value=\"Enable\" >");
|
||||
// ditto
|
||||
out.print(intl._("Enable"));
|
||||
out.print("</button>\n");
|
||||
out.print("</form></div></div>\n");
|
||||
out.print("</button>\n" +
|
||||
"</form></div></div>\n");
|
||||
} else {
|
||||
out.print("</div>\n");
|
||||
}
|
||||
|
@@ -32,7 +32,8 @@
|
||||
// doesn't work for restart or shutdown with no expl. tunnels,
|
||||
// since the call to ConfigRestartBean.renderStatus() hasn't happened yet...
|
||||
// So we delay slightly
|
||||
if ("restart".equalsIgnoreCase(action) || "shutdown".equalsIgnoreCase(action)) {
|
||||
if (action != null &&
|
||||
("restart".equals(action.toLowerCase(java.util.Locale.US)) || "shutdown".equals(action.toLowerCase(java.util.Locale.US)))) {
|
||||
synchronized(this) {
|
||||
try {
|
||||
wait(1000);
|
||||
|
@@ -3279,7 +3279,7 @@ msgid "Anonymous webmail client"
|
||||
msgstr "بريد الكتروني مجهول"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77
|
||||
msgid "Webmail"
|
||||
msgid "Email"
|
||||
msgstr "بريد الكتروني"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81
|
||||
@@ -3419,7 +3419,7 @@ msgid "Help with firewall configuration"
|
||||
msgstr "مساعدة خول اعدادات الجدار الناري"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310
|
||||
msgid "Check NAT/firewall"
|
||||
msgid "Check network connection and NAT/firewall"
|
||||
msgstr "تأكد من NAT/جدار ناري"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330
|
||||
@@ -4794,7 +4794,7 @@ msgid "Configure I2P Logging Options"
|
||||
msgstr "اعدادت السجلات I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:303
|
||||
msgid "Logging filename"
|
||||
msgid "Log file"
|
||||
msgstr "ملف السجل"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307
|
||||
|
@@ -3559,8 +3559,8 @@ msgid "Anonymous webmail client"
|
||||
msgstr "Anonym webmail klient"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:77
|
||||
msgid "Webmail"
|
||||
msgstr "Webmail"
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:81
|
||||
msgid "Anonymous resident webserver"
|
||||
@@ -3708,7 +3708,7 @@ msgid "Help with firewall configuration"
|
||||
msgstr "Hjælp med konfiguration af firewall"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:307
|
||||
msgid "Check NAT/firewall"
|
||||
msgid "Check network connection and NAT/firewall"
|
||||
msgstr "Tjek NAT/firewall"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:327
|
||||
@@ -5319,7 +5319,7 @@ msgid "Configure I2P Logging Options"
|
||||
msgstr "Konfigurer I2P logging indstillinger"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:321
|
||||
msgid "Logging filename"
|
||||
msgid "Log file"
|
||||
msgstr "Logging filnavn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:325
|
||||
|
File diff suppressed because it is too large
Load Diff
6100
apps/routerconsole/locale/messages_ee.po
Normal file
6100
apps/routerconsole/locale/messages_ee.po
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user