diff --git a/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst b/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst new file mode 100644 index 0000000000000000000000000000000000000000..149ef67e3eaecc2ce3a6ea95b50360339547748a --- /dev/null +++ b/i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst @@ -0,0 +1,106 @@ +{% trans -%} +============== +Syndie 1.105b Release +============== +{%- endtrans %} +.. meta:: + :date: 2014-01-21 + :category: release + :excerpt: {% trans %}Update to HSQLDB 2.3.1{% endtrans %} + +{% trans -%} +This is the first stable release since February 2013. +It is essentially the same as 1.104b-7-rc, with some translation updates. +{%- endtrans %} + +{% trans -%} +All binaries and source packages are at `syndie.de`_ and `syndie.i2p`_. +Plugins are available at `plugins.i2p`_ and `stats.i2p`_. +{%- endtrans %} + +{% trans -%} +For those of you upgrading from 1.103b, you will find syndie startup and shutdown much faster due to the new version of HSQLDB. +{%- endtrans %} + +{% trans -%} +If you have a large database or an identity you wish to preserve, +you may wish to back up your entire ~/.syndie directory before you start. +The upgrade process does make its own backup, however you may find it easier to use your own backup if the upgrade fails. +{%- endtrans %} + +{% trans -%} +Upgrades from 1.103b may fail for some people due to database corruption due to bugs in the old HSQLDB. +Unfortunately, we don't know how to fix it. +Your alternatives are to start over with a clean database, or stay with 1.103b forever. +Sorry about that. +{%- endtrans %} + +.. _`stats.i2p`: http://stats.i2p/i2p/plugins/ +.. _`plugins.i2p`: http://plugins.i2p/plugins/syndie/ +.. _`syndie.i2p`: http://www.syndie.i2p/download.html +.. _`syndie.de`: https://syndie.de/download + +{% trans -%} +As usual, we recommend that you update to this release. +The best way to maintain security and help the network is to run the latest release. +{%- endtrans %} + +**{% trans %}RELEASE DETAILS{% endtrans %}** + + +**{% trans %}Bug Fixes{% endtrans %}** + +- Fix NPE in SyndieTreeListener +- Fix, or maybe just move, NPE in addURI/getURI + +**{% trans %}GUI Improvements and Fixes{% endtrans %}** + +- Don't open message view tab for unreadable messages or stub messages +- Don't fail on duplicate cancel requests +- Fix BrowseForumTab text on forum with blank name +- For consistency, always put cancel button to the left of OK/Save +- Move message date to date column in syndicator tab +- Better formatting of file sizes in Syndicator tab +- Clean up internal error popup +- Catch dispose errors when changing translation or theme +- Add menu item to delete PBE messages and forums +- Add keyboard shortcuts in message view tab +- Fix dup archive in Syndicator Tab after rename +- Don't display PBE messages after deletion +- Update to SWT 3.8.2 20130131 + +**{% trans %} Syndication{% endtrans %}** + +- Improve import failure propagation and display +- More cleanup of Importer and enhanced ImportResults by passing missing key and PBE indications in result code +- Simplification of SyncArchive.IncomingAction using Results +- Handle and display "stub" cancel messages correctly +- Early check for banned target in ImportPost +- Reduce default pull policy to 14 days +- Only pull indexes needed for pulled messages +- Fetch messages newest-first + +**{% trans %}Database{% endtrans %}** + +- Update to DB version 25 +- Add LOBs for attachments and pages +- Increase length limits on cancelledURI, headerValue, and others +- Implement offline database backup +- Backup database before upgrading to hsqldb 2.x +- Add code to migrate large things to LOBs +- Enable migration of large attachments and pages to LOBs +- Implement retrieval of pages and attachments from LOBs +- Implement getAttachmentAsStream for real (unused yet) +- Implement storage to LOBs in ImportPost +- Sleep a while before shutdown compact +- Shutdown compact immediately after upgrade, then reconnect, as recommended by hsqldb +- Use attachment size from messageAttachment table, not actual size from messageAttachmentData table + +**{% trans %}Other{% endtrans %}** + +- Use DataHelper.loadProps() to deserialize properties UTF-8-safely +- Add script for the hsqldb database manager tool +- More code refactoring +- {% trans %}New translations{% endtrans %}: Polish, Portuguese, Romainian +- {% trans %}Translation updates{% endtrans %} + diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html index 5b3e9b480ab7450ca3cd06209d0fd3e3920a275d..456cf8a5a685ba5da8af18afffde11fe342e3cfb 100644 --- a/i2p2www/pages/downloads/list.html +++ b/i2p2www/pages/downloads/list.html @@ -2,7 +2,7 @@ {% block title %}{{ _('Download') }}{% endblock %} {% set i2pinstall_windows_sig = '95e7fb6b62efdc9d65b818360795380628ed8ceb396d5ccf5f263ea4d2bc8d79' %} {% set i2pinstall_jar_sig = '171ff170a4d97dd9ef0e352471448e0254cfac5c9e91bb07377b41790aa9cd92' %} -{% set i2p_android_sig = '61a2e1c602680b852ae6e0a391cf6a35860e273437a2786ea00fa731a7d3d427' %} +{% set i2p_android_sig = 'e74f8d4d541fb89586f9adcfe9d41ac28e8c6aae2c29798cacfe33f9b5752dfc' %} {% set i2psource_sig = '20bcd1a62101b15b423ae6dd81a76b1806d67a28a5bf0f341803a7a61178d494' %} {% set i2pupdate_sig = '4e82dce86efccc86759ee010da058af23d2cbecbfccf5ab3555e9ccb4ccd912e' %} {% block content %} @@ -120,7 +120,7 @@ or type <tt>java -version</tt> at your command prompt. </div> <div class="details"> <div class="file"> - <a href="http://{{ i2pconv('stats.i2p') }}/i2p.apk">i2p-android-0.9.9-0_b0-API8.apk</a> + <a href="http://{{ i2pconv('stats.i2p') }}/i2p.apk">i2p-android-0.9.10-0_b1-API8.apk</a> <div class="sig"> (SHA256 <code>{{ i2p_android_sig }}</code> ) @@ -132,6 +132,15 @@ or type <tt>java -version</tt> at your command prompt. <a href="{{ str4durl }}">str4d's eepsite</a>. {%- endtrans %} <div class="warning"> + {% trans -%} + The I2P Android app is in development and does NOT currently provide strong anonymity. + {%- endtrans %} + {% trans -%} + Requires Android 2.2 (Froyo) or higher. + {%- endtrans %} + {% trans -%} + 512 MB RAM minimum; 1 GB recommended. + {%- endtrans %} {% trans -%} The release and dev versions of the I2P APK are not compatible, as they are signed by zzz and str4d respectively. Uninstall one before installing diff --git a/i2p2www/pages/site/about/team.html b/i2p2www/pages/site/about/team.html index ec5789fede12bb87364939837d3e4e2d8b117e53..d8044f6b4921f0e11d9de3e5751ca806966051d9 100644 --- a/i2p2www/pages/site/about/team.html +++ b/i2p2www/pages/site/about/team.html @@ -10,7 +10,7 @@ network. <table border="0"> <tr> - <td valign="top" rowspan="20"><b>{{ _('Admin') }}</b></td> + <td valign="top" rowspan="21"><b>{{ _('Admin') }}</b></td> <td valign="top"><b>{{ _('Project Manager') }}</b></td> <td valign="top">zzz</td> <td valign="top"><i>{{ _('point of contact of last resort') }}</i></td> @@ -105,6 +105,11 @@ network. <td valign="top">eche|on</td> <td valign="top"><i>{{ _('manage router console news feed') }}</i></td> </tr> +<tr> + <td valign="top"><b>{{ _('Backup News Admin') }}</b></td> + <td valign="top">psi</td> + <td valign="top"><i>{{ _('manage the backup news feed') }}</i></td> +</tr> <tr> <td valign="top"><b>{{ _('Director of passion') }}</b></td> <td valign="top" class="blue">[{{ _('vacant') }}]</td> diff --git a/i2p2www/pages/site/docs/spec/i2np.html b/i2p2www/pages/site/docs/spec/i2np.html index 8c9445cf0f2c6578c5683f78060ac2c20319529b..ade4df7409436e8e7ea71e1d8a92731e353c3bb0 100644 --- a/i2p2www/pages/site/docs/spec/i2np.html +++ b/i2p2www/pages/site/docs/spec/i2np.html @@ -47,7 +47,7 @@ Short (SSU, 5 bytes): {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> type :: `Integer` length -> 1 byte @@ -84,7 +84,8 @@ data :: Data length -> $size bytes purpose -> actual message contents -{% endhighlight %} +</pre> + <h4>Notes</h4> <ul><li> When transmitted over <a href="{{ site_url('docs/transport/ssu') }}">SSU</a>, @@ -198,7 +199,7 @@ ElGamal and AES encrypted: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> unencrypted: receive_tunnel :: `TunnelId` @@ -259,7 +260,7 @@ encrypted_data :: ElGamal and AES encrypted data total length: 528 -{% endhighlight %} +</pre> <h4>Notes</h4> <ul><li> @@ -293,7 +294,7 @@ unencrypted: +----+----+----+----+----+----+----+----+ {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> unencrypted: bytes 0-31 : SHA-256 Hash of bytes 32-527 bytes 32-526 : random data @@ -304,7 +305,7 @@ bytes 0-527: AES-encrypted record(note: same size as BuildRequestRecord) total length: 528 -{% endhighlight %} +</pre> <h4>Notes</h4> <ul><li> @@ -337,8 +338,8 @@ unencrypted: <h4>Definition</h4> <pre> unencrypted: -Delivery Instructions :: <a href="{{ site_url('docs/spec/tunnel-message') }}#delivery">as defined here</a> - Length varies but is typically 39, 43, or 47 bytes +Delivery Instructions :: as defined below + Length varies but is typically 1, 33, or 37 bytes I2NP Message :: Any I2NP Message @@ -377,13 +378,14 @@ Certificate :: Always NULL in the current implementation (3 bytes total, all zer <h3 id="struct_DeliveryInstructions">Garlic Clove Delivery Instructions</h3> <p> +This specification is for Delivery Instructions inside Garlic Cloves only. Note that "Delivery Instructions" are also used inside Tunnel Messages, where the format is significantly different. See the <a href="{{ site_url('docs/spec/tunnel-message') }}#delivery">Tunnel Message documentation</a> -for more details. -Do NOT use the following specification for Tunnel Message Clove Delivery Instructions! +for details. +Do NOT use the following specification for Tunnel Message Delivery Instructions! {% highlight lang='dataspec' %} @@ -587,7 +589,8 @@ reply gateway: This is the router hash of the inbound gateway of the tunnel the response should be sent to data: - If type == 0, data is a 2-byte integer specifying the number of bytes that follow, followed by a gzip-compressed `RouterInfo`. + If type == 0, data is a 2-byte integer specifying the number of bytes that follow, + followed by a gzip-compressed `RouterInfo`. If type == 1, data is an uncompressed `LeaseSet`. </pre> @@ -660,7 +663,7 @@ The key is the "real" hash of the RouterIdentity or Destination, NOT the routing {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> key :: 32 bytes SHA256 hash of the object to lookup @@ -717,7 +720,7 @@ reply_tags :: one or more 32 byte `SessionTags` (typically one) only included if encryptionFlag == 1, only as of release 0.9.7 -{% endhighlight %} +</pre> <h4>Notes</h4> <ul><li> @@ -781,7 +784,7 @@ The lookup key and exclude keys are the "real" hashes, NOT routing keys. {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> key :: 32 bytes SHA256 of the object being searched @@ -797,7 +800,7 @@ peer_hash ($num entries) :: from :: 32 bytes SHA256 of the `RouterInfo` of the router this reply was sent from -{% endhighlight %} +</pre> <h4>Notes</h4> <ul><li> @@ -831,7 +834,7 @@ The lookup key, peer hashes, and from hash are "real" hashes, NOT routing keys. {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> msg_id :: 4 bytes unique ID of the message we deliver the DeliveryStatus for (see common I2NP header for details) @@ -839,7 +842,7 @@ msg_id :: time_stamp :: Date 8 bytes time the message was successfully created or delivered -{% endhighlight %} +</pre> <h4>Notes</h4> <ul><li> @@ -894,7 +897,7 @@ unencrypted data: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> Encrypted: length :: @@ -919,7 +922,7 @@ Message_ID :: 4 byte `Integer` Expiration :: `Date` (8 bytes) -{% endhighlight %} +</pre> <h4>Notes</h4> <ul> @@ -969,7 +972,7 @@ Expiration :: `Date` (8 bytes) {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> tunnelId :: 4 byte `TunnelID` identifies the tunnel this message is directed at @@ -977,7 +980,7 @@ tunnelId :: data :: 1024 bytes payload data.. fixed to 1024 bytes -{% endhighlight %} +</pre> <h4>Notes</h4> <ul> @@ -1001,7 +1004,7 @@ data :: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> tunnelId :: 4 byte `TunnelID` identifies the tunnel this message is directed at @@ -1013,7 +1016,7 @@ length :: data :: $length bytes actual payload of this message -{% endhighlight %} +</pre> <h4>Notes</h4> <ul> @@ -1038,7 +1041,7 @@ data :: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> length :: 4 bytes length of the payload @@ -1046,7 +1049,7 @@ length :: data :: $length bytes actual payload of this message -{% endhighlight %} +</pre> <h3 id="msg_TunnelBuild">TunnelBuild</h3> {% highlight lang='dataspec' %} @@ -1066,11 +1069,11 @@ data :: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> Just 8 `BuildRequestRecords` attached together record size: 528 bytes total size: 8*528 = 4224 bytes -{% endhighlight %} +</pre> <h4>Notes</h4> <ul> @@ -1102,7 +1105,7 @@ same format as `TunnelBuild` message, with `BuildResponseRecords` {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> Same format as TunnelBuildMessage, except for the addition of an "num" field in front and $num number of Build Request Records instead of 8 num :: @@ -1111,7 +1114,7 @@ num :: record size: 528 bytes total size: 1 + $num*528 -{% endhighlight %} +</pre> <h4>Notes</h4> <ul> diff --git a/i2p2www/pages/site/docs/spec/tunnel-message.html b/i2p2www/pages/site/docs/spec/tunnel-message.html index 09fbd13d4f14b2b20825b369f4202cc057f5172b..adf45b9499122cc0310f26ee043dbe96bacddf71 100644 --- a/i2p2www/pages/site/docs/spec/tunnel-message.html +++ b/i2p2www/pages/site/docs/spec/tunnel-message.html @@ -79,7 +79,7 @@ These are the contents of a tunnel data message when decrypted. + +----+----+----+----+ | | Checksum | +----+----+----+----+----+----+----+----+ -| nonzero padding.. | +| nonzero padding... | ~ ~ | | + +----+ @@ -164,18 +164,19 @@ is either not fragmented or this is the first fragment in the message. If it is set, this is a follow on fragment.</p> <p> +This specification is for Delivery Instructions inside Tunnel Messages only. Note that "Delivery Instructions" are also used inside <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, where the format is significantly different. See the -<a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a> -for more details. +<a href="{{ site_url('docs/spec/i2np') }}#struct_DeliveryInstructions">I2NP documentation</a> +for details. Do NOT use the following specification for Garlic Clove Delivery Instructions! <h3>First Fragment Delivery Instructions</h3> <p>If the MSB of the first byte is 0, this is an initial I2NP message fragment, -or a complete I2NP message, and the instructions are:</p> +or a complete (unfragmented) I2NP message, and the instructions are:</p> {% highlight lang='dataspec' %} +----+----+----+----+----+----+----+----+ |flag| Tunnel ID (opt) | | @@ -186,9 +187,9 @@ or a complete I2NP message, and the instructions are:</p> + + | | + +--------------+ -| |dly | Msg... | +| |dly | Message +----+----+----+----+----+----+----+----+ -|..ID(opt)| ext opts... (opt) | size | + ID (opt) |extended opts (opt)| size | +----+----+----+----+----+----+----+----+ {% endhighlight %} @@ -197,9 +198,9 @@ or a complete I2NP message, and the instructions are:</p> flag: 1 byte Bit order: 76543210 - bit 7: 0 to specify an initial fragment + bit 7: 0 to specify an initial fragment or an unfragmented message bits 6-5: delivery type - 0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER, 0x03 = unused + 0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER, 0x03 = unused, invalid Note: LOCAL is used for inbound tunnels only, unimplemented for outbound tunnels bit 4: delay included? Unimplemented, always 0 If 1, a delay byte is included @@ -231,6 +232,7 @@ Delay: Message ID: 4 bytes Optional, present if this message is the first of 2 or more fragments + (i.e. if the fragmented bit is 1) An ID that uniquely identifies all fragments as belonging to a single message (the current implementation uses the <a href="{{ site_url('docs/spec/i2np') }}#struct_header">I2NP Message ID</a>) @@ -261,13 +263,14 @@ Total length: Typical length is: {% endhighlight %} <h4>Definition</h4> -{% highlight lang='dataspec' %} +<pre> frag :: 1 byte + Bit order: 76543210 binary 1nnnnnnd - the first bit is 1 to indicate this is a follow-on fragment - nnnnnn is the 6 bit fragment number from 1 to 63 - d is 1 to indicate the last fragment, 0 otherwise + bit 7: 1 to indicate this is a follow-on fragment + bits 6-1: nnnnnn is the 6 bit fragment number from 1 to 63 + bit 0: d is 1 to indicate the last fragment, 0 otherwise Message ID :: 4 bytes @@ -281,8 +284,7 @@ size :: valid values: 1 to 996 total length: 7 bytes - -{% endhighlight %} +</pre> <h3><a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/DeliveryInstructions.html">Delivery Instructions Javadoc</a></h3>