diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html
index 1a0ca422..dedc4248 100644
--- a/i2p2www/pages/downloads/list.html
+++ b/i2p2www/pages/downloads/list.html
@@ -4,13 +4,13 @@
- {% trans monotoneurl=site_url('get-involved/guides/new-developers'), i2pversion=ver() -%}
- Alternately, you can fetch the source from
monotone.
+ {% trans monotoneurl=site_url('get-involved/guides/new-developers'),
+ gitrepo='http://git.repo.i2p/w/i2p.i2p.git',
+ github='https://github.com/i2p/i2p.i2p',
+ i2pversion=ver() -%}
+ Alternately, you can fetch the source from
monotone
+ or via Git from
git.repo.i2p or
Github.
Run
(tar xjvf i2psource_{{ i2pversion }}.tar.bz2 ; cd i2p-{{ i2pversion }} ; ant pkg)
then either
run the GUI installer or headless install as above.
diff --git a/i2p2www/pages/site/docs/how/network-database.html b/i2p2www/pages/site/docs/how/network-database.html
index cd4ddc81..c9c9dad6 100644
--- a/i2p2www/pages/site/docs/how/network-database.html
+++ b/i2p2www/pages/site/docs/how/network-database.html
@@ -309,7 +309,15 @@ The SHA256 hash of the key being looked up or stored is XOR-ed with
the hash of the router in question to determine closeness.
A modification to this algorithm is done to increase the costs of
Sybil attacks.
Instead of the SHA256 hash of the key being looked up of stored, the SHA256 hash is taken
-of the key appended with the date: yyyyMMdd (SHA256(key + yyyyMMdd).
+of the 32-byte binary key appended with the UTC date represented as an 8-byte ASCII string yyyyMMdd, i.e. SHA256(key + yyyyMMdd).
+This is called the "routing key", and it changes every day at midnight UTC.
+The daily transformation of the DHT is sometimes called "keyspace rotation",
+although it isn't strictly a rotation.
+{%- endtrans %}
+
+
{% trans -%}
+Routing keys are never sent on-the-wire in any I2NP message, they are only used locally for
+determination of distance.
{%- endtrans %}
@@ -332,6 +340,28 @@ This allows an initial response, and later responses, to be sent to an appropria
without requiring any LeaseSet lookups, or requiring the communicating Destinations to have published LeaseSets at all.
{%- endtrans %}
+
Floodfill Selection
+
{% trans -%}
+The DatabaseStoreMessage should be sent to the floodfill that is closest
+to the current routing key for the RouterInfo or LeaseSet being stored.
+Currently, the closest floodfill is found by a search in the local database.
+Even if that floodfill is not actually closest, it will flood it "closer" by
+sending it to multiple other floodfills.
+This provides a high degree of fault-tolerance.
+{%- endtrans %}
+
+
{% trans -%}
+In traditional Kademlia, a peer would do a "find-closest" search before inserting
+an item in the DHT to the closest target. As the verify operation will tend to
+discover closer floodfills if they are present, a router will quickly improve
+its knowledge of the DHT "neighborhood" for the RouterInfo and LeaseSets it regularly publishes.
+While I2NP does not define a "find-closest" message, if it becomes necessary,
+a router may simply do an iterative search for a key with the least significant bit flipped
+(i.e. key ^ 0x01) until no closer peers are received in the DatabaseSearchReplyMessages.
+This ensures that the true closest peer will be found even if a more-distant peer had
+the netdb item.
+{%- endtrans %}
+
{% trans %}RouterInfo Storage to Floodfills{% endtrans %}
{% trans i2np=site_url('docs/protocol/i2np') -%}
@@ -372,12 +402,15 @@ This message is sent back to one of the client's inbound tunnels.
After a floodfill router receives a DatabaseStoreMessage containing a
valid RouterInfo or LeaseSet which is newer than that previously stored in its
local NetDb, it "floods" it.
-To flood a NetDb entry, it looks up the 7 floodfill routers closest to the key
-of the NetDb entry. (The key is the SHA256 Hash of the RouterIdentity or Destination with the date (yyyyMMdd) appended.)
+To flood a NetDb entry, it looks up several (currently 4) floodfill routers closest to the routing key
+of the NetDb entry. (The routing key is the SHA256 Hash of the RouterIdentity or Destination with the date (yyyyMMdd) appended.)
+By flooding to those closest to the key, not closest to itself, the floodfill ensures that the storage
+gets to the right place, even if the storing router did not have good knowledge of the
+DHT "neighborhood" for the routing key.
{%- endtrans %}
{% trans i2np=site_url('docs/protocol/i2np') -%}
-It then directly connects to each of the 7 peers
+The floodfill then directly connects to each of those peers
and sends it a I2NP DatabaseStoreMessage
with a zero Reply Token. The message is not end-to-end garlic encrypted,
as this is a direct connection, so there are no intervening routers
@@ -658,6 +691,19 @@ to the target key, or to each other.
{% trans -%}
This attack becomes more difficult as the network size grows.
+However, recent research demonstrates that the keyspace rotation is not particularly effective.
+An attacker can precompute numerous router hashes in advance,
+and only a few routers are sufficient to "eclipse" a portion
+of the keyspace within a half hour after rotation.
+{%- endtrans %}
+
+
{% trans -%}
+One consequence of daily keyspace rotation is that the distributed network database
+may become unreliable for a few minutes after the rotation --
+lookups will fail because the new "closest" router has not received a store yet.
+The extent of the issue, and methods for mitigation
+(for example netdb "handoffs" at midnight)
+are a topic for further study.
{%- endtrans %}
{% trans -%}
diff --git a/i2p2www/pages/site/docs/protocol/i2np.html b/i2p2www/pages/site/docs/protocol/i2np.html
index 02ea85b2..fadf69ae 100644
--- a/i2p2www/pages/site/docs/protocol/i2np.html
+++ b/i2p2www/pages/site/docs/protocol/i2np.html
@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}I2NP{% endblock %}
-{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %}
-{% block accuratefor %}0.8{% endblock %}
+{% block lastupdated %}{% trans %}June 2013{% endtrans %}{% endblock %}
+{% block accuratefor %}0.9.6{% endblock %}
{% block content %}
{% trans %}I2P Network Protocol{% endtrans %} (I2NP)
{% trans -%}
@@ -20,16 +20,11 @@ through multiple hops to the ultimate destination.
Priority is only used locally at the origin, i.e. when queuing for outbound delivery.
{%- endtrans %}
-
{% trans -%}
-Both the NTCP and UDP transports implement priority transmission,
-but in quite different manners.
-UDP has complex code with queues for each priority, however it treats
-messages with priorities 400-499, for example, the same.
-(The priority queues are 100, 200, 300, 400, 500, and 1000)
-These are global queues for all peers.
-NTCP has a trivial linear search for the highest priority within
-each buffer for a particular peer.
-This is much less effective.
+
{% trans outnetmessage='http://docs.i2p-projekt.de/javadoc/net/i2p/router/OutNetMessage.html' -%}
+The priorities listed below may not be current and are subject to change.
+See the OutNetMessage Javadocs
+for the current priority settings.
+Priority queueing implementation may vary.
{%- endtrans %}
{% trans %}Message Format{% endtrans %}
@@ -104,13 +99,8 @@ which is wrapped in a DataMessage.
DatabaseLookupMessage
2
|
- | 100/400
- | {% trans -%}
-400 normally; 100 if from HarvesterJob and sent directly;
-400 for a router lookup
-{%- endtrans %} |
-
-
+
500
+ | {% trans %}May vary{% endtrans %} |
DatabaseSearchReplyMessage
| 3
@@ -126,9 +116,9 @@ three floodfill routers are returned.
DatabaseStoreMessage
| 1
| {% trans %}Varies{% endtrans %} |
-100/400
+ | 460
| {% trans -%}
-Usually 100 (why?)
+Priority may vary.
Size is 898 bytes for a typical 2-lease leaseSet.
RouterInfo structures are compressed, and size varies; however
there is a continuing effort to reduce the amount of data published in a RouterInfo
@@ -140,8 +130,10 @@ as we approach release 1.0.
DataMessage
| 20
| 4 - 62080
- | 400
- |
+ | 425
+ | {% trans -%}
+Priority may vary on a per-destination basis
+{%- endtrans %} |
@@ -167,8 +159,8 @@ but when unwrapped, given a priority of 100 by the forwarding router
TunnelBuildMessage
| 21
| 4224
- | 300/500
- | {% trans %}Usually 500 (why?){% endtrans %} |
+500
+ |
|
@@ -203,7 +195,7 @@ TunnelGatewayMessage
VariableTunnelBuildMessage
| 23
| 1057 - 4225
- | 300/500
+ | 500
| {% trans %}Shorter TunnelBuildMessage as of 0.7.12{% endtrans %} |
diff --git a/i2p2www/pages/site/docs/spec/i2np.html b/i2p2www/pages/site/docs/spec/i2np.html
index 6b771248..7533d2a5 100644
--- a/i2p2www/pages/site/docs/spec/i2np.html
+++ b/i2p2www/pages/site/docs/spec/i2np.html
@@ -519,6 +519,8 @@ data:
Notes
-
For security, the reply fields are ignored if the message is received down a tunnel.
+
-
+The key is the "real" hash of the RouterIdentity or Destination, NOT the routing key.
@@ -622,28 +624,33 @@ excludedPeers ::
reply_key ::
32 byte SessionKey
- only included if encryptionFlag == 1
+ only included if encryptionFlag == 1, only as of release 0.9.7
tags ::
1 byte Integer
valid range: 1-32 (typically 1)
the number of reply tags that follow
- only included if encryptionFlag == 1
+ only included if encryptionFlag == 1, only as of release 0.9.7
reply_tags ::
one or more 32 byte SessionTags (typically one)
- only included if encryptionFlag == 1
+ only included if encryptionFlag == 1, only as of release 0.9.7
{% endhighlight %}
Notes
-
-Encryption flag, reply key, and reply tags are preliminary, not yet implemented.
+The key may be for a RouterInfo or LeaseSet, as they are in the same key space,
+and there is no flag to request only a particular type of data.
+
-
+Encryption flag, reply key, and reply tags as of release 0.9.7.
-
Encrypted replies are only useful when the response is through a tunnel.
-
The number of included tags could be greater than one if alternative DHT lookup strategies
(for example, recursive lookups) are implemented.
+
-
+The lookup key and exclude keys are the "real" hashes, NOT routing keys.
@@ -700,12 +707,11 @@ key ::
num ::
1 byte Integer
- number of peer hashes that follow
+ number of peer hashes that follow, 0-255
-peer_hash ::
+peer_hash ($num entries) ::
32 bytes
- SHA256 of the RouterInfo that the other router thinks are close to the key
- $num entries
+ SHA256 of the RouterIdentity that the other router thinks is close to the key
from ::
32 bytes
@@ -713,9 +719,19 @@ from ::
{% endhighlight %}
Notes
-
+
-
The 'from' hash is unauthenticated and cannot be trusted.
-
+
-
+ The returned peer hashes are not necessarily closer to the key
+ than the router being queried.
+
-
+ Typical number of hashes returned: 3
+
-
+The lookup key, peer hashes, and from hash are "real" hashes, NOT routing keys.
+
+
+
+
DeliveryStatus
Description
diff --git a/i2p2www/pages/site/docs/spec/ssu.html b/i2p2www/pages/site/docs/spec/ssu.html
index fc2c80aa..083541b7 100644
--- a/i2p2www/pages/site/docs/spec/ssu.html
+++ b/i2p2www/pages/site/docs/spec/ssu.html
@@ -1,6 +1,6 @@
{% extends "global/layout.html" %}
{% block title %}SSU Protocol Specification{% endblock %}
-{% block lastupdated %}May 2013{% endblock %}
+{% block lastupdated %}June 2013{% endblock %}
{% block accuratefor %}0.9.6{% endblock %}
{% block content %}
@@ -35,8 +35,9 @@ key. The specific construct of the MAC is the first 16 bytes from:
where '||' means append.
The payload is the message starting with the flag byte.
-The macKey is either the introduction key or the
-session key, as specified for each message below.
+The macKey is either the introduction key or is constructed from the
+exchanged DH key (see details below), as specified for each message below.
+Note that protocolVersion is 0, so the exclusive or is a no-op.
WARNING - the HMAC-MD5-128 used here is non-standard,
see the cryptography page for details.
@@ -52,6 +53,48 @@ and is currently set to 0. Peers using a different protocol version will
not be able to communicate with this peer, though earlier versions not
using this flag are.
+Session Key Details
+The 32-byte session key is created as follows:
+-
+Take the exchanged DH key, represented as a positive minimal-length BigInteger byte array (two's complement big-endian)
+
-
+If the most significant bit is 1 (i.e. array[0] & 0x80 != 0),
+prepend a 0x00 byte, as in Java's BigInteger.toByteArray() representation
+
-
+If the byte array is greater than or equal to 32 bytes, use the first (most significant) 32 bytes
+
-
+If the byte array is less than 32 bytes, append 0x00 bytes to extend to 32 bytes.
+Won't happen - See note below
+
+
+MAC Key Details
+The 32-byte MAC key is created as follows:
+-
+Take the exchanged DH key byte array, prepended with a 0x00 byte if necessary,
+from step 2 in the Session Key Details above.
+
-
+If that byte array is greater than or equal to 64 bytes, the MAC key is
+bytes 33-64 from that byte array.
+
-
+If that byte array is greater than 32 bytes but less than 64 bytes, the MAC key is formed from
+the bytes starting at byte 33, followed by 0x00 bytes to extend the MAC key to 32 bytes.
+Broken - See note below
+
-
+If that byte array is equal to 32 bytes, the MAC key is all zeros.
+Broken - See note below
+
-
+If that byte array is less than 32 bytes, the MAC key is the SHA-256 Hash of the 32-bytes
+from step 3 in the Session Key Details above.
+See note below
+
+Important note: It appears that the existing code is buggy and does not correctly handle DH key byte arrays
+between 32 and 63 bytes (steps 3 and 4 above) and the connection will fail.
+As these cases won't ever work, they are subject to change (probably using SHA-256).
+Since the nominal exchanged DH key is 256 bytes, the chances of the mininimal representation
+being less than 64 bytes is vanishingly small.
+
+
+Header Format
Within the AES encrypted payload, there is a minimal common structure
to the various messages - a one byte flag and a four byte sending
timestamp (seconds since the unix epoch). The flag byte contains
@@ -117,6 +160,12 @@ provide a significant amount of protection.
In the future, additional padding in the transport layer up to
a set of fixed packet sizes may be appropriate to further hide the data
fragmentation to external adversaries.
+
+Through release 0.9.6, messages were only padded to the next 16 byte boundary,
+and messages not a multiple of 16 bytes could possibly be invalid.
+As of release 0.9.7, messages may be padded to any length as long as the current MTU is honored.
+Any extra 1-15 padding bytes beyond the last block of 16 bytes cannot be encrypted or decrypted and will be ignored.
+However, the full length and all padding is included in the MAC calculation.
@@ -412,7 +461,7 @@ Signed-on time appears to be unused or unverified in the current implementation.
SessionDestroyed (type 8)
The Session Destroyed message was implemented (reception only) in release 0.8.1,
-and is never sent. Transmission implemented as of release 0.8.9.
+and is sent as of release 0.8.9.
@@ -752,6 +801,10 @@ While we use the I2NP message ID as the SSU message ID, from the SSU
protocol view, they are random numbers.
In fact, since the router uses a single Bloom filter for all peers,
the message ID must be an actual random number.
+-
+Because there are no sequence numbers, there is no way to be sure an ACK was received.
+The current implementation routinely sends a large amount of duplicate ACKs.
+Duplicate ACKs should not be taken as an indication of congestion.
diff --git a/i2p2www/pages/site/docs/spec/tunnel-creation.html b/i2p2www/pages/site/docs/spec/tunnel-creation.html
index c0cbbe8f..a0e7247a 100644
--- a/i2p2www/pages/site/docs/spec/tunnel-creation.html
+++ b/i2p2www/pages/site/docs/spec/tunnel-creation.html
@@ -85,6 +85,7 @@ message ID that the message (or reply) should use.
Bit 7 indicates that the hop will be an inbound gateway (IBGW).
Bit 6 indicates that the hop will be an outbound endpoint (OBEP).
If neither bit is set, the hop will be an intermediate participant.
+Both cannot be set at once.
Request Record Creation
@@ -120,7 +121,7 @@ for the hop in question.
When a hop receives a TunnelBuildMessage, it looks through the
records contained within it for one starting with their own identity
-hash (trimmed to 8 bytes). It then decrypts the ElGamal block from
+hash (trimmed to 16 bytes). It then decrypts the ElGamal block from
that record and retrieves the protected cleartext. At that point,
they make sure the tunnel request is not a duplicate by feeding the
AES-256 reply key into a bloom filter.
diff --git a/i2p2www/pages/site/get-involved/bounties/netdb.html b/i2p2www/pages/site/get-involved/bounties/netdb.html
index 7451af2a..2d0b1aed 100644
--- a/i2p2www/pages/site/get-involved/bounties/netdb.html
+++ b/i2p2www/pages/site/get-involved/bounties/netdb.html
@@ -66,17 +66,36 @@ still maintain an unlimited search horizon.
- Investigate refactoring
- Investigate I2P NetDB refactoring strategy.
- - Investigate multirouter
- - Investigate the maturity of multirouter, which will simplify development tremendously.
+ - Investigate and fix MultiRouter
+ - Investigate the usability of MultiRouter, and fix issues found. MultiRouter will simplify further development.
+
+ - Select base implementation
+ - i2p.zzz.kademlia / i2psnarkdht is the most likely base implementation.
+
+
+Trac |
+162.5€ |
+
+
+
+
+Begin implementation of the most basic DHT |
+
+
+ - Investigate I2CP
+ - Investigate and design/select an I2NP message.
+
+ - Implement iterative DHT lookups
+ - Implement support for iterative DHT lookups
- - More to come
- - ...
|
None yet |
-162.5€ |
+325€ |
+
+
More to come |
... |
diff --git a/i2p2www/pages/site/get-involved/develop/license-agreements.html b/i2p2www/pages/site/get-involved/develop/license-agreements.html
index 30a27442..2a756ac0 100644
--- a/i2p2www/pages/site/get-involved/develop/license-agreements.html
+++ b/i2p2www/pages/site/get-involved/develop/license-agreements.html
@@ -769,5 +769,29 @@ QUamNO18hBy7N/YdF2DPoV41ntobkM+kVfmR0jLCbiNjisMg1eO8mQ1ynY4Kf2F1
=7u31
-----END PGP SIGNATURE-----
+digit:
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Applicable to the code I contribute to the I2P project,
+I hereby state that:
+
+* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
+* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
+* I have the right to release the code I commit under the terms I am committing it
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.20 (MingW32)
+
+iQEcBAEBAgAGBQJRzgXbAAoJEAhQLmhPD07oWTkH/0nonFM5g0gw5SlqLKTxuBal
+OMomT+4+FFaCDgXOSXnnlw38no7c234LeKpuvlr0LLxjiRdfcsnnuvqIWmeeY4cq
+m3w6xGI+wNO2c/FYwTVumJO165sPc0Rg3b8d+zdUBncactRMdxcWUJTSHPdNzW2/
+tmtChmVft6SOj+qgBQEMW0IjYm/4+vg4NEO4OAg8ncogea8dubpIFJjE2UbSr7dE
+jkBoHiRXn4EN20Id4puCwXQK4QbbGwJGlKAUPgZXMd7nLqu9MljwLDkDWBMY9nRl
+Zf9i4Wqw8wKgkWIIbZ2+V+zP83FLcX6ga+GMr8tf/bwWjSe1PN7mZAQlPB4p8Qc=
+=NxxT
+-----END PGP SIGNATURE-----
+
+
{% endblock %}
diff --git a/www.i2p2/pages/translations/download_ar.html b/www.i2p2/pages/translations/download_ar.html
index 992bf7bb..7d8d598c 100644
--- a/www.i2p2/pages/translations/download_ar.html
+++ b/www.i2p2/pages/translations/download_ar.html
@@ -4,9 +4,9 @@
تحميل I2P
المتطلبات البرمجية
اصدار 1.5 من Java Runtime (أو أعلى)
-(Oracle/Sun Java Version 6,
-OpenJDK 6, or
-IcedTea6
+(Oracle Java Version 6/7,
+OpenJDK 6/7, or
+IcedTea6/7
منصوح بهم)
اعرف نسخة الجافا المثبتة لديك من هنا
diff --git a/www.i2p2/pages/translations/download_cs.html b/www.i2p2/pages/translations/download_cs.html
index 8e56d764..52e16e69 100644
--- a/www.i2p2/pages/translations/download_cs.html
+++ b/www.i2p2/pages/translations/download_cs.html
@@ -3,7 +3,7 @@
{% block content %}
Stáhnout I2P
Požadavky pro instalaci
-Sun Java 1.5 nebo novější (doporučená verze Sun Java 1.6), nebo ekvivalentní JRE.
+Oracle Java 1.5 nebo novější (doporučená verze Oracle Java 6/7), nebo ekvivalentní JRE.
Svou aktuální nainstalovanou verzi Javy si můžete ověřit na této stránce
nebo z příkazové řádky pomocí příkazu java -version
@@ -55,7 +55,8 @@ bf7d11f0a36acff9cd51ad3ef89d66975b0b0de344ca72719a5576159ec965d1
(SHA256
fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- Alternativně lze zdrojový kód stáhnout z repozitáře monotone.
+ Alternativně lze zdrojový kód stáhnout z repozitáře monotone
+ git.repo.i2p Github.
Spusťte sestavení programu příkazem (tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p-0.9.6 ; ant pkg)
a potom
spusťte grafický instalační program nebo instalaci z příkazové řádky (viz výše).
diff --git a/www.i2p2/pages/translations/download_de.html b/www.i2p2/pages/translations/download_de.html
index 181994c6..40c57fb5 100644
--- a/www.i2p2/pages/translations/download_de.html
+++ b/www.i2p2/pages/translations/download_de.html
@@ -4,9 +4,9 @@
Download I2P
Abhängigkeiten
Java Runtime 1.5 oder neuer.
-(Oracle/Sun Java Version 6,
-OpenJDK 6, oder
-IcedTea6
+(Oracle Java Version 6/7,
+OpenJDK 6/7, oder
+IcedTea6/7
recommended)
Bestimme hier deine Java Version
@@ -60,7 +60,8 @@ bf7d11f0a36acff9cd51ad3ef89d66975b0b0de344ca72719a5576159ec965d1
(SHA256
fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- Alternativ kannst Du den Quelltext aus Monotone kopieren.
+ Alternativ kannst Du den Quelltext aus Monotone
+ git.repo.i2p Github kopieren.
Führe folgendes aus: (tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p_0.9.6 ; ant pkg)
und starte dann den GUI Installer oder die headless Installation wie oben beschrieben
diff --git a/www.i2p2/pages/translations/download_el.html b/www.i2p2/pages/translations/download_el.html
index 487f8245..0fd1fb54 100644
--- a/www.i2p2/pages/translations/download_el.html
+++ b/www.i2p2/pages/translations/download_el.html
@@ -4,9 +4,9 @@
Ληψη I2P
Εξάρτηση
Java Runtime 1.5 ή νεότερο.
-(Oracle/Sun Java Version 6,
-OpenJDK 6, ή
-IcedTea6
+(Oracle Java Version 6/7,
+OpenJDK 6/7, ή
+IcedTea6/7
συνιστάται)
Βρείτε την έκδοση Java που έχετε εδώ
@@ -61,7 +61,8 @@ bf7d11f0a36acff9cd51ad3ef89d66975b0b0de344ca72719a5576159ec965d1
(SHA256
fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- Εναλλακτικά, μπορείτε να πάρετε τον πηγαίο κώδικα από το monotone.
+ Εναλλακτικά, μπορείτε να πάρετε τον πηγαίο κώδικα από το monotone
+ git.repo.i2p Github.
Εκτελέστε (tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p-0.9.6 ; ant pkg)
και μετά
είτε τρέξτε την εγκατάσταση με γραφικό περιβάλλον είτε από τη γραμμή εντολών όπως παραπάνω.
diff --git a/www.i2p2/pages/translations/download_es.html b/www.i2p2/pages/translations/download_es.html
index d8c296dd..14981861 100644
--- a/www.i2p2/pages/translations/download_es.html
+++ b/www.i2p2/pages/translations/download_es.html
@@ -4,9 +4,9 @@
Descargar I2P
Dependencias
Java Runtime 1.5 o superior.
-(Oracle/Sun Java Versión 6,
-OpenJDK 6, o
-IcedTea6
+(Oracle Java Versión 6/7,
+OpenJDK 6/7, o
+IcedTea6/7
recomendado)
Determina aquí tu versión instalada de Java
@@ -60,7 +60,8 @@ bf7d11f0a36acff9cd51ad3ef89d66975b0b0de344ca72719a5576159ec965d1
(SHA256
fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- De forma alternativa, puedes obtener las fuentes usando monotone.
+ De forma alternativa, puedes obtener las fuentes usando monotone
+ git.repo.i2p Github.
Ejecuta tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p-0.9.6 ; ant pkg ;
después puedes arrancar el instalador gráfico o bien hacer la instalación desde la línea de comandos descritas anteriormente.
diff --git a/www.i2p2/pages/translations/download_fr.html b/www.i2p2/pages/translations/download_fr.html
index 16c7d2ab..812104c4 100644
--- a/www.i2p2/pages/translations/download_fr.html
+++ b/www.i2p2/pages/translations/download_fr.html
@@ -5,9 +5,9 @@ Traduction de juillet 2011. Version anglaise actuelleTélécharger I2P
Prérequis
Java Runtime 1.5 ou plus récent.
-(Oracle/Sun Java Version 6,
-OpenJDK 6, ou
-IcedTea6
+(Oracle Java Version 6/7,
+OpenJDK 6/7, ou
+IcedTea6/7
recommandé)
Déterminez la version de Java installée
@@ -57,7 +57,8 @@ ou tapez java -version à l'invite de commande.
i2psource_0.9.6.tar.bz2
(SHA256 fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- Vous pouvez si vous préférez récupérer les sources sur monotone.
+ Vous pouvez si vous préférez récupérer les sources sur monotone
+ git.repo.i2p Github.
Exécuter (tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p-0.9.6 ; ant pkg)
puis, soit
lancer l'installeur graphique, soit passer par la ligne de commande.
diff --git a/www.i2p2/pages/translations/download_ru.html b/www.i2p2/pages/translations/download_ru.html
index 9cb08f3c..15dcba2e 100644
--- a/www.i2p2/pages/translations/download_ru.html
+++ b/www.i2p2/pages/translations/download_ru.html
@@ -6,7 +6,7 @@
Требования для установки
-Sun Java 1.5 или новее (рекомендуется Sun Java 1.6), либо иная совместимая JRE.
+Oracle Java 1.5 или новее (рекомендуется Oracle Java 6/7), либо иная совместимая JRE.
Узнать, какая версия Java установлена на Вашем компьютере можно на этой странице, либо набрав в командной строке java -version
@@ -62,7 +62,8 @@ bf7d11f0a36acff9cd51ad3ef89d66975b0b0de344ca72719a5576159ec965d1
fd2aa881d68b3164c43de9d91dcb04a93a36228d416582ada14ae40031436d18
sig)
- (Как вариант, можете скачать текущий исходный код из monotone-репозитория.)
+ (Как вариант, можете скачать текущий исходный код из monotone-репозитория
+ git.repo.i2p Github.)
Запустите процесс сборки (tar xjvf i2psource_0.9.6.tar.bz2 ; cd i2p-0.9.6 ; ant pkg)
, затем воспользуйтесь собранным инсталлятором в графическом или консольном режиме (см. предыдущие способы установки).
diff --git a/www.i2p2/pages/translations/download_zh.html b/www.i2p2/pages/translations/download_zh.html
index 602c4ced..d0e05eb2 100644
--- a/www.i2p2/pages/translations/download_zh.html
+++ b/www.i2p2/pages/translations/download_zh.html
@@ -3,8 +3,8 @@
{% block content %}
下载 I2P
依赖关系
-Sun Java 1.5 或更高版本,或等效的 JRE。
-(推荐使用 Sun Java 1.6)
+Oracle Java 1.5 或更高版本,或等效的 JRE。
+(推荐使用 Oracle Java 6/7)
确定您安装的 Java 版本可以点这里
或在命令行中输入 java -version 。
diff --git a/www.i2p2/pages/translations/license-agreements_de.html b/www.i2p2/pages/translations/license-agreements_de.html
index 64f2b32d..4a400a2f 100644
--- a/www.i2p2/pages/translations/license-agreements_de.html
+++ b/www.i2p2/pages/translations/license-agreements_de.html
@@ -753,5 +753,28 @@ QUamNO18hBy7N/YdF2DPoV41ntobkM+kVfmR0jLCbiNjisMg1eO8mQ1ynY4Kf2F1
=7u31
-----END PGP SIGNATURE-----
+digit:
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Applicable to the code I contribute to the I2P project,
+I hereby state that:
+
+* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
+* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
+* I have the right to release the code I commit under the terms I am committing it
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.20 (MingW32)
+
+iQEcBAEBAgAGBQJRzgXbAAoJEAhQLmhPD07oWTkH/0nonFM5g0gw5SlqLKTxuBal
+OMomT+4+FFaCDgXOSXnnlw38no7c234LeKpuvlr0LLxjiRdfcsnnuvqIWmeeY4cq
+m3w6xGI+wNO2c/FYwTVumJO165sPc0Rg3b8d+zdUBncactRMdxcWUJTSHPdNzW2/
+tmtChmVft6SOj+qgBQEMW0IjYm/4+vg4NEO4OAg8ncogea8dubpIFJjE2UbSr7dE
+jkBoHiRXn4EN20Id4puCwXQK4QbbGwJGlKAUPgZXMd7nLqu9MljwLDkDWBMY9nRl
+Zf9i4Wqw8wKgkWIIbZ2+V+zP83FLcX6ga+GMr8tf/bwWjSe1PN7mZAQlPB4p8Qc=
+=NxxT
+-----END PGP SIGNATURE-----
+
{% endblock %}