forked from I2P_Developers/i2p.i2p
Compare commits
20 Commits
i2p-0.9.21
...
i2p-0.9.22
Author | SHA1 | Date | |
---|---|---|---|
fd606064d9 | |||
9d05424202 | |||
![]() |
157d494dee | ||
![]() |
fa792a9d5e | ||
![]() |
ab134261f0 | ||
![]() |
de2431e9ee | ||
![]() |
c4cbd7d5c4 | ||
e978bb81a0 | |||
2c6edf401f | |||
fe69d3b8f7 | |||
![]() |
61edd01e3d | ||
483d7c43ee | |||
7c703953be | |||
f577a94012 | |||
b10b8581cc | |||
601376561b | |||
5a11a28a35 | |||
![]() |
fde0ae8349 | ||
![]() |
b5944045fb | ||
ecd0231cd0 |
@@ -22,6 +22,7 @@
|
||||
package net.i2p.addressbook;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
@@ -41,7 +42,7 @@ import java.util.NoSuchElementException;
|
||||
*
|
||||
* @since 0.8.7
|
||||
*/
|
||||
class ConfigIterator implements Iterator<Map.Entry<String, String>> {
|
||||
class ConfigIterator implements Iterator<Map.Entry<String, String>>, Closeable {
|
||||
|
||||
private BufferedReader input;
|
||||
private ConfigEntry next;
|
||||
|
@@ -4,7 +4,7 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# LinuxChata, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014
|
||||
msgid ""
|
||||
@@ -12,9 +12,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-01-09 19:27+0000\n"
|
||||
"PO-Revision-Date: 2014-12-17 17:00+0000\n"
|
||||
"Last-Translator: madjong <madjong@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:31+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
@@ -107,6 +107,27 @@ public class BitField
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the given bit to false.
|
||||
*
|
||||
* @exception IndexOutOfBoundsException if bit is smaller then zero
|
||||
* bigger then size (inclusive).
|
||||
* @since 0.9.22
|
||||
*/
|
||||
public void clear(int bit)
|
||||
{
|
||||
if (bit < 0 || bit >= size)
|
||||
throw new IndexOutOfBoundsException(Integer.toString(bit));
|
||||
int index = bit/8;
|
||||
int mask = 128 >> (bit % 8);
|
||||
synchronized(this) {
|
||||
if ((bitfield[index] & mask) != 0) {
|
||||
count--;
|
||||
bitfield[index] &= ~mask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets all bits to true.
|
||||
*
|
||||
|
@@ -14,6 +14,7 @@ import java.util.Set;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.I2PException;
|
||||
import net.i2p.client.I2PClient;
|
||||
import net.i2p.client.I2PSession;
|
||||
import net.i2p.client.I2PSessionException;
|
||||
import net.i2p.client.streaming.I2PServerSocket;
|
||||
@@ -255,6 +256,8 @@ public class I2PSnarkUtil {
|
||||
opts.setProperty("i2p.streaming.disableRejectLogging", "true");
|
||||
if (opts.getProperty("i2p.streaming.answerPings") == null)
|
||||
opts.setProperty("i2p.streaming.answerPings", "false");
|
||||
if (opts.getProperty(I2PClient.PROP_SIGTYPE) == null)
|
||||
opts.setProperty(I2PClient.PROP_SIGTYPE, "EdDSA_SHA512_Ed25519");
|
||||
_manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts);
|
||||
_connecting = false;
|
||||
}
|
||||
|
@@ -108,7 +108,8 @@ class PartialPiece implements Comparable<PartialPiece> {
|
||||
|
||||
/**
|
||||
* Convert this PartialPiece to a request for the next chunk.
|
||||
* Used by PeerState only.
|
||||
* Used by PeerState only. This depends on the downloaded value
|
||||
* as set by setDownloaded() or read().
|
||||
*/
|
||||
|
||||
public Request getRequest() {
|
||||
@@ -128,14 +129,16 @@ class PartialPiece implements Comparable<PartialPiece> {
|
||||
}
|
||||
|
||||
/**
|
||||
* How many bytes are good - only valid by setDownloaded()
|
||||
* How many bytes are good - as set by setDownloaded() or read()
|
||||
*/
|
||||
public int getDownloaded() {
|
||||
return this.off;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this before returning a PartialPiece to the PeerCoordinator
|
||||
* Call this if necessary before returning a PartialPiece to the PeerCoordinator.
|
||||
* We do not use a bitmap to track individual chunks received.
|
||||
* Any chunks after a 'hole' will be lost.
|
||||
* @since 0.9.1
|
||||
*/
|
||||
public void setDownloaded(int offset) {
|
||||
@@ -191,11 +194,20 @@ class PartialPiece implements Comparable<PartialPiece> {
|
||||
|
||||
/**
|
||||
* Blocking.
|
||||
* If offset matches the previous downloaded amount
|
||||
* (as set by a previous call to read() or setDownlaoded()),
|
||||
* the downloaded amount will be incremented by len.
|
||||
*
|
||||
* @since 0.9.1
|
||||
*/
|
||||
public void read(DataInputStream din, int off, int len) throws IOException {
|
||||
public void read(DataInputStream din, int offset, int len) throws IOException {
|
||||
if (bs != null) {
|
||||
din.readFully(bs, off, len);
|
||||
din.readFully(bs, offset, len);
|
||||
synchronized (this) {
|
||||
// only works for in-order chunks
|
||||
if (this.off == offset)
|
||||
this.off += len;
|
||||
}
|
||||
} else {
|
||||
// read in fully before synching on raf
|
||||
ByteArray ba;
|
||||
@@ -211,8 +223,11 @@ class PartialPiece implements Comparable<PartialPiece> {
|
||||
synchronized (this) {
|
||||
if (raf == null)
|
||||
createTemp();
|
||||
raf.seek(off);
|
||||
raf.seek(offset);
|
||||
raf.write(tmp);
|
||||
// only works for in-order chunks
|
||||
if (this.off == offset)
|
||||
this.off += len;
|
||||
}
|
||||
if (ba != null)
|
||||
_cache.release(ba, false);
|
||||
|
@@ -170,6 +170,8 @@ class PeerConnectionOut implements Runnable
|
||||
lastSent = System.currentTimeMillis();
|
||||
|
||||
// Remove all piece messages after sending a choke message.
|
||||
// FiXME this causes REJECT messages to be sent before sending the CHOKE;
|
||||
// BEP 6 recommends sending them after.
|
||||
if (m.type == Message.CHOKE)
|
||||
removeMessage(Message.PIECE);
|
||||
|
||||
|
@@ -920,6 +920,7 @@ class PeerCoordinator implements PeerListener
|
||||
* Returns a byte array containing the requested piece or null of
|
||||
* the piece is unknown.
|
||||
*
|
||||
* @return bytes or null for errors such as not having the piece yet
|
||||
* @throws RuntimeException on IOE getting the data
|
||||
*/
|
||||
public ByteArray gotRequest(Peer peer, int piece, int off, int len)
|
||||
@@ -1010,9 +1011,21 @@ class PeerCoordinator implements PeerListener
|
||||
}
|
||||
else
|
||||
{
|
||||
// so we will try again
|
||||
markUnrequested(peer, piece);
|
||||
// just in case
|
||||
removePartialPiece(piece);
|
||||
// Oops. We didn't actually download this then... :(
|
||||
downloaded.addAndGet(0 - metainfo.getPieceLength(piece));
|
||||
_log.warn("Got BAD piece " + piece + "/" + metainfo.getPieces() + " from " + peer + " for " + metainfo.getName());
|
||||
// Mark this peer as not having the piece. PeerState will update its bitfield.
|
||||
for (Piece pc : wantedPieces) {
|
||||
if (pc.getId() == piece) {
|
||||
pc.removePeer(peer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_log.shouldWarn())
|
||||
_log.warn("Got BAD piece " + piece + "/" + metainfo.getPieces() + " from " + peer + " for " + metainfo.getName());
|
||||
return false; // No need to announce BAD piece to peers.
|
||||
}
|
||||
}
|
||||
@@ -1141,8 +1154,9 @@ class PeerCoordinator implements PeerListener
|
||||
*
|
||||
* Also mark the piece unrequested if this peer was the only one.
|
||||
*
|
||||
* @param peer partials, must include the zero-offset (empty) ones too
|
||||
* No dup pieces, piece.setDownloaded() must be set
|
||||
* @param peer partials, must include the zero-offset (empty) ones too.
|
||||
* No dup pieces, piece.setDownloaded() must be set.
|
||||
* len field in Requests is ignored.
|
||||
* @since 0.8.2
|
||||
*/
|
||||
public void savePartialPieces(Peer peer, List<Request> partials)
|
||||
|
@@ -21,6 +21,7 @@
|
||||
package org.klomp.snark;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@@ -238,6 +239,8 @@ class PeerState implements DataLoader
|
||||
}
|
||||
|
||||
// Sanity check
|
||||
// There is no check here that we actually have the piece;
|
||||
// this will be caught in loadData() below
|
||||
if (piece < 0
|
||||
|| piece >= metainfo.getPieces()
|
||||
|| begin < 0
|
||||
@@ -251,6 +254,8 @@ class PeerState implements DataLoader
|
||||
+ ", " + begin
|
||||
+ ", " + length
|
||||
+ "' message from " + peer);
|
||||
if (peer.supportsFast())
|
||||
out.sendReject(piece, begin, length);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -281,7 +286,8 @@ class PeerState implements DataLoader
|
||||
/**
|
||||
* This is the callback that PeerConnectionOut calls
|
||||
*
|
||||
* @return bytes or null for errors
|
||||
* @return bytes or null for errors such as not having the piece yet
|
||||
* @throws RuntimeException on IOE getting the data
|
||||
* @since 0.8.2
|
||||
*/
|
||||
public ByteArray loadData(int piece, int begin, int length) {
|
||||
@@ -291,6 +297,8 @@ class PeerState implements DataLoader
|
||||
// XXX - Protocol error-> diconnect?
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Got request for unknown piece: " + piece);
|
||||
if (peer.supportsFast())
|
||||
out.sendReject(piece, begin, length);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -303,6 +311,8 @@ class PeerState implements DataLoader
|
||||
+ ", " + begin
|
||||
+ ", " + length
|
||||
+ "' message from " + peer);
|
||||
if (peer.supportsFast())
|
||||
out.sendReject(piece, begin, length);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -360,6 +370,11 @@ class PeerState implements DataLoader
|
||||
{
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Got BAD " + req.getPiece() + " from " + peer);
|
||||
synchronized(this) {
|
||||
// so we don't ask again
|
||||
if (bitfield != null)
|
||||
bitfield.clear(req.getPiece());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,7 +508,12 @@ class PeerState implements DataLoader
|
||||
for (Integer p : pcs) {
|
||||
Request req = getLowestOutstandingRequest(p.intValue());
|
||||
if (req != null) {
|
||||
req.getPartialPiece().setDownloaded(req.off);
|
||||
PartialPiece pp = req.getPartialPiece();
|
||||
synchronized(pp) {
|
||||
int dl = pp.getDownloaded();
|
||||
if (req.off != dl)
|
||||
req = new Request(pp, dl, 1);
|
||||
}
|
||||
rv.add(req);
|
||||
}
|
||||
}
|
||||
@@ -598,6 +618,13 @@ class PeerState implements DataLoader
|
||||
|
||||
/**
|
||||
* BEP 6
|
||||
* If the peer rejects lower chunks but not higher ones, thus creating holes,
|
||||
* we won't figure it out and the piece will fail, since we don't currently
|
||||
* keep a chunk bitmap in PartialPiece.
|
||||
* As long as the peer rejects all the chunks, or rejects only the last chunks,
|
||||
* no holes are created and we will be fine. The reject messages may be in any order,
|
||||
* just don't make a hole when it's over.
|
||||
*
|
||||
* @since 0.9.21
|
||||
*/
|
||||
void rejectMessage(int piece, int begin, int length) {
|
||||
@@ -605,10 +632,34 @@ class PeerState implements DataLoader
|
||||
_log.info("Got reject(" + piece + ',' + begin + ',' + length + ") from " + peer);
|
||||
out.cancelRequest(piece, begin, length);
|
||||
synchronized(this) {
|
||||
Request deletedRequest = null;
|
||||
// for this piece only
|
||||
boolean haveMoreRequests = false;
|
||||
for (Iterator<Request> iter = outstandingRequests.iterator(); iter.hasNext(); ) {
|
||||
Request req = iter.next();
|
||||
if (req.getPiece() == piece && req.off == begin && req.len == length)
|
||||
iter.remove();
|
||||
if (req.getPiece() == piece) {
|
||||
if (req.off == begin && req.len == length) {
|
||||
iter.remove();
|
||||
deletedRequest = req;
|
||||
} else {
|
||||
haveMoreRequests = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (deletedRequest != null && !haveMoreRequests) {
|
||||
// We must return the piece to the coordinator
|
||||
// Create a new fake request so we can set the offset correctly
|
||||
PartialPiece pp = deletedRequest.getPartialPiece();
|
||||
int downloaded = pp.getDownloaded();
|
||||
Request req;
|
||||
if (deletedRequest.off == downloaded)
|
||||
req = deletedRequest;
|
||||
else
|
||||
req = new Request(pp, downloaded, 1);
|
||||
List<Request> pcs = Collections.singletonList(req);
|
||||
listener.savePartialPieces(this.peer, pcs);
|
||||
if (_log.shouldWarn())
|
||||
_log.warn("Returned to coord. w/ offset " + pp.getDownloaded() + " due to reject(" + piece + ',' + begin + ',' + length + ") from " + peer);
|
||||
}
|
||||
if (lastRequest != null && lastRequest.getPiece() == piece &&
|
||||
lastRequest.off == begin && lastRequest.len == length)
|
||||
|
@@ -43,13 +43,13 @@ class Request
|
||||
*/
|
||||
Request(PartialPiece piece, int off, int len)
|
||||
{
|
||||
// Sanity check
|
||||
if (off < 0 || len <= 0 || off + len > piece.getLength())
|
||||
throw new IndexOutOfBoundsException("Illegal Request " + toString());
|
||||
|
||||
this.piece = piece;
|
||||
this.off = off;
|
||||
this.len = len;
|
||||
|
||||
// Sanity check
|
||||
if (off < 0 || len <= 0 || off + len > piece.getLength())
|
||||
throw new IndexOutOfBoundsException("Illegal Request " + toString());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1247,7 +1247,7 @@ public class SnarkManager implements CompleteListener {
|
||||
_log.info("New Snark, torrent: " + filename + " base: " + baseFile);
|
||||
torrent = new Snark(_util, filename, null, -1, null, null, this,
|
||||
_peerCoordinatorSet, _connectionAcceptor,
|
||||
false, dataDir.getPath(), baseFile);
|
||||
shouldAutoStart(), dataDir.getPath(), baseFile);
|
||||
loadSavedFilePriorities(torrent);
|
||||
synchronized (_snarks) {
|
||||
_snarks.put(filename, torrent);
|
||||
@@ -1278,7 +1278,7 @@ public class SnarkManager implements CompleteListener {
|
||||
running = true;
|
||||
} else {
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
// Were we running last time?
|
||||
if (!dontAutoStart && shouldAutoStart() && running) {
|
||||
torrent.startTorrent();
|
||||
|
@@ -20,6 +20,7 @@
|
||||
|
||||
package org.klomp.snark;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -50,7 +51,7 @@ import net.i2p.util.SystemVersion;
|
||||
/**
|
||||
* Maintains pieces on disk. Can be used to store and retrieve pieces.
|
||||
*/
|
||||
public class Storage
|
||||
public class Storage implements Closeable
|
||||
{
|
||||
private final MetaInfo metainfo;
|
||||
private final List<TorrentFile> _torrentFiles;
|
||||
|
@@ -12,7 +12,7 @@
|
||||
# Ettore Atalan <atalanttore@googlemail.com>, 2014
|
||||
# foo <foo@bar>, 2009
|
||||
# SteinQuadrat, 2013
|
||||
# Lars Schimmer <echelon@i2pmail.org>, 2014
|
||||
# Lars Schimmer <echelon@i2pmail.org>, 2014-2015
|
||||
# Max Muster <scr53875@soisz.com>, 2014
|
||||
# mixxy, 2011
|
||||
# nextloop <ga25day@mytum.de>, 2013
|
||||
@@ -23,9 +23,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:09+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:32+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
|
||||
"PO-Revision-Date: 2015-08-21 21:02+0000\n"
|
||||
"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
|
||||
"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -659,7 +659,7 @@ msgstr[1] "{0} DHT-Gegenstellen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
|
||||
msgid "Dest"
|
||||
msgstr ""
|
||||
msgstr "Ziel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
|
||||
msgid "First"
|
||||
|
@@ -11,14 +11,15 @@
|
||||
# polacco <polacco@i2pmail.org>, 2012
|
||||
# seb, 2014
|
||||
# Smert i2p <Smert@safe-mail.net>, 2013
|
||||
# Taporpo Ne <taporpone@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:09+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:32+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
|
||||
"PO-Revision-Date: 2015-09-03 19:18+0000\n"
|
||||
"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -655,7 +656,7 @@ msgstr[2] "{0} peerów DHT"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
|
||||
msgid "Dest"
|
||||
msgstr ""
|
||||
msgstr "Cel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
|
||||
msgid "First"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -4,8 +4,9 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2012
|
||||
# Denis Lysenko <gribua@gmail.com>, 2015
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2012
|
||||
# jonny_nut, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014
|
||||
# puxud <puxud@alivance.com>, 2014
|
||||
@@ -13,10 +14,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
|
||||
"PO-Revision-Date: 2015-03-29 14:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"POT-Creation-Date: 2015-05-14 08:33+0000\n"
|
||||
"PO-Revision-Date: 2015-08-07 17:15+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -36,7 +37,7 @@ msgstr ""
|
||||
#: ../java/build/Proxy.java:129 ../java/build/Proxy.java:140
|
||||
#: ../java/build/Proxy.java:151 ../java/build/Proxy.java:164
|
||||
#: ../java/build/Proxy.java:173 ../java/build/Proxy.java:185
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:207
|
||||
msgid "Router Console"
|
||||
msgstr "Консоль роутера"
|
||||
|
||||
@@ -50,7 +51,7 @@ msgstr "Консоль роутера"
|
||||
#: ../java/build/Proxy.java:152 ../java/build/Proxy.java:165
|
||||
#: ../java/build/Proxy.java:174 ../java/build/Proxy.java:186
|
||||
msgid "I2P Router Console"
|
||||
msgstr "Консоль роутера"
|
||||
msgstr "Консоль роутера I2P"
|
||||
|
||||
#: ../java/build/Proxy.java:8 ../java/build/Proxy.java:20
|
||||
#: ../java/build/Proxy.java:30 ../java/build/Proxy.java:40
|
||||
@@ -61,7 +62,7 @@ msgstr "Консоль роутера"
|
||||
#: ../java/build/Proxy.java:131 ../java/build/Proxy.java:142
|
||||
#: ../java/build/Proxy.java:153 ../java/build/Proxy.java:166
|
||||
#: ../java/build/Proxy.java:175 ../java/build/Proxy.java:187
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
|
||||
msgid "Configuration"
|
||||
msgstr "Настройки"
|
||||
|
||||
@@ -74,7 +75,7 @@ msgstr "Настройки"
|
||||
#: ../java/build/Proxy.java:132 ../java/build/Proxy.java:143
|
||||
#: ../java/build/Proxy.java:154 ../java/build/Proxy.java:167
|
||||
#: ../java/build/Proxy.java:176 ../java/build/Proxy.java:188
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
|
||||
msgid "Help"
|
||||
msgstr "Допомога"
|
||||
|
||||
@@ -87,7 +88,7 @@ msgstr "Допомога"
|
||||
#: ../java/build/Proxy.java:133 ../java/build/Proxy.java:144
|
||||
#: ../java/build/Proxy.java:155 ../java/build/Proxy.java:168
|
||||
#: ../java/build/Proxy.java:177 ../java/build/Proxy.java:189
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
|
||||
msgid "Addressbook"
|
||||
msgstr "Адресна книга"
|
||||
|
||||
@@ -440,15 +441,15 @@ msgid ""
|
||||
"tunnel."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:610
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:634
|
||||
msgid "This seems to be a bad destination:"
|
||||
msgstr "Скоріше всього це поганий адрес призначення:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:611
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:635
|
||||
msgid "i2paddresshelper cannot help you with a destination like that!"
|
||||
msgstr "i2paddresshelper не може допомогти Вам з місцем призначення як це!"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:684
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:709
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a "
|
||||
@@ -456,79 +457,79 @@ msgid ""
|
||||
"click <a href=\"{1}\">here</a>."
|
||||
msgstr "Для того щоб перейти по локальному посиланню з локальної адресної книги, натисніть ось<a href=\"{0}\">тут</a>. Для переходу по новому addresshelper-посиланню, натисніть будь-ласка <a href=\"{1}\">тут</a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1095
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1119
|
||||
msgid "Destination lease set not found"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1245
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1271
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1249
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1275
|
||||
msgid "Base 32"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1253
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1279
|
||||
msgid "Destination"
|
||||
msgstr "Адреса призначення"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1259
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1285
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Продовжити до {0} без збереження"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1265
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1291
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to website"
|
||||
msgstr ""
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1268
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1294
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to website"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1269
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1295
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to website"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:156
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:169
|
||||
#, java-format
|
||||
msgid "Added via address helper from {0}"
|
||||
msgstr "Додано через address helper {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:158
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:171
|
||||
msgid "Added via address helper"
|
||||
msgstr "Додано через address helper"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:175
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:188
|
||||
msgid "router"
|
||||
msgstr "роутер"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:177
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
|
||||
msgid "master"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:179
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
|
||||
msgid "private"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:186
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Перенаправляємо до {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:213
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} збережено в {1} адресної книги, перенапрявляємо."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:199
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:214
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Не вдалось зберегти {0} в {1} адресної книги, перенаправляємо."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
|
||||
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:216
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Клацніть тут якщо вас не перенаправило автоматично."
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Anders Nilsson <locally@devode.se>, 2015
|
||||
# Calle Rundgren <samaire@samaire.net>, 2013
|
||||
# cacapo <handelsehorisont@gmail.com>, 2015
|
||||
# hottuna <i2p@robertfoss.se>, 2013
|
||||
@@ -14,9 +15,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
|
||||
"PO-Revision-Date: 2015-04-09 17:35+0000\n"
|
||||
"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
|
||||
"PO-Revision-Date: 2015-08-25 20:41+0000\n"
|
||||
"Last-Translator: Anders Nilsson <locally@devode.se>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.com/otf/I2P/language/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -108,7 +109,7 @@ msgstr "Standard klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:378
|
||||
msgid "HTTP/HTTPS client"
|
||||
msgstr "HTTP/HTTPS klient"
|
||||
msgstr "HTTP/HTTPS-klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:379
|
||||
msgid "IRC client"
|
||||
@@ -163,11 +164,11 @@ msgstr "Ogiltig adress"
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:82
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:85
|
||||
msgid "Hidden Services Manager"
|
||||
msgstr "Manager Dolda Tjänster"
|
||||
msgstr "Hanterare för dolda tjänster"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:86
|
||||
msgid "Edit Client Tunnel"
|
||||
msgstr "Redigera Klienttunnel"
|
||||
msgstr "Redigera klienttunnel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:114
|
||||
msgid "Edit proxy settings"
|
||||
@@ -240,11 +241,11 @@ msgstr "Utgående proxier"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245
|
||||
msgid "SSL Outproxies"
|
||||
msgstr "SSL Outproxies"
|
||||
msgstr "SSL-utproxies"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
|
||||
msgid "Use Outproxy Plugin"
|
||||
msgstr "Använd Outproxy Plugin"
|
||||
msgstr "Använd Outproxy-plugin"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:293
|
||||
@@ -313,22 +314,22 @@ msgstr "Längd"
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:318
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:316
|
||||
msgid "0 hop tunnel (no anonymity)"
|
||||
msgstr "0 hop tunnel (ingen anonymitet)"
|
||||
msgstr "0-hopp tunnel (ingen anonymitet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:322
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
|
||||
msgid "1 hop tunnel (low anonymity)"
|
||||
msgstr "1 hop tunnel (låg anonymitet)"
|
||||
msgstr "1-hopp tunnel (låg anonymitet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:326
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:324
|
||||
msgid "2 hop tunnel (medium anonymity)"
|
||||
msgstr "2 hot tunnel (medium anonymitet)"
|
||||
msgstr "2-hopp tunnel (medium anonymitet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:328
|
||||
msgid "3 hop tunnel (high anonymity)"
|
||||
msgstr "3 hop tunnel (hög anonymitet)"
|
||||
msgstr "3-hopp tunnel (hög anonymitet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:338
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336
|
||||
@@ -519,23 +520,23 @@ msgstr "Lokalt mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
|
||||
msgid "Local Base 32"
|
||||
msgstr "Lokal Base 32"
|
||||
msgstr "Lokal bas32"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
|
||||
msgid "Pass User-Agent header through"
|
||||
msgstr "Förmedla User-Agent header"
|
||||
msgstr "Skicka User-Agent-fältet vidare"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:539
|
||||
msgid "Pass Referer header through"
|
||||
msgstr "Förmedla Referer header"
|
||||
msgstr "Skicka Referer-fältet vidare"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:545
|
||||
msgid "Pass Accept headers through"
|
||||
msgstr "Förmedla Accept headers"
|
||||
msgstr "Skicka Accept-fältet vidare"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:551
|
||||
msgid "Allow SSL to I2P addresses"
|
||||
msgstr "Tillåt SSL till I2P adresser"
|
||||
msgstr "Tillåt SSL till I2P-adresser"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:562
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:618
|
||||
@@ -591,7 +592,7 @@ msgstr "Spara"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:86
|
||||
msgid "Edit Hidden Service"
|
||||
msgstr "Redigera Dold Tjänst"
|
||||
msgstr "Redigera dold tjänst"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:114
|
||||
msgid "Edit server settings"
|
||||
@@ -663,7 +664,7 @@ msgstr "Blockera tillgång via inproxies"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
|
||||
msgid "Unique Local Address per Client"
|
||||
msgstr "Unik Lokal Adress per Klient"
|
||||
msgstr "Unik lokal adress per klient"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:503
|
||||
msgid "Optimize for Multihoming"
|
||||
@@ -745,7 +746,7 @@ msgstr "Starta Om Alla"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126
|
||||
msgid "I2P Hidden Services"
|
||||
msgstr "I2P Dolda Tjänster"
|
||||
msgstr "I2P Dolda tjänster"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:151
|
||||
|
@@ -5,8 +5,8 @@
|
||||
#
|
||||
# Translators:
|
||||
# asteryx <asteryx82@gmail.com>, 2015
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2012
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2012
|
||||
# LinuxChata, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014-2015
|
||||
# brianhopes <voganc-12@live.ru>, 2015
|
||||
@@ -15,9 +15,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
|
||||
"PO-Revision-Date: 2015-05-07 07:43+0000\n"
|
||||
"Last-Translator: brianhopes <voganc-12@live.ru>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:31+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
@@ -465,7 +465,7 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
|
||||
else
|
||||
_ignorePathMap = null;
|
||||
|
||||
_writer = new OutputStreamWriter(_out);
|
||||
_writer = new OutputStreamWriter(_out, "UTF-8");
|
||||
_buffers = new ArrayList<Utf8StringBuilder>();
|
||||
_copy = new char[1024];
|
||||
super.doStart();
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Denis Lysenko <gribua@gmail.com>, 2015
|
||||
# madjong <madjong@i2pmail.org>, 2015
|
||||
# puxud <puxud@alivance.com>, 2014
|
||||
msgid ""
|
||||
@@ -11,9 +12,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
|
||||
"PO-Revision-Date: 2015-04-10 13:47+0000\n"
|
||||
"Last-Translator: madjong <madjong@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 17:12+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -22,11 +23,11 @@ msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:69
|
||||
msgid "Message timeout"
|
||||
msgstr ""
|
||||
msgstr "Тайм-аут повідомлення"
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:72
|
||||
msgid "Failed delivery to local destination"
|
||||
msgstr ""
|
||||
msgstr "Не вдалось доставити до локального призначення"
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:75
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:108
|
||||
@@ -51,11 +52,11 @@ msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:90
|
||||
msgid "Buffer overflow"
|
||||
msgstr ""
|
||||
msgstr "Буфер заповнено"
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:93
|
||||
msgid "Message expired"
|
||||
msgstr ""
|
||||
msgstr "Повідомлення застаріло"
|
||||
|
||||
#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:96
|
||||
msgid "Local lease set invalid"
|
||||
|
@@ -517,7 +517,7 @@ public class RouterConsoleRunner implements RouterApp {
|
||||
sslFactory.setKeyManagerPassword(_context.getProperty(PROP_KEY_PASSWORD, "thisWontWork"));
|
||||
sslFactory.addExcludeProtocols(I2PSSLSocketFactory.EXCLUDE_PROTOCOLS.toArray(
|
||||
new String[I2PSSLSocketFactory.EXCLUDE_PROTOCOLS.size()]));
|
||||
sslFactory.addExcludeCipherSuites(I2PSSLSocketFactory.INCLUDE_CIPHERS.toArray(
|
||||
sslFactory.addExcludeCipherSuites(I2PSSLSocketFactory.EXCLUDE_CIPHERS.toArray(
|
||||
new String[I2PSSLSocketFactory.EXCLUDE_CIPHERS.size()]));
|
||||
StringTokenizer tok = new StringTokenizer(_sslListenHost, " ,");
|
||||
while (tok.hasMoreTokens()) {
|
||||
|
@@ -9,15 +9,16 @@
|
||||
# polacco <polacco@i2pmail.org>, 2014
|
||||
# polacco <polacco@i2pmail.org>, 2012
|
||||
# PolishAnon <b790979@klzlk.com>, 2011
|
||||
# Taporpo Ne <taporpone@gmail.com>, 2015
|
||||
# Tracerneo <ziolkoneo@gmail.com>, 2013
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:08+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
|
||||
"PO-Revision-Date: 2015-08-30 16:58+0000\n"
|
||||
"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -58,7 +59,7 @@ msgid "Angola"
|
||||
msgstr "Angola"
|
||||
|
||||
msgid "Asia/Pacific Region"
|
||||
msgstr ""
|
||||
msgstr "Azja Pacyficzna"
|
||||
|
||||
msgid "Antarctica"
|
||||
msgstr "Antarktyda"
|
||||
@@ -112,7 +113,7 @@ msgid "Benin"
|
||||
msgstr "Benin"
|
||||
|
||||
msgid "Saint Barthélemy"
|
||||
msgstr ""
|
||||
msgstr "Saint Barthélemy"
|
||||
|
||||
msgid "Bermuda"
|
||||
msgstr "Bermudy"
|
||||
@@ -124,7 +125,7 @@ msgid "Bolivia"
|
||||
msgstr "Boliwia"
|
||||
|
||||
msgid "Bonaire"
|
||||
msgstr ""
|
||||
msgstr "Bonaire"
|
||||
|
||||
msgid "Brazil"
|
||||
msgstr "Brazylia"
|
||||
@@ -256,7 +257,7 @@ msgid "Falkland Islands (Malvinas)"
|
||||
msgstr "Falklandy (Malwiny)"
|
||||
|
||||
msgid "Micronesia"
|
||||
msgstr ""
|
||||
msgstr "Mikronezja"
|
||||
|
||||
msgid "Faroe Islands"
|
||||
msgstr "Wyspy Owcze"
|
||||
@@ -358,7 +359,7 @@ msgid "Iraq"
|
||||
msgstr "Irak"
|
||||
|
||||
msgid "Iran"
|
||||
msgstr ""
|
||||
msgstr "Iran"
|
||||
|
||||
msgid "Iceland"
|
||||
msgstr "Islandia"
|
||||
@@ -397,7 +398,7 @@ msgid "Saint Kitts and Nevis"
|
||||
msgstr "Saint Kitts i Nevis"
|
||||
|
||||
msgid "North Korea"
|
||||
msgstr ""
|
||||
msgstr "Korea Północna"
|
||||
|
||||
msgid "Republic of Korea"
|
||||
msgstr "Korea Południowa"
|
||||
@@ -442,7 +443,7 @@ msgid "Latvia"
|
||||
msgstr "Łotwa"
|
||||
|
||||
msgid "Libya"
|
||||
msgstr ""
|
||||
msgstr "Libia"
|
||||
|
||||
msgid "Morocco"
|
||||
msgstr "Maroko"
|
||||
@@ -451,7 +452,7 @@ msgid "Monaco"
|
||||
msgstr "Monako"
|
||||
|
||||
msgid "Moldova"
|
||||
msgstr ""
|
||||
msgstr "Mołdawia"
|
||||
|
||||
msgid "Montenegro"
|
||||
msgstr "Czarnogóra"
|
||||
@@ -466,7 +467,7 @@ msgid "Marshall Islands"
|
||||
msgstr "Wyspy Marshalla"
|
||||
|
||||
msgid "Macedonia"
|
||||
msgstr ""
|
||||
msgstr "Macedonia"
|
||||
|
||||
msgid "Mali"
|
||||
msgstr "Mali"
|
||||
@@ -478,7 +479,7 @@ msgid "Mongolia"
|
||||
msgstr "Mongolia"
|
||||
|
||||
msgid "Macau"
|
||||
msgstr ""
|
||||
msgstr "Makao"
|
||||
|
||||
msgid "Northern Mariana Islands"
|
||||
msgstr "Mariany Północne"
|
||||
@@ -658,7 +659,7 @@ msgid "Suriname"
|
||||
msgstr "Surinam"
|
||||
|
||||
msgid "South Sudan"
|
||||
msgstr ""
|
||||
msgstr "Południowy Sudan"
|
||||
|
||||
msgid "Sao Tome and Principe"
|
||||
msgstr "Wyspy Świętego Tomasza i Książęca"
|
||||
@@ -667,10 +668,10 @@ msgid "El Salvador"
|
||||
msgstr "Salwador"
|
||||
|
||||
msgid "Sint Maarten"
|
||||
msgstr ""
|
||||
msgstr "Sint Maarten"
|
||||
|
||||
msgid "Syria"
|
||||
msgstr ""
|
||||
msgstr "Syria"
|
||||
|
||||
msgid "Swaziland"
|
||||
msgstr "Suazi"
|
||||
@@ -721,7 +722,7 @@ msgid "Taiwan"
|
||||
msgstr "Republika Chińska"
|
||||
|
||||
msgid "Tanzania"
|
||||
msgstr ""
|
||||
msgstr "Tanzania"
|
||||
|
||||
msgid "Ukraine"
|
||||
msgstr "Ukraina"
|
||||
@@ -742,7 +743,7 @@ msgid "Uzbekistan"
|
||||
msgstr "Uzbekistan"
|
||||
|
||||
msgid "Vatican"
|
||||
msgstr ""
|
||||
msgstr "Watykan"
|
||||
|
||||
msgid "Saint Vincent and the Grenadines"
|
||||
msgstr "Saint Vincent i Grenadyny"
|
||||
@@ -754,7 +755,7 @@ msgid "Virgin Islands"
|
||||
msgstr "Wyspy Dziewicze"
|
||||
|
||||
msgid "Vietnam"
|
||||
msgstr ""
|
||||
msgstr "Wietnam"
|
||||
|
||||
msgid "Vanuatu"
|
||||
msgstr "Vanuatu"
|
||||
|
@@ -6,6 +6,7 @@
|
||||
# Translators:
|
||||
# alfalb.as, 2015
|
||||
# hxdcmls, 2013
|
||||
# wtfisthis <low_fps11@yahoo.com>, 2015
|
||||
# rafaelbf, 2013
|
||||
# Ruthein Alex <rutweiller@hotmail.com>, 2012
|
||||
# tuliouel, 2013
|
||||
@@ -15,9 +16,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:08+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/pt/)\n"
|
||||
"PO-Revision-Date: 2015-07-30 11:57+0000\n"
|
||||
"Last-Translator: wtfisthis <low_fps11@yahoo.com>\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/otf/I2P/language/pt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -58,7 +59,7 @@ msgid "Angola"
|
||||
msgstr "Angola"
|
||||
|
||||
msgid "Asia/Pacific Region"
|
||||
msgstr ""
|
||||
msgstr "Ásia/Região do Pacifico"
|
||||
|
||||
msgid "Antarctica"
|
||||
msgstr "Antártica"
|
||||
@@ -112,7 +113,7 @@ msgid "Benin"
|
||||
msgstr "Benin"
|
||||
|
||||
msgid "Saint Barthélemy"
|
||||
msgstr ""
|
||||
msgstr "Coletividade de São Bartolomeu"
|
||||
|
||||
msgid "Bermuda"
|
||||
msgstr "Bermudas"
|
||||
@@ -124,7 +125,7 @@ msgid "Bolivia"
|
||||
msgstr "Bolívia"
|
||||
|
||||
msgid "Bonaire"
|
||||
msgstr ""
|
||||
msgstr "Bonaire"
|
||||
|
||||
msgid "Brazil"
|
||||
msgstr "Brasil"
|
||||
@@ -256,7 +257,7 @@ msgid "Falkland Islands (Malvinas)"
|
||||
msgstr "Ilhas Falkland (Malvinas)"
|
||||
|
||||
msgid "Micronesia"
|
||||
msgstr ""
|
||||
msgstr "Micronésia"
|
||||
|
||||
msgid "Faroe Islands"
|
||||
msgstr "Ilhas Faroe"
|
||||
@@ -358,7 +359,7 @@ msgid "Iraq"
|
||||
msgstr "Iraque"
|
||||
|
||||
msgid "Iran"
|
||||
msgstr ""
|
||||
msgstr "Irão"
|
||||
|
||||
msgid "Iceland"
|
||||
msgstr "Islândia"
|
||||
@@ -397,7 +398,7 @@ msgid "Saint Kitts and Nevis"
|
||||
msgstr "São Cristóvão e Nevis"
|
||||
|
||||
msgid "North Korea"
|
||||
msgstr ""
|
||||
msgstr "Correia do Norte"
|
||||
|
||||
msgid "Republic of Korea"
|
||||
msgstr "República da Koreia"
|
||||
@@ -442,7 +443,7 @@ msgid "Latvia"
|
||||
msgstr "Látvia"
|
||||
|
||||
msgid "Libya"
|
||||
msgstr ""
|
||||
msgstr "Líbia"
|
||||
|
||||
msgid "Morocco"
|
||||
msgstr "Marrocos"
|
||||
@@ -451,7 +452,7 @@ msgid "Monaco"
|
||||
msgstr "Mónaco"
|
||||
|
||||
msgid "Moldova"
|
||||
msgstr ""
|
||||
msgstr "Moldávia"
|
||||
|
||||
msgid "Montenegro"
|
||||
msgstr "Montenegro"
|
||||
@@ -466,7 +467,7 @@ msgid "Marshall Islands"
|
||||
msgstr "Ilhas Marshall"
|
||||
|
||||
msgid "Macedonia"
|
||||
msgstr ""
|
||||
msgstr "Macedónia"
|
||||
|
||||
msgid "Mali"
|
||||
msgstr "Mali"
|
||||
@@ -478,7 +479,7 @@ msgid "Mongolia"
|
||||
msgstr "Mongolia"
|
||||
|
||||
msgid "Macau"
|
||||
msgstr ""
|
||||
msgstr "Macau"
|
||||
|
||||
msgid "Northern Mariana Islands"
|
||||
msgstr "Ilhas Marianas do Norte"
|
||||
@@ -658,7 +659,7 @@ msgid "Suriname"
|
||||
msgstr "Suriname"
|
||||
|
||||
msgid "South Sudan"
|
||||
msgstr ""
|
||||
msgstr "Sudão do Sul"
|
||||
|
||||
msgid "Sao Tome and Principe"
|
||||
msgstr "São Tomé e Princípe"
|
||||
@@ -667,10 +668,10 @@ msgid "El Salvador"
|
||||
msgstr "São Salvador"
|
||||
|
||||
msgid "Sint Maarten"
|
||||
msgstr ""
|
||||
msgstr "São Martinho"
|
||||
|
||||
msgid "Syria"
|
||||
msgstr ""
|
||||
msgstr "Síria"
|
||||
|
||||
msgid "Swaziland"
|
||||
msgstr "Suazilândia"
|
||||
@@ -721,7 +722,7 @@ msgid "Taiwan"
|
||||
msgstr "Taiwan"
|
||||
|
||||
msgid "Tanzania"
|
||||
msgstr ""
|
||||
msgstr "Tanzânia"
|
||||
|
||||
msgid "Ukraine"
|
||||
msgstr "Ucrânia"
|
||||
@@ -742,7 +743,7 @@ msgid "Uzbekistan"
|
||||
msgstr "Uzbequistão"
|
||||
|
||||
msgid "Vatican"
|
||||
msgstr ""
|
||||
msgstr "Vaticano"
|
||||
|
||||
msgid "Saint Vincent and the Grenadines"
|
||||
msgstr "São Vicente e Granadinas"
|
||||
@@ -754,7 +755,7 @@ msgid "Virgin Islands"
|
||||
msgstr "Ilhas Virgens"
|
||||
|
||||
msgid "Vietnam"
|
||||
msgstr ""
|
||||
msgstr "Vietname"
|
||||
|
||||
msgid "Vanuatu"
|
||||
msgstr "Vanuatu"
|
||||
|
@@ -5,16 +5,16 @@
|
||||
#
|
||||
# Translators:
|
||||
# Erkin Batu Altunbaş <erkinbatu@gmail.com>, 2013
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
|
||||
# Trans Lator <kqzwypgi@sharklasers.com>, 2013
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:08+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
|
||||
"PO-Revision-Date: 2015-08-05 13:48+0000\n"
|
||||
"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -55,7 +55,7 @@ msgid "Angola"
|
||||
msgstr "Angola"
|
||||
|
||||
msgid "Asia/Pacific Region"
|
||||
msgstr ""
|
||||
msgstr "Asya/Pasifik Bölgesi"
|
||||
|
||||
msgid "Antarctica"
|
||||
msgstr "Antarktika"
|
||||
@@ -109,7 +109,7 @@ msgid "Benin"
|
||||
msgstr "Benin"
|
||||
|
||||
msgid "Saint Barthélemy"
|
||||
msgstr ""
|
||||
msgstr "Aziz Bartelemi"
|
||||
|
||||
msgid "Bermuda"
|
||||
msgstr "Bermuda"
|
||||
@@ -121,7 +121,7 @@ msgid "Bolivia"
|
||||
msgstr "Bolivya"
|
||||
|
||||
msgid "Bonaire"
|
||||
msgstr ""
|
||||
msgstr "Bonaire"
|
||||
|
||||
msgid "Brazil"
|
||||
msgstr "Brezilya"
|
||||
@@ -253,7 +253,7 @@ msgid "Falkland Islands (Malvinas)"
|
||||
msgstr "Falkland Adaları (Malvinalar)"
|
||||
|
||||
msgid "Micronesia"
|
||||
msgstr ""
|
||||
msgstr "Mikronezya"
|
||||
|
||||
msgid "Faroe Islands"
|
||||
msgstr "Faroe Adaları"
|
||||
@@ -355,7 +355,7 @@ msgid "Iraq"
|
||||
msgstr "Irak"
|
||||
|
||||
msgid "Iran"
|
||||
msgstr ""
|
||||
msgstr "İran"
|
||||
|
||||
msgid "Iceland"
|
||||
msgstr "İzlanda"
|
||||
@@ -394,7 +394,7 @@ msgid "Saint Kitts and Nevis"
|
||||
msgstr "Aziz Kitts ve Nevis"
|
||||
|
||||
msgid "North Korea"
|
||||
msgstr ""
|
||||
msgstr "Kuzey Kore"
|
||||
|
||||
msgid "Republic of Korea"
|
||||
msgstr "Kore Cumhuriyeti"
|
||||
@@ -439,7 +439,7 @@ msgid "Latvia"
|
||||
msgstr "Letonya"
|
||||
|
||||
msgid "Libya"
|
||||
msgstr ""
|
||||
msgstr "Libya"
|
||||
|
||||
msgid "Morocco"
|
||||
msgstr "Fas"
|
||||
@@ -448,7 +448,7 @@ msgid "Monaco"
|
||||
msgstr "Monako"
|
||||
|
||||
msgid "Moldova"
|
||||
msgstr ""
|
||||
msgstr "Moldova"
|
||||
|
||||
msgid "Montenegro"
|
||||
msgstr "Karadağ"
|
||||
@@ -463,7 +463,7 @@ msgid "Marshall Islands"
|
||||
msgstr "Marşal Adaları"
|
||||
|
||||
msgid "Macedonia"
|
||||
msgstr ""
|
||||
msgstr "Makedonya"
|
||||
|
||||
msgid "Mali"
|
||||
msgstr "Mali"
|
||||
@@ -475,7 +475,7 @@ msgid "Mongolia"
|
||||
msgstr "Moğolistan"
|
||||
|
||||
msgid "Macau"
|
||||
msgstr ""
|
||||
msgstr "Makau"
|
||||
|
||||
msgid "Northern Mariana Islands"
|
||||
msgstr "Kuzey Mariyana Adaları"
|
||||
@@ -655,7 +655,7 @@ msgid "Suriname"
|
||||
msgstr "Surinam"
|
||||
|
||||
msgid "South Sudan"
|
||||
msgstr ""
|
||||
msgstr "Güney Sudan"
|
||||
|
||||
msgid "Sao Tome and Principe"
|
||||
msgstr "Sao Tome ve Principe"
|
||||
@@ -664,10 +664,10 @@ msgid "El Salvador"
|
||||
msgstr "El Salvador"
|
||||
|
||||
msgid "Sint Maarten"
|
||||
msgstr ""
|
||||
msgstr "Aziz Marten"
|
||||
|
||||
msgid "Syria"
|
||||
msgstr ""
|
||||
msgstr "Suriye"
|
||||
|
||||
msgid "Swaziland"
|
||||
msgstr "Svaziland"
|
||||
@@ -718,7 +718,7 @@ msgid "Taiwan"
|
||||
msgstr "Tayva"
|
||||
|
||||
msgid "Tanzania"
|
||||
msgstr ""
|
||||
msgstr "Tanzanya"
|
||||
|
||||
msgid "Ukraine"
|
||||
msgstr "Ukrayna"
|
||||
@@ -739,7 +739,7 @@ msgid "Uzbekistan"
|
||||
msgstr "Özbekistan"
|
||||
|
||||
msgid "Vatican"
|
||||
msgstr ""
|
||||
msgstr "Vatikan"
|
||||
|
||||
msgid "Saint Vincent and the Grenadines"
|
||||
msgstr "Aziz Vincent ve Granadinler"
|
||||
@@ -751,7 +751,7 @@ msgid "Virgin Islands"
|
||||
msgstr "Virgin Adaları"
|
||||
|
||||
msgid "Vietnam"
|
||||
msgstr ""
|
||||
msgstr "Vietnam"
|
||||
|
||||
msgid "Vanuatu"
|
||||
msgstr "Vanuatu"
|
||||
|
@@ -4,15 +4,17 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# asteryx <asteryx82@gmail.com>, 2015
|
||||
# LinuxChata, 2014
|
||||
# Maus <ru-ko@ukr.net>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:08+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:31+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -53,7 +55,7 @@ msgid "Angola"
|
||||
msgstr "Ангола"
|
||||
|
||||
msgid "Asia/Pacific Region"
|
||||
msgstr ""
|
||||
msgstr "Азія / Тихоокеанський регіон"
|
||||
|
||||
msgid "Antarctica"
|
||||
msgstr "Антарктика"
|
||||
@@ -107,7 +109,7 @@ msgid "Benin"
|
||||
msgstr "Бенін"
|
||||
|
||||
msgid "Saint Barthélemy"
|
||||
msgstr ""
|
||||
msgstr "сен- Бартельмі"
|
||||
|
||||
msgid "Bermuda"
|
||||
msgstr "Бермуда"
|
||||
@@ -119,7 +121,7 @@ msgid "Bolivia"
|
||||
msgstr "Болівія"
|
||||
|
||||
msgid "Bonaire"
|
||||
msgstr ""
|
||||
msgstr "Бонайре"
|
||||
|
||||
msgid "Brazil"
|
||||
msgstr "Бразилія"
|
||||
@@ -251,7 +253,7 @@ msgid "Falkland Islands (Malvinas)"
|
||||
msgstr "Фолклендські острови (Мальвінські)"
|
||||
|
||||
msgid "Micronesia"
|
||||
msgstr ""
|
||||
msgstr "Мікронезія"
|
||||
|
||||
msgid "Faroe Islands"
|
||||
msgstr "Фарерські острови"
|
||||
@@ -353,7 +355,7 @@ msgid "Iraq"
|
||||
msgstr "Ірак"
|
||||
|
||||
msgid "Iran"
|
||||
msgstr ""
|
||||
msgstr "Іран"
|
||||
|
||||
msgid "Iceland"
|
||||
msgstr "Ісландія"
|
||||
@@ -392,7 +394,7 @@ msgid "Saint Kitts and Nevis"
|
||||
msgstr "Федерація Сент-Кіттс і Невіс"
|
||||
|
||||
msgid "North Korea"
|
||||
msgstr ""
|
||||
msgstr "КНДР"
|
||||
|
||||
msgid "Republic of Korea"
|
||||
msgstr "Республіка Корея"
|
||||
@@ -437,7 +439,7 @@ msgid "Latvia"
|
||||
msgstr "Латвія"
|
||||
|
||||
msgid "Libya"
|
||||
msgstr ""
|
||||
msgstr "Лівія"
|
||||
|
||||
msgid "Morocco"
|
||||
msgstr "Марокко"
|
||||
@@ -446,7 +448,7 @@ msgid "Monaco"
|
||||
msgstr "Монако"
|
||||
|
||||
msgid "Moldova"
|
||||
msgstr ""
|
||||
msgstr "Молдова"
|
||||
|
||||
msgid "Montenegro"
|
||||
msgstr "Чорногорія "
|
||||
@@ -461,7 +463,7 @@ msgid "Marshall Islands"
|
||||
msgstr "Маршаллові острови"
|
||||
|
||||
msgid "Macedonia"
|
||||
msgstr ""
|
||||
msgstr "Македонія"
|
||||
|
||||
msgid "Mali"
|
||||
msgstr "Малі"
|
||||
@@ -473,7 +475,7 @@ msgid "Mongolia"
|
||||
msgstr "Монголія"
|
||||
|
||||
msgid "Macau"
|
||||
msgstr ""
|
||||
msgstr "Аоминь або Макао"
|
||||
|
||||
msgid "Northern Mariana Islands"
|
||||
msgstr "Північні Маріанські острови"
|
||||
@@ -653,7 +655,7 @@ msgid "Suriname"
|
||||
msgstr "Сурінам"
|
||||
|
||||
msgid "South Sudan"
|
||||
msgstr ""
|
||||
msgstr "Південний Судан"
|
||||
|
||||
msgid "Sao Tome and Principe"
|
||||
msgstr "Сан-Томе і Принсіпі"
|
||||
@@ -662,10 +664,10 @@ msgid "El Salvador"
|
||||
msgstr "Ель Сальвадор"
|
||||
|
||||
msgid "Sint Maarten"
|
||||
msgstr ""
|
||||
msgstr "Сінт-Мартен"
|
||||
|
||||
msgid "Syria"
|
||||
msgstr ""
|
||||
msgstr "Сірія"
|
||||
|
||||
msgid "Swaziland"
|
||||
msgstr "Свазиленд"
|
||||
@@ -716,7 +718,7 @@ msgid "Taiwan"
|
||||
msgstr "Тайвань"
|
||||
|
||||
msgid "Tanzania"
|
||||
msgstr ""
|
||||
msgstr "Танзанія"
|
||||
|
||||
msgid "Ukraine"
|
||||
msgstr "Україна"
|
||||
@@ -737,7 +739,7 @@ msgid "Uzbekistan"
|
||||
msgstr "Узбекістан"
|
||||
|
||||
msgid "Vatican"
|
||||
msgstr ""
|
||||
msgstr "Ватикан"
|
||||
|
||||
msgid "Saint Vincent and the Grenadines"
|
||||
msgstr "Сент Вінсент і Ґренадіни"
|
||||
@@ -749,7 +751,7 @@ msgid "Virgin Islands"
|
||||
msgstr "Віргінські острови"
|
||||
|
||||
msgid "Vietnam"
|
||||
msgstr ""
|
||||
msgstr "В'єтнам"
|
||||
|
||||
msgid "Vanuatu"
|
||||
msgstr "Вануату"
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Anders Nilsson <locally@devode.se>, 2015
|
||||
# cacapo <handelsehorisont@gmail.com>, 2015
|
||||
# hottuna <i2p@robertfoss.se>, 2013
|
||||
# hottuna <i2p@robertfoss.se>, 2013
|
||||
@@ -14,9 +15,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
|
||||
"PO-Revision-Date: 2015-04-09 17:47+0000\n"
|
||||
"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
|
||||
"PO-Revision-Date: 2015-08-26 06:24+0000\n"
|
||||
"Last-Translator: Anders Nilsson <locally@devode.se>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.com/otf/I2P/language/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -24,7 +25,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "Congratulations on getting I2P installed!"
|
||||
msgstr "Grattis för din I2P installation!"
|
||||
msgstr "Grattis till din I2P-installation!"
|
||||
|
||||
msgid "Welcome to I2P!"
|
||||
msgstr "Välkommen till I2P!"
|
||||
|
@@ -4,15 +4,15 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
|
||||
"PO-Revision-Date: 2014-02-23 16:51+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
|
||||
"PO-Revision-Date: 2015-08-05 14:03+0000\n"
|
||||
"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -62,4 +62,4 @@ msgstr "Sol tarafta \"paylaşılmış istemci\" hedefi listelendiğinde, lütfen
|
||||
msgid ""
|
||||
"Point your IRC client to {0}localhost:6668{1} and say hi to us on "
|
||||
"{2}#i2p{3}."
|
||||
msgstr ""
|
||||
msgstr "IRC istemcinizi {0}localhost:6668{1} adresine yönlendirin ve bize merhaba demek için {2}#i2p{3} kanalını açın."
|
||||
|
@@ -13,9 +13,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
|
||||
"PO-Revision-Date: 2014-12-25 14:10+0000\n"
|
||||
"Last-Translator: madjong <madjong@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 17:13+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
@@ -27,9 +27,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:05+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
|
||||
"PO-Revision-Date: 2015-08-21 21:13+0000\n"
|
||||
"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
|
||||
"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -100,8 +100,8 @@ msgstr[1] "{0} Tage"
|
||||
#, java-format
|
||||
msgid "1 year"
|
||||
msgid_plural "{0} years"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "1 Jahr"
|
||||
msgstr[1] "{0} Jahre"
|
||||
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
|
||||
@@ -1200,7 +1200,7 @@ msgstr "Keine neue Version unter {0} gefunden"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
|
||||
msgid "Permanently banned"
|
||||
msgstr ""
|
||||
msgstr "permanent gesperrte IP's"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
|
||||
#, java-format
|
||||
@@ -4128,7 +4128,7 @@ msgstr "Tunnel, die wir zur Verfügung stellen oder nutzen, um auf Dienste im Ne
|
||||
msgid ""
|
||||
"Tunnels we are participating in, directly contributing bandwidth to the "
|
||||
"network"
|
||||
msgstr ""
|
||||
msgstr "Tunnel an denen wir teilnehmen, die direkt Bandbreite dem Netzwerk zur Verfügung stellen."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
|
||||
msgid "Participating"
|
||||
@@ -4352,11 +4352,11 @@ msgstr "ganz oben"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
|
||||
msgid "Move to top"
|
||||
msgstr ""
|
||||
msgstr "Nach oben verschieben"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
|
||||
msgid "Move up"
|
||||
msgstr ""
|
||||
msgstr "Nach oben verschieben"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
|
||||
msgid "Down"
|
||||
@@ -4364,7 +4364,7 @@ msgstr "runter"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
|
||||
msgid "Move down"
|
||||
msgstr ""
|
||||
msgstr "nach unten verschieben"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
|
||||
msgid "Bottom"
|
||||
@@ -4372,7 +4372,7 @@ msgstr "ganz unten"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
|
||||
msgid "Move to bottom"
|
||||
msgstr ""
|
||||
msgstr "Zum Ende verschieben"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
|
||||
msgid "Select a section to add"
|
||||
@@ -4581,7 +4581,7 @@ msgstr "nach dem Starten die Routerkonsole im Browser anzeigen"
|
||||
|
||||
#: ../java/strings/Strings.java:37
|
||||
msgid "shared clients (DSA)"
|
||||
msgstr ""
|
||||
msgstr "mehrere Klienten (DSA)"
|
||||
|
||||
#: ../java/strings/Strings.java:38
|
||||
msgid "IRC proxy"
|
||||
@@ -4951,11 +4951,11 @@ msgstr "Floodfill-Teilnahme hilft dem Netzwerk, kann aber die Systemressourcen s
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
|
||||
msgid "This router is currently a floodfill participant."
|
||||
msgstr ""
|
||||
msgstr "Dieser Router ist zur Zeit Teilnehmer am FloodFill Netz."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
|
||||
msgid "This router is not currently a floodfill participant."
|
||||
msgstr ""
|
||||
msgstr "Dieser Router ist zur Zeit kein Teilnehmer am FloodFill Netz."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
|
||||
msgid "Automatic"
|
||||
|
@@ -25,9 +25,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:05+0000\n"
|
||||
"PO-Revision-Date: 2015-07-22 09:12+0000\n"
|
||||
"PO-Revision-Date: 2015-08-14 04:29+0000\n"
|
||||
"Last-Translator: Towinet\n"
|
||||
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
|
||||
"Language-Team: French (http://www.transifex.com/otf/I2P/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -3782,7 +3782,7 @@ msgstr "Intégration"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
|
||||
msgid "is the peer banned, or unreachable, or failing tunnel tests?"
|
||||
msgstr "le pair est-il banni, injoignable, ou alors les tests de tunnels échouent ?"
|
||||
msgstr "le pair est-il banni, injoignable, ou alors les tests de tunnels échouent-ils ?"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
|
||||
msgid "status"
|
||||
@@ -6312,7 +6312,7 @@ msgstr "Contrôle de mises à jour"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:451
|
||||
msgid "News Updates"
|
||||
msgstr "Mises à jour des nouvelles"
|
||||
msgstr "Mises à jour des actualités"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:459
|
||||
msgid "Update In Progress"
|
||||
@@ -6332,7 +6332,7 @@ msgstr "Méthode de mise à jour"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:487
|
||||
msgid "Fetch news through the eepProxy?"
|
||||
msgstr "Récupérer news à travers le eepProxy ?"
|
||||
msgstr "Récupérer les actualités à travers l'eepProxy ?"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:491
|
||||
msgid "Update through the eepProxy?"
|
||||
|
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
@@ -6,15 +6,16 @@
|
||||
# Translators:
|
||||
# naeto <a89393@rmqkr.net>, 2012
|
||||
# Anton Zub <azb.0x7dc@gmail.com>, 2014
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011,2015
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# jonny_nut, 2014
|
||||
# jonny_nut, 2014
|
||||
# LinuxChata, 2014
|
||||
# LinuxChata, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2015
|
||||
# madjong <madjong@i2pmail.org>, 2015
|
||||
# Maxym Mykhalchuk, 2015
|
||||
# naeto <a89393@rmqkr.net>, 2012
|
||||
# puxud <puxud@alivance.com>, 2014
|
||||
# puxud <puxud@alivance.com>, 2014
|
||||
@@ -24,9 +25,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-07-17 01:05+0000\n"
|
||||
"PO-Revision-Date: 2015-07-17 01:31+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:30+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -102,9 +103,9 @@ msgstr[2] "{0} днів"
|
||||
#, java-format
|
||||
msgid "1 year"
|
||||
msgid_plural "{0} years"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[0] "{0} рік"
|
||||
msgstr[1] "{0} роки"
|
||||
msgstr[2] "{0} років"
|
||||
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
|
||||
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
|
||||
@@ -526,7 +527,7 @@ msgstr "Підключений"
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
|
||||
msgid "Skew"
|
||||
msgstr "Нахил"
|
||||
msgstr "Відхилення"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
|
||||
msgid "The difference between the peer's clock and your own"
|
||||
@@ -729,7 +730,7 @@ msgstr "{0} порт {1,number,#####} не пропущено через UPnP."
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:877
|
||||
#, java-format
|
||||
msgid "Excessive clock skew: {0}"
|
||||
msgstr ""
|
||||
msgstr "Надмірне відхилення годинника: {0}"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1344
|
||||
msgid "NTCP connections"
|
||||
@@ -789,67 +790,67 @@ msgstr "Сортування по хешу вузла"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
|
||||
msgid "Direction/Introduction"
|
||||
msgstr ""
|
||||
msgstr "Напрямок/Введення"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
|
||||
msgid "Sort by idle inbound"
|
||||
msgstr "Порядком за вхідню бездіяльність"
|
||||
msgstr "Сортувати за простоєм на вході"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
|
||||
msgid "Sort by idle outbound"
|
||||
msgstr "Порядком за вихідню бездіяльність"
|
||||
msgstr "Сортувати за простоєм на виході"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
|
||||
msgid "Sort by inbound rate"
|
||||
msgstr "Порядком за вхідну ставку"
|
||||
msgstr "Сортувати за швидкістю на вході"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
|
||||
msgid "Sort by outbound rate"
|
||||
msgstr "Порядком за вихідну ставку"
|
||||
msgstr "Сортувати за швидкістю на виході"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
|
||||
msgid "Sort by connection uptime"
|
||||
msgstr "Порядком за тривалість зв'язку"
|
||||
msgstr "Сортувати за тривалістю роботи"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
|
||||
msgid "Sort by clock skew"
|
||||
msgstr "Порядком за нахилом такту"
|
||||
msgstr "Сортувати за відхиленням годинника"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
|
||||
msgid "Sort by congestion window"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за вікном затору"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
|
||||
msgid "Sort by slow start threshold"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за порогом повільного старту"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
|
||||
msgid "Sort by round trip time"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за часом проходження сигналу туди і назад"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
|
||||
msgid "Sort by retransmission timeout"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за таймаутом ретрансляції"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
|
||||
msgid "Sort by outbound maximum transmit unit"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за максимальною одиницею передачі на виході"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
|
||||
msgid "Sort by packets sent"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за кількістю переданих пакетів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
|
||||
msgid "Sort by packets received"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за кількістю отриманих пакетів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
|
||||
msgid "Sort by packets retransmitted"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за кількістю ретрансльованих пакетів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
|
||||
msgid "Sort by packets received more than once"
|
||||
msgstr ""
|
||||
msgstr "Сортувати за кількістю отриманих пакетів отриманих декілька разів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
|
||||
msgid "We offered to introduce them"
|
||||
@@ -861,7 +862,7 @@ msgstr "Вони пропонують представити нас"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
|
||||
msgid "Choked"
|
||||
msgstr ""
|
||||
msgstr "Давка"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
|
||||
msgid "1 fail"
|
||||
@@ -877,7 +878,7 @@ msgstr "{0} збоїв"
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
|
||||
#: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
|
||||
msgid "Banned"
|
||||
msgstr "Забороненo"
|
||||
msgstr "Забанений"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
|
||||
msgid "backlogged"
|
||||
@@ -885,11 +886,11 @@ msgstr "перевантажений"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:250
|
||||
msgid "Dropping tunnel requests: Too slow"
|
||||
msgstr "Відхиляю запити на тунелі: надто повільно працює"
|
||||
msgstr "Відхиляю запити на тунелі: занадто повільна обробка запитів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
|
||||
msgid "Dropping tunnel requests: High job lag"
|
||||
msgstr ""
|
||||
msgstr "Відхиляю запити на тунелі: велике відставання обробки запитів"
|
||||
|
||||
#. don't even bother, since we are so overloaded locally
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
|
||||
@@ -898,15 +899,15 @@ msgstr "Відхиляю запити на тунелі: перевантаже
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
|
||||
msgid "Rejecting tunnels: Hidden mode"
|
||||
msgstr "Видхилення тунелів: прихований режим"
|
||||
msgstr "Не приймаємо тунелі: прихований режим"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
|
||||
msgid "Rejecting tunnels: Request overload"
|
||||
msgstr "Видхилення тунелів: забагато запитів"
|
||||
msgstr "Не приймаємо тунелі: забагато запитів"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:752
|
||||
msgid "Rejecting tunnels: Connection limit"
|
||||
msgstr "Відхиляю тунелі: обмеження кількості з’єднань"
|
||||
msgstr "Не приймаємо тунелі: досягнутий ліміт кількості з'єднань"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:964
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:997
|
||||
@@ -915,7 +916,7 @@ msgstr "Відхиляю запити на тунелі: високе наван
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:1076
|
||||
msgid "Dropping tunnel requests: Queue time"
|
||||
msgstr ""
|
||||
msgstr "Відхиляю запити на тунелі: завеликий час у черзі"
|
||||
|
||||
#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
|
||||
#, java-format
|
||||
@@ -974,7 +975,7 @@ msgstr "з {0}"
|
||||
#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
|
||||
#, java-format
|
||||
msgid "Unsigned update file from {0} is corrupt"
|
||||
msgstr ""
|
||||
msgstr "Непідписане оновлення з {0} пошкоджено"
|
||||
|
||||
#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
|
||||
#, java-format
|
||||
@@ -1207,7 +1208,7 @@ msgstr "Нової версії на {0} не знайдено"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
|
||||
msgid "Permanently banned"
|
||||
msgstr ""
|
||||
msgstr "Забанений назавжди"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
|
||||
#, java-format
|
||||
@@ -1217,7 +1218,7 @@ msgstr "Тимчасовий бан завершується через {0}"
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
|
||||
#, java-format
|
||||
msgid "Banned until restart or in {0}"
|
||||
msgstr ""
|
||||
msgstr "Забанений до перезапуску або до {0}"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
|
||||
msgid "unban now"
|
||||
@@ -1401,7 +1402,7 @@ msgstr "Зупинено плагін {0}"
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:180
|
||||
#, java-format
|
||||
msgid "Stopped webapp {0}"
|
||||
msgstr ""
|
||||
msgstr "Зупинено веб-додаток {0}"
|
||||
|
||||
#. label (IE)
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:209
|
||||
@@ -1449,11 +1450,11 @@ msgstr "Конфігурацію плагіна збережено"
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202
|
||||
msgid "WebApp"
|
||||
msgstr "WebApp"
|
||||
msgstr "Web-додаток"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
|
||||
msgid "started"
|
||||
msgstr "почато"
|
||||
msgstr "запущено"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389
|
||||
msgid "Failed to start"
|
||||
@@ -1461,7 +1462,7 @@ msgstr "Помилка запуску"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:394
|
||||
msgid "Failed to find server."
|
||||
msgstr "Провал пошуку за сервер"
|
||||
msgstr "Не вдалося знайти сервер."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:400
|
||||
msgid "No plugin URL specified."
|
||||
@@ -1484,7 +1485,7 @@ msgstr "Не вказано URL оновлення для {0}"
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:488
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:512
|
||||
msgid "Plugin or update download already in progress."
|
||||
msgstr ""
|
||||
msgstr "Плагін або оновлення вже завантажується."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:493
|
||||
msgid "Updating all plugins"
|
||||
@@ -2047,7 +2048,7 @@ msgstr "Забанити пір до наступного запуску"
|
||||
#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23
|
||||
#, java-format
|
||||
msgid "Manually banned via {0}"
|
||||
msgstr ""
|
||||
msgstr "Заблоковані вручну задопомогою {0}"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
|
||||
msgid "banned until restart"
|
||||
@@ -2210,12 +2211,12 @@ msgstr "М’яка зупинка"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:203
|
||||
msgid "Graceful shutdown initiated"
|
||||
msgstr ""
|
||||
msgstr "Запущена м'яка зупинка"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:209
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:477
|
||||
msgid "Cancel graceful shutdown"
|
||||
msgstr ""
|
||||
msgstr "М'яка зупинка відмінена"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:211
|
||||
msgid "Graceful shutdown cancelled"
|
||||
@@ -2228,12 +2229,12 @@ msgstr "М’який перезапуск"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217
|
||||
msgid "Graceful restart requested"
|
||||
msgstr ""
|
||||
msgstr "Запитаний м'який перезапуск "
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:493
|
||||
msgid "Hard restart"
|
||||
msgstr ""
|
||||
msgstr "Жорсткий перезапуск"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223
|
||||
msgid "Hard restart requested"
|
||||
@@ -4212,7 +4213,7 @@ msgstr ""
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:150
|
||||
#, java-format
|
||||
msgid "ERR-Clock Skew of {0}"
|
||||
msgstr ""
|
||||
msgstr "ПОМИЛКА-Відхилення годинника {0}"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/SummaryHelper.java:170
|
||||
msgid "ERR-Unresolved TCP Address"
|
||||
@@ -5716,13 +5717,13 @@ msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:760
|
||||
msgid "ERR - Clock Skew"
|
||||
msgstr ""
|
||||
msgstr "ПОМИЛКА - Відхилення годинника"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:762
|
||||
msgid ""
|
||||
"Your system's clock is skewed, which will make it difficult to participate "
|
||||
"in the network."
|
||||
msgstr ""
|
||||
msgstr "Ваш системний годинник занадто відхилився, вам буде важко приймати участь у мережі."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:764
|
||||
msgid "Correct your clock setting if this error persists."
|
||||
|
@@ -9,6 +9,7 @@ package net.i2p.sam;
|
||||
*/
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
@@ -31,7 +32,7 @@ import net.i2p.util.Log;
|
||||
*
|
||||
* @author human
|
||||
*/
|
||||
abstract class SAMMessageSession {
|
||||
abstract class SAMMessageSession implements Closeable {
|
||||
|
||||
protected final Log _log;
|
||||
private I2PSession session;
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package net.i2p.client.streaming.impl;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
@@ -25,7 +26,7 @@ import net.i2p.util.SimpleTimer2;
|
||||
*<p>
|
||||
* MessageOutputStream -> ConnectionDataReceiver -> Connection -> PacketQueue -> I2PSession
|
||||
*/
|
||||
class PacketQueue implements SendMessageStatusListener {
|
||||
class PacketQueue implements SendMessageStatusListener, Closeable {
|
||||
private final I2PAppContext _context;
|
||||
private final Log _log;
|
||||
private final ByteCache _cache = ByteCache.getInstance(64, 36*1024);
|
||||
|
@@ -1,8 +1,10 @@
|
||||
package net.i2p.client.streaming.impl;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.Flushable;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
@@ -41,7 +43,7 @@ import net.i2p.data.DataHelper;
|
||||
*
|
||||
* @since 0.9.4
|
||||
*/
|
||||
public class PcapWriter {
|
||||
public class PcapWriter implements Closeable, Flushable {
|
||||
|
||||
/** big-endian, see file format ref - 24 bytes */
|
||||
private static final byte[] FILE_HEADER = { (byte) 0xa1, (byte) 0xb2, (byte) 0xc3, (byte) 0xd4,
|
||||
|
@@ -4,16 +4,17 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# タカハシ <gomidori@live.jp>, 2013-2014
|
||||
# タカハシ <indexial@outlook.jp>, 2013-2014
|
||||
# タカハシ <indexial@outlook.jp>, 2015
|
||||
# rafe <rafe.kun@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-05-14 08:33+0000\n"
|
||||
"PO-Revision-Date: 2015-05-14 08:34+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
|
||||
"POT-Creation-Date: 2015-07-17 01:13+0000\n"
|
||||
"PO-Revision-Date: 2015-08-31 08:07+0000\n"
|
||||
"Last-Translator: タカハシ <indexial@outlook.jp>\n"
|
||||
"Language-Team: Japanese (http://www.transifex.com/otf/I2P/language/ja/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -219,7 +220,7 @@ msgstr "エラー: アドレスブックファイルに書き込めません。"
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the \"back\" or "
|
||||
"\"reload\" button on your browser. Please resubmit."
|
||||
@@ -228,14 +229,14 @@ msgstr "無効なフォームからの送信、おそらく、ブラウザで「
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
|
||||
msgid ""
|
||||
"If the problem persists, verify that you have cookies enabled in your "
|
||||
"browser."
|
||||
msgstr "問題が続く場合、クッキーがブラウザで有効になっているか確認してください。"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
|
||||
msgid "Save"
|
||||
@@ -246,7 +247,7 @@ msgid "Configuration saved."
|
||||
msgstr "設定が保存されました。"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
|
||||
msgid "Reload"
|
||||
@@ -275,16 +276,16 @@ msgstr "ネーミング・サービス {1} への {0} の宛先を追加する
|
||||
msgid "Failed to delete Destination for {0} from naming service {1}"
|
||||
msgstr "ネーミング・サービス {1} から {0} の宛先を削除するのに失敗しました"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
|
||||
msgid ""
|
||||
"Subscriptions saved, updating addressbook from subscription sources now."
|
||||
msgstr "購読が保存されました、現在購読ソースからアドレスブックを更新しています。"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
msgid "Subscriptions saved."
|
||||
msgstr "購読が保存されました。"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
msgid "Subscriptions reloaded."
|
||||
msgstr "購読が再読込されました。"
|
||||
|
||||
@@ -432,7 +433,7 @@ msgstr "キャンセル"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
|
||||
msgid "Export in hosts.txt format"
|
||||
msgstr ""
|
||||
msgstr "hosts.txt 形式でエクスポート"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
|
||||
msgid "This address book is empty."
|
||||
|
@@ -4,15 +4,15 @@
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# Translators:
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013
|
||||
# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-05-14 08:33+0000\n"
|
||||
"PO-Revision-Date: 2015-05-14 08:34+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
|
||||
"POT-Creation-Date: 2015-07-17 01:13+0000\n"
|
||||
"PO-Revision-Date: 2015-08-05 15:31+0000\n"
|
||||
"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -22,58 +22,58 @@ msgstr ""
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:131
|
||||
#, java-format
|
||||
msgid "Host name \"{0}\" contains illegal character {1}"
|
||||
msgstr ""
|
||||
msgstr "\"{0}\" sunucu adında {1} geçersiz karakteri bulunuyor"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:144
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:146
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:153
|
||||
#, java-format
|
||||
msgid "Host name cannot start with \"{0}\""
|
||||
msgstr ""
|
||||
msgstr "Sunucu adı \"{0}\" ile başlayamaz"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:148
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:150
|
||||
#, java-format
|
||||
msgid "Host name cannot end with \"{0}\""
|
||||
msgstr ""
|
||||
msgstr "Sunucu adı \"{0}\" ile bitemez"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:155
|
||||
#, java-format
|
||||
msgid "Host name cannot contain \"{0}\""
|
||||
msgstr ""
|
||||
msgstr "Sunucu adında \"{0}\" bulunamaz"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:158
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Host name \"{0}\" requires conversion to ASCII but the conversion library is"
|
||||
" unavailable in this JVM"
|
||||
msgstr ""
|
||||
msgstr "\"{0}\" sunucu adının ASCII karakterlerine dönüştürülmesi gerekiyor ancak bu JVM için dönüştürme kitaplığı kullanılamıyor"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
msgstr "Yok"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:227
|
||||
msgid "Hashcash"
|
||||
msgstr ""
|
||||
msgstr "Hashcash"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:229
|
||||
msgid "Hidden"
|
||||
msgstr ""
|
||||
msgstr "Gizli"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:231
|
||||
msgid "Signed"
|
||||
msgstr ""
|
||||
msgstr "İmzalanmış"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:233
|
||||
msgid "Key"
|
||||
msgstr ""
|
||||
msgstr "Anahtar"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:235
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:260
|
||||
#, java-format
|
||||
msgid "Type {0}"
|
||||
msgstr ""
|
||||
msgstr "Tip {0}"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:247
|
||||
#: ../src/java/src/i2p/susi/dns/AddressBean.java:254
|
||||
@@ -85,25 +85,25 @@ msgstr "DSA 1024 bit"
|
||||
#, java-format
|
||||
msgid "One result for search within filtered list."
|
||||
msgid_plural "{0} results for search within filtered list."
|
||||
msgstr[0] ""
|
||||
msgstr[0] "Süzülmüş listede arama için {0} sonuç bulundu"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:192
|
||||
#, java-format
|
||||
msgid "Filtered list contains 1 entry."
|
||||
msgid_plural "Filtered list contains {0} entries."
|
||||
msgstr[0] ""
|
||||
msgstr[0] "Süzülmüş listede {0} kayıt bulundu"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:197
|
||||
#, java-format
|
||||
msgid "One result for search."
|
||||
msgid_plural "{0} results for search."
|
||||
msgstr[0] ""
|
||||
msgstr[0] "Arama için {0} sonuç bulundu."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
|
||||
#, java-format
|
||||
msgid "Address book contains 1 entry."
|
||||
msgid_plural "Address book contains {0} entries."
|
||||
msgstr[0] ""
|
||||
msgstr[0] "Adres defterinde {0} kayıt var."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:222
|
||||
#, java-format
|
||||
@@ -128,7 +128,7 @@ msgstr "Değiştirin"
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
|
||||
#, java-format
|
||||
msgid "Host name {0} is already in address book, unchanged."
|
||||
msgstr ""
|
||||
msgstr "{0} sunucu adı zaten adres defterinde var, değiştirilmedi."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:256
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:245
|
||||
@@ -136,7 +136,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Host name {0} is already in address book with a different destination. Click"
|
||||
" \"Replace\" to overwrite."
|
||||
msgstr ""
|
||||
msgstr "{0} sunucu adı zaten adres defterinde var ancak farklı bir hedefi gösteriyor. Değiştirmek için \"Değiştir\" üzerine tıklayın."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:258
|
||||
@@ -153,7 +153,7 @@ msgstr "{0} için hedef değiştirildi."
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:273
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
|
||||
msgid "Warning - host name does not end with \".i2p\""
|
||||
msgstr ""
|
||||
msgstr "Uyarı - sunucu adı \".i2p\" ile bitemez"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:270
|
||||
@@ -164,7 +164,7 @@ msgstr "Base 64 hedefi geçersiz."
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:276
|
||||
#, java-format
|
||||
msgid "Invalid host name \"{0}\"."
|
||||
msgstr ""
|
||||
msgstr "\"{0}\" sunucu adı geçersiz."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:279
|
||||
@@ -178,7 +178,7 @@ msgstr "Lütfen bir sunucu adı ve hedef yazın"
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:308
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
|
||||
msgid "Delete Entry"
|
||||
msgstr ""
|
||||
msgstr "Kaydı Silin"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:283
|
||||
@@ -199,17 +199,17 @@ msgstr "{0} hedefi silindi."
|
||||
#, java-format
|
||||
msgid "1 destination deleted."
|
||||
msgid_plural "{0} destinations deleted."
|
||||
msgstr[0] ""
|
||||
msgstr[0] "{0} hedef silindi."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:305
|
||||
msgid "No entries selected to delete."
|
||||
msgstr ""
|
||||
msgstr "Silinmek için seçilmiş bir kayıt yok."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:312
|
||||
msgid "Address book saved."
|
||||
msgstr ""
|
||||
msgstr "Adres defteri kaydedildi."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
|
||||
msgid "ERROR: Could not write addressbook file."
|
||||
@@ -218,7 +218,7 @@ msgstr "HATA: Adres defteri dosyasına yazılamadı."
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the \"back\" or "
|
||||
"\"reload\" button on your browser. Please resubmit."
|
||||
@@ -227,14 +227,14 @@ msgstr "Büyük olasılıkla web tarayıcınızdaki \"Geri\" ya da \"Yenile\" d
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
|
||||
msgid ""
|
||||
"If the problem persists, verify that you have cookies enabled in your "
|
||||
"browser."
|
||||
msgstr ""
|
||||
msgstr "Sorun sürerse, tarayıcınızda çerezlerin etkinleştirilmiş olduğuna emin olun."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
|
||||
msgid "Save"
|
||||
@@ -245,7 +245,7 @@ msgid "Configuration saved."
|
||||
msgstr "Ayarlar kaydedildi."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
|
||||
msgid "Reload"
|
||||
@@ -258,32 +258,32 @@ msgstr "Ayarlar yeniden yüklendi"
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:104
|
||||
#, java-format
|
||||
msgid "{0} address book in {1} database"
|
||||
msgstr ""
|
||||
msgstr "{0} adres defteri {1} veritabanında "
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
|
||||
msgid "Manually added via SusiDNS"
|
||||
msgstr ""
|
||||
msgstr "SusiDNS üzerine el ile eklendi"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:267
|
||||
#, java-format
|
||||
msgid "Failed to add Destination for {0} to naming service {1}"
|
||||
msgstr ""
|
||||
msgstr "{0} hedefi {1} ad hizmetine eklenemedi"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:291
|
||||
#, java-format
|
||||
msgid "Failed to delete Destination for {0} from naming service {1}"
|
||||
msgstr ""
|
||||
msgstr "{0} hedefi {1} ad hizmetinden silinemedi"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
|
||||
msgid ""
|
||||
"Subscriptions saved, updating addressbook from subscription sources now."
|
||||
msgstr "Abonelikler kaydedildi, adres defteri abonelik kaynaklarına göre güncelleniyor."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
msgid "Subscriptions saved."
|
||||
msgstr "Abonelikler kaydedildi."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
msgid "Subscriptions reloaded."
|
||||
msgstr "Abonelikler yeniden yüklendi"
|
||||
|
||||
@@ -431,7 +431,7 @@ msgstr "İptal"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
|
||||
msgid "Export in hosts.txt format"
|
||||
msgstr ""
|
||||
msgstr "hosts.txt biçiminde verin"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
|
||||
msgid "This address book is empty."
|
||||
@@ -521,31 +521,31 @@ msgstr "eepProxy kapınız (değiştirilmesine gerek yok)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:190
|
||||
msgid "Hostname for your eepProxy (no need to change)"
|
||||
msgstr ""
|
||||
msgstr "eepProxy sunucu adınız (değiştirilmesine gerek yok)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:192
|
||||
msgid "Whether to update the published addressbook"
|
||||
msgstr ""
|
||||
msgstr "Yayınlanmış adres defteri güncellensin"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:194
|
||||
msgid ""
|
||||
"File containing the etags header from the fetched subscription URLs (no need"
|
||||
" to change)"
|
||||
msgstr ""
|
||||
msgstr "Alınan abonelik İnternet adresinde etags üst bilgisini içeren dosya (değiştirilmesine gerek yok)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:196
|
||||
msgid ""
|
||||
"File containing the modification timestamp for each fetched subscription URL"
|
||||
" (no need to change)"
|
||||
msgstr ""
|
||||
msgstr "Alınan her bir abonelik İnternet adresi için değişiklik zaman damgasını içeren dosya (değiştirilmesine gerek yok)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:198
|
||||
msgid "File to log activity to (change to /dev/null if you like)"
|
||||
msgstr ""
|
||||
msgstr "İşlem günlük kayıtlarının yazılacağı dosya (/dev/null olarak değiştirebilirsiniz)"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:200
|
||||
msgid "Name of the theme to use (defaults to 'light')"
|
||||
msgstr ""
|
||||
msgstr "Kullanılacak temanın adı (varsayılan 'açık')"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
|
||||
msgid "addressbook"
|
||||
@@ -561,7 +561,7 @@ msgstr "Base 32 Adresi"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:204
|
||||
msgid "Base 64 Hash"
|
||||
msgstr ""
|
||||
msgstr "Base 64 Karma"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:210
|
||||
msgid "Address Helper"
|
||||
@@ -605,80 +605,80 @@ msgstr "Notlar"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
|
||||
msgid "Introduction"
|
||||
msgstr ""
|
||||
msgstr "Giriş"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
|
||||
msgid "What is the addressbook?"
|
||||
msgstr ""
|
||||
msgstr "Adres defteri nedir?"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:139
|
||||
msgid "The addressbook application is part of your I2P installation."
|
||||
msgstr ""
|
||||
msgstr "Adres defteri uygulaması I2P yazılımının bir parçasıdır."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:141
|
||||
msgid ""
|
||||
"It regularly updates your hosts.txt file from distributed sources or "
|
||||
"\"subscriptions\"."
|
||||
msgstr ""
|
||||
msgstr "hosts.txt dosyanızı düzenli olarak dağıtılmışkaynaklar ya da \"aboneliklerden\" günceller."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:143
|
||||
#, java-format
|
||||
msgid ""
|
||||
"In the default configuration, the address book is only subscribed to {0}."
|
||||
msgstr ""
|
||||
msgstr "Varsayılan ayarlarda, adres defteri yalnız {0} üzerine abonedir."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
|
||||
msgid ""
|
||||
"Subscribing to additional sites is easy, just add them to your <a "
|
||||
"href=\"subscriptions\">subscriptions</a> file."
|
||||
msgstr ""
|
||||
msgstr "Ek sitelere kolayca abone olabilirsiniz. Yalnızca siteleri <a href=\"subscriptions\">subscriptions</a> dosyasına ekleyin."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:147
|
||||
msgid ""
|
||||
"For more information on naming in I2P, see <a href=\"http://i2p-"
|
||||
"projekt.i2p/naming.html\" target=\"_top\">the overview</a>."
|
||||
msgstr ""
|
||||
msgstr "I2P adlandırmaları hakkında ayrıntılı bilgi almak için <a href=\"http://i2p-projekt.i2p/naming.html\" target=\"_top\">özet bölümüne</a> bakın."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
|
||||
msgid "How does the addressbook application work?"
|
||||
msgstr ""
|
||||
msgstr "Adres defteri uygulaması nasıl çalışır?"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:151
|
||||
msgid ""
|
||||
"The addressbook application regularly polls your subscriptions and merges "
|
||||
"their content into your \"router\" address book."
|
||||
msgstr ""
|
||||
msgstr "Adres defteri uygulaması düzenli olarak aboneliklerinizi denetleyerek içeriklerini \"yöneltici\" adres defterinize aktarır."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:153
|
||||
msgid ""
|
||||
"Then it merges your \"master\" address book into the router address book as "
|
||||
"well."
|
||||
msgstr ""
|
||||
msgstr "Ardından \"ana\" adres defterinizi yönelticinin adres defterine aktarır."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:155
|
||||
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 ""
|
||||
msgstr "Eepsite çalıştırıyorsanız ve uygun seçeneği etkinleştirdiyseniz, yöneltici adres defteri herkes tarafından görülebilecek \"yayınlanmış\" adres defterine yazılır."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:157
|
||||
msgid ""
|
||||
"The router also uses a private address book (not shown in the picture), "
|
||||
"which is not merged or published."
|
||||
msgstr ""
|
||||
msgstr "Yöneltici ayrıca aktarılmayan ya da yayınlanmayan bir kişisel adres defteri (görselde görüntülenmeyen) kullanır."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:159
|
||||
msgid ""
|
||||
"Hosts in the private address book can be accessed by you but their addresses"
|
||||
" are never distributed to others."
|
||||
msgstr ""
|
||||
msgstr "Kişisel adres defterindeki sunuculara yalnız siz erişebilirsiniz. Bu adresler asla diğer kişiler ile paylaşılmaz."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:161
|
||||
msgid ""
|
||||
"The private address book can also be used for aliases of hosts in your other"
|
||||
" address books."
|
||||
msgstr ""
|
||||
msgstr "Kişisel adres defteri ayrıca diğer adres defterlerinizdeki sunucu kısaltmaları için kullanılabilir."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
|
||||
msgid "subscriptions"
|
||||
@@ -686,30 +686,30 @@ msgstr "abonelikler"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
|
||||
msgid "The subscription file contains a list of i2p URLs."
|
||||
msgstr ""
|
||||
msgstr "Abonelik dosyasında I2P İnternet adreslerinin listesi bulunur."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:155
|
||||
msgid ""
|
||||
"The addressbook application regularly checks this list for new eepsites."
|
||||
msgstr ""
|
||||
msgstr "Adres defteri uygulaması düzenli olarak yeni eepsiteleri için bu listeyi denetler."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:157
|
||||
msgid "Those URLs refer to published hosts.txt files."
|
||||
msgstr ""
|
||||
msgstr "Bu İnternet adresleri yayınlanmış hosts.txt dosyalarını gösterir."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:159
|
||||
#, java-format
|
||||
msgid ""
|
||||
"The default subscription is the hosts.txt from {0}, which is updated "
|
||||
"infrequently."
|
||||
msgstr ""
|
||||
msgstr "hosts.txt dosyasındaki varsayılan abonelik olan {0} sık güncellenmez."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
|
||||
msgid ""
|
||||
"So it is a good idea to add additional subscriptions to sites that have the "
|
||||
"latest addresses."
|
||||
msgstr ""
|
||||
msgstr "Bu nedenle güncel adresleri bulunduran sitelerin aboneliğini eklemek iyi olur."
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:163
|
||||
msgid "See the FAQ for a list of subscription URLs."
|
||||
msgstr ""
|
||||
msgstr "Abonelik İnternet adreslerinin listesi için SSS bölümüne bakın."
|
||||
|
@@ -6,22 +6,23 @@
|
||||
# Translators:
|
||||
# 007 <Andrik007d@rambler.ru>, 2014
|
||||
# 007 <Andrik007d@rambler.ru>, 2014
|
||||
# Denis Blank <gribua@gmail.com>, 2011-2012
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011-2012
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# LinuxChata, 2014
|
||||
# LinuxChata, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014
|
||||
# Denis Blank <gribua@gmail.com>, 2012
|
||||
# Maxym Mykhalchuk, 2015
|
||||
# Denis Lysenko <gribua@gmail.com>, 2012
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-05-14 08:33+0000\n"
|
||||
"PO-Revision-Date: 2015-05-14 08:34+0000\n"
|
||||
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"POT-Creation-Date: 2015-07-17 01:13+0000\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:52+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -237,7 +238,7 @@ msgstr "ПОМИЛКА: Не вдалось зберегти файл адрес
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the \"back\" or "
|
||||
"\"reload\" button on your browser. Please resubmit."
|
||||
@@ -246,14 +247,14 @@ msgstr "Форма не прийнята, скоріше всього це ві
|
||||
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
|
||||
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
|
||||
msgid ""
|
||||
"If the problem persists, verify that you have cookies enabled in your "
|
||||
"browser."
|
||||
msgstr "Якщо проблема не усунена, то перевірте, чи у вашому браузері увімкнено куки (cookies)."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
|
||||
msgid "Save"
|
||||
@@ -264,7 +265,7 @@ msgid "Configuration saved."
|
||||
msgstr "Налаштування збережені."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
|
||||
msgid "Reload"
|
||||
@@ -293,16 +294,16 @@ msgstr "Не вдалося додати адресу призначення д
|
||||
msgid "Failed to delete Destination for {0} from naming service {1}"
|
||||
msgstr "Не вдалося видалити адресу призначення для {0} із служби імен {1}"
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
|
||||
msgid ""
|
||||
"Subscriptions saved, updating addressbook from subscription sources now."
|
||||
msgstr "Підписки збережені, запущено завантаження підписок і оновлення адресної книги."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
msgid "Subscriptions saved."
|
||||
msgstr "Підписки збережені."
|
||||
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
|
||||
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
|
||||
msgid "Subscriptions reloaded."
|
||||
msgstr "Підписки перезавантаженні."
|
||||
|
||||
@@ -450,7 +451,7 @@ msgstr "Відмінити"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
|
||||
msgid "Export in hosts.txt format"
|
||||
msgstr ""
|
||||
msgstr "Експорт у форматі hosts.txt"
|
||||
|
||||
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
|
||||
msgid "This address book is empty."
|
||||
|
@@ -5,8 +5,8 @@
|
||||
#
|
||||
# Translators:
|
||||
# 007 <Andrik007d@rambler.ru>, 2014
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Blank <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# Denis Lysenko <gribua@gmail.com>, 2011
|
||||
# LinuxChata, 2014
|
||||
# madjong <madjong@i2pmail.org>, 2014-2015
|
||||
msgid ""
|
||||
@@ -14,9 +14,9 @@ msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
|
||||
"PO-Revision-Date: 2015-04-08 19:55+0000\n"
|
||||
"Last-Translator: madjong <madjong@i2pmail.org>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
|
||||
"PO-Revision-Date: 2015-08-07 16:53+0000\n"
|
||||
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
|
||||
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
@@ -450,7 +450,7 @@
|
||||
if (newBuildNumber != 'unknown' && newBuildNumber != null) {
|
||||
echo = project.createTask("echo");
|
||||
project.setProperty("new.i2p.build.number", newBuildNumber);
|
||||
echo.setMessage("Build number is now: " + newBuildNumber);
|
||||
echo.setMessage("Build number is now: " + newBuildNumber + project.getProperty("build.extra"));
|
||||
echo.perform();
|
||||
}
|
||||
]]>
|
||||
|
@@ -18,7 +18,7 @@ public class CoreVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
|
||||
public final static String VERSION = "0.9.21";
|
||||
public final static String VERSION = "0.9.22";
|
||||
|
||||
/**
|
||||
* For Vuze.
|
||||
|
@@ -540,9 +540,10 @@ public class SU3File {
|
||||
String ctype = null;
|
||||
String ftype = null;
|
||||
String kfile = null;
|
||||
String kspass = KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD;
|
||||
boolean error = false;
|
||||
boolean shouldVerify = true;
|
||||
Getopt g = new Getopt("SU3File", args, "t:c:f:k:x");
|
||||
Getopt g = new Getopt("SU3File", args, "t:c:f:k:xp:");
|
||||
int c;
|
||||
while ((c = g.getopt()) != -1) {
|
||||
switch (c) {
|
||||
@@ -566,6 +567,10 @@ public class SU3File {
|
||||
shouldVerify = false;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
kspass = g.getOptarg();
|
||||
break;
|
||||
|
||||
case '?':
|
||||
case ':':
|
||||
default:
|
||||
@@ -586,16 +591,16 @@ public class SU3File {
|
||||
Properties props = new Properties();
|
||||
props.setProperty("prng.bufferSize", "16384");
|
||||
new I2PAppContext(props);
|
||||
ok = signCLI(stype, ctype, ftype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4), "");
|
||||
ok = signCLI(stype, ctype, ftype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4), "", kspass);
|
||||
} else if ("bulksign".equals(cmd)) {
|
||||
Properties props = new Properties();
|
||||
props.setProperty("prng.bufferSize", "16384");
|
||||
new I2PAppContext(props);
|
||||
ok = bulkSignCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3));
|
||||
ok = bulkSignCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3), kspass);
|
||||
} else if ("verifysig".equals(cmd)) {
|
||||
ok = verifySigCLI(a.get(0), kfile);
|
||||
} else if ("keygen".equals(cmd)) {
|
||||
ok = genKeysCLI(stype, a.get(0), a.get(1), a.get(2));
|
||||
ok = genKeysCLI(stype, a.get(0), a.get(1), a.get(2), kspass);
|
||||
} else if ("extract".equals(cmd)) {
|
||||
ok = extractCLI(a.get(0), a.get(1), shouldVerify, kfile);
|
||||
} else {
|
||||
@@ -611,12 +616,13 @@ public class SU3File {
|
||||
}
|
||||
|
||||
private static final void showUsageCLI() {
|
||||
System.err.println("Usage: SU3File keygen [-t type|code] publicKeyFile keystore.ks you@mail.i2p");
|
||||
System.err.println(" SU3File sign [-t type|code] [-c type|code] [-f type|code] inputFile.zip signedFile.su3 keystore.ks version you@mail.i2p");
|
||||
System.err.println(" SU3File bulksign [-t type|code] [-c type|code] directory keystore.ks version you@mail.i2p");
|
||||
System.err.println(" SU3File showversion signedFile.su3");
|
||||
System.err.println(" SU3File verifysig [-k file.crt] signedFile.su3 ## -k use this pubkey cert for verification");
|
||||
System.err.println(" SU3File extract [-x] [-k file.crt] signedFile.su3 outFile ## -x don't check sig");
|
||||
System.err.println("Usage: SU3File keygen [-t type|code] [-p keystorepw] publicKeyFile keystore.ks you@mail.i2p\n" +
|
||||
" SU3File sign [-t type|code] [-c type|code] [-f type|code] [-p keystorepw] inputFile.zip signedFile.su3 keystore.ks version you@mail.i2p\n" +
|
||||
" SU3File bulksign [-t type|code] [-c type|code] [-p keystorepw] directory keystore.ks version you@mail.i2p\n" +
|
||||
" SU3File showversion signedFile.su3\n" +
|
||||
" SU3File verifysig [-k file.crt] signedFile.su3 ## -k use this pubkey cert for verification\n" +
|
||||
" SU3File extract [-x] [-k file.crt] signedFile.su3 outFile ## -x don't check sig");
|
||||
System.err.println("Default keystore password: \"" + KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD + '"');
|
||||
System.err.println(dumpTypes());
|
||||
}
|
||||
|
||||
@@ -714,7 +720,7 @@ public class SU3File {
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final boolean bulkSignCLI(String stype, String ctype, String dir,
|
||||
String privateKeyFile, String version, String signerName) {
|
||||
String privateKeyFile, String version, String signerName, String kspass) {
|
||||
File d = new File(dir);
|
||||
if (!d.isDirectory()) {
|
||||
System.out.println("Directory does not exist: " + d);
|
||||
@@ -749,7 +755,8 @@ public class SU3File {
|
||||
if (!inputFile.endsWith(".zip"))
|
||||
continue;
|
||||
String signedFile = inputFile.substring(0, inputFile.length() - 4) + ".su3";
|
||||
boolean rv = signCLI(stype, ctype, null, inputFile, signedFile, privateKeyFile, version, signerName, keypw);
|
||||
boolean rv = signCLI(stype, ctype, null, inputFile, signedFile,
|
||||
privateKeyFile, version, signerName, keypw, kspass);
|
||||
if (!rv)
|
||||
return false;
|
||||
success++;
|
||||
@@ -764,7 +771,7 @@ public class SU3File {
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final boolean signCLI(String stype, String ctype, String ftype, String inputFile, String signedFile,
|
||||
String privateKeyFile, String version, String signerName, String keypw) {
|
||||
String privateKeyFile, String version, String signerName, String keypw, String kspass) {
|
||||
SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : SigType.parseSigType(stype);
|
||||
if (type == null) {
|
||||
System.out.println("Signature type " + stype + " is not supported");
|
||||
@@ -799,7 +806,7 @@ public class SU3File {
|
||||
System.out.println("Warning: File type " + ftype + " is undefined");
|
||||
}
|
||||
}
|
||||
return signCLI(type, ct, ft, inputFile, signedFile, privateKeyFile, version, signerName, keypw);
|
||||
return signCLI(type, ct, ft, inputFile, signedFile, privateKeyFile, version, signerName, keypw, kspass);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -807,7 +814,7 @@ public class SU3File {
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final boolean signCLI(SigType type, ContentType ctype, int ftype, String inputFile, String signedFile,
|
||||
String privateKeyFile, String version, String signerName, String keypw) {
|
||||
String privateKeyFile, String version, String signerName, String keypw, String kspass) {
|
||||
try {
|
||||
while (keypw.length() < 6) {
|
||||
System.out.print("Enter password for key \"" + signerName + "\": ");
|
||||
@@ -821,7 +828,7 @@ public class SU3File {
|
||||
System.out.println("Key password must be at least 6 characters");
|
||||
}
|
||||
File pkfile = new File(privateKeyFile);
|
||||
PrivateKey pk = KeyStoreUtil.getPrivateKey(pkfile,KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD, signerName, keypw);
|
||||
PrivateKey pk = KeyStoreUtil.getPrivateKey(pkfile, kspass, signerName, keypw);
|
||||
if (pk == null) {
|
||||
System.out.println("Private key for " + signerName + " not found in keystore " + privateKeyFile);
|
||||
return false;
|
||||
@@ -895,13 +902,14 @@ public class SU3File {
|
||||
* @return success
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile, String alias) {
|
||||
private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile,
|
||||
String alias, String kspass) {
|
||||
SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : SigType.parseSigType(stype);
|
||||
if (type == null) {
|
||||
System.out.println("Signature type " + stype + " is not supported");
|
||||
return false;
|
||||
}
|
||||
return genKeysCLI(type, publicKeyFile, privateKeyFile, alias);
|
||||
return genKeysCLI(type, publicKeyFile, privateKeyFile, alias, kspass);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -909,7 +917,8 @@ public class SU3File {
|
||||
* @return success
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final boolean genKeysCLI(SigType type, String publicKeyFile, String privateKeyFile, String alias) {
|
||||
private static final boolean genKeysCLI(SigType type, String publicKeyFile, String privateKeyFile,
|
||||
String alias, String kspass) {
|
||||
File pubFile = new File(publicKeyFile);
|
||||
if (pubFile.exists()) {
|
||||
System.out.println("Error: Not overwriting file " + publicKeyFile);
|
||||
@@ -947,7 +956,7 @@ public class SU3File {
|
||||
if (keylen == 528)
|
||||
keylen = 521;
|
||||
}
|
||||
boolean success = KeyStoreUtil.createKeys(ksFile, KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD, alias,
|
||||
boolean success = KeyStoreUtil.createKeys(ksFile, kspass, alias,
|
||||
alias, "I2P", 3652, type.getBaseAlgorithm().getName(),
|
||||
keylen, keypw);
|
||||
if (!success) {
|
||||
|
@@ -47,16 +47,17 @@ public class Certificate extends DataStructureImpl {
|
||||
public final static int CERTIFICATE_TYPE_KEY = 5;
|
||||
|
||||
/**
|
||||
* If null cert, return immutable static instance, else create new
|
||||
* If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
|
||||
* @throws DataFormatException if not enough bytes
|
||||
* @since 0.8.3
|
||||
*/
|
||||
public static Certificate create(byte[] data, int off) throws DataFormatException {
|
||||
int type;
|
||||
byte[] payload;
|
||||
int length;
|
||||
try {
|
||||
type = data[off] & 0xff;
|
||||
int length = (int) DataHelper.fromLong(data, off + 1, 2);
|
||||
length = (int) DataHelper.fromLong(data, off + 1, 2);
|
||||
if (type == 0 && length == 0)
|
||||
return NULL_CERT;
|
||||
// from here down roughly the same as readBytes() below
|
||||
@@ -68,6 +69,12 @@ public class Certificate extends DataStructureImpl {
|
||||
throw new DataFormatException("not enough bytes", aioobe);
|
||||
}
|
||||
if (type == CERTIFICATE_TYPE_KEY) {
|
||||
if (length == 4) {
|
||||
if (Arrays.equals(payload, KeyCertificate.Ed25519_PAYLOAD))
|
||||
return KeyCertificate.ELG_Ed25519_CERT;
|
||||
if (Arrays.equals(payload, KeyCertificate.ECDSA256_PAYLOAD))
|
||||
return KeyCertificate.ELG_ECDSA256_CERT;
|
||||
}
|
||||
try {
|
||||
return new KeyCertificate(payload);
|
||||
} catch (DataFormatException dfe) {
|
||||
@@ -78,7 +85,7 @@ public class Certificate extends DataStructureImpl {
|
||||
}
|
||||
|
||||
/**
|
||||
* If null cert, return immutable static instance, else create new
|
||||
* If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
|
||||
* @since 0.8.3
|
||||
*/
|
||||
public static Certificate create(InputStream in) throws DataFormatException, IOException {
|
||||
@@ -93,8 +100,15 @@ public class Certificate extends DataStructureImpl {
|
||||
int read = DataHelper.read(in, payload);
|
||||
if (read != length)
|
||||
throw new DataFormatException("Not enough bytes for the payload (read: " + read + " length: " + length + ')');
|
||||
if (type == CERTIFICATE_TYPE_KEY)
|
||||
if (type == CERTIFICATE_TYPE_KEY) {
|
||||
if (length == 4) {
|
||||
if (Arrays.equals(payload, KeyCertificate.Ed25519_PAYLOAD))
|
||||
return KeyCertificate.ELG_Ed25519_CERT;
|
||||
if (Arrays.equals(payload, KeyCertificate.ECDSA256_PAYLOAD))
|
||||
return KeyCertificate.ELG_ECDSA256_CERT;
|
||||
}
|
||||
return new KeyCertificate(payload);
|
||||
}
|
||||
return new Certificate(type, payload);
|
||||
}
|
||||
|
||||
|
@@ -17,15 +17,41 @@ public class KeyCertificate extends Certificate {
|
||||
|
||||
public static final int HEADER_LENGTH = 4;
|
||||
|
||||
/** @since 0.9.22 pkg private for Certificate.create() */
|
||||
static final byte[] Ed25519_PAYLOAD = new byte[] {
|
||||
0, (byte) (SigType.EdDSA_SHA512_Ed25519.getCode()), 0, 0
|
||||
};
|
||||
|
||||
/** @since 0.9.22 pkg private for Certificate.create() */
|
||||
static final byte[] ECDSA256_PAYLOAD = new byte[] {
|
||||
0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
|
||||
};
|
||||
|
||||
/**
|
||||
* An immutable ElG/ECDSA-P256 certificate.
|
||||
*/
|
||||
public static final KeyCertificate ELG_ECDSA256_CERT;
|
||||
|
||||
/**
|
||||
* An immutable ElG/Ed25519 certificate.
|
||||
* @since 0.9.22
|
||||
*/
|
||||
public static final KeyCertificate ELG_Ed25519_CERT;
|
||||
|
||||
static {
|
||||
KeyCertificate kc;
|
||||
try {
|
||||
kc = new ECDSA256Cert();
|
||||
} catch (DataFormatException dfe) {
|
||||
kc = null; // won't happen
|
||||
throw new RuntimeException(dfe); // won't happen
|
||||
}
|
||||
ELG_ECDSA256_CERT = kc;
|
||||
try {
|
||||
kc = new Ed25519Cert();
|
||||
} catch (DataFormatException dfe) {
|
||||
throw new RuntimeException(dfe); // won't happen
|
||||
}
|
||||
ELG_Ed25519_CERT = kc;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,19 +211,17 @@ public class KeyCertificate extends Certificate {
|
||||
|
||||
/**
|
||||
* An immutable ElG/ECDSA-256 certificate.
|
||||
* @since 0.8.3
|
||||
*/
|
||||
private static final class ECDSA256Cert extends KeyCertificate {
|
||||
private static final byte[] ECDSA256_DATA = new byte[] {
|
||||
CERTIFICATE_TYPE_KEY, 0, HEADER_LENGTH, 0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
|
||||
};
|
||||
private static final int ECDSA256_LENGTH = ECDSA256_DATA.length;
|
||||
private static final byte[] ECDSA256_PAYLOAD = new byte[] {
|
||||
0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
|
||||
};
|
||||
private final int _hashcode;
|
||||
|
||||
public ECDSA256Cert() throws DataFormatException {
|
||||
super(ECDSA256_PAYLOAD);
|
||||
_hashcode = super.hashCode();
|
||||
}
|
||||
|
||||
/** @throws RuntimeException always */
|
||||
@@ -246,7 +270,75 @@ public class KeyCertificate extends Certificate {
|
||||
/** Overridden for efficiency */
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 1234567;
|
||||
return _hashcode;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An immutable ElG/Ed25519 certificate.
|
||||
* @since 0.9.22
|
||||
*/
|
||||
private static final class Ed25519Cert extends KeyCertificate {
|
||||
private static final byte[] ED_DATA = new byte[] { CERTIFICATE_TYPE_KEY,
|
||||
0, HEADER_LENGTH,
|
||||
0, (byte) SigType.EdDSA_SHA512_Ed25519.getCode(),
|
||||
0, 0
|
||||
};
|
||||
private static final int ED_LENGTH = ED_DATA.length;
|
||||
private final int _hashcode;
|
||||
|
||||
public Ed25519Cert() throws DataFormatException {
|
||||
super(Ed25519_PAYLOAD);
|
||||
_hashcode = super.hashCode();
|
||||
}
|
||||
|
||||
/** @throws RuntimeException always */
|
||||
@Override
|
||||
public void setCertificateType(int type) {
|
||||
throw new RuntimeException("Data already set");
|
||||
}
|
||||
|
||||
/** @throws RuntimeException always */
|
||||
@Override
|
||||
public void setPayload(byte[] payload) {
|
||||
throw new RuntimeException("Data already set");
|
||||
}
|
||||
|
||||
/** @throws RuntimeException always */
|
||||
@Override
|
||||
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||
throw new RuntimeException("Data already set");
|
||||
}
|
||||
|
||||
/** Overridden for efficiency */
|
||||
@Override
|
||||
public void writeBytes(OutputStream out) throws IOException {
|
||||
out.write(ED_DATA);
|
||||
}
|
||||
|
||||
/** Overridden for efficiency */
|
||||
@Override
|
||||
public int writeBytes(byte target[], int offset) {
|
||||
System.arraycopy(ED_DATA, 0, target, offset, ED_LENGTH);
|
||||
return ED_LENGTH;
|
||||
}
|
||||
|
||||
/** @throws RuntimeException always */
|
||||
@Override
|
||||
public int readBytes(byte source[], int offset) throws DataFormatException {
|
||||
throw new RuntimeException("Data already set");
|
||||
}
|
||||
|
||||
/** Overridden for efficiency */
|
||||
@Override
|
||||
public int size() {
|
||||
return ED_LENGTH;
|
||||
}
|
||||
|
||||
/** Overridden for efficiency */
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return _hashcode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,7 @@
|
||||
package net.i2p.internal;
|
||||
|
||||
import java.io.Closeable;
|
||||
|
||||
import net.i2p.data.i2cp.I2CPMessage;
|
||||
|
||||
/**
|
||||
@@ -15,7 +17,7 @@ import net.i2p.data.i2cp.I2CPMessage;
|
||||
* @author zzz
|
||||
* @since 0.8.3
|
||||
*/
|
||||
public abstract class I2CPMessageQueue {
|
||||
public abstract class I2CPMessageQueue implements Closeable {
|
||||
|
||||
/**
|
||||
* Send a message, nonblocking.
|
||||
|
@@ -284,7 +284,7 @@ public class I2PSSLSocketFactory {
|
||||
host.equals("localhost") ||
|
||||
host.equals("127.0.0.1") ||
|
||||
host.equals("::1") ||
|
||||
host.equals("0:0:0:0:0:0:0::1")) {
|
||||
host.equals("0:0:0:0:0:0:0:1")) {
|
||||
if (log.shouldWarn())
|
||||
log.warn("Skipping hostname validation for " + host);
|
||||
return;
|
||||
|
@@ -10,6 +10,7 @@ package net.i2p.util;
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Flushable;
|
||||
import java.io.IOException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.DecimalFormat;
|
||||
@@ -37,7 +38,7 @@ import net.i2p.data.DataHelper;
|
||||
* writes them where appropriate.
|
||||
*
|
||||
*/
|
||||
public class LogManager {
|
||||
public class LogManager implements Flushable {
|
||||
public final static String CONFIG_LOCATION_PROP = "loggerConfigLocation";
|
||||
public final static String FILENAME_OVERRIDE_PROP = "loggerFilenameOverride";
|
||||
public final static String CONFIG_LOCATION_DEFAULT = "logger.config";
|
||||
|
@@ -28,9 +28,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.io;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
|
||||
public interface RandomAccessInterface {
|
||||
public interface RandomAccessInterface extends Closeable {
|
||||
public long getFilePointer() throws IOException;
|
||||
public long length() throws IOException;
|
||||
public int read() throws IOException;
|
||||
|
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.io.block;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.RandomAccessFile;
|
||||
@@ -64,7 +65,7 @@ import net.i2p.util.Log;
|
||||
* Pages are 1 KB and are numbered starting from 1.
|
||||
* e.g. the Metaindex skiplist is at offset 1024 bytes
|
||||
*/
|
||||
public class BlockFile {
|
||||
public class BlockFile implements Closeable {
|
||||
public static final int PAGESIZE = 1024;
|
||||
public static final long OFFSET_MOUNTED = 20;
|
||||
public final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
|
||||
|
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.io.block.index;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -50,7 +51,7 @@ import net.i2p.util.Log;
|
||||
*
|
||||
* Always fits on one page.
|
||||
*/
|
||||
public class BSkipList extends SkipList {
|
||||
public class BSkipList extends SkipList implements Closeable {
|
||||
private static final long MAGIC = 0x536b69704c697374l; // "SkipList"
|
||||
public int firstSpanPage = 0;
|
||||
public int firstLevelPage = 0;
|
||||
|
@@ -28,12 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.util.skiplist;
|
||||
|
||||
import java.io.Flushable;
|
||||
|
||||
import net.metanotion.io.block.BlockFile;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
public class SkipLevels {
|
||||
public class SkipLevels implements Flushable {
|
||||
/** We can't have more than 2**32 pages */
|
||||
public static final int MAX_SIZE = 32;
|
||||
|
||||
|
@@ -28,13 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.util.skiplist;
|
||||
|
||||
import java.io.Flushable;
|
||||
import java.util.Random;
|
||||
|
||||
import net.i2p.util.RandomSource;
|
||||
|
||||
//import net.metanotion.io.block.BlockFile;
|
||||
|
||||
public class SkipList {
|
||||
public class SkipList implements Flushable {
|
||||
/** the probability of each next higher level */
|
||||
protected static final int P = 2;
|
||||
private static final int MIN_SLOTS = 4;
|
||||
|
@@ -28,9 +28,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.metanotion.util.skiplist;
|
||||
|
||||
import java.io.Flushable;
|
||||
|
||||
//import net.metanotion.io.block.BlockFile;
|
||||
|
||||
public class SkipSpan {
|
||||
public class SkipSpan implements Flushable {
|
||||
/** This is actually limited by BlockFile.spanSize which is much smaller */
|
||||
public static final int MAX_SIZE = 256;
|
||||
|
||||
|
9
debian/apparmor/i2p
vendored
9
debian/apparmor/i2p
vendored
@@ -7,7 +7,9 @@
|
||||
#include <abstractions/ssl_certs>
|
||||
|
||||
network inet stream,
|
||||
network inet dgram,
|
||||
network inet6 stream,
|
||||
network inet6 dgram,
|
||||
|
||||
# Needed by Java
|
||||
@{PROC} r,
|
||||
@@ -53,8 +55,11 @@
|
||||
/{,lib/live/mount/overlay/}tmp/ rwm,
|
||||
owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/ rwk,
|
||||
owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/** rw,
|
||||
owner /{,lib/live/mount/overlay/}tmp/wrapper[0-9]*.tmp rwk,
|
||||
owner /{,lib/live/mount/overlay/}tmp/wrapper[0-9]*.tmp/** rw,
|
||||
owner /{,lib/live/mount/overlay/}tmp/wrapper* rwk,
|
||||
owner /{,lib/live/mount/overlay/}tmp/wrapper*/** rw,
|
||||
# Scrypt used by I2P-Bote
|
||||
owner /{,lib/live/mount/overlay/}tmp/scrypt* rwk,
|
||||
owner /{,lib/live/mount/overlay/}tmp/scrypt*/** rw,
|
||||
owner /{,lib/live/mount/overlay/}tmp/i2p-daemon/ rwm,
|
||||
owner /{,lib/live/mount/overlay/}tmp/i2p-daemon/** rwklm,
|
||||
|
||||
|
48
debian/changelog
vendored
48
debian/changelog
vendored
@@ -1,3 +1,51 @@
|
||||
i2p (0.9.21-2) unstable; urgency=medium
|
||||
|
||||
* Add exception to apparmor rules for scrypt, needed by I2P-Bote
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Sun, 02 Aug 2015 15:00:30 +0000
|
||||
|
||||
i2p (0.9.21-1) unstable; urgency=medium
|
||||
|
||||
* New Upstream Version
|
||||
- Add multisession support for dual-signature crypto on the same tunnels
|
||||
- Use multisession for shared clients
|
||||
- Increase default outbound bandwidth limit to 60 KBps
|
||||
- Increase default maximum participating tunnels
|
||||
- Floodfills will send database store acks directly if connected, for efficiency
|
||||
- Set TCP keepalive on I2CP and SAM sockets
|
||||
- More efficient decompression in HTTP proxy, use less threads
|
||||
- Add support for fast extensions in i2psnark
|
||||
- i2psnark only autostarts torrents that were running previously
|
||||
- Add support for translated console news
|
||||
- SSU fixes to compete better with NTCP for bandwidth when limited
|
||||
- Fixes to prevent SSU stalls
|
||||
- Wait for outbound tunnels before sending first leaseset to client, to
|
||||
prevent dropping first message
|
||||
- Clean up resources correctly when SAM stops
|
||||
- Better error handling and notification when HTTP proxy is not running
|
||||
- More i2ptunnel fixes at startup and shutdown of tunnels
|
||||
- Fix total_size in i2psnark metadata message
|
||||
- Restore dates in console news headers
|
||||
- Several I2CP fixes
|
||||
- Use same session for naming lookups in I2PSocketEepGet
|
||||
- Increase max bandwidth to 16 MBps, add larger Bloom filter
|
||||
- New floodfills will send their info to nearby floodfills to speed integration
|
||||
- Apache Tomcat 6.0.44
|
||||
- Translation updates
|
||||
* Drop the following patches; included in 0.9.21:
|
||||
- 0005-i2ptunnel-Don-t-connect-manager-to-router-in-constru.patch
|
||||
- 0006-i2ptunnel-Don-t-call-startup-in-chained-constructor-.patch
|
||||
- 0007-Define-I2PTunnelClientBase-stats-in-one-place.patch
|
||||
- 0008-i2psnark-Fix-NPE-ticket-1602.patch
|
||||
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Fri, 31 Jul 2015 20:01:42 +0000
|
||||
|
||||
i2p (0.9.20-3) unstable; urgency=medium
|
||||
|
||||
* Add datagram exception to the apparmor profile
|
||||
|
||||
-- Kill Your TV <killyourtv@i2pmail.org> Sat, 20 Jun 2015 11:22:28 +0000
|
||||
i2p (0.9.20-2) unstable; urgency=medium
|
||||
|
||||
[str4d]
|
||||
|
37
history.txt
37
history.txt
@@ -1,3 +1,40 @@
|
||||
* 2015-09-12 0.9.22 released
|
||||
|
||||
2015-09-11 kytv
|
||||
* Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
|
||||
database from 2015-09-02.
|
||||
* Translation updates pulled from Transifex
|
||||
|
||||
2015-09-04 zzz
|
||||
* UPnP: Fix "content not allowed in trailing section"
|
||||
(tickets #481, #1653)
|
||||
|
||||
2015-08-31 zzz
|
||||
* Data: Cache P256 and Ed255i9 key certificates
|
||||
* i2psnark: Change default sig type to Ed25519
|
||||
|
||||
2015-08-29 zzz
|
||||
* Router:
|
||||
- Change default RI sig type to Ed25519, with a 10% chance od
|
||||
rekeying from DSA at each restart
|
||||
- Don't initialize KeyManager before selecting sig type
|
||||
- Don't log KeyManager error when changing sig type
|
||||
|
||||
2015-08-25 zzz
|
||||
* i2psnark:
|
||||
- Return partial piece to coordinator after reject
|
||||
- Fix tracking of downloaded portion of piece after reject
|
||||
- Send reject on receipt of bad request
|
||||
- Mark piece unrequested after receiving bad data, so it
|
||||
will be requested again, but not from the same peer
|
||||
- Fix NPE in Request constructor on error
|
||||
- Fix stuck before completion due to reject handling (ticket #1633)
|
||||
- Fix orphaned temp files due to reject handling (ticket #1635)
|
||||
|
||||
2015-08-02 zzz
|
||||
* Console: Fix SSL excluded ciphers (thx lazyg)
|
||||
* SU3File: Add keystore password command line option
|
||||
|
||||
* 2015-07-31 0.9.21 released
|
||||
|
||||
2015-07-27 zzz
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
<info>
|
||||
<appname>i2p</appname>
|
||||
<appversion>0.9.21</appversion>
|
||||
<appversion>0.9.22</appversion>
|
||||
<authors>
|
||||
<author name="I2P" email="https://geti2p.net/"/>
|
||||
</authors>
|
||||
|
@@ -1,24 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEDzCCAvegAwIBAgIJAMsPNG1k0yV4MA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
|
||||
VQQGEwJERTEVMBMGA1UECAwMbGluay5teDI0LmV1MRUwEwYDVQQHDAxsaW5rLm14
|
||||
MjQuZXUxFTATBgNVBAoMDGxpbmsubXgyNC5ldTEVMBMGA1UECwwMbGluay5teDI0
|
||||
LmV1MRUwEwYDVQQDDAxsaW5rLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDGxpbmsu
|
||||
bXgyNC5ldTAeFw0xNDExMTkxOTE4NTRaFw0yMDA1MTExOTE4NTRaMIGdMQswCQYD
|
||||
VQQGEwJERTEVMBMGA1UECAwMbGluay5teDI0LmV1MRUwEwYDVQQHDAxsaW5rLm14
|
||||
MjQuZXUxFTATBgNVBAoMDGxpbmsubXgyNC5ldTEVMBMGA1UECwwMbGluay5teDI0
|
||||
LmV1MRUwEwYDVQQDDAxsaW5rLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDGxpbmsu
|
||||
bXgyNC5ldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL8modDBRkyh
|
||||
SHSm92pTfguO3F6n5ocsBJ4vaVoosYq3ILCsapjqmynMHZUef6gEB7+Gn5cKXsH2
|
||||
JaKOeb8DHrOFCaxfj187x1QfZj1UNMQblx2T9q4th12tqp+k4JuLwgemr+2uAUpM
|
||||
xx/uHRJXD0hf67+fHQFYNVfa+WvT46xlKGsWDQ0LBsA/z4YGnyeaV4PrS5nj3euA
|
||||
IbdfDj7rJea3bfhSqYA1ZH1cquKlsXOOYO5cIcXsa5dxDWX51QS+i7+ocph+JN1X
|
||||
dRh6ZirE9OXZVXwXXVRnJSYjgBlP/DQBdE7YkE1R3LyCVZsgxJaaLV/ujijOIK61
|
||||
SqEhHvFNRe0CAwEAAaNQME4wHQYDVR0OBBYEFB6XRz6VZlrAE+3xL6AyKrkq+y2X
|
||||
MB8GA1UdIwQYMBaAFB6XRz6VZlrAE+3xL6AyKrkq+y2XMAwGA1UdEwQFMAMBAf8w
|
||||
DQYJKoZIhvcNAQELBQADggEBADhxBA5GHisDVf5a+1hIi7FBGBjJJLqzlaKh+bFB
|
||||
gTCYfk3F4wYzndr1HpdCZSSYDtY3mXFNMWQCpwvwvy1DM+9AMRY68wKNXHa/WypW
|
||||
zQSqTfEH8cdaIXUALB7pdWFVr3rx0f7/8I0Gj/ByUbJ94rzd22vduX5riY0Rag6B
|
||||
dPtW0M9bJrC1AIjexzDcStupj9v/ceGYZQYC4zb2tZ7Ek/6q+vei8TxWZjku7Dl4
|
||||
YRPXXufyB24uQ1hJVy2fSyIJ63tIRJoEFLBNaKDOB53i10xLWBcsJpXKY57AOQMn
|
||||
flqW4HG8uGJ/o1WjhiOB9eI7T9toy08zNzt+kSI/blFIoek=
|
||||
-----END CERTIFICATE-----
|
17
installer/resources/certificates/ssl/user.mx24.eu.crt
Normal file
17
installer/resources/certificates/ssl/user.mx24.eu.crt
Normal file
@@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICwDCCAkagAwIBAgIJAKXCoCBjd/C0MAoGCCqGSM49BAMEMIGdMQswCQYDVQQG
|
||||
EwJERTEVMBMGA1UECAwMdXNlci5teDI0LmV1MRUwEwYDVQQHDAx1c2VyLm14MjQu
|
||||
ZXUxFTATBgNVBAoMDHVzZXIubXgyNC5ldTEVMBMGA1UECwwMdXNlci5teDI0LmV1
|
||||
MRUwEwYDVQQDDAx1c2VyLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDHVzZXIubXgy
|
||||
NC5ldTAeFw0xNTA5MDMxNjMyNDVaFw0yMTAyMjMxNjMyNDVaMIGdMQswCQYDVQQG
|
||||
EwJERTEVMBMGA1UECAwMdXNlci5teDI0LmV1MRUwEwYDVQQHDAx1c2VyLm14MjQu
|
||||
ZXUxFTATBgNVBAoMDHVzZXIubXgyNC5ldTEVMBMGA1UECwwMdXNlci5teDI0LmV1
|
||||
MRUwEwYDVQQDDAx1c2VyLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDHVzZXIubXgy
|
||||
NC5ldTB2MBAGByqGSM49AgEGBSuBBAAiA2IABPlKs5fYTqVhIOMiR6U9U4TimxS3
|
||||
P5NBDVzeeIAgbw5KBC8UImScZVt9g4V1wQe5kPs7TxA2BfanAPZ+ekQiRRvMVQxD
|
||||
bSlRYupEWhq5BrJI6Lq/HDc7VJe9UUWffWKUoKNQME4wHQYDVR0OBBYEFBGJ0Yr+
|
||||
PZXnrk5RafQEALUpAU6ZMB8GA1UdIwQYMBaAFBGJ0Yr+PZXnrk5RafQEALUpAU6Z
|
||||
MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwQDaAAwZQIxAPcovePHMCosrAQNzS5i
|
||||
VDUiyPNLOxHyRBm79yKXGl13LxysB6OK+2M7t8j8E/udBwIwXVVjxN6aSgXYTJ7d
|
||||
p+Hg/2CuBMwf41/ENRcYQA+oGS9bU6A+7U9KJ1xTWWoqsUEs
|
||||
-----END CERTIFICATE-----
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -60,6 +60,11 @@ public class KeyManager {
|
||||
_leaseSetKeys = new ConcurrentHashMap<Hash, LeaseSetKeys>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read keys in from disk, blocking
|
||||
*
|
||||
* @deprecated we never read keys in anymore
|
||||
*/
|
||||
public void startup() {
|
||||
// run inline so keys are loaded immediately
|
||||
(new SynchronizeKeysJob()).runJob();
|
||||
@@ -79,17 +84,29 @@ public class KeyManager {
|
||||
queueWrite();
|
||||
}
|
||||
|
||||
/** router */
|
||||
public PrivateKey getPrivateKey() { return _privateKey; }
|
||||
/**
|
||||
* Router key
|
||||
* @return will be null on error or before startup() or setKeys() is called
|
||||
*/
|
||||
public synchronized PrivateKey getPrivateKey() { return _privateKey; }
|
||||
|
||||
/** router */
|
||||
public PublicKey getPublicKey() { return _publicKey; }
|
||||
/**
|
||||
* Router key
|
||||
* @return will be null on error or before startup() or setKeys() is called
|
||||
*/
|
||||
public synchronized PublicKey getPublicKey() { return _publicKey; }
|
||||
|
||||
/** router */
|
||||
public SigningPrivateKey getSigningPrivateKey() { return _signingPrivateKey; }
|
||||
/**
|
||||
* Router key
|
||||
* @return will be null on error or before startup() or setKeys() is called
|
||||
*/
|
||||
public synchronized SigningPrivateKey getSigningPrivateKey() { return _signingPrivateKey; }
|
||||
|
||||
/** router */
|
||||
public SigningPublicKey getSigningPublicKey() { return _signingPublicKey; }
|
||||
/**
|
||||
* Router key
|
||||
* @return will be null on error or before startup() or setKeys() is called
|
||||
*/
|
||||
public synchronized SigningPublicKey getSigningPublicKey() { return _signingPublicKey; }
|
||||
|
||||
/** client */
|
||||
public void registerKeys(Destination dest, SigningPrivateKey leaseRevocationPrivateKey, PrivateKey endpointDecryptionKey) {
|
||||
@@ -216,6 +233,11 @@ public class KeyManager {
|
||||
_signingPublicKey = (SigningPublicKey) readin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param param non-null, filled-in if exists is true, or without data if exists is false
|
||||
* @param exists write to file if true, read from file if false
|
||||
* @return structure or null on read error
|
||||
*/
|
||||
private DataStructure syncKey(File keyFile, DataStructure structure, boolean exists) {
|
||||
OutputStream out = null;
|
||||
InputStream in = null;
|
||||
|
@@ -398,7 +398,7 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
_oomListener = new OOMListener(_context);
|
||||
|
||||
_shutdownHook = new ShutdownHook(_context);
|
||||
_gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(_context), "Graceful shutdown hook", true);
|
||||
_gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(_context), "Graceful ShutdownHook", true);
|
||||
_gracefulShutdownDetector.setPriority(Thread.NORM_PRIORITY + 1);
|
||||
_gracefulShutdownDetector.start();
|
||||
|
||||
@@ -577,8 +577,6 @@ public class Router implements RouterClock.ClockShiftListener {
|
||||
if (!SystemVersion.isAndroid())
|
||||
I2PThread.addOOMEventListener(_oomListener);
|
||||
|
||||
_context.keyManager().startup();
|
||||
|
||||
setupHandlers();
|
||||
//if (ALLOW_DYNAMIC_KEYS) {
|
||||
// if ("true".equalsIgnoreCase(_context.getProperty(Router.PROP_HIDDEN, "false")))
|
||||
|
@@ -13,6 +13,7 @@ import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.Flushable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@@ -193,7 +194,7 @@ class PersistentDataStore extends TransientDataStore {
|
||||
* we will soon have to implement a scheme for keeping only
|
||||
* a subset of all DatabaseEntrys in memory and keeping the rest on disk.
|
||||
*/
|
||||
private class Writer implements Runnable {
|
||||
private class Writer implements Runnable, Flushable {
|
||||
private final Map<Hash, DatabaseEntry>_keys;
|
||||
private final Object _waitLock;
|
||||
private volatile boolean _quit;
|
||||
|
@@ -89,7 +89,7 @@ public class Reseeder {
|
||||
/** @since 0.8.2 */
|
||||
public static final String DEFAULT_SSL_SEED_URL =
|
||||
"https://reseed.i2p-projekt.de/" + "," + // Only HTTPS
|
||||
"https://netdb.rows.io:444/" + "," + // Only HTTPS and SU3 (v3) support
|
||||
//"https://netdb.rows.io:444/" + "," + // Only HTTPS and SU3 (v3) support
|
||||
"https://i2pseed.zarrenspry.info/" + "," + // Only HTTPS and SU3 (v3) support
|
||||
"https://i2p.mooo.com/netDb/" + "," +
|
||||
// ticket #1596
|
||||
@@ -98,7 +98,7 @@ public class Reseeder {
|
||||
"https://us.reseed.i2p2.no:444/" + "," +
|
||||
"https://uk.reseed.i2p2.no:444/" + "," +
|
||||
"https://reseed.i2p.vzaws.com:8443/" + ", " + // Only SU3 (v3) support
|
||||
"https://link.mx24.eu/" + "," + // Only HTTPS and SU3 (v3) support
|
||||
"https://user.mx24.eu/" + "," + // Only HTTPS and SU3 (v3) support
|
||||
"https://ieb9oopo.mooo.com/"; // Only HTTPS and SU3 (v3) support
|
||||
|
||||
private static final String SU3_FILENAME = "i2pseeds.su3";
|
||||
|
@@ -35,6 +35,7 @@ import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.util.EventLog;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.SecureFileOutputStream;
|
||||
import net.i2p.util.SystemVersion;
|
||||
|
||||
/**
|
||||
* Warning - misnamed. This creates a new RouterIdentity, i.e.
|
||||
@@ -49,9 +50,10 @@ public class CreateRouterInfoJob extends JobImpl {
|
||||
public static final String INFO_FILENAME = "router.info";
|
||||
public static final String KEYS_FILENAME = "router.keys";
|
||||
public static final String KEYS2_FILENAME = "router.keys.dat";
|
||||
private static final String PROP_ROUTER_SIGTYPE = "router.sigType";
|
||||
/** TODO when changing, check isAvailable() and fallback to DSA_SHA1 */
|
||||
private static final SigType DEFAULT_SIGTYPE = SigType.DSA_SHA1;
|
||||
static final String PROP_ROUTER_SIGTYPE = "router.sigType";
|
||||
/** TODO make everybody Ed */
|
||||
private static final SigType DEFAULT_SIGTYPE = (SystemVersion.isARM() || SystemVersion.isAndroid()) ?
|
||||
SigType.DSA_SHA1 : SigType.EdDSA_SHA512_Ed25519;
|
||||
|
||||
CreateRouterInfoJob(RouterContext ctx, Job next) {
|
||||
super(ctx);
|
||||
@@ -166,7 +168,7 @@ public class CreateRouterInfoJob extends JobImpl {
|
||||
* @since 0.9.16
|
||||
*/
|
||||
public static SigType getSigTypeConfig(RouterContext ctx) {
|
||||
SigType cstype = CreateRouterInfoJob.DEFAULT_SIGTYPE;
|
||||
SigType cstype = DEFAULT_SIGTYPE;
|
||||
String sstype = ctx.getProperty(PROP_ROUTER_SIGTYPE);
|
||||
if (sstype != null) {
|
||||
SigType ntype = SigType.parseSigType(sstype);
|
||||
|
@@ -110,6 +110,16 @@ class LoadRouterInfoJob extends JobImpl {
|
||||
// check if the sigtype config changed
|
||||
SigType cstype = CreateRouterInfoJob.getSigTypeConfig(getContext());
|
||||
boolean sigTypeChanged = stype != cstype;
|
||||
if (sigTypeChanged && getContext().getProperty(CreateRouterInfoJob.PROP_ROUTER_SIGTYPE) == null) {
|
||||
// Not explicitly configured, and default has changed
|
||||
// Give a 10% chance of rekeying for each restart
|
||||
// TODO reduce from 20 to ~3 (i.e. increase probability) in future release
|
||||
if (getContext().random().nextInt(20) > 0) {
|
||||
sigTypeChanged = false;
|
||||
if (_log.shouldWarn())
|
||||
_log.warn("Deferring RI rekey from " + stype + " to " + cstype);
|
||||
}
|
||||
}
|
||||
|
||||
if (sigTypeChanged || shouldRebuild(privkey)) {
|
||||
if (sigTypeChanged)
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package net.i2p.router.transport.ntcp;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.net.Inet6Address;
|
||||
import java.nio.ByteBuffer;
|
||||
@@ -64,7 +65,7 @@ import net.i2p.util.VersionComparator;
|
||||
*</pre>
|
||||
*
|
||||
*/
|
||||
class NTCPConnection {
|
||||
class NTCPConnection implements Closeable {
|
||||
private final RouterContext _context;
|
||||
private final Log _log;
|
||||
private SocketChannel _chan;
|
||||
|
@@ -184,6 +184,40 @@ public class JaxpParser extends Parser
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
/** @since 0.9.22 */
|
||||
@Override
|
||||
public int read(byte[] b) throws IOException {
|
||||
return this.read(b, 0, b.length);
|
||||
}
|
||||
|
||||
/** @since 0.9.22 */
|
||||
@Override
|
||||
public int read(byte[] b, int off, int len) throws IOException {
|
||||
if (b == null) {
|
||||
throw new NullPointerException();
|
||||
} else if (off < 0 || len < 0 || len > b.length - off) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
} else if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rv = this.read();
|
||||
if (-1 == rv) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int i = 1;
|
||||
b[off] = (byte) rv;
|
||||
for (; i < len; i++) {
|
||||
rv = this.read();
|
||||
if (-1 == rv) {
|
||||
break;
|
||||
}
|
||||
b[off + i] = (byte) rv;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user