propagate from branch 'i2p.i2p' (head f005cd64cce03cf3a301359f94380bc20eaa7c61)

to branch 'i2p.i2p.zzz.dhtsnark' (head 0562e4f429dcebf3f623d0975bd3a63d7645c0b7)
This commit is contained in:
zzz
2012-06-02 15:16:14 +00:00
64 changed files with 10331 additions and 8632 deletions

View File

@ -29,8 +29,12 @@ import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.data.Hash;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.ObjectCounter;
import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer;
/**
* Accepts connections on a TCP port and routes them to sub-acceptors.
@ -41,11 +45,15 @@ public class ConnectionAcceptor implements Runnable
private I2PServerSocket serverSocket;
private PeerAcceptor peeracceptor;
private Thread thread;
private I2PSnarkUtil _util;
private final I2PSnarkUtil _util;
private final ObjectCounter<Hash> _badCounter = new ObjectCounter();
private boolean stop;
private boolean socketChanged;
private static final int MAX_BAD = 2;
private static final long BAD_CLEAN_INTERVAL = 30*60*1000;
public ConnectionAcceptor(I2PSnarkUtil util) { _util = util; }
public synchronized void startAccepting(PeerCoordinatorSet set, I2PServerSocket socket) {
@ -59,6 +67,7 @@ public class ConnectionAcceptor implements Runnable
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
}
}
}
@ -70,11 +79,10 @@ public class ConnectionAcceptor implements Runnable
this.peeracceptor = peeracceptor;
_util = util;
socketChanged = false;
stop = false;
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
}
public void halt()
@ -142,6 +150,12 @@ public class ConnectionAcceptor implements Runnable
try { socket.close(); } catch (IOException ioe) {}
continue;
}
if (_badCounter.count(socket.getPeerDestination().calculateHash()) >= MAX_BAD) {
if (_log.shouldLog(Log.WARN))
_log.warn("Rejecting connection from " + socket.getPeerDestination().calculateHash() + " after " + MAX_BAD + " failures");
try { socket.close(); } catch (IOException ioe) {}
continue;
}
Thread t = new I2PAppThread(new Handler(socket), "I2PSnark incoming connection");
t.start();
}
@ -171,10 +185,12 @@ public class ConnectionAcceptor implements Runnable
}
private class Handler implements Runnable {
private I2PSocket _socket;
private final I2PSocket _socket;
public Handler(I2PSocket socket) {
_socket = socket;
}
public void run() {
try {
InputStream in = _socket.getInputStream();
@ -182,13 +198,23 @@ public class ConnectionAcceptor implements Runnable
// this is for the readahead in PeerAcceptor.connection()
in = new BufferedInputStream(in);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Handling socket from " + _socket.getPeerDestination().calculateHash().toBase64());
_log.debug("Handling socket from " + _socket.getPeerDestination().calculateHash());
peeracceptor.connection(_socket, in, out);
} catch (PeerAcceptor.ProtocolException ihe) {
_badCounter.increment(_socket.getPeerDestination().calculateHash());
if (_log.shouldLog(Log.INFO))
_log.info("Protocol error from " + _socket.getPeerDestination().calculateHash(), ihe);
try { _socket.close(); } catch (IOException ignored) { }
} catch (IOException ioe) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Error handling connection from " + _socket.getPeerDestination().calculateHash().toBase64(), ioe);
_log.debug("Error handling connection from " + _socket.getPeerDestination().calculateHash(), ioe);
try { _socket.close(); } catch (IOException ignored) { }
}
}
}
/** @since 0.9.1 */
private class Cleaner implements SimpleTimer.TimedEvent {
public void timeReached() { _badCounter.clear(); }
}
}

View File

@ -20,6 +20,7 @@ import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketEepGet;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
import net.i2p.client.streaming.I2PSocketOptions;
import net.i2p.data.Base32;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
@ -210,6 +211,8 @@ public class I2PSnarkUtil {
// we don't need fast handshake for peer connections.
//if (opts.getProperty("i2p.streaming.connectDelay") == null)
// opts.setProperty("i2p.streaming.connectDelay", "500");
if (opts.getProperty(I2PSocketOptions.PROP_CONNECT_TIMEOUT) == null)
opts.setProperty(I2PSocketOptions.PROP_CONNECT_TIMEOUT, "75000");
if (opts.getProperty("i2p.streaming.inactivityTimeout") == null)
opts.setProperty("i2p.streaming.inactivityTimeout", "240000");
if (opts.getProperty("i2p.streaming.inactivityAction") == null)
@ -225,7 +228,9 @@ public class I2PSnarkUtil {
if (opts.getProperty("i2p.streaming.maxConnsPerMinute") == null)
opts.setProperty("i2p.streaming.maxConnsPerMinute", "2");
if (opts.getProperty("i2p.streaming.maxTotalConnsPerMinute") == null)
opts.setProperty("i2p.streaming.maxTotalConnsPerMinute", "6");
opts.setProperty("i2p.streaming.maxTotalConnsPerMinute", "8");
if (opts.getProperty("i2p.streaming.maxConnsPerHour") == null)
opts.setProperty("i2p.streaming.maxConnsPerHour", "20");
_manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts);
}
// FIXME this only instantiates krpc once, left stuck with old manager
@ -452,14 +457,18 @@ public class I2PSnarkUtil {
_openTrackerString = ot;
}
/** Comma delimited list of open trackers to use as backups
* non-null but possibly empty
*/
public String getOpenTrackerString() {
if (_openTrackerString == null)
return DEFAULT_OPENTRACKERS;
return _openTrackerString;
}
/** comma delimited list open trackers to use as backups */
/** sorted map of name to announceURL=baseURL */
/** List of open trackers to use as backups
* Null if disabled
*/
public List<String> getOpenTrackers() {
if (!shouldUseOpenTrackers())
return null;

View File

@ -46,6 +46,10 @@ public class PeerAcceptor
private final PeerCoordinator coordinator;
final PeerCoordinatorSet coordinators;
/** shorten timeout while reading handshake */
private static final long HASH_READ_TIMEOUT = 45*1000;
public PeerAcceptor(PeerCoordinator coordinator)
{
this.coordinator = coordinator;
@ -69,11 +73,20 @@ public class PeerAcceptor
// talk about, and we can just look for that in our list of active torrents.
byte peerInfoHash[] = null;
if (in instanceof BufferedInputStream) {
// multitorrent
in.mark(LOOKAHEAD_SIZE);
peerInfoHash = readHash(in);
long timeout = socket.getReadTimeout();
socket.setReadTimeout(HASH_READ_TIMEOUT);
try {
peerInfoHash = readHash(in);
} catch (IOException ioe) {
// unique exception so ConnectionAcceptor can blame the peer
throw new ProtocolException(ioe.toString());
}
socket.setReadTimeout(timeout);
in.reset();
} else {
// is this working right?
// Single torrent - is this working right?
try {
peerInfoHash = readHash(in);
if (_log.shouldLog(Log.INFO))
@ -130,22 +143,50 @@ public class PeerAcceptor
}
}
private static final String PROTO_STR = "BitTorrent protocol";
private static final int PROTO_STR_LEN = PROTO_STR.length();
private static final int PROTO_LEN = PROTO_STR_LEN + 1;
private static final int[] PROTO = new int[PROTO_LEN];
static {
PROTO[0] = PROTO_STR_LEN;
for (int i = 0; i < PROTO_STR_LEN; i++) {
PROTO[i+1] = PROTO_STR.charAt(i);
}
}
/** 48 */
private static final int LOOKAHEAD_SIZE = 1 + // chr(19)
"BitTorrent protocol".length() +
private static final int LOOKAHEAD_SIZE = PROTO_LEN +
8 + // blank, reserved
20; // infohash
/**
* Read ahead to the infohash, throwing an exception if there isn't enough data
* Read ahead to the infohash, throwing an exception if there isn't enough data.
* Also check the first 20 bytes for the correct protocol here and throw IOE if bad,
* so we don't hang waiting for 48 bytes if it's not a bittorrent client.
* The 20 bytes are checked again in Peer.handshake().
*/
private byte[] readHash(InputStream in) throws IOException {
byte buf[] = new byte[LOOKAHEAD_SIZE];
private static byte[] readHash(InputStream in) throws IOException {
for (int i = 0; i < PROTO_LEN; i++) {
int b = in.read();
if (b != PROTO[i])
throw new IOException("Bad protocol 0x" + Integer.toHexString(b) + " at byte " + i);
}
if (in.skip(8) != 8)
throw new IOException("EOF before hash");
byte buf[] = new byte[20];
int read = DataHelper.read(in, buf);
if (read != buf.length)
throw new IOException("Unable to read the hash (read " + read + ")");
byte rv[] = new byte[20];
System.arraycopy(buf, buf.length-rv.length, rv, 0, rv.length);
return rv;
return buf;
}
/**
* A unique exception so we can tell the ConnectionAcceptor about non-BT connections
* @since 0.9.1
*/
public static class ProtocolException extends IOException {
public ProtocolException(String s) {
super(s);
}
}
}

View File

@ -371,7 +371,9 @@ class PeerCoordinator implements PeerListener
* @since 0.9.1
*/
public boolean needOutboundPeers() {
return wantedBytes != 0 && needPeers();
//return wantedBytes != 0 && needPeers();
// minus one to make it a little easier for new peers to get in on large swarms
return wantedBytes != 0 && !halted && peers.size() < getMaxConnections() - 1;
}
/**
@ -1146,10 +1148,18 @@ class PeerCoordinator implements PeerListener
PartialPiece pp = iter.next();
int savedPiece = pp.getPiece();
if (havePieces.get(savedPiece)) {
iter.remove();
// this is just a double-check, it should be in there
boolean skipped = false;
for(Piece piece : wantedPieces) {
if (piece.getId() == savedPiece) {
if (peer.isCompleted() && piece.getPeerCount() > 1) {
// Try to preserve rarest-first when we have only one seeder
// by not preferring a partial piece that others have too
// from a seeder
skipped = true;
break;
}
iter.remove();
piece.setRequested(peer, true);
if (_log.shouldLog(Log.INFO)) {
_log.info("Restoring orphaned partial piece " + pp +
@ -1158,8 +1168,12 @@ class PeerCoordinator implements PeerListener
return pp;
}
}
if (_log.shouldLog(Log.WARN))
_log.warn("Partial piece " + pp + " NOT in wantedPieces??");
if (_log.shouldLog(Log.WARN)) {
if (skipped)
_log.warn("Partial piece " + pp + " with multiple peers skipped for seeder");
else
_log.warn("Partial piece " + pp + " NOT in wantedPieces??");
}
}
}
if (_log.shouldLog(Log.WARN) && !partialPieces.isEmpty())

View File

@ -57,6 +57,15 @@ class Piece implements Comparable {
/** caller must synchronize */
public boolean removePeer(Peer peer) { return this.peers.remove(peer.getPeerID()); }
/**
* How many peers have this piece?
* Caller must synchronize
* @since 0.9.1
*/
public int getPeerCount() {
return this.peers.size();
}
/** caller must synchronize */
public boolean isRequested() {
return this.requests != null && !this.requests.isEmpty();

View File

@ -365,7 +365,7 @@ public class SnarkManager implements Snark.CompleteListener {
public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay,
String startDelay, String seedPct, String eepHost,
String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts,
String upLimit, String upBW, boolean useOpenTrackers, String openTrackers, String theme) {
String upLimit, String upBW, boolean useOpenTrackers, String theme) {
boolean changed = false;
//if (eepHost != null) {
// // unused, we use socket eepget
@ -549,14 +549,6 @@ public class SnarkManager implements Snark.CompleteListener {
_util.setUseOpenTrackers(useOpenTrackers);
changed = true;
}
if (openTrackers != null) {
if (openTrackers.trim().length() > 0 && !openTrackers.trim().equals(_util.getOpenTrackerString())) {
_config.setProperty(PROP_OPENTRACKERS, openTrackers.trim());
_util.setOpenTrackerString(openTrackers);
addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
changed = true;
}
}
if (theme != null) {
if(!theme.equals(_config.getProperty(PROP_THEME))) {
_config.setProperty(PROP_THEME, theme);
@ -571,6 +563,20 @@ public class SnarkManager implements Snark.CompleteListener {
}
}
/**
* @param ot null to restore default
* @since 0.9.1
*/
public void saveOpenTrackers(String ot) {
_util.setOpenTrackerString(ot);
if (ot != null)
_config.setProperty(PROP_OPENTRACKERS, ot);
else
_config.remove(PROP_OPENTRACKERS);
addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
saveConfig();
}
public void saveConfig() {
try {
synchronized (_configFile) {
@ -1442,7 +1448,7 @@ public class SnarkManager implements Snark.CompleteListener {
String name = toks[i].trim().replace("&#44;", ",");
String url = toks[i+1].trim().replace("&#44;", ",");
if ( (name.length() > 0) && (url.length() > 0) ) {
String urls[] = DEFAULT_TRACKERS[i+1].split("=", 2);
String urls[] = url.split("=", 2);
String url2 = urls.length > 1 ? urls[1] : null;
_trackerMap.put(name, new Tracker(name, urls[0], url2));
}

View File

@ -260,7 +260,7 @@ public class TrackerClient extends I2PAppThread
for (Iterator iter = trackers.iterator(); iter.hasNext(); ) {
Tracker tr = (Tracker)iter.next();
if ((!stop) && (!tr.stop) &&
(completed || coordinator.needOutboundPeers()) &&
(completed || coordinator.needOutboundPeers() || !tr.started) &&
(event.equals(COMPLETED_EVENT) || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
{
try
@ -298,7 +298,7 @@ public class TrackerClient extends I2PAppThread
List<Peer> ordered = new ArrayList(peers);
Collections.shuffle(ordered, r);
Iterator<Peer> it = ordered.iterator();
while ((!stop) && it.hasNext()) {
while ((!stop) && it.hasNext() && coordinator.needOutboundPeers()) {
Peer cur = it.next();
// FIXME if id == us || dest == us continue;
// only delay if we actually make an attempt to add peer
@ -351,7 +351,7 @@ public class TrackerClient extends I2PAppThread
}
Collections.shuffle(peers, r);
Iterator<Peer> it = peers.iterator();
while ((!stop) && it.hasNext()) {
while ((!stop) && it.hasNext() && coordinator.needOutboundPeers()) {
Peer cur = it.next();
if (coordinator.addPeer(cur) && it.hasNext()) {
int delay = (DELAY_MUL * r.nextInt(10)) + DELAY_MIN;
@ -387,7 +387,7 @@ public class TrackerClient extends I2PAppThread
}
Collections.shuffle(peers, r);
Iterator<Peer> it = peers.iterator();
while ((!stop) && it.hasNext()) {
while ((!stop) && it.hasNext() && coordinator.needOutboundPeers()) {
Peer cur = it.next();
if (coordinator.addPeer(cur) && it.hasNext()) {
int delay = (DELAY_MUL * r.nextInt(10)) + DELAY_MIN;

View File

@ -4,6 +4,9 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.Collator;
import java.text.DecimalFormat;
import java.util.ArrayList;
@ -690,11 +693,11 @@ public class I2PSnarkServlet extends DefaultServlet {
String refreshDel = req.getParameter("refreshDelay");
String startupDel = req.getParameter("startupDelay");
boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null;
String openTrackers = req.getParameter("openTrackers");
//String openTrackers = req.getParameter("openTrackers");
String theme = req.getParameter("theme");
_manager.updateConfig(dataDir, filesPublic, autoStart, refreshDel, startupDel,
seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts,
upLimit, upBW, useOpenTrackers, openTrackers, theme);
upLimit, upBW, useOpenTrackers, theme);
} else if ("Save2".equals(action)) {
String taction = req.getParameter("taction");
if (taction != null)
@ -768,26 +771,35 @@ public class I2PSnarkServlet extends DefaultServlet {
/** @since 0.9 */
private void processTrackerForm(String action, HttpServletRequest req) {
if (action.equals(_("Delete selected"))) {
if (action.equals(_("Delete selected")) || action.equals(_("Change open trackers"))) {
boolean changed = false;
Map<String, Tracker> trackers = _manager.getTrackerMap();
StringBuilder openBuf = new StringBuilder(128);
Enumeration e = req.getParameterNames();
while (e.hasMoreElements()) {
Object o = e.nextElement();
if (!(o instanceof String))
continue;
String k = (String) o;
if (!k.startsWith("delete_"))
continue;
k = k.substring(7);
if (trackers.remove(k) != null) {
_manager.addMessage(_("Removed") + ": " + k);
changed = true;
if (k.startsWith("delete_")) {
k = k.substring(7);
if (trackers.remove(k) != null) {
_manager.addMessage(_("Removed") + ": " + k);
changed = true;
}
} else if (k.startsWith("open_")) {
if (openBuf.length() > 0)
openBuf.append(',');
openBuf.append(k.substring(5));
}
}
if (changed) {
_manager.saveTrackerMap();
}
String newOpen = openBuf.toString();
if (!newOpen.equals(_manager.util().getOpenTrackerString())) {
_manager.saveOpenTrackers(newOpen);
}
} else if (action.equals(_("Add tracker"))) {
String name = req.getParameter("tname");
String hurl = req.getParameter("thurl");
@ -800,6 +812,11 @@ public class I2PSnarkServlet extends DefaultServlet {
Map<String, Tracker> trackers = _manager.getTrackerMap();
trackers.put(name, new Tracker(name, aurl, hurl));
_manager.saveTrackerMap();
if (req.getParameter("_add_open_") != null) {
String oldOpen = _manager.util().getOpenTrackerString();
String newOpen = oldOpen.length() <= 0 ? aurl : oldOpen + ',' + aurl;
_manager.saveOpenTrackers(newOpen);
}
} else {
_manager.addMessage(_("Enter valid tracker name and URLs"));
}
@ -808,6 +825,7 @@ public class I2PSnarkServlet extends DefaultServlet {
}
} else if (action.equals(_("Restore defaults"))) {
_manager.setDefaultTrackerMap();
_manager.saveOpenTrackers(null);
_manager.addMessage(_("Restored default trackers"));
} else {
_manager.addMessage("Unknown POST action: \"" + action + '\"');
@ -1419,7 +1437,7 @@ public class I2PSnarkServlet extends DefaultServlet {
boolean filesPublic = _manager.areFilesPublic();
boolean autoStart = _manager.shouldAutoStart();
boolean useOpenTrackers = _manager.util().shouldUseOpenTrackers();
String openTrackers = _manager.util().getOpenTrackerString();
//String openTrackers = _manager.util().getOpenTrackerString();
//int seedPct = 0;
out.write("<form action=\"/i2psnark/configure\" method=\"POST\">\n" +
@ -1521,7 +1539,7 @@ public class I2PSnarkServlet extends DefaultServlet {
"<tr><td>");
out.write(_("Up bandwidth limit"));
out.write(": <td><input type=\"text\" name=\"upBW\" class=\"r\" value=\""
+ _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" > KBps <i>");
+ _manager.util().getMaxUpBW() + "\" size=\"4\" maxlength=\"4\" > KBps <i>");
out.write(_("Half available bandwidth recommended."));
out.write("<br><a href=\"/config.jsp\" target=\"blank\">");
out.write(_("View or change router bandwidth"));
@ -1533,12 +1551,12 @@ public class I2PSnarkServlet extends DefaultServlet {
+ (useOpenTrackers ? "checked " : "")
+ "title=\"");
out.write(_("If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"));
out.write("\" > " +
out.write("\" ></td></tr>\n");
"<tr><td>");
out.write(_("Open tracker announce URLs"));
out.write(": <td><input type=\"text\" name=\"openTrackers\" value=\""
+ openTrackers + "\" size=\"50\" ><br>\n");
// "<tr><td>");
//out.write(_("Open tracker announce URLs"));
//out.write(": <td><input type=\"text\" name=\"openTrackers\" value=\""
// + openTrackers + "\" size=\"50\" ><br>\n");
//out.write("\n");
//out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
@ -1610,27 +1628,37 @@ public class I2PSnarkServlet extends DefaultServlet {
.append("</th><th>")
.append(_("Website URL"))
.append("</th><th>")
.append(_("Open Tracker?"))
.append("</th><th>")
.append(_("Announce URL"))
.append("</th></tr>\n");
List<String> openTrackers = _manager.util().getOpenTrackers();
for (Tracker t : _manager.getSortedTrackers()) {
String name = t.name;
String homeURL = t.baseURL;
String announceURL = t.announceURL.replace("&#61;", "=");
buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
.append(name).append("\">" +
.append(name).append("\" title=\"").append(_("Delete")).append("\">" +
"</td><td align=\"left\">").append(name)
.append("</td><td align=\"left\">").append(urlify(homeURL, 35))
.append("</td><td align=\"left\">").append(urlify(announceURL, 35))
.append("</td><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"open_")
.append(announceURL).append("\"");
if (openTrackers != null && openTrackers.contains(t.announceURL))
buf.append(" checked=\"checked\"");
buf.append(">" +
"</td><td align=\"left\">").append(urlify(announceURL, 35))
.append("</td></tr>\n");
}
buf.append("<tr><td align=\"center\"><b>")
.append(_("Add")).append(":</b></td>" +
"<td align=\"left\"><input type=\"text\" size=\"16\" name=\"tname\"></td>" +
"<td align=\"left\"><input type=\"text\" size=\"40\" name=\"thurl\"></td>" +
"<td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"_add_open_\"></td>" +
"<td align=\"left\"><input type=\"text\" size=\"40\" name=\"taurl\"></td></tr>\n" +
"<tr><td colspan=\"2\"></td><td colspan=\"2\" align=\"left\">\n" +
"<tr><td colspan=\"2\"></td><td colspan=\"3\" align=\"left\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"default\" value=\"").append(_("Add tracker")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"delete\" value=\"").append(_("Delete selected")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"accept\" value=\"").append(_("Change open trackers")).append("\">\n" +
// "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"reload\" value=\"").append(_("Restore defaults")).append("\">\n" +
"<input type=\"submit\" name=\"taction\" class=\"add\" value=\"").append(_("Add tracker")).append("\">\n" +
@ -1647,7 +1675,7 @@ public class I2PSnarkServlet extends DefaultServlet {
}
/**
* @param url in base32 or hex, xt must be first magnet param
* @param url in base32 or hex
* @since 0.8.4
*/
private void addMagnet(String url) {
@ -1662,7 +1690,7 @@ public class I2PSnarkServlet extends DefaultServlet {
return;
}
ihash = xt.substring("urn:btih:".length());
trackerURL = getParam("tr", url);
trackerURL = getTrackerParam(url);
name = "Magnet " + ihash;
String dn = getParam("dn", url);
if (dn != null)
@ -1698,6 +1726,9 @@ public class I2PSnarkServlet extends DefaultServlet {
_manager.addMagnet(name, ih, trackerURL, true);
}
/**
* @return first decoded parameter or null
*/
private static String getParam(String key, String uri) {
int idx = uri.indexOf('?' + key + '=');
if (idx >= 0) {
@ -1715,9 +1746,100 @@ public class I2PSnarkServlet extends DefaultServlet {
rv = rv.substring(0, idx);
else
rv = rv.trim();
return decode(rv);
}
/**
* @return all decoded parameters or null
* @since 0.9.1
*/
private static List<String> getMultiParam(String key, String uri) {
int idx = uri.indexOf('?' + key + '=');
if (idx >= 0) {
idx += key.length() + 2;
} else {
idx = uri.indexOf('&' + key + '=');
if (idx >= 0)
idx += key.length() + 2;
}
if (idx < 0 || idx > uri.length())
return null;
List<String> rv = new ArrayList();
while (true) {
String p = uri.substring(idx);
uri = p;
idx = p.indexOf('&');
if (idx >= 0)
p = p.substring(0, idx);
else
p = p.trim();
rv.add(decode(p));
idx = uri.indexOf('&' + key + '=');
if (idx < 0)
break;
idx += key.length() + 2;
}
return rv;
}
/**
* @return first valid I2P tracker or null
* @since 0.9.1
*/
private static String getTrackerParam(String uri) {
List<String> trackers = getMultiParam("tr", uri);
if (trackers == null)
return null;
for (String t : trackers) {
try {
URI u = new URI(t);
String protocol = u.getScheme();
String host = u.getHost();
if (protocol == null || host == null ||
!protocol.toLowerCase(Locale.US).equals("http") ||
!host.toLowerCase(Locale.US).endsWith(".i2p"))
continue;
return t;
} catch(URISyntaxException use) {}
}
return null;
}
/**
* Decode %xx encoding, convert to UTF-8 if necessary
* Copied from i2ptunnel LocalHTTPServer
* @since 0.9.1
*/
private static String decode(String s) {
if (!s.contains("%"))
return s;
StringBuilder buf = new StringBuilder(s.length());
boolean utf8 = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c != '%') {
buf.append(c);
} else {
try {
int val = Integer.parseInt(s.substring(++i, (++i) + 1), 16);
if ((val & 0x80) != 0)
utf8 = true;
buf.append((char) val);
} catch (IndexOutOfBoundsException ioobe) {
break;
} catch (NumberFormatException nfe) {
break;
}
}
}
if (utf8) {
try {
return new String(buf.toString().getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException uee) {}
}
return buf.toString();
}
/** copied from ConfigTunnelsHelper */
private static final String HOP = "hop";
private static final String TUNNEL = "tunnel";

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-05 19:46+0000\n"
"POT-Creation-Date: 2012-05-25 12:35+0000\n"
"PO-Revision-Date: 2012-04-27 04:54+0000\n"
"Last-Translator: blabla <blabla@trash-mail.com>\n"
"Language-Team: German (http://www.transifex.net/projects/p/I2P/language/"
@ -49,7 +49,7 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:151
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:408
msgid "Host"
msgstr "Host"
@ -58,7 +58,7 @@ msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1016
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:378
msgid "Destination"
msgstr "Ziel"
@ -223,12 +223,12 @@ msgid "HTTP bidir"
msgstr "HTTP Bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:303
msgid "Host not set"
msgstr "Host nicht gesetzt"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285
msgid "Port not set"
msgstr "Port nicht gesetzt"
@ -246,26 +246,26 @@ msgstr "Neue Proxyeinstellungen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:135
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:324
msgid "Name"
msgstr "Name"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292
msgid "Type"
msgstr "Typ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:129
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:129
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:328
msgid "Description"
msgstr "Beschreibung"
@ -291,27 +291,27 @@ msgstr "benötigt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:186
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:477
msgid "Reachable by"
msgstr "Erreichbar von"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:188
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356
msgid "Outproxies"
msgstr "Ausgehende Proxies"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:376
msgid "Tunnel Destination"
msgstr "Ziel des Tunnels"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:207
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:380
msgid "name or destination"
msgstr "Name oder Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:210
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383
msgid "b32 not recommended"
msgstr "B32-Adressen nicht empfohlen"
@ -329,14 +329,14 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:133
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:515
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517
msgid "Auto Start"
msgstr "Automatischer Start"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:521
msgid "(Check the Box for 'YES')"
msgstr "(Aktiviere das Kästchen für 'ja')"
@ -531,9 +531,9 @@ msgstr "I2CP-Adresse des Routers"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:157
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:277
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429
msgid "Port"
msgstr "Port"
@ -637,7 +637,7 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:695
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:697
msgid "Cancel"
msgstr "Abbrechen"
@ -784,179 +784,179 @@ msgstr "Zertifikat modifizieren"
msgid "Modify"
msgstr "Modifizieren"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:81
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
msgid "I2P Tunnel Manager - List"
msgstr "I2P-Tunnel-Manager - Liste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:93
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
msgid "Status Messages"
msgstr "Statusnachrichten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:97
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
msgid "Refresh"
msgstr "Auffrischen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:101
msgid "Tunnel Wizard"
msgstr "Tunnel Wizard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
msgid "Stop All"
msgstr "Alle stoppen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
msgid "Start All"
msgstr "Alle starten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
msgid "Restart All"
msgstr "Alle neustarten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:115
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117
msgid "Reload Config"
msgstr "Konfiguration neu einlesen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119
msgid "I2P Server Tunnels"
msgstr "I2P-Servertunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:144
msgid "Points at"
msgstr "Läuft auf"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:164
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:168
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:170
msgid "Preview"
msgstr "Vorschau"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:188
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:127
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:190
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:310
msgid "Status"
msgstr "Status"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:176
msgid "Base32 Address"
msgstr "Basis-32-Adresse"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:182
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
msgid "No Preview"
msgstr "Keine Vorschau"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:315
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:197
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:317
msgid "Starting..."
msgstr "Starte ..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:202
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:322
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:336
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:204
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:338
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:352
msgid "Stop"
msgstr "Stopp"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:209
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:343
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:211
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:345
msgid "Running"
msgstr "Aktiv"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:359
msgid "Stopped"
msgstr "Gestoppt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
msgid "Start"
msgstr "Start"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
msgid "New server tunnel"
msgstr "Neuer Servertunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:291
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:569
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:221
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:299
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:571
msgid "Standard"
msgstr "Standard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:409
msgid "Create"
msgstr "Erstellen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
msgid "I2P Client Tunnels"
msgstr "I2P-Klienten-Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:296
msgid "Interface"
msgstr "Interface"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:329
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:331
msgid "Standby"
msgstr "Wartestellung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375
msgid "Outproxy"
msgstr "Ausgehender Proxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:390
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:392
msgid "none"
msgstr "Keiner"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405
msgid "New client tunnel"
msgstr "Neuer Kliententunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:117
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:119
msgid "I2P Tunnel Manager - Tunnel Creation Wizard"
msgstr "I2P Tunnel Verwaltung - Tunnel aufsetz Wizard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:135
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:562
msgid "Server or client tunnel?"
msgstr "Server oder Client Tunnel ?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:564
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:143
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:566
msgid "Tunnel type"
msgstr "Tunnel Typ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:147
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:594
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:149
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:596
msgid "Tunnel name and description"
msgstr "Tunnel Name und Beschreibung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:603
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:155
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:605
msgid "Tunnel destination"
msgstr "Tunnel Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:161
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:621
msgid "Binding address and port"
msgstr "Adresse und Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:645
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:647
msgid "Tunnel auto-start"
msgstr "Tunnel automatisch starten ?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:171
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:173
msgid "Wizard completed"
msgstr "Wizard abgeschlossen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:185
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:187
msgid ""
"This wizard will take you through the various options available for creating "
"tunnels in I2P."
@ -964,7 +964,7 @@ msgstr ""
"Dieser Assisten wird durch die unterschiedlichen Optionen führen die zur "
"Erstellung von I2P Tunneln verfügbar sind."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:187
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189
msgid ""
"The first thing to decide is whether you want to create a server or a client "
"tunnel."
@ -972,7 +972,7 @@ msgstr ""
"Das erste zu entscheiden ist, ob es ein Server oder Client Tunnel werden "
"soll."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
msgid ""
"If you need to connect to a remote service, such as an IRC server inside I2P "
"or a code repository, then you will require a CLIENT tunnel."
@ -980,7 +980,7 @@ msgstr ""
"Um auf einen I2P Service innerhalb des Netzes zuzugreifen (z.b. SVN), musst "
"ein Client Tunnel erstellt werden."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
msgid ""
"On the other hand, if you wish to host a service for others to connect to "
"you'll need to create a SERVER tunnel."
@ -988,37 +988,37 @@ msgstr ""
"Wenn andere auf einen Service zugreifen sollen, muss einen Server Tunnel "
"erstellen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
msgid "Server Tunnel"
msgstr "Server Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197
msgid "Client Tunnel"
msgstr "Client Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:213
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:215
msgid "There are several types of tunnels to choose from:"
msgstr ""
"Es gibt mehrere unterschiedliche Typen von Tunneln aus denen gewählt werden "
"kann:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:221
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
msgid "Basic tunnel for connecting to a single service inside I2P."
msgstr "Standart Tunnel zur Verbindung mit einem einzelnen Service im I2P Netz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267
msgid ""
"Try this if none of the tunnel types below fit your requirements, or you "
"don't know what type of tunnel you need."
msgstr "Wenn keiner der anderen Tunneltypen den Anforderungen entspricht"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227
msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P."
msgstr ""
"Tunnel der als HTTP-Proxy fungiert, um Eepseiten im I2P Netz zu errreichen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
msgid ""
"Set your browser to use this tunnel as an http proxy, or set your "
"\"http_proxy\" environment variable for command-line applications in GNU/"
@ -1028,7 +1028,7 @@ msgstr ""
"setze deine \"http_proxy\"-Umgebungsvariable für Kommandozeilen-Anwendungen "
"in GNU/Linux."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
msgid ""
"Websites outside I2P can also be reached if an HTTP proxy within I2P is "
"known."
@ -1036,11 +1036,11 @@ msgstr ""
"Webseiten außerhalb von I2P können ebenfalls erreicht werden wenn ein HTTP-"
"Proxy innerhalb des I2P Netzes bekannt ist."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
msgid "Customised client tunnel specific for IRC connections."
msgstr "für IRC-Verbindungen zugeschnittener Kliententunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235
msgid ""
"With this tunnel type, your IRC client will be able to connect to an IRC "
"network inside I2P."
@ -1048,7 +1048,7 @@ msgstr ""
"Durch diese Art von Tunnel kann sich Ihr IRC-Klient mit einem IRC-Netzwerk "
"in I2P verbinden."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:237
msgid ""
"Each IRC network in I2P that you wish to connect to will require its own "
"tunnel. (See Also, SOCKS IRC)"
@ -1056,11 +1056,11 @@ msgstr ""
"Jedes IRC-Netzwerk, mit dem du dich verbinden willst, benötigt einen eigenen "
"IRC-Tunnel. (Siehe auch SOCKS-IRC)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:237
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239
msgid "A tunnel that implements the SOCKS protocol."
msgstr "ein Tunnel, der das SOCKS-Protokoll implementiert"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
msgid ""
"This enables both TCP and UDP connections to be made through a SOCKS "
"outproxy within I2P."
@ -1068,7 +1068,7 @@ msgstr ""
"Dies aktiviert TCP und UDP Verbindungen, die durch ein Socks-Outproxy in I2P "
"gemacht werden können."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:243
msgid ""
"A client tunnel implementing the SOCKS protocol, which is customised for "
"connecting to IRC networks."
@ -1076,7 +1076,7 @@ msgstr ""
"Ein Client Tunnel der das Socks-Protokoll implementiert, das speziell für "
"die Verbindung zu IRC-Servern angepasst wurde."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245
msgid ""
"With this tunnel type, IRC networks in I2P can be reached by typing the I2P "
"address into your IRC client, and configuring the IRC client to use this "
@ -1086,7 +1086,7 @@ msgstr ""
"die I2P-Adresse in den IRC-Klienten eingibt und selbigen veranlasst, als "
"Proxy den SOCKS-Tunnel zu verwenden."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247
msgid ""
"This means that only one I2P tunnel is required rather than a separate "
"tunnel per IRC network."
@ -1094,7 +1094,7 @@ msgstr ""
"Das heißt, es wird nur noch ein I2P-Tunnel benötigt, und nicht mehr je ein "
"Tunnel für jedes IRC-Netzwerk."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249
msgid ""
"IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P "
"is known, though it depends on whether or not the outproxy has been blocked "
@ -1104,11 +1104,11 @@ msgstr ""
"vorausgesetzt, ein vom betreffenden IRC-Netzwerk nicht blockierter SOCKS-"
"Outproxy in I2P ist bekannt."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251
msgid "A client tunnel that implements the HTTP CONNECT command."
msgstr "ein Kliententunnel, in dem der HTTP-CONNECT-Befehl implementiert wurde"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
msgid ""
"This enables TCP connections to be made through an HTTP outproxy, assuming "
"the proxy supports the CONNECT command."
@ -1116,25 +1116,25 @@ msgstr ""
"Dies erlaubt das Aufbauen von TCP-Verbindungen über einen HTTP-Outproxy, "
"vorausgessetzt, der Proxy unterstützt dies."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:255
msgid "A customised client tunnel for Streamr."
msgstr "ein spezieller Kliententunnel für Streamr"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
msgid "A basic server tunnel for hosting a generic service inside I2P."
msgstr ""
"ein einfacher Servertunnel für die Bereitstellung allgemeiner Dienste im I2P-"
"Netz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269
msgid "A server tunnel that is customised for HTTP connections."
msgstr "ein auf HTTP-Verbindungen zugeschnittener Servertunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271
msgid "Use this tunnel type if you want to host an eepsite."
msgstr "Benutz diesen Tunnel Typ um eine Eepsite zu hosten."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273
msgid ""
"A customised server tunnel that can both serve HTTP data and connect to "
"other server tunnels."
@ -1142,17 +1142,17 @@ msgstr ""
"Ein modifizierter Server Tunnel welcher HTTP Daten senden, als auch zu "
"anderen Server Tunnel verbinden kann."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:275
msgid "This tunnel type is predominantly used when running a Seedless server."
msgstr ""
"Dieser Tunneltyp kommt vorranging beim Betreiben eines Seedless-Servers zum "
"Einsatz."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:275
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
msgid "A customised server tunnel for hosting IRC networks inside I2P."
msgstr "Ein angepasster Servertunnel, um IRC-Netzwerke im I2P zu betreiben."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
msgid ""
"Usually, a separate tunnel needs to be created for each IRC server that is "
"to be accessible inside I2P."
@ -1160,15 +1160,15 @@ msgstr ""
"Normalerweise muss ein anderer Tunnel für jeden IRC Server erstellt werden, "
"auf welchen durch I2P zugegriffen werden soll."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:281
msgid "A customised server tunnel for Streamr."
msgstr "Ein modifizierter Server Tunnel für Streamr."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:318
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320
msgid "Choose a name and description for your tunnel."
msgstr "Wähle einen Namen und eine Beschreibung für deinen Tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322
msgid ""
"These can be anything you want - they are just for ease of identifying the "
"tunnel in the routerconsole."
@ -1176,7 +1176,7 @@ msgstr ""
"Du kannst es nennen wie du willst, der Name dient nur des leichten Auffinden "
"in der Router Console."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:352
msgid ""
"If you know of any outproxies for this type of tunnel (either HTTP or "
"SOCKS), fill them in below."
@ -1184,17 +1184,17 @@ msgstr ""
"Wenn du andere Outproxys dieses Typs kennst (entweder HTTP oder SOCKS), "
"kannst du sie hier eintragen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
msgid "Separate multiple proxies with commas."
msgstr "Trenne mehrere Proxies mit Kommas."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:372
msgid ""
"Type in the I2P destination of the service that this client tunnel should "
"connect to."
msgstr "Gib das Ziel des I2P Dienstes ein zu dem dieser Tunnel verbinden soll."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:374
msgid ""
"This could be the full base 64 destination key, or an I2P URL from your "
"address book."
@ -1202,7 +1202,7 @@ msgstr ""
"Es kann der volle Base64 Ziel Schlüssel, sowohl als auch eine I2P URL aus "
"deinem Adressbuch sein."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:402
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:404
msgid ""
"This is the IP that your service is running on, this is usually on the same "
"machine so 127.0.0.1 is autofilled."
@ -1210,19 +1210,19 @@ msgstr ""
"Dies ist die IP auf der der Service läuft, normalerweise ist dies der "
"gleiche Computer, somit ist 127.0.0.1 automatisch eingetragen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:427
msgid "This is the port that the service is accepting connections on."
msgstr "Dies ist der Port auf dem der Service Verbindungen akzeptiert."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:446
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448
msgid "This is the port that the client tunnel will be accessed from locally."
msgstr "Dies ist der Port den der Client Tunnel lokal verwendet."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450
msgid "This is also the client port for the HTTPBidir server tunnel."
msgstr "Dies ist auch der Client Port für den HTTPBidir Server Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:469
msgid ""
"How do you want this tunnel to be accessed? By just this machine, your "
"entire subnet, or external internet?"
@ -1230,17 +1230,17 @@ msgstr ""
"Wie soll der Tunnel erreichbar sein? Nur von diesem Computer, dem gesamten "
"Subnetz, oder dem Internet ?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:469
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:471
msgid "You will most likely want to just allow 127.0.0.1"
msgstr "Hauptsächlich will man 127.0.0.1 erlauben"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:513
msgid ""
"The I2P router can automatically start this tunnel for you when the router "
"is started."
msgstr "Der I2P-Router kann diesen Tunnel beim Start automatisch mitstarten."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:513
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:515
msgid ""
"This can be useful for frequently-used tunnels (especially server tunnels), "
"but for tunnels that are only used occassionally it would mean that the I2P "
@ -1250,12 +1250,12 @@ msgstr ""
"Bei Tunneln, die nur sporadisch genutzt werden, bedeutet dies jedoch den "
"unnötigen Aufbau und Unterhalt ungenutzter Tunnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:539
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:541
msgid "The wizard has now collected enough information to create your tunnel."
msgstr ""
"Der Wizard hat nun genug Informationen für die Tunnelerstellung gesammelt."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543
msgid ""
"Upon clicking the Save button below, the wizard will set up the tunnel, and "
"take you back to the main I2PTunnel page."
@ -1263,7 +1263,7 @@ msgstr ""
"Nach Klicken des \"Speichern\"-Knopfes wird der Tunnel eingerichtet und du "
"gelangst wieder auf die I2PTunel Hauptseite."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:546
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548
msgid ""
"Because you chose to automatically start the tunnel when the router starts, "
"you don't have to do anything further."
@ -1271,11 +1271,11 @@ msgstr ""
"Weil Sie ausgewählt haben, den Tunnel automatisch zu starten, müssen Sie "
"nichts weiteres machen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550
msgid "The router will start the tunnel once it has been set up."
msgstr "Der Router startet den Tunnel sobald er eingerichtet ist."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:554
msgid ""
"Because you chose not to automatically start the tunnel, you will have to "
"manually start it."
@ -1283,7 +1283,7 @@ msgstr ""
"Weil Sie ausgewählt haben, den Tunnel nicht automatisch zu starten, müssen "
"Sie ihn manuell starten."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:554
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:556
msgid ""
"You can do this by clicking the Start button on the main page which "
"corresponds to the new tunnel."
@ -1291,11 +1291,11 @@ msgstr ""
"Klicke dazu auf der Hauptseite auf den entsprechenden Start-Knopf des neuen "
"Tunnels."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560
msgid "Below is a summary of the options you chose:"
msgstr "Zusammenfassung der gewählten Optionen:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:656
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:658
msgid ""
"Alongside these basic settings, there are a number of advanced options for "
"tunnel configuration."
@ -1303,7 +1303,7 @@ msgstr ""
"Neben diesen grundlegenden Einstellungen gibt es eine Reihe fortgeschritener "
"Tunneloptionen."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:658
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:660
msgid ""
"The wizard will set reasonably sensible default values for these, but you "
"can view and/or edit these by clicking on the tunnel's name in the main "
@ -1313,18 +1313,18 @@ msgstr ""
"Tunnelnamen auf der I2PTunnel-Hauptseite eingesehen und/oder bearbeitet "
"werden können."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:700
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:702
msgid "Previous"
msgstr "Vorheriges"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:708
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:710
msgid "Save Tunnel"
msgstr "Speichere Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:714
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:716
msgid "Finish"
msgstr "Abschließen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:720
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:722
msgid "Next"
msgstr "Nächstes"

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-05 19:49+0000\n"
"POT-Creation-Date: 2012-05-25 12:34+0000\n"
"PO-Revision-Date: 2012-04-21 15:03+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
@ -48,7 +48,7 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:151
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:408
msgid "Host"
msgstr "Host"
@ -57,7 +57,7 @@ msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1016
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:378
msgid "Destination"
msgstr "Destino"
@ -223,12 +223,12 @@ msgid "HTTP bidir"
msgstr "HTTP bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:555
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:303
msgid "Host not set"
msgstr "Host no establecido"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:559
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285
msgid "Port not set"
msgstr "Puerto no establecido"
@ -246,26 +246,26 @@ msgstr "Nueva configuración de proxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:135
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:324
msgid "Name"
msgstr "Nombre"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292
msgid "Type"
msgstr "Tipo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:129
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:129
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:328
msgid "Description"
msgstr "Descripción"
@ -291,27 +291,27 @@ msgstr "requerido"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:186
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:475
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:477
msgid "Reachable by"
msgstr "Accesible por"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:188
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:356
msgid "Outproxies"
msgstr "Outproxis"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:376
msgid "Tunnel Destination"
msgstr "Túnel del Destino"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:207
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:378
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:380
msgid "name or destination"
msgstr "nombre o destino"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:210
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383
msgid "b32 not recommended"
msgstr "b32 no recomendado"
@ -329,14 +329,14 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:133
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:515
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517
msgid "Auto Start"
msgstr "Autoarranque"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:521
msgid "(Check the Box for 'YES')"
msgstr "(Marca la casilla para \"SÍ\")"
@ -535,9 +535,9 @@ msgstr "Dirección I2CP del router"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:157
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:277
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429
msgid "Port"
msgstr "Puerto"
@ -641,7 +641,7 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:525
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:695
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:697
msgid "Cancel"
msgstr "Cancelar"
@ -788,179 +788,179 @@ msgstr "Modificar Certificado"
msgid "Modify"
msgstr "Modificar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:81
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
msgid "I2P Tunnel Manager - List"
msgstr "Gestor de túneles I2P - Lista"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:93
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
msgid "Status Messages"
msgstr "Mensajes de estado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:97
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
msgid "Refresh"
msgstr "Actualizar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:101
msgid "Tunnel Wizard"
msgstr "Asistente de túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
msgid "Stop All"
msgstr "Detener todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
msgid "Start All"
msgstr "Iniciar todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
msgid "Restart All"
msgstr "Reiniciar todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:115
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117
msgid "Reload Config"
msgstr "Actualizar configuración"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:117
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:119
msgid "I2P Server Tunnels"
msgstr "Túneles de servidor I2P"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:144
msgid "Points at"
msgstr "Apunta a"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:123
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:164
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:168
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:170
msgid "Preview"
msgstr "Vista previa"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:125
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:188
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:127
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:190
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:310
msgid "Status"
msgstr "Estado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:176
msgid "Base32 Address"
msgstr "Dirección Base32"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:182
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
msgid "No Preview"
msgstr "Sin vista previa"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:315
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:197
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:317
msgid "Starting..."
msgstr "Iniciando..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:202
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:322
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:336
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:204
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:338
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:352
msgid "Stop"
msgstr "Detener"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:209
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:343
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:211
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:345
msgid "Running"
msgstr "Ejecutándose"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:359
msgid "Stopped"
msgstr "Detenido"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
msgid "Start"
msgstr "Iniciar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
msgid "New server tunnel"
msgstr "Nuevo servidor de túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:291
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:569
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:221
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:299
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:571
msgid "Standard"
msgstr "Estándar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:409
msgid "Create"
msgstr "Crear"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
msgid "I2P Client Tunnels"
msgstr "Túneles de cliente I2P"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:296
msgid "Interface"
msgstr "Interfaz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:329
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:331
msgid "Standby"
msgstr "En espera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375
msgid "Outproxy"
msgstr "Puerta de salida"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:390
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:392
msgid "none"
msgstr "ninguno"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:405
msgid "New client tunnel"
msgstr "Nuevo túnel cliente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:117
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:119
msgid "I2P Tunnel Manager - Tunnel Creation Wizard"
msgstr "Gestor de túneles I2P - Asistente para la creación de túneles"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:135
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:562
msgid "Server or client tunnel?"
msgstr "Túnel de cliente o servidor?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:141
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:564
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:143
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:566
msgid "Tunnel type"
msgstr "Tipo de túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:147
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:594
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:149
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:596
msgid "Tunnel name and description"
msgstr "Nombre y descripción del túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:603
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:155
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:605
msgid "Tunnel destination"
msgstr "Destino del túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:161
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:621
msgid "Binding address and port"
msgstr "Dirección de enlace y puerto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:165
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:645
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:647
msgid "Tunnel auto-start"
msgstr "Auto-iniciar túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:171
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:173
msgid "Wizard completed"
msgstr "Asistente completado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:185
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:187
msgid ""
"This wizard will take you through the various options available for creating "
"tunnels in I2P."
@ -968,7 +968,7 @@ msgstr ""
"Este asistente le guiará a través de las distintas opciones disponibles para "
"la creación de túneles en I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:187
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189
msgid ""
"The first thing to decide is whether you want to create a server or a client "
"tunnel."
@ -976,7 +976,7 @@ msgstr ""
"Lo primero que debe decidir es si se desea crear un túnel de servidor o de "
"cliente."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:189
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
msgid ""
"If you need to connect to a remote service, such as an IRC server inside I2P "
"or a code repository, then you will require a CLIENT tunnel."
@ -984,7 +984,7 @@ msgstr ""
"Si necesita conectarse a un servicio remoto, como un servidor de IRC dentro "
"de I2P o un repositorio de código, va a requerir un túnel CLIENTE."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
msgid ""
"On the other hand, if you wish to host a service for others to connect to "
"you'll need to create a SERVER tunnel."
@ -992,24 +992,24 @@ msgstr ""
"Por otro lado, si desea hospedar un servicio para que otros puedan "
"conectarse a usted, necesitará crear un túnel SERVIDOR."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:193
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
msgid "Server Tunnel"
msgstr "Túnel de servidor"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:197
msgid "Client Tunnel"
msgstr "Túnel de cliente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:213
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:215
msgid "There are several types of tunnels to choose from:"
msgstr "Hay varios tipos de túneles para elegir:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:221
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
msgid "Basic tunnel for connecting to a single service inside I2P."
msgstr "Túnel básico para la conexión a un servicio dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267
msgid ""
"Try this if none of the tunnel types below fit your requirements, or you "
"don't know what type of tunnel you need."
@ -1017,11 +1017,11 @@ msgstr ""
"Pruebe esto si ninguno de los tipos de túneles a continuación se ajustan a "
"sus requerimientos, o si no sabe qué tipo de túnel necesita."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:225
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227
msgid "Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P."
msgstr "Túnel que actúa como un proxy HTTP para llegar a eepsites dentro I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
msgid ""
"Set your browser to use this tunnel as an http proxy, or set your "
"\"http_proxy\" environment variable for command-line applications in GNU/"
@ -1031,7 +1031,7 @@ msgstr ""
"su variable de entorno \"http_proxy\" para aplicaciones de línea de comandos "
"en GNU / Linux."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:229
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
msgid ""
"Websites outside I2P can also be reached if an HTTP proxy within I2P is "
"known."
@ -1039,11 +1039,11 @@ msgstr ""
"También es posible llegar a sitios web de fuera de I2P si se conoce algún "
"proxy HTTP dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:231
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
msgid "Customised client tunnel specific for IRC connections."
msgstr "Túnel de cliente personalizado específicamente para conexiones de IRC."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:233
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235
msgid ""
"With this tunnel type, your IRC client will be able to connect to an IRC "
"network inside I2P."
@ -1051,7 +1051,7 @@ msgstr ""
"Con este tipo de túnel, su cliente de IRC será capaz de conectarse a una red "
"de IRC dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:237
msgid ""
"Each IRC network in I2P that you wish to connect to will require its own "
"tunnel. (See Also, SOCKS IRC)"
@ -1059,11 +1059,11 @@ msgstr ""
"Cada red IRC en I2P a la que desee conectarse requerirá su propio túnel. "
"(Véase también, SOCKS IRC)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:237
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239
msgid "A tunnel that implements the SOCKS protocol."
msgstr "Un túnel que implementa el protocolo SOCKS."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
msgid ""
"This enables both TCP and UDP connections to be made through a SOCKS "
"outproxy within I2P."
@ -1071,7 +1071,7 @@ msgstr ""
"Esto permite que las conexiones TCP y UDP se hagan a través de un outproxy "
"SOCKS que esté dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:241
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:243
msgid ""
"A client tunnel implementing the SOCKS protocol, which is customised for "
"connecting to IRC networks."
@ -1079,7 +1079,7 @@ msgstr ""
"Un túnel de cliente que implementa el protocolo SOCKS, personalizado para la "
"conexión con redes IRC."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245
msgid ""
"With this tunnel type, IRC networks in I2P can be reached by typing the I2P "
"address into your IRC client, and configuring the IRC client to use this "
@ -1089,7 +1089,7 @@ msgstr ""
"escribiendo directamente la dirección I2P en el cliente de IRC, y "
"configurando el cliente de IRC para utilizar este túnel SOCKS."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247
msgid ""
"This means that only one I2P tunnel is required rather than a separate "
"tunnel per IRC network."
@ -1097,7 +1097,7 @@ msgstr ""
"Esto significa que sólo es necesario un único túnel I2P en lugar de un túnel "
"distinto por cada red IRC."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249
msgid ""
"IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P "
"is known, though it depends on whether or not the outproxy has been blocked "
@ -1107,11 +1107,11 @@ msgstr ""
"SOCKS en I2P, aunque depende de si el outproxy ha sido bloqueado por la red "
"IRC."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251
msgid "A client tunnel that implements the HTTP CONNECT command."
msgstr "Un túnel de cliente que implementa el comando HTTP CONNECT."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
msgid ""
"This enables TCP connections to be made through an HTTP outproxy, assuming "
"the proxy supports the CONNECT command."
@ -1119,24 +1119,24 @@ msgstr ""
"Esto permite hacer conexiones TCP a través de un outproxy HTTP, suponiendo "
"que el servidor proxy admita el comando CONNECT."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:253
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:255
msgid "A customised client tunnel for Streamr."
msgstr "Un túnel de cliente personalizado para Streamr."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:263
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:265
msgid "A basic server tunnel for hosting a generic service inside I2P."
msgstr ""
"Un túnel básico de servidor para alojar un servicio genérico dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:267
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269
msgid "A server tunnel that is customised for HTTP connections."
msgstr "Un túnel de servidor personalizado para conexiones HTTP."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271
msgid "Use this tunnel type if you want to host an eepsite."
msgstr "Utilice este tipo de túnel si desea alojar una eepsite."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:271
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273
msgid ""
"A customised server tunnel that can both serve HTTP data and connect to "
"other server tunnels."
@ -1144,18 +1144,18 @@ msgstr ""
"Un túnel de servidor personalizado que puede servir tanto datos HTTP como "
"conectar a otros túneles de servidor."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:275
msgid "This tunnel type is predominantly used when running a Seedless server."
msgstr ""
"Este tipo de túnel se utiliza principalmente cuando se ejecuta un servidor "
"sin semillas (Seedless)."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:275
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
msgid "A customised server tunnel for hosting IRC networks inside I2P."
msgstr ""
"Un túnel de servidor personalizado para alojar redes IRC dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:277
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
msgid ""
"Usually, a separate tunnel needs to be created for each IRC server that is "
"to be accessible inside I2P."
@ -1163,15 +1163,15 @@ msgstr ""
"Normalmente, se debe crear un túnel por separado para cada servidor IRC, que "
"será accesible dentro de I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:279
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:281
msgid "A customised server tunnel for Streamr."
msgstr "Un túnel de servidor personalizado para Streamr."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:318
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320
msgid "Choose a name and description for your tunnel."
msgstr "Elegir un nombre y una descripción para su túnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322
msgid ""
"These can be anything you want - they are just for ease of identifying the "
"tunnel in the routerconsole."
@ -1179,7 +1179,7 @@ msgstr ""
"Estos pueden ser lo que se quiera - son sólo para facilitar la "
"identificación del túnel en la consola del router."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:352
msgid ""
"If you know of any outproxies for this type of tunnel (either HTTP or "
"SOCKS), fill them in below."
@ -1187,11 +1187,11 @@ msgstr ""
"Si conoce algún outproxie para este tipo de túnel (HTTP o SOCKS), rellénelo "
"a continuación."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:354
msgid "Separate multiple proxies with commas."
msgstr "Separe múltiples servidores proxy con comas."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:372
msgid ""
"Type in the I2P destination of the service that this client tunnel should "
"connect to."
@ -1199,7 +1199,7 @@ msgstr ""
"Introduzca el destino de I2P del servicio al que este túnel de cliente debe "
"conectarse."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:374
msgid ""
"This could be the full base 64 destination key, or an I2P URL from your "
"address book."
@ -1207,7 +1207,7 @@ msgstr ""
"Este puede ser la clave de destino en base 64 o una dirección URL I2P de su "
"libreta de direcciones."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:402
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:404
msgid ""
"This is the IP that your service is running on, this is usually on the same "
"machine so 127.0.0.1 is autofilled."
@ -1215,21 +1215,21 @@ msgstr ""
"Esta es la IP en la que el servicio se está ejecutando, esto suele ser en la "
"misma máquina, por lo que se ha auto-rellenado con 127.0.0.1 "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:427
msgid "This is the port that the service is accepting connections on."
msgstr ""
"Este es el puerto por el que el servicio está aceptando conexiones entrantes."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:446
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448
msgid "This is the port that the client tunnel will be accessed from locally."
msgstr ""
"Este es el puerto por el que se accederá al túnel de cliente localmente."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450
msgid "This is also the client port for the HTTPBidir server tunnel."
msgstr "También es el puerto de cliente para el túnel de servidor HTTPBidir."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:469
msgid ""
"How do you want this tunnel to be accessed? By just this machine, your "
"entire subnet, or external internet?"
@ -1237,11 +1237,11 @@ msgstr ""
"¿Cómo quiere que se acceda a este túnel? ¿Sólo esta máquina, su subred "
"entera, o todo el internet externo?"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:469
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:471
msgid "You will most likely want to just allow 127.0.0.1"
msgstr "Lo más probable es que desee permitir sólo 127.0.0.1"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:513
msgid ""
"The I2P router can automatically start this tunnel for you when the router "
"is started."
@ -1249,7 +1249,7 @@ msgstr ""
"El router I2P puede activar automáticamente este túnel cuando el router se "
"inicie"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:513
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:515
msgid ""
"This can be useful for frequently-used tunnels (especially server tunnels), "
"but for tunnels that are only used occassionally it would mean that the I2P "
@ -1260,12 +1260,12 @@ msgstr ""
"ocasionalmente, significaría que el router I2P está creando y manteniendo "
"túneles innecesarios."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:539
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:541
msgid "The wizard has now collected enough information to create your tunnel."
msgstr ""
"El asistente ya ha recogido suficiente información para crear el túnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:541
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:543
msgid ""
"Upon clicking the Save button below, the wizard will set up the tunnel, and "
"take you back to the main I2PTunnel page."
@ -1273,7 +1273,7 @@ msgstr ""
"Al hacer clic en el botón Guardar a continuación, el asistente creará el "
"túnel, y le llevará de vuelta a la página principal de túneles I2P."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:546
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548
msgid ""
"Because you chose to automatically start the tunnel when the router starts, "
"you don't have to do anything further."
@ -1281,11 +1281,11 @@ msgstr ""
"Como ha decidido iniciar automáticamente el túnel cuando el router se "
"inicie, no tiene que hacer nada más."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550
msgid "The router will start the tunnel once it has been set up."
msgstr "El router iniciará el túnel una vez haya sido establecido."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:554
msgid ""
"Because you chose not to automatically start the tunnel, you will have to "
"manually start it."
@ -1293,7 +1293,7 @@ msgstr ""
"Como usted ha decidido no iniciar automáticamente el túnel, tendrá que "
"iniciarlo de forma manual."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:554
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:556
msgid ""
"You can do this by clicking the Start button on the main page which "
"corresponds to the new tunnel."
@ -1301,11 +1301,11 @@ msgstr ""
"Esto se puede hacer haciendo clic en el botón Iniciar en la página principal "
"que corresponde al nuevo túnel."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560
msgid "Below is a summary of the options you chose:"
msgstr "A continuación se muestra un resumen de las opciones que ha elegido:"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:656
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:658
msgid ""
"Alongside these basic settings, there are a number of advanced options for "
"tunnel configuration."
@ -1313,7 +1313,7 @@ msgstr ""
"Junto a estos valores básicos, hay una serie de opciones avanzadas para la "
"configuración de túneles."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:658
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:660
msgid ""
"The wizard will set reasonably sensible default values for these, but you "
"can view and/or edit these by clicking on the tunnel's name in the main "
@ -1323,18 +1323,18 @@ msgstr ""
"defecto, pero se pueden ver y/o editar haciendo clic en el nombre del túnel "
"en la página de túneles I2P principal."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:700
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:702
msgid "Previous"
msgstr "Anterior"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:708
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:710
msgid "Save Tunnel"
msgstr "Guardar Túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:714
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:716
msgid "Finish"
msgstr "Finalizar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:720
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:722
msgid "Next"
msgstr "Siguiente"

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,6 @@ public class ConfigNetHandler extends FormHandler {
}
public void setSave(String moo) { _saveRequested = true; }
public void setEnabletimesync(String moo) { }
public void setRecheckReachability(String moo) { _recheckReachabilityRequested = true; }
public void setRequireIntroductions(String moo) { _requireIntroductions = true; }
public void setDynamicKeys(String moo) { _dynamicKeys = true; }
@ -289,10 +288,6 @@ public class ConfigNetHandler extends FormHandler {
removes.add(UDPTransport.PROP_FORCE_INTRODUCERS);
}
// Time sync enable, means NOT disabled
// Hmm router sets this at startup, not required here
//changes.put(Timestamper.PROP_DISABLED, "false");
// Hidden in the GUI
//LoadTestManager.setEnableLoadTesting(_context, _enableLoadTesting);
}

View File

@ -9,7 +9,6 @@ import net.i2p.router.Router;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.udp.UDPAddress;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.time.Timestamper;
import net.i2p.util.Addresses;
public class ConfigNetHelper extends HelperBase {
@ -65,14 +64,6 @@ public class ConfigNetHelper extends HelperBase {
return "" + _context.getProperty(UDPTransport.PROP_INTERNAL_PORT, UDPTransport.DEFAULT_INTERNAL_PORT);
}
public String getEnableTimeSyncChecked() {
boolean disabled = _context.getBooleanProperty(Timestamper.PROP_DISABLED);
if (disabled)
return "";
else
return CHECKED;
}
/** @param prop must default to false */
public String getChecked(String prop) {
if (_context.getBooleanProperty(prop))

View File

@ -11,8 +11,27 @@ public class NetDbHelper extends HelperBase {
private int _full;
private boolean _lease;
private boolean _debug;
private boolean _graphical;
public NetDbHelper() {}
private static final String PROP_DEBUG = "routerconsole.debug";
private static final String titles[] =
{_x("Summary"), // 0
_x("Local Router"), // 1
_x("Router Lookup"), // 2
_x("All Routers"), // 3
_x("All Routers with Full Stats"), // 4
"LeaseSet Debug", // 5
_x("LeaseSets") }; // 6
private static final String links[] =
{"", // 0
"?r=.", // 1
"", // 2
"?f=2", // 3
"?f=1", // 4
"?l=2", // 5
"?l=1" }; // 6
public void setRouter(String r) {
if (r != null)
@ -30,30 +49,88 @@ public class NetDbHelper extends HelperBase {
_lease = _debug || "1".equals(l);
}
/**
* call for non-text-mode browsers
* @since 0.9.1
*/
public void allowGraphical() {
_graphical = true;
}
/**
* storeWriter() must be called previously
*/
public String getNetDbSummary() {
NetDbRenderer renderer = new NetDbRenderer(_context);
try {
if (_out != null) {
if (_routerPrefix != null)
renderer.renderRouterInfoHTML(_out, _routerPrefix);
else if (_lease)
renderer.renderLeaseSetHTML(_out, _debug);
else
renderer.renderStatusHTML(_out, _full);
return "";
} else {
ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
if (_routerPrefix != null)
renderer.renderRouterInfoHTML(new OutputStreamWriter(baos), _routerPrefix);
else if (_lease)
renderer.renderLeaseSetHTML(new OutputStreamWriter(baos), _debug);
else
renderer.renderStatusHTML(new OutputStreamWriter(baos), _full);
return new String(baos.toByteArray());
}
renderNavBar();
if (_routerPrefix != null)
renderer.renderRouterInfoHTML(_out, _routerPrefix);
else if (_lease)
renderer.renderLeaseSetHTML(_out, _debug);
else
renderer.renderStatusHTML(_out, _full);
} catch (IOException ioe) {
ioe.printStackTrace();
return "";
}
return "";
}
/**
* @since 0.9.1
*/
private int getTab() {
if (_debug)
return 5;
if (_lease)
return 6;
if (".".equals(_routerPrefix))
return 1;
if (_routerPrefix != null)
return 2;
if (_full == 2)
return 3;
if (_full == 1)
return 4;
return 0;
}
/**
* @since 0.9.1
*/
private void renderNavBar() throws IOException {
StringBuilder buf = new StringBuilder(1024);
buf.append("<div class=\"confignav\" id=\"confignav\">");
// 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>");
int tab = getTab();
for (int i = 0; i < titles.length; i++) {
if (i == 2 && tab != 2)
continue; // can't nav to lookup
if (i == 5 && !_context.getBooleanProperty(PROP_DEBUG))
continue;
if (i == tab) {
// 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=\"netdb").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
}
if (span)
buf.append(" </span>\n");
else if (i != titles.length - 1)
buf.append(" |\n");
}
if (!span)
buf.append("</center>");
buf.append("</div>");
_out.write(buf.toString());
}
}

View File

@ -75,7 +75,6 @@ public class NetDbRenderer {
public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
StringBuilder buf = new StringBuilder(4*1024);
buf.append("<h2>" + _("Network Database RouterInfo Lookup") + "</h2>\n");
if (".".equals(routerPrefix)) {
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
} else {
@ -102,12 +101,8 @@ public class NetDbRenderer {
*/
public void renderLeaseSetHTML(Writer out, boolean debug) throws IOException {
StringBuilder buf = new StringBuilder(4*1024);
buf.append("<h2>" + _("Network Database Contents") + "</h2>\n");
buf.append("<a href=\"netdb\">" + _("View RouterInfo") + "</a>");
buf.append("<h3>").append(_("LeaseSets"));
if (debug)
buf.append(" - Debug mode - Sorted by hash distance, closest first");
buf.append("</h3>\n");
buf.append("<p>Debug mode - Sorted by hash distance, closest first</p>\n");
Hash ourRKey;
Set<LeaseSet> leases;
DecimalFormat fmt;
@ -233,7 +228,6 @@ public class NetDbRenderer {
* @param mode 0: our info and charts only; 1: full routerinfos and charts; 2: abbreviated routerinfos and charts
*/
public void renderStatusHTML(Writer out, int mode) throws IOException {
out.write("<h2>" + _("Network Database Contents") + " (<a href=\"netdb?l=1\">" + _("View LeaseSets") + "</a>)</h2>\n");
if (!_context.netDb().isInitialized()) {
out.write(_("Not initialized"));
out.flush();
@ -244,12 +238,6 @@ public class NetDbRenderer {
boolean shortStats = mode == 2;
boolean showStats = full || shortStats;
Hash us = _context.routerHash();
out.write("<a name=\"routers\" ></a><h3>" + _("Routers") + " (<a href=\"netdb");
if (full || !showStats)
out.write("?f=2#routers\" >" + _("Show all routers"));
else
out.write("?f=1#routers\" >" + _("Show all routers with full stats"));
out.write("</a>)</h3>\n");
StringBuilder buf = new StringBuilder(8192);
RouterInfo ourInfo = _context.router().getRouterInfo();
@ -365,11 +353,10 @@ public class NetDbRenderer {
buf.append("<a name=\"our-info\" ></a><b>" + _("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n");
} else {
buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n");
if (full) {
buf.append("[<a href=\"netdb\" >Back</a>]</th></tr><tr><td>\n");
} else {
buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_("Full entry")).append("</a>]</th></tr><tr><td>\n");
if (!full) {
buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_("Full entry")).append("</a>]");
}
buf.append("</th></tr><tr><td>\n");
}
long age = _context.clock().now() - info.getPublished();

View File

@ -23,16 +23,21 @@ import net.i2p.stat.RateStat;
*
*/
class ProfileOrganizerRenderer {
private RouterContext _context;
private ProfileOrganizer _organizer;
private ProfileComparator _comparator;
private final RouterContext _context;
private final ProfileOrganizer _organizer;
private final ProfileComparator _comparator;
public ProfileOrganizerRenderer(ProfileOrganizer organizer, RouterContext context) {
_context = context;
_organizer = organizer;
_comparator = new ProfileComparator();
}
public void renderStatusHTML(Writer out, boolean full) throws IOException {
/**
* @param mode 0 = high cap; 1 = all; 2 = floodfill
*/
public void renderStatusHTML(Writer out, int mode) throws IOException {
boolean full = mode == 1;
Set<Hash> peers = _organizer.selectAllPeers();
long now = _context.clock().now();
@ -68,7 +73,13 @@ class ProfileOrganizerRenderer {
int reliable = 0;
int integrated = 0;
StringBuilder buf = new StringBuilder(16*1024);
buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
////
//// don't bother reindenting
////
if (mode < 2) {
//buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n');
if (older > 0)
buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n');
@ -181,8 +192,13 @@ class ProfileOrganizerRenderer {
}
buf.append("</table>");
buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers"))
.append(" (").append(integratedPeers.size()).append(")</h2>\n");
////
//// don't bother reindenting
////
} else {
//buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers"))
// .append(" (").append(integratedPeers.size()).append(")</h2>\n");
buf.append("<table>");
buf.append("<tr>");
buf.append("<th class=\"smallhead\">").append(_("Peer")).append("</th>");
@ -247,6 +263,12 @@ class ProfileOrganizerRenderer {
}
buf.append("</table>");
////
//// don't bother reindenting
////
}
if (mode < 2) {
buf.append("<h3>").append(_("Thresholds")).append("</h3>");
buf.append("<p><b>").append(_("Speed")).append(":</b> ").append(num(_organizer.getSpeedThreshold()))
.append(" (").append(fast).append(' ').append(_("fast peers")).append(")<br>");
@ -262,6 +284,12 @@ class ProfileOrganizerRenderer {
buf.append("<li><b>").append(_("integration")).append("</b>: ").append(_("how many new peers have they told us about lately?")).append("</li>");
buf.append("<li><b>").append(_("status")).append("</b>: ").append(_("is the peer banned, or unreachable, or failing tunnel tests?")).append("</li>");
buf.append("</ul>");
////
//// don't bother reindenting
////
} // mode < 2
out.write(buf.toString());
out.flush();
}

View File

@ -4,12 +4,52 @@ import java.io.IOException;
public class ProfilesHelper extends HelperBase {
private boolean _full;
private int _full;
private boolean _graphical;
public ProfilesHelper() {}
private static final String titles[] =
{_x("High Capacity"), // 0
_x("Floodfill "), // 1
_x("Banned"), // 2
_x("All"), }; // 3
private static final String links[] =
{"", // 0
"?f=2", // 1
"?f=3", // 2
"?f=1" }; // 3
public void setFull(String f) {
_full = f != null;
if (f != null) {
try {
_full = Integer.parseInt(f);
if (_full < 0 || _full > 3)
_full = 0;
} catch (NumberFormatException nfe) {}
}
}
/**
* call for non-text-mode browsers
* @since 0.9.1
*/
public void allowGraphical() {
_graphical = true;
}
/**
* @return empty string, writes directly to _out
* @since 0.9.1
*/
public String getSummary() {
try {
renderNavBar();
} catch (IOException ioe) {}
if (_full == 3)
getShitlistSummary();
else
getProfileSummary();
return "";
}
/** @return empty string, writes directly to _out */
@ -33,4 +73,52 @@ public class ProfilesHelper extends HelperBase {
}
return "";
}
/**
* @since 0.9.1
*/
private int getTab() {
if (_full == 2)
return 1;
if (_full == 3)
return 2;
if (_full == 1)
return 3;
return 0;
}
/**
* @since 0.9.1
*/
private void renderNavBar() throws IOException {
StringBuilder buf = new StringBuilder(1024);
buf.append("<div class=\"confignav\" id=\"confignav\">");
// 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>");
int tab = getTab();
for (int i = 0; i < titles.length; i++) {
if (i == tab) {
// 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=\"profiles").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
}
if (span)
buf.append(" </span>\n");
else if (i != titles.length - 1)
buf.append(" |\n");
}
if (!span)
buf.append("</center>");
buf.append("</div>");
_out.write(buf.toString());
}
}

View File

@ -369,7 +369,8 @@ public class StatSummarizer implements Runnable {
_log.error("Error rendering", re);
throw new IOException("Error plotting: " + re.getMessage());
} catch (IOException ioe) {
_log.error("Error rendering", ioe);
if (_log.shouldLog(Log.WARN))
_log.warn("Error rendering", ioe);
throw ioe;
} catch (OutOfMemoryError oom) {
_log.error("Error rendering", oom);

View File

@ -196,7 +196,9 @@ class SummaryRenderer {
_log.error("Error rendering", re);
throw new IOException("Error plotting: " + re.getMessage());
} catch (IOException ioe) {
_log.error("Error rendering", ioe);
// typically org.mortbay.jetty.EofException extends java.io.EOFException
if (_log.shouldLog(Log.WARN))
_log.warn("Error rendering", ioe);
throw ioe;
} catch (OutOfMemoryError oom) {
_log.error("Error rendering", oom);

View File

@ -23,7 +23,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="routersummaryouter" id="appsummary">
<div class="routersummaryouter">
<div class="routersummary">
<div style="height: 36px;">
<a href="/console"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/i2plogo.png" alt="<%=intl._("I2P Router Console")%>" title="<%=intl._("I2P Router Console")%>"></a>
@ -44,7 +44,24 @@
</div>
</div>
<div id="homemain">
<h1><%=intl._("I2P Router Console")%></h1>
<%
if (newshelper.shouldShowNews()) {
java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml");
%>
<div class="news" id="news">
<jsp:setProperty name="newshelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="newshelper" property="maxLines" value="300" />
<jsp:getProperty name="newshelper" property="content" />
<hr>
<jsp:getProperty name="updatehelper" property="newsStatus" /><br>
</div>
<%
} // shouldShowNews()
%>
<div class="main" id="main">
<jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" />
<jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% if (homehelper.shouldShowWelcome()) { %>
@ -69,25 +86,10 @@
<a href="/home?lang=uk&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Ukrainian" alt="Ukrainian"></a>
<a href="/home?lang=vi&amp;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>
<h2 class="app"><%=intl._("Welcome to I2P")%></h2>
<h2><%=intl._("Welcome to I2P")%></h2>
</div>
<% } // shouldShowWelcome %>
<%
if (newshelper.shouldShowNews()) {
java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml");
%>
<div class="news" id="homenews">
<jsp:setProperty name="newshelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="newshelper" property="maxLines" value="300" />
<jsp:getProperty name="newshelper" property="content" />
<hr>
<jsp:getProperty name="updatehelper" property="newsStatus" /><br>
</div>
<%
} // shouldShowNews()
%>
<div class="home" id="home">
<%
if (homehelper.shouldShowSearch()) {
@ -115,6 +117,7 @@
<div class="ag2">
<h4 class="app2"><%=intl._("Local Services")%></h4>
<jsp:getProperty name="homehelper" property="services" /><br>
<div class="clearer">&nbsp;</div>
</div>
</div>
</div>

View File

@ -5,15 +5,19 @@
<html><head>
<%@include file="css.jsi" %>
<%=intl.title("network database summary")%>
<%=intl.title("network database")%>
</head><body>
<%@include file="summary.jsi" %>
<h1><%=intl._("I2P Network Database Summary")%></h1>
<h1><%=intl._("I2P Network Database")%></h1>
<div class="main" id="main">
<div class="wideload">
<jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
<jsp:setProperty name="netdbHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% netdbHelper.storeWriter(out); %>
<%
netdbHelper.storeWriter(out);
if (allowIFrame)
netdbHelper.allowGraphical();
%>
<jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" />
<jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" />

View File

@ -1,5 +1,4 @@
<%@page contentType="text/html"%>
<%@page trimDirectiveWhitespaces="true"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%

View File

@ -11,9 +11,11 @@
<div class="main" id="main"><div class="wideload">
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
<% profilesHelper.storeWriter(out); %>
<%
profilesHelper.storeWriter(out);
if (allowIFrame)
profilesHelper.allowGraphical();
%>
<jsp:setProperty name="profilesHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
<jsp:getProperty name="profilesHelper" property="profileSummary" />
<a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2>
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
<jsp:getProperty name="profilesHelper" property="summary" />
<hr></div></div></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-12 20:20+0000\n"
"POT-Creation-Date: 2012-05-25 12:35+0000\n"
"PO-Revision-Date: 2012-03-11 02:03+0000\n"
"Last-Translator: D.A. Loader <>\n"
"Language-Team: German (http://www.transifex.net/projects/p/I2P/language/"
@ -112,7 +112,7 @@ msgstr "Zeige {0} von {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Add"
msgstr "Hinzufügen"
@ -120,7 +120,7 @@ msgstr "Hinzufügen"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
msgid "Replace"
msgstr "Ersetzen"
@ -178,13 +178,13 @@ msgstr "Bitte geben Sie einen Hostnamen und ein Ziel ein!"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:355
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:268
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
msgid "Delete Entry"
msgstr "Eintrag löschen"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:347
msgid "Delete Selected"
msgstr "Ausgewähltes löschen"
@ -231,8 +231,8 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
msgid "Save"
msgstr "Speichern"
@ -242,8 +242,8 @@ msgstr "Einstellungen gespeichert"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
msgid "Reload"
msgstr "Neu laden"
@ -285,170 +285,170 @@ msgstr "Abonnementquellen gespeichert"
msgid "Subscriptions reloaded."
msgstr "Abonnementquellen neu geladen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
msgid "address book"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Overview"
msgstr "Übersicht"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
msgid "Address books"
msgstr "Adressbücher"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
msgid "private"
msgstr "privat"
msgid "Address books"
msgstr "Adressbücher"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
msgid "master"
msgstr "Master"
msgid "private"
msgstr "privat"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "router"
msgstr "Router"
msgid "master"
msgstr "Master"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "published"
msgstr "veröffentlicht"
msgid "router"
msgstr "Router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "Subscriptions"
msgstr "Abonnements"
msgid "published"
msgstr "veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "Subscriptions"
msgstr "Abonnements"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "Configuration"
msgstr "Einstellungen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
msgid "Address book"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
msgid "Storage"
msgstr "Speicherort"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:168
msgid "Filter"
msgstr "Filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
msgid "other"
msgstr "andere"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:173
msgid "all"
msgstr "alle"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
msgid "Current filter"
msgstr "derzeitige Filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:192
msgid "clear filter"
msgstr "Filter löschen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:203
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
msgid "Search"
msgstr "Suche"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
msgid "Name"
msgstr "Name"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
msgid "Links"
msgstr "Links"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
msgid "Destination"
msgstr "Ziel"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:280
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:282
msgid "Mark for deletion"
msgstr "zum Löschen markieren"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:301
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:303
msgid "Base 32 address"
msgstr "Adresse (Basis32)"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:305
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "More information on this entry"
msgstr "Weitere Informationen über diesen Eintrag"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:308
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:310
msgid "details"
msgstr "Details"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:343
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:402
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
msgid "Cancel"
msgstr "Abbruch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:377
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
msgid "This address book is empty."
msgstr "Dieses Adressbuch ist leer."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
msgid "Add new destination"
msgstr "Füge neues Ziel hinzu"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:161
msgid "Host Name"
msgstr "Hostname"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
msgid "configuration"
msgstr "Einstellungen"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
msgid "Hints"
msgstr "Hinweise"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
@ -458,7 +458,7 @@ msgstr ""
"Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
@ -466,7 +466,7 @@ msgstr ""
"Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie "
"diese zum privaten oder zum Master-Adressbuch hinzu!"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
@ -474,7 +474,7 @@ msgstr ""
"Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der "
"Adressbuch-Anwendung aktualisiert."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
@ -482,7 +482,7 @@ msgstr ""
"Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem "
"Master- und dem Router-Adressbuch."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
@ -490,20 +490,20 @@ msgstr ""
"Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht "
"veröffentlicht."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
msgid "Options"
msgstr "Optionen"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid "Update interval in hours"
msgstr "Aktualisierungsintervall in Stunden"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
@ -511,31 +511,31 @@ msgstr ""
"Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver "
"Wurzelverzeichnis!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
msgid "Your hosts.txt (don't change)"
msgstr "Ihre hosts.txt (nicht ändern)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid "Your personal addressbook, these hosts will be published"
msgstr "Ihr persönliches Adressbuch - diese Hosteinträge werden veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Your private addressbook, it is never published"
msgstr "Ihr privates Adressbuch - dieses wird nie veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "Port for your eepProxy (no need to change)"
msgstr "Port zu Ihrem EepProxy (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Hostname zu Ihrem EepProxy (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid "Whether to update the published addressbook"
msgstr "Soll Ihr veröffentlichtes Adressbuch aktualisiert werden?"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
@ -543,7 +543,7 @@ msgstr ""
"Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs "
"enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
@ -551,85 +551,85 @@ msgstr ""
"Datei, welche die Zeitstempel der letzten Modifikation für jede bereits "
"aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
"Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es "
"zu /dev/null, wenn Sie möchten!)"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
msgid "Encoded Name"
msgstr "kodierter Name"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:191
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:193
msgid "Base 32 Address"
msgstr "Basis32-Adresse"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:203
msgid "Base 64 Hash"
msgstr "Base 64 Hash"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:209
msgid "Address Helper"
msgstr "Adresshelfer"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:214
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
msgid "link"
msgstr "Link"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:218
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "Public Key"
msgstr "Öffentlicher Schlüssel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
msgid "ElGamal 2048 bit"
msgstr "ElGamal 2048 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "Signing Key"
msgstr "Authentifizierungsschlüssel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:228
msgid "DSA 1024 bit"
msgstr "DSA 1024 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "Certificate"
msgstr "Zertifikat"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
msgid "Added Date"
msgstr "Datum hinzugefügt"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
msgid "Source"
msgstr "Quelle"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
msgid "Last Modified"
msgstr "Zuletzt geändert:"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
msgid "Notes"
msgstr "Anmerkungen"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:100
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
msgid "Introduction"
msgstr "Einleitung - SusiDNS"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
msgid "What is the addressbook?"
msgstr "Was ist das Adressbuch?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
msgid "The addressbook application is part of your I2P installation."
msgstr "Das Adressbuch ist ein Teil Ihrer I2P-Installation."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
@ -637,7 +637,7 @@ msgstr ""
"Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder "
"den \"Abonnementquellen\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
@ -645,7 +645,7 @@ msgstr ""
"In der Standardkonfiguration besteht lediglich ein Abonnement tu www.i2p2."
"i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
@ -653,7 +653,7 @@ msgstr ""
"Anderen Seiten zu Folgen ist einfach, füge sie einfach zu deiner <a href="
"\"subscriptions\">Subscriptions</a> Datei hinzu."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
msgid ""
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
@ -662,11 +662,11 @@ msgstr ""
"\"http://www.i2p2.i2p/naming.html\">die Erläuterungen auf www.i2p2.i2p</a> "
"verwiesen."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
msgid "How does the addressbook application work?"
msgstr "Wie funktioniert das Adressbuch?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
@ -674,13 +674,13 @@ msgstr ""
"Die Adressbuch-Anwendung bezieht regelmäßig Informationen von deinen "
"Abonnements und inkorporiert deren Inhalt in dein \"Router\"-Adressbuch."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr "Dann fügt sie noch den Inhalt des \"Master\"-Adressbuches hinzu."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
@ -689,7 +689,7 @@ msgstr ""
"Routeradressbuch nun in das \"veröffentlichte\" Adressbuch geschrieben, "
"welches öffentlich erreichbar ist, wenn du eine Eepsite betreibst."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
@ -697,7 +697,7 @@ msgstr ""
"Der Router benutzt ferner ein privates Adressbuch (nicht im Bild), welches "
"weder veröffentlich noch mit den anderen zusammengeführt wird."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
@ -705,7 +705,7 @@ msgstr ""
"Hosts aus dem privaten Adressbuch können von dir besucht werden, ihrer "
"Adressen werden jedoch nie an andere weitergegeben."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
@ -713,25 +713,25 @@ msgstr ""
"Das private Adressbuch kann außerdem für Aliasse von Adressen in den anderen "
"Adressbüchern von Nutzen sein."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
msgid "subscriptions"
msgstr "Abonnements"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "The subscription file contains a list of i2p URLs."
msgstr "Die Abonnementdatei enthält eine Liste von I2P-URLs."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Those URLs refer to published hosts.txt files."
msgstr "Diese URLs verweisen auf veröffentlichte hosts.txt-Dateien."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:146
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
@ -739,7 +739,7 @@ msgstr ""
"Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche "
"nicht regelmäßig aktualisiert wird."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
@ -747,6 +747,6 @@ msgstr ""
"Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten "
"Adressen hinzuzufügen."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "See the FAQ for a list of subscription URLs."
msgstr "Schauen Sie in den FAQ nach einer Liste von Abonnement-URLs!"

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-12 20:21+0000\n"
"POT-Creation-Date: 2012-05-25 12:34+0000\n"
"PO-Revision-Date: 2012-03-16 19:24+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
@ -115,7 +115,7 @@ msgstr "Mostrando {0} de {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Add"
msgstr "Agregar"
@ -123,7 +123,7 @@ msgstr "Agregar"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
msgid "Replace"
msgstr "Reemplazar"
@ -184,13 +184,13 @@ msgstr "Por favor, ¡introduce un nombre de host y destino!"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:355
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:268
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
msgid "Delete Entry"
msgstr "Borrar entrada"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:347
msgid "Delete Selected"
msgstr "Eliminar seleccionados"
@ -238,8 +238,8 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
msgid "Save"
msgstr "Guardar"
@ -249,8 +249,8 @@ msgstr "Configuración guardada."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
msgid "Reload"
msgstr "Recargar"
@ -294,170 +294,170 @@ msgstr "Suscripciones guardadas."
msgid "Subscriptions reloaded."
msgstr "Suscripciones recargadas."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
msgid "address book"
msgstr "libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Overview"
msgstr "Resumen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
msgid "Address books"
msgstr "Libretas de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
msgid "private"
msgstr "privado"
msgid "Address books"
msgstr "Libretas de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
msgid "master"
msgstr "principal"
msgid "private"
msgstr "privado"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "router"
msgstr "router"
msgid "master"
msgstr "principal"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "published"
msgstr "publicado"
msgid "router"
msgstr "router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "Subscriptions"
msgstr "Suscripciones"
msgid "published"
msgstr "publicado"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "Subscriptions"
msgstr "Suscripciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "Configuration"
msgstr "Configuración"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
msgid "Address book"
msgstr "Libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
msgid "Storage"
msgstr "Almacenamiento"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:168
msgid "Filter"
msgstr "Filtro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
msgid "other"
msgstr "otros"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:173
msgid "all"
msgstr "todos"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
msgid "Current filter"
msgstr "Filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:192
msgid "clear filter"
msgstr "filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:203
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
msgid "Search"
msgstr "Buscar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
msgid "Name"
msgstr "Nombre"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
msgid "Links"
msgstr "Vínculos"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
msgid "Destination"
msgstr "Destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:280
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:282
msgid "Mark for deletion"
msgstr "Marcar para eliminar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:301
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:303
msgid "Base 32 address"
msgstr "Dirección a base de 32"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:305
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "More information on this entry"
msgstr "Más información sobre esta entrada"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:308
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:310
msgid "details"
msgstr "detalles"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:343
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:402
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
msgid "Cancel"
msgstr "Cancelar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:377
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
msgid "This address book is empty."
msgstr "Esta libreta de direcciones está vacía."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
msgid "Add new destination"
msgstr "Añadir nuevo destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:161
msgid "Host Name"
msgstr "Nombre de Host"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
msgid "configuration"
msgstr "configuración"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
msgid "Hints"
msgstr "Consejos"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
@ -467,7 +467,7 @@ msgstr ""
"directorio de trabajo de la libreta de direcciones, que es normalmente ~/."
"i2p/addressbook/ (Linux) o %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
@ -475,7 +475,7 @@ msgstr ""
"Si deseas agregar manualmente líneas a una libreta de direcciones, añádelos "
"a la libreta de direcciones privada o maestra."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
@ -483,7 +483,7 @@ msgstr ""
"La libreta de direcciones del router y la libreta de direcciones publicada "
"son actualizadas por la aplicación libreta de direcciones."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
@ -491,7 +491,7 @@ msgstr ""
"Al publicar tu libro de direcciones, TODOS los destinos de la libreta "
"maestra y la libreta de direcciones del router aparecen ahí."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
@ -499,21 +499,21 @@ msgstr ""
"Utiliza la libreta de direcciones privada para destinos privados, éstos no "
"serán publicados."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
msgid "Options"
msgstr "Opciones"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"El archivo que contiene la lista de suscripciones URL (no es necesario "
"cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid "Update interval in hours"
msgstr "Intervalo de actualización en horas"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
@ -521,31 +521,31 @@ msgstr ""
"Tu archivo hosts.txt público (¡elije una ruta dentro de la raíz de "
"documentos de tu servidor web!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
msgid "Your hosts.txt (don't change)"
msgstr "Tu hosts.txt (no cambiar)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid "Your personal addressbook, these hosts will be published"
msgstr "Tu libreta de direcciones personal, estos hosts serán publicados"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Your private addressbook, it is never published"
msgstr "Tu libreta de direcciones privada, nunca se publica"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "Port for your eepProxy (no need to change)"
msgstr "Puerto para tu eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Nombre de la host para tu eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid "Whether to update the published addressbook"
msgstr "Sea para actualizar la libreta de direcciones publicadas"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
@ -553,7 +553,7 @@ msgstr ""
"Archivo que contiene la cabecera de los etags desde la URL de subscripciones "
"capturada (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
@ -561,86 +561,86 @@ msgstr ""
"Archivo que contiene la fecha y hora de modificación para cada URL de "
"suscripción capturada (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
"El archivo en el que se guarda el registro de actividad (Cámbialo a /dev/"
"null si quieres)."
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
msgid "Encoded Name"
msgstr "Nombre codificado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:191
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:193
msgid "Base 32 Address"
msgstr "Dirección a base de 32"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:203
msgid "Base 64 Hash"
msgstr "Hash en base 64"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:209
msgid "Address Helper"
msgstr "Manejador de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:214
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
msgid "link"
msgstr "vínculo"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:218
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "Public Key"
msgstr "Clave pública"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
msgid "ElGamal 2048 bit"
msgstr "ElGamal de 2048 bits"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "Signing Key"
msgstr "Clave de firmado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:228
msgid "DSA 1024 bit"
msgstr "DSA de 1024 bits"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "Certificate"
msgstr "Certificado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
msgid "Added Date"
msgstr "Fecha añadida"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
msgid "Source"
msgstr "Fuente"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
msgid "Last Modified"
msgstr "Modificado por última vez"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
msgid "Notes"
msgstr "Notas"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:100
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
msgid "Introduction"
msgstr "Introducción"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
msgid "What is the addressbook?"
msgstr "¿Qué es la libreta de direcciones?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
msgid "The addressbook application is part of your I2P installation."
msgstr ""
"La aplicación de libreta de direcciones es parte de tu instalación de I2P."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
@ -648,7 +648,7 @@ msgstr ""
"Actualiza constantemente su archivo hosts.txt desde fuentes distribuidas o "
"\"suscripciones\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
@ -656,7 +656,7 @@ msgstr ""
"En la configuración por defecto, la libreta de direcciones sólo está "
"suscrita a www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
@ -664,7 +664,7 @@ msgstr ""
"Suscribirse a otras páginas es fácil, sólo añádelas a tu archivo de <a href="
"\"subscriptions\">subscripciones</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
msgid ""
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
@ -672,11 +672,11 @@ msgstr ""
"Para mayor información acerca del nombrado en I2P, consulta <a href=\"http://"
"www.i2p2.i2p/naming.html\">la información general en www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
msgid "How does the addressbook application work?"
msgstr "¿Cómo funciona la libreta de direcciones?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
@ -684,7 +684,7 @@ msgstr ""
"La aplicación de libreta de direcciones examina tus suscripciones e "
"incorpora su contenido a tu libreta de direcciones del \"router\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
@ -692,7 +692,7 @@ msgstr ""
"Luego también incluye los contenidos de tu libreta de direcciones \"principal"
"\" en aquella del router."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
@ -701,7 +701,7 @@ msgstr ""
"contenidos a la libreta de direcciones \"publicada\", la cual estará "
"disponible públicamente si estás corriendo un sitio i2p própio."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
@ -709,7 +709,7 @@ msgstr ""
"El router también utiliza una libreta de direcciones privada (no mostrada en "
"la figura), la cual ni se incorpora a ninguna otra libreta ni se publica."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
@ -717,7 +717,7 @@ msgstr ""
"Puedes visitar a los hosts que aparecen en tu libreta de direcciones "
"privada, pero sus direcciones no se distribuyen a terceros."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
@ -725,26 +725,26 @@ msgstr ""
"La libreta de direcciones privada también se puede utilizar para alias de "
"los hosts en tus otras libretas de direcciones."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
msgid "subscriptions"
msgstr "suscripciones"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "The subscription file contains a list of i2p URLs."
msgstr "El archivo de suscripción contiene una lista de URLs I2P."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"La aplicación de libreta de direcciones comprueba regularmente esta lista en "
"busca de nuevos eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Those URLs refer to published hosts.txt files."
msgstr "Esas URLs referencian a los archivos hosts.txt publicados."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:146
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
@ -752,7 +752,7 @@ msgstr ""
"La suscripción por defecto es el hosts.txt de www.i2p2.i2p, que se actualiza "
"con poca frecuencia."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
@ -760,7 +760,7 @@ msgstr ""
"Por lo tanto, es una buena idea agregar suscripciones adicionales a sitios "
"que tengan las direcciones más recientes."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "See the FAQ for a list of subscription URLs."
msgstr ""
"Ver las preguntas frecuentes para obtener una lista de direcciones URL de "

View File

@ -4,224 +4,232 @@
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# <colomboi2p@ymail.com>, 2012.
# <jokjok@hotmail.it>, 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-12 11:19+0000\n"
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/language/it/)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-25 11:01+0000\n"
"PO-Revision-Date: 2012-05-22 00:15+0000\n"
"Last-Translator: ColomboI2P <colomboi2p@ymail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/language/"
"it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:131
#: ../src/java/src/i2p/susi/dns/AddressBean.java:130
#, java-format
msgid "Host name \"{0}\" contains illegal character {1}"
msgstr "L''host name \"{0}\" contiene il carattere illegale {1}"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:144
#: ../src/java/src/i2p/susi/dns/AddressBean.java:146
#: ../src/java/src/i2p/susi/dns/AddressBean.java:153
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
#, java-format
msgid "Host name cannot start with \"{0}\""
msgstr "L''host name non può iniziare con \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:148
#: ../src/java/src/i2p/susi/dns/AddressBean.java:150
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
#, java-format
msgid "Host name cannot end with \"{0}\""
msgstr "L''host name non può finire con \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:155
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
#, java-format
msgid "Host name cannot contain \"{0}\""
msgstr "L''host name non può contenere \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:158
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
#, java-format
msgid ""
"Host name \"{0}\" requires conversion to ASCII but the conversion library is"
" unavailable in this JVM"
msgstr "L''host name \"{0}\" richiede di essere convertito in formato ASCII ma la libreria di conversione non è disponibile in questa JVM"
"Host name \"{0}\" requires conversion to ASCII but the conversion library is "
"unavailable in this JVM"
msgstr ""
"L''host name \"{0}\" richiede di essere convertito in formato ASCII ma la "
"libreria di conversione non è disponibile in questa JVM"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:210
#: ../src/java/src/i2p/susi/dns/AddressBean.java:218
msgid "None"
msgstr "Nessuno"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:218
#: ../src/java/src/i2p/susi/dns/AddressBean.java:226
msgid "Hashcash"
msgstr "Hashcash"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:220
#: ../src/java/src/i2p/susi/dns/AddressBean.java:228
msgid "Hidden"
msgstr "Nascosto"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:222
#: ../src/java/src/i2p/susi/dns/AddressBean.java:230
msgid "Signed"
msgstr "Firmato"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:224
#: ../src/java/src/i2p/susi/dns/AddressBean.java:232
#, java-format
msgid "Type {0}"
msgstr "Tipo {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:233
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] "Un risultato per la ricerca all'interno della lista filtrata."
msgstr[1] "{0} risultati per la ricerca all'interno della lista filtrata."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:237
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "La lista filtrata contiene 1 voce."
msgstr[1] "La lista filtrata contiene {0} voci."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:242
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] "Un risultato per la ricerca."
msgstr[1] "{0} risultati per la ricerca."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:251
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "La rubrica contiene 1 voce."
msgstr[1] "La rubrica contiene {0} voci."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Showing {0} of {1}"
msgstr "Mostrati {0} su {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Add"
msgstr "Aggiungi"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:390
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
msgid "Replace"
msgstr "Sostituisci"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238
#, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr "L''host name {0} è già nella rubrica, immutato."
msgstr "L''host name {0} è già nella rubrica, nessuna modifica."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240
#, java-format
msgid ""
"Host name {0} is already in address book with a different destination. Click"
" \"Replace\" to overwrite."
msgstr "L''host name {0} è già nella rubrica con una destinazione diversa. Fare click su \"Sostituisci\" per sovrascrivere."
"Host name {0} is already in address book with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
"L''host name {0} è già nella rubrica con una destinazione diversa. Fare "
"click su \"Sostituisci\" per sovrascrivere."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:312
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
#, java-format
msgid "Destination added for {0}."
msgstr "Destinazione aggiunta per {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255
#, java-format
msgid "Destination changed for {0}."
msgstr "Destinazione modificata per {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:317
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:316
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
msgid "Warning - host name does not end with \".i2p\""
msgstr "Warning - l'host name non finisce con \".i2p\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265
msgid "Invalid Base 64 destination."
msgstr "Destinazione in Base 64 non valida."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:327
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:271
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr "Host name \"{0}\" non valido."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:330
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274
msgid "Please enter a host name and destination"
msgstr "Inserire un nome per l'host e una destinazione"
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:356
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:258
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:355
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
msgid "Delete Entry"
msgstr "Elimina voce"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:347
msgid "Delete Selected"
msgstr "Elimina la selezione"
msgstr "Elimina Selezione"
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:349
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:348
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295
#, java-format
msgid "Destination {0} deleted."
msgstr "Destinazione {0} eliminata."
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:351
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298
#, java-format
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
msgstr[0] "1 destinazione eliminata."
msgstr[1] "{0} destinazioni eliminate."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:353
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300
msgid "No entries selected to delete."
msgstr "Non è stata selezionata nessuna voce per l'eliminazione."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:362
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:361
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
msgid "Address book saved."
msgstr "Rubrica salvata."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:365
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:364
msgid "ERROR: Could not write addressbook file."
msgstr "ERRORE: impossibile scrivere sul file della rubrica."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:370
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:369
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
msgid ""
"Invalid form submission, probably because you used the \"back\" or "
"\"reload\" button on your browser. Please resubmit."
msgstr "Il form presentato è invalido, probabilmente hai usato la funzione \"indietro\" o \"aggiorna\" del tuo browser. Per favore invialo nuovamente."
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"Il form presentato è invalido, probabilmente hai usato la funzione \"indietro"
"\" o \"aggiorna\" del tuo browser. Per favore inviarlo nuovamente."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
msgid "Save"
msgstr "Salva"
@ -231,8 +239,8 @@ msgstr "Configurazione salvata."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
msgid "Reload"
msgstr "Ricarica"
@ -240,29 +248,35 @@ msgstr "Ricarica"
msgid "Configuration reloaded."
msgstr "Configurazione ricaricata."
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:105
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:101
#, java-format
msgid "{0} address book in {1} database"
msgstr "{0} rubriche in {1} database"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:252
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:248
msgid "Manually added via SusiDNS"
msgstr "Aggiunto manualmente con SusiDNS"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:266
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr "Operazione di aggiunta della Destinazione per {0} al servizio di naming {1} fallita"
msgstr ""
"Operazione di aggiunta della Destinazione per {0} al servizio di naming {1} "
"fallita"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:290
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:286
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr "Operazione di eliminazione della Destinazione per {0} dal servizio di naming {1} fallita"
msgstr ""
"Operazione di eliminazione della Destinazione per {0} dal servizio di naming "
"{1} fallita"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr "Sottoscrizioni salvate, è in corso l'aggiornamento della rubrica a partire dalle fonti di sottoscrizione."
msgstr ""
"Sottoscrizioni salvate, è in corso l'aggiornamento della rubrica a partire "
"dalle fonti di sottoscrizione."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
msgid "Subscriptions saved."
@ -278,414 +292,461 @@ msgstr "rubrica"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Overview"
msgstr "Panoramica"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
msgid "Address books"
msgstr "Rubriche"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
msgid "private"
msgstr "privato"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "master"
msgstr "master"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "router"
msgstr "router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "published"
msgstr "pubblicato"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "Subscriptions"
msgstr "Sottoscrizioni"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "Configuration"
msgstr "Configurazione"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
msgid "Address book"
msgstr "Rubrica"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
msgid "Storage"
msgstr "Deposito"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:168
msgid "Filter"
msgstr "Filtro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
msgid "other"
msgstr "altro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:173
msgid "all"
msgstr "tutto"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
msgid "Current filter"
msgstr "Filtro corrente"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:192
msgid "clear filter"
msgstr "sgombera il filtro"
msgstr "cancella il filtro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
msgid "Search"
msgstr "Ricerca"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:238
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
msgid "Name"
msgstr "Nome"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
msgid "Links"
msgstr "Collegamenti"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:384
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
msgid "Destination"
msgstr "Destinazione"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:273
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:282
msgid "Mark for deletion"
msgstr "Marca per la rimozione"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:292
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:303
msgid "Base 32 address"
msgstr "indirizzo in Base 32"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:296
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "More information on this entry"
msgstr "Più informazioni su questa voce"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:299
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:310
msgid "details"
msgstr "dettagli"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:332
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:388
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
msgid "Cancel"
msgstr "Annulla"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:365
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
msgid "This address book is empty."
msgstr "Questa rubrica è vuota."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:378
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
msgid "Add new destination"
msgstr "Aggiungi una nuova destinazione"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:380
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:161
msgid "Host Name"
msgstr "Host Name"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
msgid "configuration"
msgstr "configurazione"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
msgid "Hints"
msgstr "Suggerimenti"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or "
"%APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "I percorsi di file e cartelle sono qui relativi alla cartella della rubrica in uso, che normalmente è ~/.i2p/addressbook/ (Linux) o %APPDATA%\\I2P\\addressbook\\ (Windows)."
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"I percorsi di file e cartelle sono relativi alla cartella della rubrica in "
"uso, che normalmente è ~/.i2p/addressbook/ (Linux) o %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
msgid ""
"If you want to manually add lines to an addressbook, add them to the private"
" or master addressbooks."
msgstr "Se vuoi aggiungere linee a una rubrica manualmente, aggiungile alla rubrica master o a quella privata."
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"Se vuoi aggiungere linee a una rubrica manualmente, aggiungile alla rubrica "
"master o a quella privata."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr "La rubrica del router e la rubrica pubblicata sono aggiornate dall'applicazione rubrica stessa."
msgstr ""
"La rubrica del router e la rubrica pubblicata sono aggiornate "
"dall'applicazione rubrica stessa."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr "Quando pubblichi la tua rubrica, vi appaiono TUTTE le destinazioni sia della rubrica master che di quella privata."
msgstr ""
"Quando pubblichi la tua rubrica, vi appaiono TUTTE le destinazioni sia della "
"rubrica master che di quella privata."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr "Usa la rubrica privata per le destinazioni private, in questo modo queste non vengono pubblicate."
msgstr ""
"Usa la rubrica privata per le destinazioni private, in questo modo queste "
"non vengono pubblicate."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
msgid "Options"
msgstr "Opzioni"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "File contenente la lista degli indirizzi URL di sottoscrizione (non necessita modifiche)"
msgstr ""
"File contenente la lista degli indirizzi URL di sottoscrizione (non "
"necessita modifiche)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid "Update interval in hours"
msgstr "Imposta l'intervallo in ore"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr "Il tuo file hosts.txt pubblico (scegli un percorso all'interno della radice dei documenti del tuo webserver)"
msgstr ""
"Il tuo file hosts.txt pubblico (scegli un percorso all'interno della root "
"dei documenti del tuo webserver)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
msgid "Your hosts.txt (don't change)"
msgstr "Il tuo hosts.txt (non modificare)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid "Your personal addressbook, these hosts will be published"
msgstr "La tua rubrica personale, questi host verranno pubblicati"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Your private addressbook, it is never published"
msgstr "La tua rubrica privata, non viene mai pubblicata"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "Port for your eepProxy (no need to change)"
msgstr "La porta per il tuo eepProxy (non necessita modifiche)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Hostname for your eepProxy (no need to change)"
msgstr "L'hostname per il tuo eepProxy (non necessita modifiche)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid "Whether to update the published addressbook"
msgstr "Se aggiornare o meno la rubrica pubblicata"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid ""
"File containing the etags header from the fetched subscription URLs (no need"
" to change)"
msgstr "File contenente gli header degli etags presi dagli indirizzi di sottoscrizione URL ottenuti (non necessita modifiche)"
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
"File contenente gli header degli etags recuperati dagli URL delle "
"sottoscrizioni (non necessita modifiche)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid ""
"File containing the modification timestamp for each fetched subscription URL"
" (no need to change)"
msgstr "File contenente la marca temporale di modifica (timestamp) per ogni indirizzo di sottoscrizione URL ottenuto (non necessita modifiche)"
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
"File contenente il timestamp delle modifiche per ogni URL di sottoscrizione "
"recuperato (non necessita modifiche)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:170
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "File di log dell'attività (puoi cambiare in /dev/null se preferisci)"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "rubrica"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
msgid "Encoded Name"
msgstr "Nome cifrato"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:187
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:193
msgid "Base 32 Address"
msgstr "Indirizzo in Base 32"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197
msgid "Address Helper"
msgstr "Assistente indirizzo"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:203
msgid "Base 64 Hash"
msgstr "Base 64 Hash"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:204
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:209
msgid "Address Helper"
msgstr "Assistente Indirizzo"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
msgid "link"
msgstr "collegamento"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:208
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "Public Key"
msgstr "Chiave Pubblica"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:210
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
msgid "ElGamal 2048 bit"
msgstr "ElGamal 2048 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:214
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "Signing Key"
msgstr "Chiave per la Firma"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:228
msgid "DSA 1024 bit"
msgstr "DSA 1024 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "Certificate"
msgstr "Certificato"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
msgid "Added Date"
msgstr "Data aggiunta"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
msgid "Source"
msgstr "Sorgente"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
msgid "Last Modified"
msgstr "Ultima Modifica"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
msgid "Notes"
msgstr "Note"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
msgid "Introduction"
msgstr "Introduzione"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
msgid "What is the addressbook?"
msgstr "Cos'è la rubrica?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
msgid "The addressbook application is part of your I2P installation."
msgstr "L'applicazione rubrica è parte della tua installazione I2P."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr "Aggiorna regolarmente il tuo file hosts.txt da fonti distribuite o \"sottoscrizioni\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the address book is only subscribed to "
"www.i2p2.i2p."
msgstr "Nella configurazione di default, la rubrica è sottoscritta solamente a www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid ""
"Subscribing to additional sites is easy, just add them to your <a "
"href=\"subscriptions\">subscriptions</a> file."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in I2P, see <a "
"href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "Per più informazioni sul naming in I2P, vedere la panoramica su www.i2p2.i2p <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook application work?"
msgstr "Come funziona l'applicazione rubrica?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
msgstr "L'applicazione rubrica sonda regolarmente le tue sottoscrizioni e fonde il loro contenuto nella rubrica \"router\"."
"Aggiorna regolarmente il tuo file hosts.txt da fonti distribuite o "
"\"sottoscrizioni\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr "A questo punto infila la tua rubrica \"master\" nella rubrica router."
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
msgstr ""
"Nella configurazione di default, la rubrica è sottoscritta solamente a www."
"i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an "
"eepsite."
msgstr "Se configurata, la rubrica router viene ora scritta nella rubrica \"published\", che sarà disponibile pubblicamente se hai in esecuzione un eepsite."
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
msgstr ""
"Sottoscriversi a siti addizionali è semplice, basta aggiungerli al vostro "
"file delle <a href=\"subscriptions\">sottoscrizioni</a>"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr "Il router utilizza inoltre una rubrica privata (non mostrata nell'immagine) che non viene fusa con niente nè pubblicata."
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"Per più informazioni sul naming in I2P, vedere la <a href=\"http://www.i2p2."
"i2p/naming.html\">panoramica su www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
msgid "How does the addressbook application work?"
msgstr "Come funziona l'applicazione rubrica?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid ""
"Hosts in the private address book can be accessed by you but their addresses"
" are never distributed to others."
msgstr "Puoi accedere agli host nella rubrica privata ma i loro indirizzi non vengono mai distribuiti ad altri. "
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
msgstr ""
"L'applicazione rubrica sonda regolarmente le tue sottoscrizioni e fonde il "
"loro contenuto nella rubrica \"router\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private address book can also be used for aliases of hosts in your other"
" address books."
msgstr "La rubrica privata può anche essere usata per pseudonimi di host nell'altra tua rubrica."
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr "A questo punto fonde la tua rubrica \"master\" nella rubrica router."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
msgstr ""
"Se configurata, la rubrica router viene ora scritta nella rubrica "
"\"pubblicato\", che sarà disponibile pubblicamente se hai in esecuzione un "
"eepsite."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr ""
"Il router utilizza inoltre una rubrica privata (non mostrata nell'immagine) "
"che non viene fusa con niente nè pubblicata."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"Puoi accedere agli host nella rubrica privata ma i loro indirizzi non "
"vengono mai distribuiti ad altri. "
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
msgstr ""
"La rubrica privata può anche essere usata per pseudonimi di host nell'altra "
"tua rubrica."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
msgid "subscriptions"
msgstr "sottoscrizioni"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "The subscription file contains a list of i2p URLs."
msgstr "Il file di sottoscrizione contiene una lista di URL i2p."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr "L'applicazione rubrica controlla regolarmente questa lista per verificare la presenza di nuovi eepsites."
msgstr ""
"L'applicazione rubrica controlla regolarmente questa lista per verificare la "
"presenza di nuovi eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Those URLs refer to published hosts.txt files."
msgstr "Quegli URL si riferiscono ai file hosts.txt pubblicati."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:146
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr "La sottoscrizione di default è il file hosts.txt da www.i2p2.i2p, aggiornata poco frequentemente."
msgstr ""
"La sottoscrizione di default è il file hosts.txt da www.i2p2.i2p, aggiornata "
"poco frequentemente."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr "Quindi è una buona idea aggiungere sottoscrizioni addizionali a sici che hanno gli indirizzi più recenti."
msgstr ""
"Quindi è una buona idea aggiungere sottoscrizioni addizionali a siti che "
"hanno gli indirizzi più recenti."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "See the FAQ for a list of subscription URLs."
msgstr "Vedi le FAQ per una lista di indirizzi URL di sottoscrizione."

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-12 20:20+0000\n"
"POT-Creation-Date: 2012-05-25 12:35+0000\n"
"PO-Revision-Date: 2012-02-19 14:04+0000\n"
"Last-Translator: D.A. Loader <>\n"
"Language-Team: German (http://www.transifex.net/projects/p/I2P/language/"
@ -128,7 +128,7 @@ msgid "end forwarded mail"
msgstr "Ende weitergeleiteter Nachricht"
#: src/src/i2p/susi/webmail/WebMail.java:828
#: src/src/i2p/susi/webmail/WebMail.java:1700
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "konnte den Körper der Nachricht nicht holen"
@ -175,278 +175,278 @@ msgid_plural "{0} messages deleted."
msgstr[0] "Eine Nachricht gelöscht"
msgstr[1] "{0} Nachrichten gelöscht"
#: src/src/i2p/susi/webmail/WebMail.java:1247
#: src/src/i2p/susi/webmail/WebMail.java:1584
#: src/src/i2p/susi/webmail/WebMail.java:1248
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Login"
msgstr "Anmelden"
#: src/src/i2p/susi/webmail/WebMail.java:1249
#: src/src/i2p/susi/webmail/WebMail.java:1250
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "Eine Nachricht"
msgstr[1] "{0} Nachrichten"
#: src/src/i2p/susi/webmail/WebMail.java:1251
#: src/src/i2p/susi/webmail/WebMail.java:1252
msgid "Show Message"
msgstr "Nachricht anzeigen"
#: src/src/i2p/susi/webmail/WebMail.java:1313
#: src/src/i2p/susi/webmail/WebMail.java:1314
#, java-format
msgid "Error decoding content: {0}"
msgstr "Fehler beim Dekodieren des Inhalts: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1318
#: src/src/i2p/susi/webmail/WebMail.java:1319
msgid "Error decoding content: No encoder found."
msgstr "Fehler bei der Dekodierung: kein Kodierer gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1365
#: src/src/i2p/susi/webmail/WebMail.java:1366
msgid "no subject"
msgstr "kein Betreff"
#: src/src/i2p/susi/webmail/WebMail.java:1382
#: src/src/i2p/susi/webmail/WebMail.java:1383
msgid "Found no valid sender address."
msgstr "Keine gültige Absenderadresse vorgefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1388
#: src/src/i2p/susi/webmail/WebMail.java:1389
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "keine gültige Adresse in \\''{0}\\''"
#: src/src/i2p/susi/webmail/WebMail.java:1407
#: src/src/i2p/susi/webmail/WebMail.java:1408
msgid "No recipients found."
msgstr "keine Empfänger gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1414
#: src/src/i2p/susi/webmail/WebMail.java:1415
msgid "Quoted printable encoder not available."
msgstr "Der angegebene druckbare Kodierer ist nicht verfügbar."
#: src/src/i2p/susi/webmail/WebMail.java:1419
#: src/src/i2p/susi/webmail/WebMail.java:1420
msgid "Header line encoder not available."
msgstr "Kodierer für die Kopfzeilen nicht verfügbar"
#: src/src/i2p/susi/webmail/WebMail.java:1470
#: src/src/i2p/susi/webmail/WebMail.java:1471
msgid "Mail sent."
msgstr "Mail versandt."
#: src/src/i2p/susi/webmail/WebMail.java:1509
#: src/src/i2p/susi/webmail/WebMail.java:1510
msgid "Send"
msgstr "Senden"
#: src/src/i2p/susi/webmail/WebMail.java:1510
#: src/src/i2p/susi/webmail/WebMail.java:1511
msgid "Cancel"
msgstr "Abbruch"
#: src/src/i2p/susi/webmail/WebMail.java:1511
#: src/src/i2p/susi/webmail/WebMail.java:1512
msgid "Delete Attachment"
msgstr "Anhang löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1512
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reload Config"
msgstr "Einstellungen neu laden"
#: src/src/i2p/susi/webmail/WebMail.java:1513
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "Einstellungen neu laden"
#: src/src/i2p/susi/webmail/WebMail.java:1514
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "Abmelden"
#: src/src/i2p/susi/webmail/WebMail.java:1536
#: src/src/i2p/susi/webmail/WebMail.java:1692
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "Von:"
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1538
msgid "To:"
msgstr "An:"
#: src/src/i2p/susi/webmail/WebMail.java:1538
#: src/src/i2p/susi/webmail/WebMail.java:1539
msgid "Cc:"
msgstr "Kopie an:"
#: src/src/i2p/susi/webmail/WebMail.java:1539
#: src/src/i2p/susi/webmail/WebMail.java:1540
msgid "Bcc:"
msgstr "Blindkopie an:"
#: src/src/i2p/susi/webmail/WebMail.java:1540
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Betreff:"
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1542
msgid "Bcc to self"
msgstr "Blindkopie zurück?"
#: src/src/i2p/susi/webmail/WebMail.java:1544
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "New Attachment:"
msgstr "Neuer Anhang:"
#: src/src/i2p/susi/webmail/WebMail.java:1544
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Upload File"
msgstr "Datei hochladen"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Attachments:"
msgstr "Anhänge:"
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1573
#: src/src/i2p/susi/webmail/WebMail.java:1574
msgid "User"
msgstr "Benutzer"
#: src/src/i2p/susi/webmail/WebMail.java:1574
#: src/src/i2p/susi/webmail/WebMail.java:1575
msgid "Password"
msgstr "Passwort"
#: src/src/i2p/susi/webmail/WebMail.java:1579
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1580
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "POP3-Port"
msgstr "POP3-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1581
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "SMTP-Port"
msgstr "SMTP-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1584
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Reset"
msgstr "Zurücksetzen"
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Learn about I2P mail"
msgstr "Erfahre etwas über I2P Mail"
#: src/src/i2p/susi/webmail/WebMail.java:1586
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Konto anlegen"
#: src/src/i2p/susi/webmail/WebMail.java:1598
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "Sollen die markierten Nachrichten wirklich gelöscht werden?"
#: src/src/i2p/susi/webmail/WebMail.java:1598
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Ja, löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1600
#: src/src/i2p/susi/webmail/WebMail.java:1679
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Verfassen"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Antworten"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Allen antworten"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Weiterleiten"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Nachrichten abrufen"
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Absender"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Betreff"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Datum"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Größe"
#: src/src/i2p/susi/webmail/WebMail.java:1638
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1643
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Alles markieren"
#: src/src/i2p/susi/webmail/WebMail.java:1644
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Markierung umkehren"
#: src/src/i2p/susi/webmail/WebMail.java:1645
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Verwerfen"
#: src/src/i2p/susi/webmail/WebMail.java:1648
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "erste"
#: src/src/i2p/susi/webmail/WebMail.java:1648
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1684
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "vorherige"
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Seite {0} von {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1652
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "letzte"
#: src/src/i2p/susi/webmail/WebMail.java:1652
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1685
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "nächste"
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Seitengröße"
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "festlegen"
#: src/src/i2p/susi/webmail/WebMail.java:1667
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "Diese Nachricht wirklich löschen?"
#: src/src/i2p/susi/webmail/WebMail.java:1667
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Ja, wirklich löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1686
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Zurück zur Übersicht"
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Datum:"
#: src/src/i2p/susi/webmail/WebMail.java:1704
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "Konnte Nachrichten nicht abrufen."

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-12 20:21+0000\n"
"POT-Creation-Date: 2012-05-25 12:34+0000\n"
"PO-Revision-Date: 2011-12-18 10:48+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
@ -131,7 +131,7 @@ msgid "end forwarded mail"
msgstr "final del correo reenviado"
#: src/src/i2p/susi/webmail/WebMail.java:828
#: src/src/i2p/susi/webmail/WebMail.java:1700
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "No se pudo obtener el cuerpo del correo."
@ -179,278 +179,278 @@ msgid_plural "{0} messages deleted."
msgstr[0] "1 mensaje eliminado."
msgstr[1] "{0} mensajes eliminados."
#: src/src/i2p/susi/webmail/WebMail.java:1247
#: src/src/i2p/susi/webmail/WebMail.java:1584
#: src/src/i2p/susi/webmail/WebMail.java:1248
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Login"
msgstr "Iniciar sesión"
#: src/src/i2p/susi/webmail/WebMail.java:1249
#: src/src/i2p/susi/webmail/WebMail.java:1250
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 Mensaje"
msgstr[1] "{0} Mensajes"
#: src/src/i2p/susi/webmail/WebMail.java:1251
#: src/src/i2p/susi/webmail/WebMail.java:1252
msgid "Show Message"
msgstr "Mostrar mensaje"
#: src/src/i2p/susi/webmail/WebMail.java:1313
#: src/src/i2p/susi/webmail/WebMail.java:1314
#, java-format
msgid "Error decoding content: {0}"
msgstr "Error al descodificar el contenido: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1318
#: src/src/i2p/susi/webmail/WebMail.java:1319
msgid "Error decoding content: No encoder found."
msgstr "Error al descodificar el contenido: No se ha encontrado codificador."
#: src/src/i2p/susi/webmail/WebMail.java:1365
#: src/src/i2p/susi/webmail/WebMail.java:1366
msgid "no subject"
msgstr "sin asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1382
#: src/src/i2p/susi/webmail/WebMail.java:1383
msgid "Found no valid sender address."
msgstr "No se ha encontrado una dirección de remitente válida."
#: src/src/i2p/susi/webmail/WebMail.java:1388
#: src/src/i2p/susi/webmail/WebMail.java:1389
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "No se ha encontrado ninguna dirección válida en \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1407
#: src/src/i2p/susi/webmail/WebMail.java:1408
msgid "No recipients found."
msgstr "No se han encontrado destinatarios."
#: src/src/i2p/susi/webmail/WebMail.java:1414
#: src/src/i2p/susi/webmail/WebMail.java:1415
msgid "Quoted printable encoder not available."
msgstr "El codificador imprimible citado no está disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1419
#: src/src/i2p/susi/webmail/WebMail.java:1420
msgid "Header line encoder not available."
msgstr "El codificador de línea de encabezado no está disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1470
#: src/src/i2p/susi/webmail/WebMail.java:1471
msgid "Mail sent."
msgstr "Correo enviado."
#: src/src/i2p/susi/webmail/WebMail.java:1509
#: src/src/i2p/susi/webmail/WebMail.java:1510
msgid "Send"
msgstr "Enviar"
#: src/src/i2p/susi/webmail/WebMail.java:1510
#: src/src/i2p/susi/webmail/WebMail.java:1511
msgid "Cancel"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1511
#: src/src/i2p/susi/webmail/WebMail.java:1512
msgid "Delete Attachment"
msgstr "Eliminar datos adjuntos"
#: src/src/i2p/susi/webmail/WebMail.java:1512
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reload Config"
msgstr "Recargar la configuración"
#: src/src/i2p/susi/webmail/WebMail.java:1513
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "Recargar la configuración"
#: src/src/i2p/susi/webmail/WebMail.java:1514
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "Desconectarse"
#: src/src/i2p/susi/webmail/WebMail.java:1536
#: src/src/i2p/susi/webmail/WebMail.java:1692
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "De:"
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1538
msgid "To:"
msgstr "Para:"
#: src/src/i2p/susi/webmail/WebMail.java:1538
#: src/src/i2p/susi/webmail/WebMail.java:1539
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1539
#: src/src/i2p/susi/webmail/WebMail.java:1540
msgid "Bcc:"
msgstr "CCO:"
#: src/src/i2p/susi/webmail/WebMail.java:1540
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Asunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1542
msgid "Bcc to self"
msgstr "CCO a mí mism@"
#: src/src/i2p/susi/webmail/WebMail.java:1544
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "New Attachment:"
msgstr "Nuevo Archivo adjunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1544
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Upload File"
msgstr "Subir Archivo"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Attachments:"
msgstr "Archivos adjuntos:"
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1573
#: src/src/i2p/susi/webmail/WebMail.java:1574
msgid "User"
msgstr "Usuario"
#: src/src/i2p/susi/webmail/WebMail.java:1574
#: src/src/i2p/susi/webmail/WebMail.java:1575
msgid "Password"
msgstr "Contraseña"
#: src/src/i2p/susi/webmail/WebMail.java:1579
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1580
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "POP3-Port"
msgstr "Puerto-POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1581
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "SMTP-Port"
msgstr "Puerto-SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1584
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Reset"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Learn about I2P mail"
msgstr "Aprende sobre I2P mail"
#: src/src/i2p/susi/webmail/WebMail.java:1586
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Crear una cuenta"
#: src/src/i2p/susi/webmail/WebMail.java:1598
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "¿Realmente deseas borrar los mensajes marcados?"
#: src/src/i2p/susi/webmail/WebMail.java:1598
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Sí, realmente eliminarlos!"
#: src/src/i2p/susi/webmail/WebMail.java:1600
#: src/src/i2p/susi/webmail/WebMail.java:1679
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Nuevo"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Responder"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Responder a todos"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Reenviar"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Eliminar"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Comprobar correo"
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Remitente"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Fecha"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Tamaño"
#: src/src/i2p/susi/webmail/WebMail.java:1638
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1643
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Marcar todos"
#: src/src/i2p/susi/webmail/WebMail.java:1644
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Invertir selección"
#: src/src/i2p/susi/webmail/WebMail.java:1645
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Despejar"
#: src/src/i2p/susi/webmail/WebMail.java:1648
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Primero"
#: src/src/i2p/susi/webmail/WebMail.java:1648
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1684
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "Anterior"
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Página {0} de {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1652
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Última"
#: src/src/i2p/susi/webmail/WebMail.java:1652
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1685
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "Siguiente"
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Tamaño de página:"
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Establecer"
#: src/src/i2p/susi/webmail/WebMail.java:1667
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "¿Realmente deseas borrar este mensaje?"
#: src/src/i2p/susi/webmail/WebMail.java:1667
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Sí, ¡bórralo!"
#: src/src/i2p/susi/webmail/WebMail.java:1686
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Volver a carpeta"
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Fecha:"
#: src/src/i2p/susi/webmail/WebMail.java:1704
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "No se pudo descargar el correo."

View File

@ -3,440 +3,448 @@
# This file is distributed under the same license as the susimail package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# Translators:
# <colomboi2p@ymail.com>, 2012.
# <jokjok@hotmail.it>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-09-23 19:48+0000\n"
"PO-Revision-Date: 2011-08-29 19:35+0000\n"
"Last-Translator: mkkid <jokjok@hotmail.it>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/team/it/)\n"
"POT-Creation-Date: 2012-05-25 11:01+0000\n"
"PO-Revision-Date: 2012-05-21 21:49+0000\n"
"Last-Translator: ColomboI2P <colomboi2p@ymail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/language/"
"it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/src/i2p/susi/webmail/WebMail.java:454
#: src/src/i2p/susi/webmail/WebMail.java:435
msgid "unknown"
msgstr "sconosciuto"
#: src/src/i2p/susi/webmail/WebMail.java:473
#: src/src/i2p/susi/webmail/WebMail.java:454
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Attenzione: nessuna codifica di trasferimento trovata, ritorno a 7bit."
#: src/src/i2p/susi/webmail/WebMail.java:478
#: src/src/i2p/susi/webmail/WebMail.java:459
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Nessun codificatore trovato per la codifica \\\"{0}\\\"."
#: src/src/i2p/susi/webmail/WebMail.java:484
#: src/src/i2p/susi/webmail/WebMail.java:465
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Attenzione: nessun charset trovato, ritorno a US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:498
#: src/src/i2p/susi/webmail/WebMail.java:479
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Charset \\\"{0}\\\" non supportato."
#: src/src/i2p/susi/webmail/WebMail.java:502
#: src/src/i2p/susi/webmail/WebMail.java:483
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Parte ({0}) non mostrata, a causa di {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:506
msgid "Download"
msgstr "Download"
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:506
msgid "File is packed into a zipfile for security reasons."
msgstr "Il file è compresso in formato zip per ragioni di sicurezza."
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:506
#, java-format
msgid "attachment ({0})."
msgstr "allegato ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:529
#: src/src/i2p/susi/webmail/WebMail.java:510
#, java-format
msgid "Attachment ({0})."
msgstr "Allegato ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:579
#: src/src/i2p/susi/webmail/WebMail.java:560
msgid "Need username for authentication."
msgstr "Serve l'username per l'autenticazione."
#: src/src/i2p/susi/webmail/WebMail.java:583
#: src/src/i2p/susi/webmail/WebMail.java:564
msgid "Need password for authentication."
msgstr "Serve la password per l'autenticazione."
#: src/src/i2p/susi/webmail/WebMail.java:587
#: src/src/i2p/susi/webmail/WebMail.java:568
msgid "Need hostname for connect."
msgstr "Serve l'hostname per connettersi"
#: src/src/i2p/susi/webmail/WebMail.java:592
#: src/src/i2p/susi/webmail/WebMail.java:573
msgid "Need port number for pop3 connect."
msgstr "Serve il numero di porta per connettersi con pop3."
#: src/src/i2p/susi/webmail/WebMail.java:599
#: src/src/i2p/susi/webmail/WebMail.java:580
msgid "POP3 port number is not in range 0..65535."
msgstr "Il numero di porta POP3 non è nel range 0..65535."
msgstr "Il numero di porta POP3 non è nell'intervallo 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
#: src/src/i2p/susi/webmail/WebMail.java:586
msgid "POP3 port number is invalid."
msgstr "Il numero di porta POP3 non è valido."
#: src/src/i2p/susi/webmail/WebMail.java:611
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for smtp connect."
msgstr "Serve il numero di porta per connettersi con smtp."
#: src/src/i2p/susi/webmail/WebMail.java:618
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "SMTP port number is not in range 0..65535."
msgstr "Il numero di porta SMTP non è nel range 0..65535."
msgstr "Il numero di porta SMTP non è nell'intervallo 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:624
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "SMTP port number is invalid."
msgstr "Il numero di porta SMTP non è valido."
#: src/src/i2p/susi/webmail/WebMail.java:671
#: src/src/i2p/susi/webmail/WebMail.java:652
msgid "User logged out."
msgstr "Utente disconnesso."
#: src/src/i2p/susi/webmail/WebMail.java:675
#: src/src/i2p/susi/webmail/WebMail.java:656
msgid "Internal error, lost connection."
msgstr "Errore interno, connessione persa."
#: src/src/i2p/susi/webmail/WebMail.java:771
#: src/src/i2p/susi/webmail/WebMail.java:752
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Su {0} {1} scritto:"
#: src/src/i2p/susi/webmail/WebMail.java:818
#: src/src/i2p/susi/webmail/WebMail.java:799
msgid "begin forwarded mail"
msgstr "inizia mail inoltrata"
#: src/src/i2p/susi/webmail/WebMail.java:840
#: src/src/i2p/susi/webmail/WebMail.java:821
msgid "end forwarded mail"
msgstr "concludi mail inoltrata"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1708
#: src/src/i2p/susi/webmail/WebMail.java:828
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "Non è stato possibile prendere il cordpo della mail."
msgstr "Non è stato possibile prendere il corpo della mail."
#: src/src/i2p/susi/webmail/WebMail.java:875
#: src/src/i2p/susi/webmail/WebMail.java:856
msgid "Message id not valid."
msgstr "L'id del messaggio non è valido."
#: src/src/i2p/susi/webmail/WebMail.java:958
#: src/src/i2p/susi/webmail/WebMail.java:939
#, java-format
msgid "No Encoding found for {0}"
msgstr "Nessuna codifica trovata per {0}"
msgstr "Nessuna Codifica trovata per {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#: src/src/i2p/susi/webmail/WebMail.java:943
#, java-format
msgid "Could not encode data: {0}"
msgstr "Non è stato possibile codificare i dati: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#: src/src/i2p/susi/webmail/WebMail.java:948
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Errore nella lettura del file mandato: {0}"
msgstr "Errore nella lettura del file inviato: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
#: src/src/i2p/susi/webmail/WebMail.java:1026
msgid "Error parsing download parameter."
msgstr "Errore durante l'analisi del parametro di download."
#: src/src/i2p/susi/webmail/WebMail.java:1089
#: src/src/i2p/susi/webmail/WebMail.java:1070
msgid "Invalid pagesize number, resetting to default value."
msgstr ""
"Numero di dimensione di pagina invalido, sta avvenendo il reset al valore di "
"default."
"Numero di dimensione di pagina invalido, ripristino al valore di default in "
"corso."
#: src/src/i2p/susi/webmail/WebMail.java:1113
#: src/src/i2p/susi/webmail/WebMail.java:1094
msgid "No messages marked for deletion."
msgstr "Nerssun messaggio segnato per l'eliminazione."
msgstr "Nessun messaggio segnato per l'eliminazione."
#: src/src/i2p/susi/webmail/WebMail.java:1133
#: src/src/i2p/susi/webmail/WebMail.java:1114
#, java-format
msgid "Error deleting message: {0}"
msgstr "Errore durante la rimozione del messaggio: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#: src/src/i2p/susi/webmail/WebMail.java:1125
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "1 messaggio cancellato."
msgstr[1] "{0} messaggi cancellati."
msgstr[0] "1 messaggio eliminato."
msgstr[1] "{0} messaggi eliminati."
#: src/src/i2p/susi/webmail/WebMail.java:1266
#: src/src/i2p/susi/webmail/WebMail.java:1594
#: src/src/i2p/susi/webmail/WebMail.java:1248
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Login"
msgstr "Login"
#: src/src/i2p/susi/webmail/WebMail.java:1268
#: src/src/i2p/susi/webmail/WebMail.java:1250
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 Messaggio"
msgstr[1] "{0} Messaggi"
#: src/src/i2p/susi/webmail/WebMail.java:1270
#: src/src/i2p/susi/webmail/WebMail.java:1252
msgid "Show Message"
msgstr "Mostra Messaggio"
#: src/src/i2p/susi/webmail/WebMail.java:1332
#: src/src/i2p/susi/webmail/WebMail.java:1314
#, java-format
msgid "Error decoding content: {0}"
msgstr "Errore nella decodifica del contenuto: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1337
#: src/src/i2p/susi/webmail/WebMail.java:1319
msgid "Error decoding content: No encoder found."
msgstr "Errore nella decodifica del contenuto: Nessun codificatore trovato"
#: src/src/i2p/susi/webmail/WebMail.java:1384
#: src/src/i2p/susi/webmail/WebMail.java:1366
msgid "no subject"
msgstr "nessun soggetto"
#: src/src/i2p/susi/webmail/WebMail.java:1401
#: src/src/i2p/susi/webmail/WebMail.java:1383
msgid "Found no valid sender address."
msgstr "Non è stato trovato nessun indirizzo mittente valido."
#: src/src/i2p/susi/webmail/WebMail.java:1407
#: src/src/i2p/susi/webmail/WebMail.java:1389
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Non è stato trovato nessun indirizzo valido in \\\"{0}\\\"."
#: src/src/i2p/susi/webmail/WebMail.java:1426
#: src/src/i2p/susi/webmail/WebMail.java:1408
msgid "No recipients found."
msgstr "Nessun destinatario trovato."
#: src/src/i2p/susi/webmail/WebMail.java:1433
#: src/src/i2p/susi/webmail/WebMail.java:1415
msgid "Quoted printable encoder not available."
msgstr "Codificatore stampabile citato non disponibile."
#: src/src/i2p/susi/webmail/WebMail.java:1438
#: src/src/i2p/susi/webmail/WebMail.java:1420
msgid "Header line encoder not available."
msgstr "Codificatore linea di testa non disponibile."
msgstr "Codificatore linea di testata non disponibile."
#: src/src/i2p/susi/webmail/WebMail.java:1489
#: src/src/i2p/susi/webmail/WebMail.java:1471
msgid "Mail sent."
msgstr "Mail mandata."
msgstr "Mail inviata."
#: src/src/i2p/susi/webmail/WebMail.java:1526
#: src/src/i2p/susi/webmail/WebMail.java:1510
msgid "Send"
msgstr "Manda"
msgstr "Invia"
#: src/src/i2p/susi/webmail/WebMail.java:1527
#: src/src/i2p/susi/webmail/WebMail.java:1511
msgid "Cancel"
msgstr "Annulla"
#: src/src/i2p/susi/webmail/WebMail.java:1528
#: src/src/i2p/susi/webmail/WebMail.java:1512
msgid "Delete Attachment"
msgstr "Elimina Allegato"
#: src/src/i2p/susi/webmail/WebMail.java:1529
#: src/src/i2p/susi/webmail/WebMail.java:1614
#: src/src/i2p/susi/webmail/WebMail.java:1695
#: src/src/i2p/susi/webmail/WebMail.java:1513
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "Ricarica Configurazione"
#: src/src/i2p/susi/webmail/WebMail.java:1530
#: src/src/i2p/susi/webmail/WebMail.java:1615
#: src/src/i2p/susi/webmail/WebMail.java:1696
#: src/src/i2p/susi/webmail/WebMail.java:1514
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "Disconnettiti"
#: src/src/i2p/susi/webmail/WebMail.java:1553
#: src/src/i2p/susi/webmail/WebMail.java:1700
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "Da:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
#: src/src/i2p/susi/webmail/WebMail.java:1538
msgid "To:"
msgstr "A:"
#: src/src/i2p/susi/webmail/WebMail.java:1555
#: src/src/i2p/susi/webmail/WebMail.java:1539
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1556
#: src/src/i2p/susi/webmail/WebMail.java:1540
msgid "Bcc:"
msgstr "Bcc:"
#: src/src/i2p/susi/webmail/WebMail.java:1557
#: src/src/i2p/susi/webmail/WebMail.java:1702
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Soggetto:"
#: src/src/i2p/susi/webmail/WebMail.java:1558
#: src/src/i2p/susi/webmail/WebMail.java:1542
msgid "Bcc to self"
msgstr "Bcc a se stessi"
#: src/src/i2p/susi/webmail/WebMail.java:1561
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "New Attachment:"
msgstr "Nuovo Allegato"
#: src/src/i2p/susi/webmail/WebMail.java:1561
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Upload File"
msgstr "Manda File"
msgstr "Invia File"
#: src/src/i2p/susi/webmail/WebMail.java:1567
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Attachments:"
msgstr "Allegati:"
#: src/src/i2p/susi/webmail/WebMail.java:1589
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1574
msgid "User"
msgstr "User"
msgstr "Utente"
#: src/src/i2p/susi/webmail/WebMail.java:1590
#: src/src/i2p/susi/webmail/WebMail.java:1575
msgid "Password"
msgstr "Password"
#: src/src/i2p/susi/webmail/WebMail.java:1591
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1592
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "POP3-Port"
msgstr "Porta POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1593
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "SMTP-Port"
msgstr "Porta SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1594
msgid "Create Account"
msgstr "Crea Account"
#: src/src/i2p/susi/webmail/WebMail.java:1594
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "Reset"
msgstr "Reset"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Learn about I2P mail"
msgstr "Ulteriori informazioni sulla mail I2P"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Crea Account"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "Cancellare davvero i messaggi segnati?"
msgstr "Eliminare veramente i messaggi selezionati?"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Sì, cancellali per davvero!"
msgstr "Sì,eliminali per davvero!"
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Nuovo"
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1688
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Rispondi"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1689
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Rispondi A Tutti"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1690
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Inoltra"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1691
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Elimina"
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Controlla Mail"
#: src/src/i2p/susi/webmail/WebMail.java:1617
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Mittente"
#: src/src/i2p/susi/webmail/WebMail.java:1618
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Soggetto"
#: src/src/i2p/susi/webmail/WebMail.java:1619
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Data"
#: src/src/i2p/susi/webmail/WebMail.java:1620
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Dimensione"
#: src/src/i2p/susi/webmail/WebMail.java:1646
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Segna Tutti"
#: src/src/i2p/susi/webmail/WebMail.java:1652
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Inverti Selezione"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Sgombra"
msgstr "Cancella"
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Primo"
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1692
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "Precedente"
#: src/src/i2p/susi/webmail/WebMail.java:1658
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Pagina {0} di {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1661
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Ultimo"
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1661
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "Prossimo"
msgstr "Successivo"
#: src/src/i2p/susi/webmail/WebMail.java:1664
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Dimensione di Pagina:"
#: src/src/i2p/susi/webmail/WebMail.java:1665
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Imposta"
#: src/src/i2p/susi/webmail/WebMail.java:1675
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "Cancellare per davvero questo messaggio?"
msgstr "Eliminare per davvero questo messaggio?"
#: src/src/i2p/susi/webmail/WebMail.java:1675
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Sì, cancellalo per davvero!"
msgstr "Sì, eliminalo per davvero!"
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Torna alla Cartella"
#: src/src/i2p/susi/webmail/WebMail.java:1701
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Data:"
#: src/src/i2p/susi/webmail/WebMail.java:1712
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "Non è stato possibile prendere la mail"
msgstr "Non è stato possibile recuperare la mail"

View File

@ -17,6 +17,12 @@ elif [ $UNIXTYPE = "linux" ] && [ -e /etc/debian_version ]; then
if [ -d /usr/lib/jvm/default-java ]; then
JAVA_HOME="/usr/lib/jvm/default-java"
fi
elif [ $UNIXTYPE = "linux" ] && [ -e /etc/arch-release ]; then
if [ -d /usr/lib/jvm/java-7-openjdk ]; then
JAVA_HOME="/usr/lib/jvm/java-7-openjdk"
elif [ -d /usr/lib/jvm/java-6-openjdk ]; then
JAVA_HOME="/usr/lib/jvm/java-6-openjdk"
fi
elif [ $UNIXTYPE = "darwin" ]; then
JAVA_HOME=$(/usr/libexec/java_home)
fi

View File

@ -25,7 +25,7 @@ mkdir -p lib bin/local
VER=4.3.2
# If JAVA_HOME isn't set, try to figure it out on our own
[ -z $JAVA_HOME ] && . ./find-java-home
[ -z $JAVA_HOME ] && . ../find-java-home
if [ ! -f "$JAVA_HOME/include/jni.h" ]; then
echo "ERROR: Cannot find jni.h! Looked in \"$JAVA_HOME/include/jni.h\"" >&2
echo "Please set JAVA_HOME to a java home that has the JNI" >&2

View File

@ -5,7 +5,7 @@
CC="gcc"
# If JAVA_HOME isn't set we'll try to figure it out
[ -z $JAVA_HOME ] && . ./find-java-home
[ -z $JAVA_HOME ] && . ../find-java-home
if [ ! -f "$JAVA_HOME/include/jni.h" ]; then
echo "Cannot find jni.h! Looked in '$JAVA_HOME/include/jni.h'"
echo "Please set JAVA_HOME to a java home that has the JNI"

View File

@ -41,30 +41,18 @@ case `uname -s` in
elif [ ${UNIXTYPE} = "kfreebsd" ]; then
UNIXTYPE="linux"
fi
# If JAVA_HOME is set elsewhere, obey it. Otherwise we'll try to
# deduce its location ourselves.
if [ -z "${JAVA_HOME}" ]; then
if [ ${UNIXTYPE} = "freebsd" ]; then
if [ -d /usr/local/openjdk6 ]; then
JAVA_HOME="/usr/local/openjdk6"
elif [ -d /usr/local/openjdk7 ]; then
JAVA_HOME="/usr/local/openjdk7"
fi
elif [ ${UNIXTYPE} = "openbsd" ]; then # The default in 4.9
if [ -d /usr/local/jdk-1.7.0 ]; then
JAVA_HOME="/usr/local/jdk-1.7.0"
fi
elif [ ${UNIXTYPE} = "netbsd" ]; then
if [ -d /usr/pkg/java/openjdk7 ]; then
JAVA_HOME="/usr/pkg/java/openjdk7"
fi
elif [ ${UNIXTYPE} = "linux" -a -e /etc/debian_version ]; then
if [ -d /usr/lib/jvm/default-java ]; then
JAVA_HOME="/usr/lib/jvm/default-java"
fi
fi
# If JAVA_HOME isn't set, try to figure it out on our own
[ -z $JAVA_HOME ] && . ../find-java-home
# JAVA_HOME being set doesn't guarantee that it's usable
if [ ! -f "$JAVA_HOME/include/jni.h" ]; then
echo "Please ensure you have a Java SDK installed" >&2
echo "and/or set JAVA_HOME then re-run this script." >&2
exit 1
fi
# Abort script on uncaught errors
set -e
case `uname -m` in
x86_64*|amd64)
ARCH="x86_64";;
@ -77,12 +65,6 @@ case `uname -s` in
exit 1;;
esac
# JAVA_HOME being set doesn't guarantee that it's usable
if [ ! -r ${JAVA_HOME}/include/jni.h ]; then
echo "Please ensure you have a Java SDK installed"
echo "and/or set JAVA_HOME then re-run this script."
exit 1
fi
LINKFLAGS="-shared -Wl,-soname,libjcpuid-${ARCH}-${UNIXTYPE}.so"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so"
COMPILEFLAGS="-fPIC -Wall"

View File

@ -13,7 +13,7 @@ import net.i2p.crypto.KeyGenerator;
/**
* Defines the SigningPrivateKey as defined by the I2P data structure spec.
* A private key is 256byte Integer. The private key represents only the
* A signing private key is 20 byte Integer. The private key represents only the
* exponent, not the primes, which are constant and defined in the crypto spec.
* This key varies from the PrivateKey in its usage (signing, not decrypting)
*

View File

@ -14,7 +14,7 @@ import java.io.IOException;
/**
* Defines the SigningPublicKey as defined by the I2P data structure spec.
* A public key is 256byte Integer. The public key represents only the
* A signing public key is 128 byte Integer. The public key represents only the
* exponent, not the primes, which are constant and defined in the crypto spec.
* This key varies from the PrivateKey in its usage (verifying signatures, not encrypting)
*

View File

@ -1,336 +1,31 @@
package net.i2p.time;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.concurrent.CopyOnWriteArrayList;
import net.i2p.I2PAppContext;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
/**
* Periodically query a series of NTP servers and update any associated
* listeners. It tries the NTP servers in order, contacting them using
* SNTP (UDP port 123). By default, it does this every 5 minutes,
* forever.
* Dummy. Real thing moved to net.i2p.router.time.RouterTimestamper.
* What remains here is essentially an interface,
* containing only what is needed to keep external apps
* compiled with old libs from breaking, since
* net.i2p.util.Clock returns a Timestamper in getTimestamper()
*
* Deprecated outside of the router.
*/
public class Timestamper implements Runnable {
private final I2PAppContext _context;
private Log _log;
private final List<String> _servers;
private List<String> _priorityServers;
private final List<UpdateListener> _listeners;
private int _queryFrequency;
private int _concurringServers;
private int _consecutiveFails;
private volatile boolean _disabled;
private final boolean _daemon;
private boolean _initialized;
private boolean _wellSynced;
private volatile boolean _isRunning;
private Thread _timestamperThread;
private static final int MIN_QUERY_FREQUENCY = 5*60*1000;
private static final int DEFAULT_QUERY_FREQUENCY = 5*60*1000;
private static final String DEFAULT_SERVER_LIST = "0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org";
private static final String DEFAULT_DISABLED = "true";
/** how many times do we have to query if we are changing the clock? */
private static final int DEFAULT_CONCURRING_SERVERS = 3;
private static final int MAX_CONSECUTIVE_FAILS = 10;
/** dummy */
public Timestamper() {}
public static final String PROP_QUERY_FREQUENCY = "time.queryFrequencyMs";
public static final String PROP_SERVER_LIST = "time.sntpServerList";
public static final String PROP_DISABLED = "time.disabled";
public static final String PROP_CONCURRING_SERVERS = "time.concurringServers";
public static final String PROP_IP_COUNTRY = "i2np.lastCountry";
/** if different SNTP servers differ by more than 10s, someone is b0rked */
private static final int MAX_VARIANCE = 10*1000;
public Timestamper(I2PAppContext ctx) {
this(ctx, null, true);
}
public Timestamper(I2PAppContext ctx, UpdateListener lsnr) {
this(ctx, lsnr, true);
}
public Timestamper(I2PAppContext ctx, UpdateListener lsnr, boolean daemon) {
// moved here to prevent problems with synchronized statements.
_servers = new ArrayList(3);
_listeners = new CopyOnWriteArrayList();
_context = ctx;
_daemon = daemon;
// DO NOT initialize _log here, stack overflow via LogManager init loop
// Don't bother starting a thread if we are disabled.
// This means we no longer check every 5 minutes to see if we got enabled,
// so the property must be set at startup.
// We still need to be instantiated since the router calls clock().getTimestamper().waitForInitialization()
String disabled = ctx.getProperty(PROP_DISABLED, DEFAULT_DISABLED);
if (Boolean.valueOf(disabled).booleanValue()) {
_initialized = true;
return;
}
if (lsnr != null)
_listeners.add(lsnr);
updateConfig();
startTimestamper();
}
public int getServerCount() {
synchronized (_servers) {
return _servers.size();
}
}
public String getServer(int index) {
synchronized (_servers) {
return _servers.get(index);
}
}
public int getQueryFrequencyMs() { return _queryFrequency; }
public boolean getIsDisabled() { return _disabled; }
public void addListener(UpdateListener lsnr) {
_listeners.add(lsnr);
}
public void removeListener(UpdateListener lsnr) {
_listeners.remove(lsnr);
}
public int getListenerCount() {
return _listeners.size();
}
public UpdateListener getListener(int index) {
return _listeners.get(index);
}
private void startTimestamper() {
_timestamperThread = new I2PThread(this, "Timestamper", _daemon);
_timestamperThread.setPriority(I2PThread.MIN_PRIORITY);
_isRunning = true;
_timestamperThread.start();
_context.addShutdownTask(new Shutdown());
}
public void waitForInitialization() {
try {
synchronized (this) {
if (!_initialized)
wait();
}
} catch (InterruptedException ie) {}
}
/** dummy */
public void waitForInitialization() {}
/**
* Update the time immediately.
* Dummy
* @since 0.8.8
*/
public void timestampNow() {
if (_initialized && _isRunning && (!_disabled) && _timestamperThread != null)
_timestamperThread.interrupt();
}
public void timestampNow() {}
/** @since 0.8.8 */
private class Shutdown implements Runnable {
public void run() {
_isRunning = false;
if (_timestamperThread != null)
_timestamperThread.interrupt();
}
}
public void run() {
try { Thread.sleep(1000); } catch (InterruptedException ie) {}
_log = _context.logManager().getLog(Timestamper.class);
if (_log.shouldLog(Log.INFO))
_log.info("Starting timestamper");
boolean lastFailed = false;
try {
while (_isRunning) {
updateConfig();
if (!_disabled) {
// first the servers for our country, if we know what country we're in...
if (_priorityServers != null) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Querying servers " + _priorityServers);
try {
lastFailed = !queryTime(_priorityServers.toArray(new String[_priorityServers.size()]));
} catch (IllegalArgumentException iae) {
if ( (!lastFailed) && (_log.shouldLog(Log.WARN)) )
_log.warn("Unable to reach country-specific NTP servers");
lastFailed = true;
}
}
// ... and then the global list, if that failed
if (_priorityServers == null || lastFailed) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Querying servers " + _servers);
try {
lastFailed = !queryTime(_servers.toArray(new String[_servers.size()]));
} catch (IllegalArgumentException iae) {
if ( (!_initialized) && (_log.shouldLog(Log.ERROR)) ) {
List<String> all = new ArrayList();
if (_priorityServers != null)
all.addAll(_priorityServers);
all.addAll(_servers);
_log.error("Unable to reach any of the NTP servers " + all + " - network disconnected? Or set time.sntpServerList=myserver1.com,myserver2.com in advanced configuration.");
}
lastFailed = true;
}
}
}
_initialized = true;
synchronized (this) { notifyAll(); }
long sleepTime;
if (lastFailed) {
if (++_consecutiveFails >= MAX_CONSECUTIVE_FAILS)
sleepTime = 30*60*1000;
else
sleepTime = 30*1000;
} else {
_consecutiveFails = 0;
sleepTime = _context.random().nextInt(_queryFrequency) + _queryFrequency;
if (_wellSynced)
sleepTime *= 3;
}
try { Thread.sleep(sleepTime); } catch (InterruptedException ie) {}
}
} catch (Throwable t) {
_log.log(Log.CRIT, "Timestamper died!", t);
synchronized (this) { notifyAll(); }
}
}
/**
* True if the time was queried successfully, false if it couldn't be
*/
private boolean queryTime(String serverList[]) throws IllegalArgumentException {
long found[] = new long[_concurringServers];
long now = -1;
int stratum = -1;
long expectedDelta = 0;
_wellSynced = false;
for (int i = 0; i < _concurringServers; i++) {
if (i > 0) {
// this delays startup when net is disconnected or the timeserver list is bad, don't make it too long
try { Thread.sleep(2*1000); } catch (InterruptedException ie) {}
}
long[] timeAndStratum = NtpClient.currentTimeAndStratum(serverList);
now = timeAndStratum[0];
stratum = (int) timeAndStratum[1];
long delta = now - _context.clock().now();
found[i] = delta;
if (i == 0) {
if (Math.abs(delta) < MAX_VARIANCE) {
if (_log.shouldLog(Log.INFO))
_log.info("a single SNTP query was within the tolerance (" + delta + "ms)");
// If less than a half second on the first try, we're in good shape
_wellSynced = Math.abs(delta) < 500;
break;
} else {
// outside the tolerance, lets iterate across the concurring queries
expectedDelta = delta;
}
} else {
if (Math.abs(delta - expectedDelta) > MAX_VARIANCE) {
if (_log.shouldLog(Log.ERROR)) {
StringBuilder err = new StringBuilder(96);
err.append("SNTP client variance exceeded at query ").append(i);
err.append(". expected = ");
err.append(expectedDelta);
err.append(", found = ");
err.append(delta);
err.append(" all deltas: ");
for (int j = 0; j < found.length; j++)
err.append(found[j]).append(' ');
_log.error(err.toString());
}
return false;
}
}
}
stampTime(now, stratum);
if (_log.shouldLog(Log.DEBUG)) {
StringBuilder buf = new StringBuilder(64);
buf.append("Deltas: ");
for (int i = 0; i < found.length; i++)
buf.append(found[i]).append(' ');
_log.debug(buf.toString());
}
return true;
}
/**
* Notify the listeners
*
* @since stratum param added in 0.7.12
*/
private void stampTime(long now, int stratum) {
long before = _context.clock().now();
for (UpdateListener lsnr : _listeners) {
lsnr.setNow(now, stratum);
}
if (_log.shouldLog(Log.DEBUG))
_log.debug("Stamped the time as " + now + " (delta=" + (now-before) + ")");
}
/**
* Reload all the config elements from the appContext
*
*/
private void updateConfig() {
String serverList = _context.getProperty(PROP_SERVER_LIST);
if ( (serverList == null) || (serverList.trim().length() <= 0) ) {
serverList = DEFAULT_SERVER_LIST;
String country = _context.getProperty(PROP_IP_COUNTRY);
if (country == null) {
country = Locale.getDefault().getCountry();
if (country != null)
country = country.toLowerCase(Locale.US);
}
if (country != null && country.length() > 0) {
_priorityServers = new ArrayList(3);
for (int i = 0; i < 3; i++)
_priorityServers.add(i + "." + country + ".pool.ntp.org");
} else {
_priorityServers = null;
}
} else {
_priorityServers = null;
}
_servers.clear();
StringTokenizer tok = new StringTokenizer(serverList, ", ");
while (tok.hasMoreTokens()) {
String val = tok.nextToken();
val = val.trim();
if (val.length() > 0)
_servers.add(val);
}
_queryFrequency = Math.max(MIN_QUERY_FREQUENCY,
_context.getProperty(PROP_QUERY_FREQUENCY, DEFAULT_QUERY_FREQUENCY));
String disabled = _context.getProperty(PROP_DISABLED, DEFAULT_DISABLED);
_disabled = Boolean.valueOf(disabled).booleanValue();
_concurringServers = Math.min(4, Math.max(1,
_context.getProperty(PROP_CONCURRING_SERVERS, DEFAULT_CONCURRING_SERVERS)));
}
/****
public static void main(String args[]) {
System.setProperty(PROP_DISABLED, "false");
System.setProperty(PROP_QUERY_FREQUENCY, "30000");
I2PAppContext.getGlobalContext();
for (int i = 0; i < 5*60*1000; i += 61*1000) {
try { Thread.sleep(61*1000); } catch (InterruptedException ie) {}
}
}
****/
/** dummy */
public void run() {}
/**
* Interface to receive update notifications for when we query the time

View File

@ -1,7 +1,8 @@
<html>
<body>
<p>
Provides classes for time synchronisation using NTP.
Provides a stub class for time synchronization.
Full implementation is now in net.i2p.router.time.
</p>
</body>
</html>

View File

@ -19,7 +19,6 @@ import net.i2p.time.Timestamper;
*/
public class Clock implements Timestamper.UpdateListener {
protected final I2PAppContext _context;
private final Timestamper _timestamper;
protected long _startedOn;
protected boolean _statCreated;
protected volatile long _offset;
@ -29,7 +28,6 @@ public class Clock implements Timestamper.UpdateListener {
public Clock(I2PAppContext context) {
_context = context;
_listeners = new CopyOnWriteArraySet();
_timestamper = new Timestamper(context, this);
_startedOn = System.currentTimeMillis();
}
@ -37,7 +35,10 @@ public class Clock implements Timestamper.UpdateListener {
return I2PAppContext.getGlobalContext().clock();
}
public Timestamper getTimestamper() { return _timestamper; }
/**
* This is a dummy, see RouterClock and RouterTimestamper for the real thing
*/
public Timestamper getTimestamper() { return new Timestamper(); }
/** we fetch it on demand to avoid circular dependencies (logging uses the clock) */
protected Log getLog() { return _context.logManager().getLog(Clock.class); }

View File

@ -8,10 +8,10 @@ Subject: rename jcpuid
--- a/core/c/jcpuid/build.sh
+++ b/core/c/jcpuid/build.sh
@@ -83,8 +83,8 @@
echo "and/or set JAVA_HOME then re-run this script."
exit 1
fi
@@ -65,8 +65,8 @@
exit 1;;
esac
- LINKFLAGS="-shared -Wl,-soname,libjcpuid-${ARCH}-${UNIXTYPE}.so"
- LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so"
+ LINKFLAGS="-shared -Wl,-soname,libjcpuid.so"

View File

@ -1,8 +1,41 @@
2012-05-31 zzz
* i2psnark:
- Add per-hour conn limit
- Blacklist peer after two bad handshakes
- Reduce connect timeout
- Close connection immediately if bad protocol
- Stop adding peers when we hit the limit
- Lower limit for outbound connections so we give
new peers a better chance in large swarms
2012-05-30 zzz
* Graphs: Reduce log EOF error to warn
* i2psnark:
- Increase max upload (ticket #645)
- Increase per-minute conn limit from 6 to 8
- Improve rarest-first behavior
- Handle URI encoding, UTF-8, and multiple trackers in magnet links
* Timestamper:
- Move from core to router, leave stub in core
so it doesn't break compatibility. This removes a
thread in app context and prevents any app context from
running NTP; external clients must use the time
received from the router.
- Increase query interval
2012-05-28 kytv
* i2prouter: Add support so that 'i2prouter install' will work in ArchLinux
* jbigi/jcpuid scripts: Improve support for ArchLinux
2012-05-25 kytv
* German, Italian, Spanish, and Swedish translation updates from Transifex
2012-05-23 zzz
* i2psnark:
- Fixes when complete except for skipped files
(ticket #447) status in UI, don't connect outbound,
disconnect seeds when done
- Custom tracker map AIOOBE fix
- More classes pkg private
* jobs.jsp: Add more queue diagnostics

View File

@ -210,7 +210,7 @@ failed() {
}
if [ ! -r "${WRAPPER_CMD}" ]; then
echo "Unable to locate i2psvc in ${I2P}!"
echo "Unable to locate ${WRAPPER_CMD} in ${I2P}!"
echo
unsupported
echo
@ -1220,9 +1220,65 @@ installdaemon() {
fi
fi
elif [ -f /etc/arch-release ]; then
eval echo `gettext 'Detected Arch Linux:'`
eval echo `gettext 'Installing as a daemon is not yet supported in Arch Linux.'`
exit 1
eval echo `gettext 'Detected Arch Linux:'`
if [ -f /etc/rc.d/i2prouter ]; then
eval echo `gettext 'Initscript from AUR package found. Refusing to continue.'`
exit 1
elif [ -f /etc/rc.d/i2p ]; then
eval echo `gettext ' The $APP_LONG_NAME daemon is already installed.'`
exit 1
else
echo "#!/bin/bash" >> /etc/rc.d/${APP_NAME}
echo >> /etc/rc.d/${APP_NAME}
echo ". /etc/rc.conf" >> /etc/rc.d/${APP_NAME}
echo ". /etc/rc.d/functions" >> /etc/rc.d/${APP_NAME}
echo >> /etc/rc.d/${APP_NAME}
echo "case "\$1" in" >> /etc/rc.d/${APP_NAME}
echo " start)" >> /etc/rc.d/${APP_NAME}
echo " stat_busy \"Starting i2p-Router\"" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router start >/dev/null 2>&1" >> /etc/rc.d/${APP_NAME}
echo " if [ \$? -gt 0 ]; then" >> /etc/rc.d/${APP_NAME}
echo " stat_fail" >> /etc/rc.d/${APP_NAME}
echo " else" >> /etc/rc.d/${APP_NAME}
echo " stat_done" >> /etc/rc.d/${APP_NAME}
echo " add_daemon i2prouter" >> /etc/rc.d/${APP_NAME}
echo " fi" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " stop)" >> /etc/rc.d/${APP_NAME}
echo " stat_busy "Stopping i2p-Router"" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router stop > /dev/null 2>&1" >> /etc/rc.d/${APP_NAME}
echo " if [ \$? -gt 0 ]; then" >> /etc/rc.d/${APP_NAME}
echo " stat_fail" >> /etc/rc.d/${APP_NAME}
echo " else" >> /etc/rc.d/${APP_NAME}
echo " stat_done" >> /etc/rc.d/${APP_NAME}
echo " rm_daemon i2prouter" >> /etc/rc.d/${APP_NAME}
echo " fi" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " restart)" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router restart" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " console)" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router console" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " status)" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router status" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " dump)" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router dump" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " graceful)" >> /etc/rc.d/${APP_NAME}
echo " ${REALDIR}/${APP_NAME}router graceful" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo " *)" >> /etc/rc.d/${APP_NAME}
echo " echo \"usage: \$0 {start|stop|restart|console|status|dump}\"" >> /etc/rc.d/${APP_NAME}
echo " ;;" >> /etc/rc.d/${APP_NAME}
echo "esac" >> /etc/rc.d/${APP_NAME}
chmod 755 /etc/rc.d/${APP_NAME}
chown root:root /etc/rc.d/${APP_NAME}
eval echo `gettext ' The $APP_LONG_NAME daemon has been installed.'`
eval echo `gettext ' Add \"i2p\" to the DAEMONS variable in /etc/rc.conf to enable.'`
fi
elif [ -f /etc/SuSE-release ] ; then
eval echo `gettext 'Detected SuSE or SLES:'`
if [ -f "/etc/init.d/$APP_NAME" ] ; then
@ -1416,6 +1472,15 @@ removedaemon() {
eval echo `gettext ' The $APP_LONG_NAME daemon is not currently installed.'`
exit 1
fi
elif [ -f /etc/arch-release ] ; then
eval echo `gettext 'Detected Arch Linux:'`
if [ -f "/etc/rc.d/$APP_NAME" ] ; then
eval echo `gettext ' Removing $APP_LONG_NAME daemon...'`
rm -f "/etc/rc.d/$APP_NAME"
else
eval echo `gettext ' The $APP_LONG_NAME daemon is not currently installed.'`
exit 1
fi
elif [ -f /etc/SuSE-release ] ; then
eval echo `gettext 'Detected SuSE or SLES:'`
if [ -f "/etc/init.d/$APP_NAME" ] ; then

View File

@ -16,6 +16,12 @@ body {
display: none;
}
div.clearer {
clear: left;
height: 0;
line-height: 0;
}
img {
border: none;
}
@ -622,6 +628,7 @@ th {
/* begin home page */
/*
#appsummary {
clear: none;
float: none;
@ -647,16 +654,16 @@ h2.app {
border-radius: 8px;
margin: 1px 10px 15px 0 !important;
}
*/
h4.app {
h4.app, h4.app2 {
margin: 0 10px 2px 10px;
padding: 10px 0 8px 0;
}
h4.app2 {
clear: left;
margin: 0 4px 2px 0;
padding: 16px 0 8px 0;
margin-top: 5px !important;
}
div.ag2 {
@ -666,13 +673,14 @@ div.ag2 {
div.app {
float: left;
padding: 2px;
height: 84px;
/*height: 84px;*/
width: 112px;
text-align: center !important;
}
div.appgroup {
margin: 0;
padding: 16px 8px;
padding: 0 8px;
width: auto;
}

View File

@ -9,13 +9,20 @@ body {
text-align: center;
background: #010 url('images/camotile.png') center bottom;
color: #EE9;
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
font: 8.5pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
}
.hide {
display: none;
}
div.clearer {
clear: left;
height: 0;
line-height: 0;
}
img {
border: none;
}
@ -24,7 +31,7 @@ pre {
width: 98%;
overflow-x: scroll;
text-align: left;
font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: 8.5pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
color: #EE9;
}
@ -77,13 +84,13 @@ div.toolbar a:visited {
background: #ddf;
}
div.toolbar a:hover, button:hover {
div.toolbar a:hover, button:hover{
border: 1px solid #f60;
background: #030;
color: #f60;
}
a:active {
a:active{
color: #900;
}
@ -151,10 +158,10 @@ div.routersummary h3 {
div.routersummary h4 {
border: 0;
border-bottom: 0 !important;
font-size: 8.5pt;
font-size: 8pt;
letter-spacing: 0.02em;
margin: -7px -9px -10px -9px !important;
padding: 6px 3px 9px 3px;
padding: 6px 3px 8px 3px;
background: #000;
text-transform: capitalize;
text-decoration: none !important;
@ -181,14 +188,22 @@ div.routersummary tr {
border: 0 !important;
}
div.routersummary form {
margin: -5px 0 -7px;
}
div.routersummary form:first-child {
margin: 6px 0 -5px 0 !important;
}
div.routersummary p {
padding: 0;
}
div.refresh {
margin-top: 10px !important;
margin-bottom: 10px !important;
padding: 2px 0 !important;
margin-top: -10px !important;
margin-bottom: -4px !important;
padding: 2px 0 0px 0 !important;
}
div.routersummary a:link, div.routersummary a:visited {
@ -308,22 +323,27 @@ div.main {
div.main textarea {
background: #000;
color: #EE9;
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: 8pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
}
div.news {
margin: -1px 5px 0px 205px;
padding: 5px 30px 5px 30px;
padding: 4px 30px 4px 30px;
border: 1px solid #494;
background: #000;
background: #000 url("images/news.png")no-repeat scroll bottom right;
color: #7b7;
/* border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
-khtml-border-radius: 4px 4px 0 0;*/
font-size: 7.5pt;
text-align: right;
-moz-box-shadow: 0 1px 5px #000;
-khtml-box-shadow: 0 1px 5px #000;
box-shadow: 0 1px 5px #000;
min-width: 590px;
min-width: 580px;
/* height: 164px;
overflow-y: auto;*/
}
div.news li {
@ -343,12 +363,8 @@ div.news li {
}
div.news h3 {
background: none;
text-align: left;
border: none;
padding-left: 0;
padding-top: 2px;
border-bottom: 1px dotted;
text-align: left !important;
font-size: 9.5pt;
}
div.news h4 {
@ -420,11 +436,11 @@ div.messages {
color: #4f4;
}
div.error {
div.messages span.error {
color: #d90;
}
div.notice {
div.messages span.notice {
font-style: italic;
}
@ -468,7 +484,7 @@ div.graphspanel img {
text-align: center !important;
background: #000;
opacity: 0.9;
opacity: 0.8;
}
div.graphspanel img:hover {
@ -488,7 +504,7 @@ table {
width: 100%;
border: 1px solid #494;
cell-padding: 1px;
font-size: 7pt;
font-size: 8pt;
background: #030;
margin: 1px 0;
}
@ -548,7 +564,7 @@ td img {
}
tt {
font: bold 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: bold 8pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
color: #FF0;
padding: 0 5px 2px 0;
}
@ -566,7 +582,7 @@ div.main li {
div.main li b {
color: #b70 !important;
letter-spacing: 0.07em;
font-size: 9pt;
font-size: 8.5pt;
text-shadow: 0 1px 1px #700;
}
@ -585,7 +601,7 @@ div.main li b {
.tidylist code {
text-align: left;
font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: 8.5pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
color: #dd0;
padding: 1px 2px;
background: #030;
@ -606,26 +622,26 @@ ul {
code {
text-align: left;
font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: 8.5pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
color: #dd0;
/* padding: 1px 2px;*/
padding: 1px 2px;
}
a:link, h2 a:link {
a:link, h2 a:link{
color: #494;
text-decoration: none;
font-weight: bold;
word-wrap: break-word;
}
a:visited {
a:visited{
color: #7b7;
text-decoration: none;
font-weight: bold;
word-wrap: break-word;
}
a:hover {
a:hover{
color: #f60;
text-decoration: underline;
font-weight: bold;
@ -646,7 +662,7 @@ a:hover {
.links b{
color: #b70 !important;
letter-spacing: 0.07em;
font-size: 9.5pt;
font-size: 8.5pt;
line-height: 165%;
text-shadow: 0 1px 1px #700;
}
@ -656,10 +672,14 @@ p {
line-height: 160%;
}
p img:first-child{
display: none !important;
}
h1 {
text-align: left;
color: #EE9;
padding: 15px 15px 14px;
padding: 14px 15px;
margin: 0 5px 0px 205px !important;
font-size: 17pt;
font-weight: bold;
@ -715,7 +735,7 @@ h2 a:hover {
h3 {
border: 1px solid #494;
border-left: 5px solid #494;
padding: 5px 6px;
padding: 5px 6px 7px;
margin: 12px 0 10px 0;
border-radius: 0 4px 4px 0;
-moz-border-radius: 0 4px 4px 0;
@ -756,72 +776,12 @@ button, button:visited {
color: #494;
}
button.accept {
background: #ffe url('../images/accept.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.add {
background: #ffe url('../images/add.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.cancel {
background: #ffe url('../images/cancel.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.check {
background: #ffe url('../images/tick.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.delete {
background: #ffe url('../images/delete.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.download {
background: #ffe url('../images/arrow_down.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.go {
background: #ffe url('../images/arrow_right.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.reload {
background: #ffe url('../images/arrow_refresh.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.search {
background: #ffe url('../images/magnifier.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button.stop {
background: #ffe url('../images/stop.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
button:hover {
border: 1px solid #f60;
-moz-box-shadow: inset 0px 1px 1px 0px #EE9;
-khtml-box-shadow: inset 0px 1px 1px 0px #EE9;
box-shadow: inset 0px 1px 1px 0px #EE9;
background-color: #000;
background: #000;
color: #f60;
}
@ -841,11 +801,11 @@ button:active {
}
.langbox {
margin: -3px -4px 2px 5px;
padding: 7px 10px 5px 10px;
margin: 5px 3px 2px 5px;
padding: 0;
color: #EE9;
font-size: 7pt;
width: 220px;
width: 260px;
text-align: right;
float: right;
vertical-align: middle;
@ -889,73 +849,14 @@ input {
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
padding: 1px 2px;
text-decoration: none;
min-width: 110px;
border-radius: 4px;
-moz-border-radius: 4px;
-khtml-border-radius: 4px;
}
input.accept {
background: #ffe url('../images/accept.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.add {
background: #ffe url('../images/add.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.cancel {
background: #ffe url('../images/cancel.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.check {
background: #ffe url('../images/tick.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.delete {
background: #ffe url('../images/delete.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.download {
background: #ffe url('../images/arrow_down.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.go {
background: #ffe url('../images/arrow_right.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.reload {
background: #ffe url('../images/arrow_refresh.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input.search[type="text"] {
background: #001 url('../images/magnifier.png') no-repeat 2px center;
padding: 2px 3px 2px 24px;
min-height: 22px;
}
input.stop {
background: #ffe url('../images/stop.png') no-repeat 2px center;
padding: 2px 3px 2px 20px;
min-height: 22px;
}
input:hover {
background-color: #000;
background: #000;
color: #f60;
border: 1px solid #f60;
-moz-box-shadow: inset 0px 1px 1px 0px #9e9;
@ -963,13 +864,19 @@ input:hover {
box-shadow: inset 0px 1px 1px 0px #9e9;
}
input:active {
background: #000;
color: #f30;
border: 1px solid #f30;
}
input:active {
border: 1px inset #f60;
background: #f60;
color: #EE9;
}
input[type=text], input[type=password] {
input[type=text] {
background: #000;
color: #EE9;
margin: 5px 10px;
@ -985,6 +892,10 @@ input[type=text], input[type=password] {
box-shadow: inset 1px 1px 1px 0px #000;
}
input[type=text]:active, input[type=text]:hover {
background: #000;
}
fieldset {
overflow: hidden;
position: relative;
@ -1011,13 +922,15 @@ textarea {
border-radius: 4px;
-moz-border-radius: 4px;
-khtml-border-radius: 4px;
font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font: 8.5pt "Lucida Console", "Droid Sans Mono", "DejaVu Sans Mono", Courier, mono;
min-height: 100px;
min-width: 97%;
text-align: left;
border: 1px solid #494;
}
form {}
.proxyfooter {
margin: 0 20px 10px 240px;
padding: 20px 25px 20px 75px;
@ -1048,7 +961,7 @@ textarea {
}
div.joblog {
/* margin:15px 0 15px 0;
/* margin: 15px 0 15px 0;
padding: 5px 20px 10px 20px !important;
border: 1px solid #494;
background-color: #000;
@ -1061,6 +974,10 @@ div.joblog {
overflow-x: auto; /* Opera fix */
}
div.joblog h3 {
margin-top: 10px;
}
div.main li {
text-align: left;
list-style: square;
@ -1072,6 +989,7 @@ div.main li {
div.joblog li {
word-wrap: break-word !important;
text-align: justify !important;
line-height: 120% !important;
margin: 2px 0px 2px 30px;
padding: 2px 20px 2px 0px;
@ -1080,7 +998,7 @@ div.joblog li {
div.joblog ul {
word-wrap: break-word !important;
text-align: justify;
margin: 0px 0 10px;
margin: 0;
}
div.joblog li:first-child {
@ -1088,7 +1006,7 @@ div.joblog li:first-child {
}
div.joblog li:last-child {
/* margin-bottom: -25px;*/
margin-bottom: -10px;
}
div.joblog form:first-child {
@ -1100,7 +1018,7 @@ div.joblog table {
}
div.joblog p {
line-height: 130%;
line-height: 140%;
}
.smallhead {
@ -1108,7 +1026,7 @@ div.joblog p {
}
.mediumtags {
font-size: 9pt;
font-size: 8.5pt;
}
.optbox {
@ -1150,10 +1068,12 @@ div.joblog p {
border-bottom: 1px solid #494 !important;
font-size: 7pt;
line-height: 110%;
padding: 5px 5px 10px;
}
.formaction {
text-align: right;
margin-bottom: -5px;
}
div.footnote {
@ -1181,6 +1101,7 @@ div.footnote hr{
/* begin home page */
/*
#appsummary {
clear: none;
float: none;
@ -1205,16 +1126,24 @@ h2.app {
border-radius: 8px;
margin: 1px 10px 15px 0 !important;
}
*/
h4.app {
margin: 0 10px 2px 10px;
padding: 10px 0 8px 0;
h4.app, h4.app2 {
background: url('images/header.png') center center repeat-x;
border: 1px solid #449944;
font-size: 10pt;
font-variant: small-caps;
letter-spacing: 2px;
margin: 12px 0 -10px 0;
padding: 7px 8px 7px;
text-transform: uppercase;
border-radius: 4px;
text-align: left;
}
h4.app2 {
clear: left;
margin: 0 4px 2px 0;
padding: 16px 0 8px 0;
margin-top: 5px !important;
}
div.ag2 {
@ -1223,9 +1152,29 @@ div.ag2 {
div.app {
float: left;
padding: 2px;
height: 84px;
width: 112px;
padding: 5px 0 0 !important;
width: 137px;
border: 1px solid #494;
background: #000;
background-image: -moz-linear-gradient(center top , #000B00, #000);
border-radius: 3px;
margin: 5px;
height: 72px;
text-align: center !important;
padding-top: 5px;
opacity: 0.9;
box-shadow: 0 1px 5px #000000;
}
div.app:hover {
opacity: 1;
border: 1px solid #f60;
background: #000;
box-shadow: none;
}
div.app:last-child {
margin-bottom: 12px;
}
div.appgroup {
@ -1251,12 +1200,14 @@ table.search {
img.app {
height: 32px;
width: 32px;
padding: 6px;
padding: 6px 0 8px 0;
margin-bottom: 3px;
}
img.app2p {
height: 40px;
padding: 3px 6px 0 6px;
padding: 5px 6px 0px 6px;
margin-bottom: 3px;
}
table.app {
@ -1276,19 +1227,20 @@ td.app {
background: none;
border: 0;
margin: 0;
padding: 3px 0 0;
}
div.applabel {
background: url('images/header.png') center center repeat-x;
-moz-border-radius: 4px;
-khtml-border-radius: 4px;
border: 2px #00f;
border-radius: 4px;
border-radius: 3px;
border-width: 1px;
font-size: 9pt;
font-size: 7.5pt;
margin: 0;
padding: 3px 6px 4px 6px;
padding: 3px 0;
text-align: center;
vertical-align: bottom;
line-height: 95%;
text-transform: lowercase;
border: none;
}
/* end home page */

View File

@ -38,6 +38,16 @@ b, a, a:link, a:hover, a:visited {
font-weight: normal;
}
h2 {
font-size: 15pt;
text-shadow: none;
font-weight: normal;
}
p {
font-size: 9.5pt;
}
button, button:visited {
font: normal 10pt Verdana,"Bitstream Vera Sans",Tahoma,Helvetica,sans-serif !important;
}
@ -55,3 +65,7 @@ code, pre, tt {
table {
font: 8.5pt/130% Verdana, "Bitstream Vera Sans", Tahoma, Helvetica, sans-serif;
}
div.applabel {
font-size: 8.5pt;
}

View File

@ -4,11 +4,11 @@ body {
margin: 0px;
padding: 0px;
text-align: center;
font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif;
font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
background: #010 url('images/camotile.png') center bottom;
color: #000000;
font-size: 9pt;
/* we've avoided Tantek Hacks so far,
font-size: 8.5pt;
/* we've avoided Tantek Hacks so far,
** but we can't avoid using the non-w3c method of
** box rendering. (and therefore one of mozilla's
** proprietry -moz properties (which hopefully they'll
@ -40,7 +40,7 @@ label {
h4 {
font-size: 14px;
font-weight: bold !important;
text-align: center;
text-align: left;
border: 1px solid #494;
margin: 5px 0 15px 0;
padding: 5px 10px;
@ -63,11 +63,14 @@ form {
}
textarea, input, select, button, a {
font-family: "Lucida Sans Unicode", Verdana, Helvetica, sans-serif;
font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
-moz-box-sizing: border-box;
box-sizing: border-box;
font-size: 9pt;
font-size: 8.5pt;
float: left;
background: #020;
border-radius: 4px;
color: #EEEE99;
}
button {
@ -76,10 +79,6 @@ button {
textarea {
border: 1px solid #494;
color: #fff;
background: #020;
margin-left: 4px;
margin-right: 5px !important;
}
br {
@ -137,12 +136,12 @@ hr {
.freetext {
width: 150px;
height: 22px;
height : 22px;
border: 1px solid #494;
padding: 2px;
margin: 4px 0 2px 4px;
background-color: #020;
font: bold 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
font-size: 8.5pt;
}
.control {
@ -151,7 +150,7 @@ hr {
overflow: hidden;
min-width: 60px;
max-height: 24px;
font-size: 9pt;
font-size: 8pt;
font-weight: bold;
background-color: #000;
color: #9f9 !important;
@ -203,8 +202,8 @@ hr {
margin: 16px auto 16px auto;
overflow: hidden;
text-align: left;
font-size: 9pt;
color: white;
font-size: 8.5pt;
color: #EEEE99;
background-color: #020;
background: #000; /*url(images/camotile2.png);*/
-moz-border-radius: 4px;
@ -239,7 +238,7 @@ hr {
padding: 4px 0 0 2px;
float: left;
margin: 0;
font-size: 9pt !important;
font-size: 8pt !important;
font-weight: bold;
}
@ -266,32 +265,35 @@ hr {
border: 0;
}
a:link {
a:link{
color: #494;
text-decoration: none;
background: #000;
}
a:visited {
a:visited{
color: #7b7;
text-decoration: none;
background: #000;
}
a:hover {
a:hover{
color: #ff6600;
text-decoration: underline;
background: #000;
}
a:active {
a:active{
color: #900;
text-decoration: underline;
background: #000;
}
input {
background-color: #020;
color: #eef;
color: #EEEE99;
margin: 0 2px 0 2px;
font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif;
font-weight: bold;
border: 1px solid #494;
/*
padding: 0px 2px 1px 2px;
@ -301,7 +303,7 @@ input {
input hover {
background-color: #f00;
color: #eef;
color: #EEEE99;
margin: 0 2px 0 2px;
font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif;
font-weight: bold;
@ -312,12 +314,14 @@ input hover {
select {
background-color: #020;
color: #eef;
color: #EEEE99;
margin: 6px 2px 0 2px;
font-family: "Lucida Sans Unicode", Verdana, Tahoma, Helvetica, sans-serif;
border: 1px solid #494;
padding: 2px 2px 2px 4px;
max-height: 24px;
background: #000;
border-radius: 4px;
}
form {}

View File

@ -23,7 +23,7 @@
width: 150px;
}
#tunnelEditPage #targetField label, #tunnelEditPage #accessField label, #tunnelEditPage #tunnelOptionsField label, #tunnelEditPage #optionsField label {
#tunnelEditPage #targetField label, #tunnelEditPage #accessField label, #tunnelEditPage #tunnelOptionsField label, #tunnelEditPage #optionsField label{
height: 48px;
width: 150px;
}
@ -129,7 +129,7 @@
width: 750px;
}
#tunnelListPage .descriptionField .text, #tunnelListPage .destinationField .text {
#tunnelListPage .descriptionField .text, #tunnelListPage .destinationField input {
width: 590px;
}

View File

@ -14,6 +14,12 @@ body {
display: none;
}
div.clearer {
clear: left;
height: 0;
line-height: 0;
}
img {
border: none;
}
@ -594,6 +600,7 @@ td {
/* begin home page */
/*
#appsummary {
clear: none;
float: none;
@ -618,16 +625,16 @@ h2.app {
border-radius: 8px;
margin: 1px 10px 15px 0 !important;
}
*/
h4.app {
h4.app, h4.app2 {
margin: 0 10px 2px 10px;
padding: 10px 0 8px 0;
}
h4.app2 {
clear: left;
margin: 0 4px 2px 0;
padding: 16px 0 8px 0;
margin-top: 5px !important;
}
div.ag2 {
@ -639,6 +646,7 @@ div.app {
padding: 2px;
height: 84px;
width: 112px;
text-align: center !important;
}
div.appgroup {

View File

@ -16,6 +16,12 @@ body {
display: none;
}
div.clearer {
clear: left;
height: 0;
line-height: 0;
}
img {
border: none;
}
@ -630,6 +636,7 @@ th {
/* begin home page */
/*
#appsummary {
clear: none;
float: none;
@ -655,16 +662,16 @@ h2.app {
border-radius: 8px;
margin: 1px 10px 15px 0 !important;
}
*/
h4.app {
h4.app, h4.app2 {
margin: 0 10px 2px 10px;
padding: 10px 0 8px 0;
}
h4.app2 {
clear: left;
margin: 0 4px 2px 0;
padding: 16px 0 8px 0;
margin-top: 5px !important;
}
div.ag2 {
@ -674,13 +681,14 @@ div.ag2 {
div.app {
float: left;
padding: 2px;
height: 84px;
/*height: 84px;*/
width: 112px;
text-align: center !important;
}
div.appgroup {
margin: 0;
padding: 16px 8px;
padding: 0 8px;
width: auto;
}

View File

@ -486,7 +486,24 @@ public class JobQueue {
// Hopefully nobody does that, and as a backup, we hope
// that the TreeSet will eventually resort it from other addJob() calls.
timeToWait = timeLeft;
break;
// failsafe - remove and re-add, peek at the next job,
// break and go around again
if (timeToWait > 10*1000 && iter.hasNext()) {
if (_log.shouldLog(Log.WARN))
_log.warn("Failsafe re-sort job " + j +
" with delay " + DataHelper.formatDuration(timeToWait));
iter.remove();
Job nextJob = iter.next();
_timedJobs.add(j);
long nextTimeLeft = nextJob.getTiming().getStartAfter() - now;
if (timeToWait > nextTimeLeft) {
_log.error("Job " + j + " out of order with job " + nextJob +
" difference of " + DataHelper.formatDuration(timeToWait - nextTimeLeft));
timeToWait = Math.max(10, nextTimeLeft);
}
}
break;
}
}
if (timeToWait < 0)

View File

@ -4,6 +4,8 @@ import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import net.i2p.data.DataHelper;
import net.i2p.router.time.RouterTimestamper;
import net.i2p.time.Timestamper;
import net.i2p.util.Clock;
import net.i2p.util.Log;
@ -38,6 +40,7 @@ public class RouterClock extends Clock {
/** use system time for this */
private long _lastChanged;
private int _lastStratum;
private final Timestamper _timeStamper;
/**
* If the system clock shifts by this much,
@ -56,8 +59,15 @@ public class RouterClock extends Clock {
_lastSlewed = System.currentTimeMillis();
_shiftListeners = new CopyOnWriteArraySet();
_lastShiftNanos = System.nanoTime();
_timeStamper = new RouterTimestamper(context, this);
}
/**
* The RouterTimestamper
*/
@Override
public Timestamper getTimestamper() { return _timeStamper; }
/**
* Specify how far away from the "correct" time the computer is - a positive
* value means that the system time is slow, while a negative value means the system time is fast.

View File

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

View File

@ -156,7 +156,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
return _lookupThrottler.shouldThrottle(from, id);
}
private static final int MAX_TO_FLOOD = 7;
private static final int MAX_TO_FLOOD = 5;
/**
* Send to a subset of all floodfill peers.

View File

@ -63,7 +63,7 @@ public class Reseeder {
"http://netdb.i2p2.de/" + "," +
"http://reseed.i2p-projekt.de/" + "," +
"http://forum.i2p2.de/netdb/" + "," +
"http://www.i2pbote.net/netDb/" + "," +
"http://euve5653.vserver.de/netDb/" + "," +
// "http://r31453.ovh.net/static_media/files/netDb/" + "," +
"http://cowpuncher.drollette.com/netdb/" + "," +
"http://75.145.125.59/netDb/" + "," +
@ -73,7 +73,7 @@ public class Reseeder {
public static final String DEFAULT_SSL_SEED_URL =
"https://netdb.i2p2.de/" + "," +
"https://forum.i2p2.de/netdb/" + "," +
"https://www.i2pbote.net/netDb/" + "," +
"https://euve5653.vserver.de/netDb/" + "," +
"https://reseed.i2p-projekt.de/" + "," +
// "https://r31453.ovh.net/static_media/files/netDb/" + "," +
"https://cowpuncher.drollette.com/netdb/" + "," +

View File

@ -1,4 +1,4 @@
package net.i2p.time;
package net.i2p.router.time;
/*
* Copyright (c) 2004, Adam Buckley
* All rights reserved.
@ -49,8 +49,9 @@ import java.util.Collections;
*
* @author Adam Buckley
* (minor refactoring by jrandom)
* @since 0.9.1 moved from net.i2p.time
*/
public class NtpClient {
class NtpClient {
/** difference between the unix epoch and jan 1 1900 (NTP uses that) */
private final static double SECONDS_1900_TO_EPOCH = 2208988800.0;
private final static int NTP_PORT = 123;

View File

@ -1,4 +1,4 @@
package net.i2p.time;
package net.i2p.router.time;
/*
* Copyright (c) 2004, Adam Buckley
* All rights reserved.
@ -72,8 +72,9 @@ import net.i2p.util.RandomSource;
* NTPMessage.java which is copyright (c) 2003 by Juliusz Chroboczek
*
* @author Adam Buckley
* @since 0.9.1 moved from net.i2p.time
*/
public class NtpMessage {
class NtpMessage {
/**
* This is a two-bit code warning of an impending leap second to be
* inserted/deleted in the last minute of the current day. It's values

View File

@ -0,0 +1,340 @@
package net.i2p.router.time;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
import java.util.concurrent.CopyOnWriteArrayList;
import net.i2p.I2PAppContext;
import net.i2p.time.Timestamper;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
/**
* Periodically query a series of NTP servers and update any associated
* listeners. It tries the NTP servers in order, contacting them using
* SNTP (UDP port 123).
*
* @since 0.9.1 moved from net.i2p.time
*/
public class RouterTimestamper extends Timestamper {
private final I2PAppContext _context;
private Log _log;
private final List<String> _servers;
private List<String> _priorityServers;
private final List<UpdateListener> _listeners;
private int _queryFrequency;
private int _concurringServers;
private int _consecutiveFails;
private volatile boolean _disabled;
private final boolean _daemon;
private boolean _initialized;
private boolean _wellSynced;
private volatile boolean _isRunning;
private Thread _timestamperThread;
private static final int MIN_QUERY_FREQUENCY = 5*60*1000;
private static final int DEFAULT_QUERY_FREQUENCY = 11*60*1000;
private static final String DEFAULT_SERVER_LIST = "0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org";
private static final String DEFAULT_DISABLED = "true";
/** how many times do we have to query if we are changing the clock? */
private static final int DEFAULT_CONCURRING_SERVERS = 3;
private static final int MAX_CONSECUTIVE_FAILS = 10;
public static final String PROP_QUERY_FREQUENCY = "time.queryFrequencyMs";
public static final String PROP_SERVER_LIST = "time.sntpServerList";
public static final String PROP_DISABLED = "time.disabled";
public static final String PROP_CONCURRING_SERVERS = "time.concurringServers";
public static final String PROP_IP_COUNTRY = "i2np.lastCountry";
/** if different SNTP servers differ by more than 10s, someone is b0rked */
private static final int MAX_VARIANCE = 10*1000;
public RouterTimestamper(I2PAppContext ctx) {
this(ctx, null, true);
}
public RouterTimestamper(I2PAppContext ctx, UpdateListener lsnr) {
this(ctx, lsnr, true);
}
public RouterTimestamper(I2PAppContext ctx, UpdateListener lsnr, boolean daemon) {
super();
// moved here to prevent problems with synchronized statements.
_servers = new ArrayList(3);
_listeners = new CopyOnWriteArrayList();
_context = ctx;
_daemon = daemon;
// DO NOT initialize _log here, stack overflow via LogManager init loop
// Don't bother starting a thread if we are disabled.
// This means we no longer check every 5 minutes to see if we got enabled,
// so the property must be set at startup.
// We still need to be instantiated since the router calls clock().getTimestamper().waitForInitialization()
String disabled = ctx.getProperty(PROP_DISABLED, DEFAULT_DISABLED);
if (Boolean.valueOf(disabled).booleanValue()) {
_initialized = true;
return;
}
if (lsnr != null)
_listeners.add(lsnr);
updateConfig();
startTimestamper();
}
public int getServerCount() {
synchronized (_servers) {
return _servers.size();
}
}
public String getServer(int index) {
synchronized (_servers) {
return _servers.get(index);
}
}
public int getQueryFrequencyMs() { return _queryFrequency; }
public boolean getIsDisabled() { return _disabled; }
public void addListener(UpdateListener lsnr) {
_listeners.add(lsnr);
}
public void removeListener(UpdateListener lsnr) {
_listeners.remove(lsnr);
}
public int getListenerCount() {
return _listeners.size();
}
public UpdateListener getListener(int index) {
return _listeners.get(index);
}
private void startTimestamper() {
_timestamperThread = new I2PThread(this, "Timestamper", _daemon);
_timestamperThread.setPriority(I2PThread.MIN_PRIORITY);
_isRunning = true;
_timestamperThread.start();
_context.addShutdownTask(new Shutdown());
}
@Override
public void waitForInitialization() {
try {
synchronized (this) {
if (!_initialized)
wait();
}
} catch (InterruptedException ie) {}
}
/**
* Update the time immediately.
* @since 0.8.8
*/
@Override
public void timestampNow() {
if (_initialized && _isRunning && (!_disabled) && _timestamperThread != null)
_timestamperThread.interrupt();
}
/** @since 0.8.8 */
private class Shutdown implements Runnable {
public void run() {
_isRunning = false;
if (_timestamperThread != null)
_timestamperThread.interrupt();
}
}
@Override
public void run() {
try { Thread.sleep(1000); } catch (InterruptedException ie) {}
_log = _context.logManager().getLog(Timestamper.class);
if (_log.shouldLog(Log.INFO))
_log.info("Starting timestamper");
boolean lastFailed = false;
try {
while (_isRunning) {
updateConfig();
if (!_disabled) {
// first the servers for our country, if we know what country we're in...
if (_priorityServers != null) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Querying servers " + _priorityServers);
try {
lastFailed = !queryTime(_priorityServers.toArray(new String[_priorityServers.size()]));
} catch (IllegalArgumentException iae) {
if ( (!lastFailed) && (_log.shouldLog(Log.WARN)) )
_log.warn("Unable to reach country-specific NTP servers");
lastFailed = true;
}
}
// ... and then the global list, if that failed
if (_priorityServers == null || lastFailed) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Querying servers " + _servers);
try {
lastFailed = !queryTime(_servers.toArray(new String[_servers.size()]));
} catch (IllegalArgumentException iae) {
if ( (!_initialized) && (_log.shouldLog(Log.ERROR)) ) {
List<String> all = new ArrayList();
if (_priorityServers != null)
all.addAll(_priorityServers);
all.addAll(_servers);
_log.error("Unable to reach any of the NTP servers " + all + " - network disconnected? Or set time.sntpServerList=myserver1.com,myserver2.com in advanced configuration.");
}
lastFailed = true;
}
}
}
_initialized = true;
synchronized (this) { notifyAll(); }
long sleepTime;
if (lastFailed) {
if (++_consecutiveFails >= MAX_CONSECUTIVE_FAILS)
sleepTime = 30*60*1000;
else
sleepTime = 30*1000;
} else {
_consecutiveFails = 0;
sleepTime = _context.random().nextInt(_queryFrequency / 2) + _queryFrequency;
if (_wellSynced)
sleepTime *= 3;
}
try { Thread.sleep(sleepTime); } catch (InterruptedException ie) {}
}
} catch (Throwable t) {
_log.log(Log.CRIT, "Timestamper died!", t);
synchronized (this) { notifyAll(); }
}
}
/**
* True if the time was queried successfully, false if it couldn't be
*/
private boolean queryTime(String serverList[]) throws IllegalArgumentException {
long found[] = new long[_concurringServers];
long now = -1;
int stratum = -1;
long expectedDelta = 0;
_wellSynced = false;
for (int i = 0; i < _concurringServers; i++) {
if (i > 0) {
// this delays startup when net is disconnected or the timeserver list is bad, don't make it too long
try { Thread.sleep(2*1000); } catch (InterruptedException ie) {}
}
long[] timeAndStratum = NtpClient.currentTimeAndStratum(serverList);
now = timeAndStratum[0];
stratum = (int) timeAndStratum[1];
long delta = now - _context.clock().now();
found[i] = delta;
if (i == 0) {
if (Math.abs(delta) < MAX_VARIANCE) {
if (_log.shouldLog(Log.INFO))
_log.info("a single SNTP query was within the tolerance (" + delta + "ms)");
// If less than a half second on the first try, we're in good shape
_wellSynced = Math.abs(delta) < 500;
break;
} else {
// outside the tolerance, lets iterate across the concurring queries
expectedDelta = delta;
}
} else {
if (Math.abs(delta - expectedDelta) > MAX_VARIANCE) {
if (_log.shouldLog(Log.ERROR)) {
StringBuilder err = new StringBuilder(96);
err.append("SNTP client variance exceeded at query ").append(i);
err.append(". expected = ");
err.append(expectedDelta);
err.append(", found = ");
err.append(delta);
err.append(" all deltas: ");
for (int j = 0; j < found.length; j++)
err.append(found[j]).append(' ');
_log.error(err.toString());
}
return false;
}
}
}
stampTime(now, stratum);
if (_log.shouldLog(Log.DEBUG)) {
StringBuilder buf = new StringBuilder(64);
buf.append("Deltas: ");
for (int i = 0; i < found.length; i++)
buf.append(found[i]).append(' ');
_log.debug(buf.toString());
}
return true;
}
/**
* Notify the listeners
*
* @since stratum param added in 0.7.12
*/
private void stampTime(long now, int stratum) {
long before = _context.clock().now();
for (UpdateListener lsnr : _listeners) {
lsnr.setNow(now, stratum);
}
if (_log.shouldLog(Log.DEBUG))
_log.debug("Stamped the time as " + now + " (delta=" + (now-before) + ")");
}
/**
* Reload all the config elements from the appContext
*
*/
private void updateConfig() {
String serverList = _context.getProperty(PROP_SERVER_LIST);
if ( (serverList == null) || (serverList.trim().length() <= 0) ) {
serverList = DEFAULT_SERVER_LIST;
String country = _context.getProperty(PROP_IP_COUNTRY);
if (country == null) {
country = Locale.getDefault().getCountry();
if (country != null)
country = country.toLowerCase(Locale.US);
}
if (country != null && country.length() > 0) {
_priorityServers = new ArrayList(3);
for (int i = 0; i < 3; i++)
_priorityServers.add(i + "." + country + ".pool.ntp.org");
} else {
_priorityServers = null;
}
} else {
_priorityServers = null;
}
_servers.clear();
StringTokenizer tok = new StringTokenizer(serverList, ", ");
while (tok.hasMoreTokens()) {
String val = tok.nextToken();
val = val.trim();
if (val.length() > 0)
_servers.add(val);
}
_queryFrequency = Math.max(MIN_QUERY_FREQUENCY,
_context.getProperty(PROP_QUERY_FREQUENCY, DEFAULT_QUERY_FREQUENCY));
String disabled = _context.getProperty(PROP_DISABLED, DEFAULT_DISABLED);
_disabled = Boolean.valueOf(disabled).booleanValue();
_concurringServers = Math.min(4, Math.max(1,
_context.getProperty(PROP_CONCURRING_SERVERS, DEFAULT_CONCURRING_SERVERS)));
}
/****
public static void main(String args[]) {
System.setProperty(PROP_DISABLED, "false");
System.setProperty(PROP_QUERY_FREQUENCY, "30000");
I2PAppContext.getGlobalContext();
for (int i = 0; i < 5*60*1000; i += 61*1000) {
try { Thread.sleep(61*1000); } catch (InterruptedException ie) {}
}
}
****/
}

View File

@ -0,0 +1,7 @@
<html>
<body>
<p>
Provides classes for time synchronization using NTP.
</p>
</body>
</html>