1 Commits

Author SHA1 Message Date
idk
9ca8429af7 cc acetone's article to applications/dns 2021-10-18 20:18:48 -04:00
309 changed files with 334260 additions and 278494 deletions

1
.gitignore vendored
View File

@ -5,4 +5,3 @@
env/
i2p2www/translations/*/LC_MESSAGES/*.mo
*~
.vscode

View File

@ -22,9 +22,8 @@ except ImportError:
###########
# Constants
CURRENT_I2P_VERSION = '1.8.0'
CURRENT_I2P_FIREFOX_PROFILE_VERSION = '1.8.0'
CURRENT_I2P_OSX_VERSION = '1.8.0'
CURRENT_I2P_VERSION = '1.5.0'
CURRENT_I2P_FIREFOX_PROFILE_VERSION = '1.05.0'
CANONICAL_DOMAIN = 'geti2p.net'

View File

@ -139,12 +139,13 @@ tunnels.conf
[SSH-SERVER]
type = server
host = 127.0.0.1
port = 22
inbound.length = 1
outbound.length = 1
inbound.quantity = 5
outbound.quantity = 5
inbound.backupQuantity = 2
outbound.backupQuantity = 2
i2cp.reduceOnIdle = true
keys = ssh-in.dat
@ -293,8 +294,10 @@ adjust it for your performance/anonymity needs.
outbound.length = 1
inbound.quantity = 5
outbound.quantity = 5
inbound.backupQuantity = 2
outbound.backupQuantity = 2
i2cp.dontPublishLeaseSet = true
destination = thisshouldbethebase32ofthesshservertunnelabovebefore.b32.i2p
destination = bubfjkl2l46pevgnh7yicm2e7rkld4jrgpmruw2ueqn5fa4ag6eq.b32.I2P
keys = ssh-in.dat
{% trans -%}Restart the I2P router on the client{%- endtrans %}

View File

@ -1,5 +1,5 @@
===========================================================
{% trans -%}20 Years of Privacy: A Brief History of I2P{%- endtrans %}
{% trans -%}20 Years of Privacy: A brief History of I2P{%- endtrans %}
===========================================================
.. meta::

View File

@ -0,0 +1,105 @@
=============================================================
{% trans -%}Bitcoin Core adds support for I2P!{%- endtrans %}
=============================================================
.. meta::
:author: idk
:date: 2021-09-18
:category: general
:excerpt: {% trans %}A new use case and a signal of growing acceptance{% endtrans %}
{% trans -%}
An event months in the making, Bitcoin Core has added official support for I2P!
Bitcoin-over-I2P nodes can interact fully with the rest of the Bitcoin nodes,
using the help of nodes that operate within both I2P and the clearnet, making
them first-class participants in the Bitcoin network. It's exciting to see
large communities like Bitcoin taking notice of the advantages I2P can bring
to them providing privacy and reachability to people all over the world.
{%- endtrans %}
{% trans -%}
How it Works
{%- endtrans %}
------------
{% trans -%}
I2P support is automatic, via the SAM API. This is also exciting news, because
it highlights some of the things I2P is singularly good at, like empowering
application developers to build I2P connections programmatically and
conveniently. Bitcoin-over-I2P users can use I2P with no manual configuration by
enabling the SAM API and running Bitcoin with I2P enabled.
{%- endtrans %}
{% trans -%}
Configuring your I2P Router
{%- endtrans %}
---------------------------
{% trans -%}
In order to set up an I2P Router to provide anonymous connectivity to bitcoin,
the SAM API needs to be enabled. In Java I2P, you should go to `http://127.0.0.1:7657/configclients
<http://127.0.0.1:7657/configclients>`_. and start the SAM Application Bridge
with the "Start" button. You may also want to enable the SAM Application Bridge
by default by checking the "Run at Startup" box and clicking "Save Client
Configuration."
{%- endtrans %}
{% trans -%}
On i2pd, the SAM API is normally enabled by default, but if it isn't, you should
set::
sam.enabled=true
in your i2pd.conf file.
{%- endtrans %}
{% trans -%}
Configuring your Bitcoin Node for Anonymity and Connectivity
{%- endtrans %}
------------------------------------------------------------
{% trans -%}
Getting Bitcoin itself launched in an anonyous mode still requires editing some
configuration files in the Bitcoin Data Directory, which is %APPDATA%\Bitcoin on
Windows, ~/.bitcoin on Linux, and ~/Library/Application Support/Bitcoin/ on Mac
OSX. It also requires at least version 22.0.0 for I2P support to be present.
After following the following instructions, you should have a private Bitcoin
node which uses I2P for I2P connections, and Tor for .onion and clearnet
connections, so that all your connections are anonymized. For convenience,
Windows users should open their Bitcoin Data Directory by opening the start menu
and searching for "Run." Inside the run prompt, type "%APPDATA%\Bitcoin" and
press enter.
{%- endtrans %}
{% trans -%}
In that directory create a file called "i2p.conf." On Windows, you should make
sure that you've add quotes around the file when you save it, in order to
prevent Windows from adding a default file extension to the file. The file
should contain the following I2P-Related Bitcoin configuration options::
i2psam=127.0.0.1:7656
i2pacceptincoming=true
onlynet=i2p
Next, you should create another file called "tor.conf." The file should contain
the following Tor related configuration options::
proxy=127.0.0.1:9050
onion=127.0.0.1:9050
onlynet=tor
Finally, you'll need to "Include" these configuration options in your Bitcoin
configuration file, called "bitcoin.conf" in the Data Directory. Add these two
lines to your bitcoin.conf file::
includeconf=i2p.conf
includeconf=tor.conf
Now your Bitcoin node is configured to only use anonymous connections. In order
to enable direct connections to remote nodes, remove the lines beginning in::
onlynet=
You can do this if you do not require your Bitcoin node to be anonymous, and
it helps anonymous users connect to the rest of the Bitcoin network.
{%- endtrans %}

View File

@ -1,61 +0,0 @@
=============================================================
{% trans -%}I2P Jpackages get their First Update{%- endtrans %}
=============================================================
.. meta::
:author: idk
:date: 2021-11-02
:category: general
:excerpt: {% trans %}New, easier-to-install packages reach a new milestone{% endtrans %}
{% trans -%}
A few months ago we released new packages which we hoped would help with onboarding new
people to the I2P network by making the installation and configuration of I2P easier for
more people. We removed dozens of steps from the installation process by switching from
an external JVM to a Jpackage, built standard packages for target operating systems, and
signed them in a way the operating system would recognize to keep the user secure. Since
then, the jpackage routers have reached a new milestone, they are about to recieve their
first incremental updates. These updates will replace the JDK 16 jpackage with an updated
JDK 17 jpackage and provide fixes for some small bugs which we caught after the release.
{%- endtrans %}
{% trans -%}
Updates common to Mac OS and Windows
{%- endtrans %}
------------------------------------
{% trans -%}
All jpackaged I2P installers recieve the following updates:
* Update the jpackaged I2P router to 1.5.1 which is built with JDK 17
Please update as soon as possible.
{%- endtrans %}
{% trans -%}
I2P Windows Jpackage Updates
{%- endtrans %}
----------------------------
{% trans -%}
Windows only packages recieve the following updates:
* Updates I2P in Private Browsing, NoScript browser extensions
* Begins to phase out HTTPS everywhere on new Firefox releases
* Updates launcher script to `fix post NSIS launch issue on some architectures <https://i2pgit.org/i2p-hackers/i2p.firefox/-/issues/9>`_
For a full list of changes see the `changelog.txt in i2p.firefox <https://i2pgit.org/i2p-hackers/i2p.firefox/>`_
{%- endtrans %}
{% trans -%}
I2P Mac OS Jpackage Updates
{%- endtrans %}
---------------------------
{% trans -%}
Mac OS only packages recieve the following updates:
* No Mac-Specific changes. Mac OS is updated to build with JDK 17.
For a summary of development see the `checkins in i2p-jpackage-mac <https://i2pgit.org/i2p-hackers/i2p-jpackage-mac>`_
{%- endtrans %}

View File

@ -1,83 +0,0 @@
===========================================
{% trans -%}1.6.1 Release{%- endtrans %}
===========================================
.. meta::
:author: zzz
:date: 2021-11-29
:category: release
:excerpt: {% trans %}1.6.1 enables new tunnel build messages{% endtrans %}
{% trans -%}
Update details
{%- endtrans %}
============================================
{% trans -%}
Note: 1.6.1 is the current release. 1.6.0 was tagged but not released.
{%- endtrans %}
{% trans -%}
This release completes the rollout of two major protocol updates developed in 2021.
The transition to X25519 encryption for routers is accelerated, and we expect almost all routers to be rekeyed by the end of the year.
Short tunnel build messages are enabled for a significant bandwidth reduction.
{%- endtrans %}
{% trans -%}
We added a theme selection panel to the new install wizard.
We've improved SSU performance and fixed an issue with SSU peer test messages.
The tunnel build Bloom filter was adjusted to reduce memory usage.
We have enhanced support for non-Java plugins.
{%- endtrans %}
{% trans -%}
In other news, we are making excellent progress on the design of our new UDP transport SSU2 and expect to start implementation early next year.
{%- endtrans %}
{% 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 %}Changes{% endtrans %}**
- {% trans %}Console: Add theme selection to new-install wizard{% endtrans %}
- Jetty 9.3.30.v20211001
- {% trans %}Router: Increase probability of rekey to X25519{% endtrans %}
- {% trans %}SSU: Performance improvements{% endtrans %}
- {% trans %}SSU: Improve security of peer test{% endtrans %}
- Tomcat 9.0.54
- {% trans %}Tunnels: Enable sending new short build messages{% endtrans %}
**{% trans %}Bug Fixes{% endtrans %}**
- {% trans %}i2ptunnel: Fix encryption type selection logic{% endtrans %}
**{% trans %}Other{% endtrans %}**
- {% trans %}Improve support for non-Java plugins{% endtrans %}
- {% trans %}Router: Reduce tunnel build Bloom filter memory usage{% endtrans %}
- {% trans %}Updates: More changes to support bundled updaters{% endtrans %}
- {% trans %}Translation updates{% endtrans %}
`{% trans %}Full list of fixed bugs{% endtrans %}`__
__ http://{{ i2pconv('git.idk.i2p') }}/i2p-hackers/i2p.i2p/-/issues?scope=all&state=closed&milestone_title=1.6.0
**{% trans %}SHA256 Checksums:{% endtrans %}**
::
c5d5757d0cc1f4ce0cf2a663c35ca173d0cfe4ef0f38ac50b1be116787b03c87 i2pinstall_1.6.1_windows.exe
2ae90f28d51b84796079430bde53589e1c2117125d5fb7bb5c036c4e1ad1eb80 i2pinstall_1.6.1.jar
719606c4cb510de4fe74f24bbfa53911a70531821fc1ee79a29e3d96eaa16733 i2psource_1.6.1.tar.bz2
90ac2eb6a0207a7614568129e4f8927b9e3765a533033600b9a1f5a53779134d i2pupdate_1.6.1.zip
5fe7982cc1499872864a022507d0850627448d62ef65e0a7b5c172144a04368d i2pupdate.su3

View File

@ -1,35 +0,0 @@
==============================================
{% trans -%}I2P is not affected by the log4j vulnerability{%- endtrans %}
==============================================
.. meta::
:author: idk, zzz
:date: 2021-12-11
:category: security
:excerpt: {% trans %}I2P doesn't use log4j and is therefore unaffected by CVE-2021-44228{% endtrans %}
{% trans -%}
I2P is not affected by the log4j 0-Day vulnerability which was published
yesterday, CVE-2021-44228. I2P doesn't use log4j for logging, however we also
needed to review our dependencies for log4j usage, especially jetty. This
review has not revealed any vulnerabilities.
{%- endtrans %}
{% trans -%}
It was also important to check all of our plugins. Plugins may bring in their
own logging systems, including log4j. We found that most plugins also do not use
log4j, and those that do did not use a vulnerable version of log4j.
{%- endtrans %}
{% trans -%}
We haven't found any dependency, plugin or app that's vulnerable.
{%- endtrans %}
{% trans -%}
We bundle a log4j.properties file with jetty for plugins that introduce log4j. This
file only has an effect on plugins which use log4j logging internally. We have
checked in the recommended mitigation to the log4j.properties file. Plugins which
enable log4j will run with the vulnerable feature disabled. As we cannot find any
usage of log4j 2.x anywhere, we have no plans to do an emergency release at this
time.
{%- endtrans %}

View File

@ -1,173 +0,0 @@
===============================================
{% trans -%}Year in Review: 2021{%- endtrans %}
===============================================
.. meta::
:author: Sadie
:date: 2021-12-29
:category: general
:excerpt: {% trans %}I2P Turns 20, Faster Crypto and A Growing Network{% endtrans %}
{% trans -%}
Update details
{%- endtrans %}
============================================
{% trans -%}Development Highlights{%- endtrans %}
#################################################
{% trans -%}
The 0.9.49 release began the migration to the new, faster ECIES-X25519
encryption for routers. It took many years of work on the specifications and
protocols for new encryption, and this release, new installs and a very small
percentage of existing installs (randomly selected at restart) began using the
new encryption. This is the first time that the default encryption type has
ever been changed, so the full migration would take place over several
releases in order to minimize any issues.
{%- endtrans %}
{% trans -%}Full release notes{%- endtrans %}: https://geti2p.net/en/blog/post/2021/02/17/0.9.49-Release
{% trans -%}
0.9.50 enabled DNS over HTTPS for reseeding to protect users from passive DNS
snooping. Additionally, work was done to protect the network from possible
malicious and buggy routers, and numerous fixes and improvements for IPv6
addresses, including new UPnP support were completed.
{%- endtrans %}
{% trans -%}Full release notes{%- endtrans %}: https://geti2p.net/en/blog/post/2021/05/17/0.9.50-Release
{% trans -%}
In recognition of almost 20 years of work to provide anonymity and security,
the team decided to go straight from 0.9.50 to 1.5.0. The 1.5.0 release
finished support for new build messages (proposal 157), and finished
implementation of smaller tunnel build messages to reduce bandwidth. The
transition of the networks routers to X25519 encryption continued.
{%- endtrans %}
{% trans -%}Full release notes{%- endtrans %}: https://geti2p.net/en/blog/post/2021/08/23/1.5.0-Release
{% trans -%}
The rollout of two major protocol updates reached completed in 1.6.1. Almost
all routers will be rekeyed by the end of the year. Also, short tunnel build
messages were enabled for a significant bandwidth reduction. Progress on the
design of the new UDP transport SSU2 began, and is expected to start
implementation early next year.
{%- endtrans %}
{% trans -%}Full release notes{%- endtrans %}: https://geti2p.net/en/blog/post/2021/11/29/1.6.0-Release
{% trans -%}Easier Installs: JPackage{%- endtrans %}
****************************************************
{% trans -%}
With upwards of 30 steps required to install both the I2P software and Java,
the process for new user onboarding has not been historically easy. Unfamiliar
and unintuitive, it was a process that has created issues for usability for
many years.
{%- endtrans %}
{% trans -%}
However, in recent Java versions, a new option emerged that had the potential
to solve this issue for the Java software. The tool is called “Jpackage” and
would allow for the creation of a Jpackage powered I2P Router.
{%- endtrans %}
{% trans -%}
We removed dozens of steps from the installation process by switching from an
external JVM to a Jpackage, built standard packages for target operating systems,
and signed them in a way the operating system would recognize to keep the user
secure. Since then, the jpackage routers have reached a new milestone, they have
recieved their first incremental updates. These updates will replace the JDK 16
jpackage with an updated JDK 17 jpackage and provide fixes for some small bugs
which we caught after the release.
{%- endtrans %}
{% trans -%}Improving I2P Adoption and Onboarding using Jpackage, I2P-Zero{%- endtrans %}: https://geti2p.net/en/blog/post/2021/09/15/i2p-jpackages
{% trans -%}JPackages Get their First Update{%- endtrans %}: https://geti2p.net/en/blog/post/2021/11/2/i2p-jpackage-1.5.1
{% trans -%}Bitcoin Core added Support for I2P{%- endtrans %}
*************************************************************
{% trans -%}
Bitcoin-over-I2P nodes can now fully interact with the rest of the Bitcoin nodes,
using the help of nodes that operate within both I2P and the clearnet.
{%- endtrans %}
{% trans -%}Read the full blog post{%- endtrans %}: https://geti2p.net/en/blog/post/2021/09/18/i2p-bitcoin
{% trans -%}I2P Usability Lab{%- endtrans %}
********************************************
{% trans -%}
This year, the I2P Usability Lab was created. The focus will be on user research,
product development and tooling to support adoption. Additionally, better focus on
localization efforts, protocol bridge building within the privacy community and
sustainability considerations will be part of the ongoing effort to bring I2P to
more people.
{%- endtrans %}
{% trans -%}New User Onboarding Research{%- endtrans %}
*******************************************************
{% trans -%}
In 2020 the I2P UX team worked with Simply Secure on a usability sprint to assess
user interaction with the I2P website. Many changes were applied, however, feedback
has indicated that there are still issues with some aspects of new user onboarding.
{%- endtrans %}
{% trans -%}
We have expanded our team thanks to the BASICS project (Building Analytical and
Support Infrastructure for Critical Security tools), and not only revisiting the
new user onboarding, but we are also expanding the scope to include onboarding for
developers and researchers. The goal will be to present an improved information
architecture.
{%- endtrans %}
{% trans -%}
This year we focused on the massive overhaul of the new user onboarding for the
download and browser configuration workflow and language. New wireframes for the
I2P website have been created, and new information architecture put in place. This
has been done in order to better support new users, maintainers, application
developers, I2P core contributors, and researchers. This work will continue into
2022 as documentation is refined and the site changes are implemented.
{%- endtrans %}
{% trans -%}Read the full UX review here:{%- endtrans %} https://i2p.medium.com/i2p-ux-research-d2567aefd275
{% trans -%}Forum on internet Freedom in Africa 2021{%- endtrans %}
*******************************************************************
{% trans -%}
Working with our partners in Africa, the Invisible Internet Project was invited
to participate in both a panel discussion, as well as work with a group of
journalists to explore what privacy and security mean to them. The goal for the
outcome from this opportunity was to understand what establishes trust, the
concept of privacy and what it means, and egin to evaluate I2P and its tooling
through this lens.
{%- endtrans %}
{% trans -%}
We saw that adoption results from efficiency, ease of use, and empowerment. All
of these things result in a person not just wanting to use a privacy option, but to
feel like they are actually taking control of their privacy. This is one of the
most important aspects we have encountered during the past year when talking with
new users: the emotional aspect of interacting with technology. Telling a person
that something can technically provide a solution is one part of adoption. Providing
a person with something that they can use with confidence is the other.
Meeting people where they are and asking about who they are ensures that we are
creating for real needs and for the most people possible.
{%- endtrans %}
{% trans -%}Read the entire blog post here{%- endtrans %}: https://i2p.medium.com/i2p-usability-lab-b2098bf27d4d
{% trans -%}
Thank you to everyone who contributes to building the Invisible Internet!
{%- endtrans %}
{% trans -%}
This post originally appeared on Sadie's blog. https://i2p.medium.com/4b926a488919
Copied with permission.
{%- endtrans %}

View File

@ -1,111 +0,0 @@
===========================================
{% trans -%}1.7.0 Release{%- endtrans %}
===========================================
.. meta::
:author: zzz
:date: 2022-02-21
:category: release
:excerpt: {% trans %}1.7.0 with reliability and performance improvements{% endtrans %}
{% trans -%}
Update details
{%- endtrans %}
============================================
{% trans -%}
The 1.7.0 release contains several performance and reliability improvements.
{%- endtrans %}
{% trans -%}
There are now popup messages in the system tray, for those platforms that support it.
i2psnark has a new torrent editor.
The NTCP2 transport now uses much less CPU.
{%- endtrans %}
{% trans -%}
The long-deprecated BOB interface is removed for new installs.
It will continue to work in existing installs, except for Debian packages.
Any remaining users of BOB applications should ask the developers to convert to the SAMv3 protocol.
{%- endtrans %}
{% trans -%}
We know that since our 1.6.1 release, network reliability has steadily deteriorated.
We were aware of the problem soon after the release, but it took us almost two months to find the cause.
We eventually identified it as a bug in i2pd 2.40.0,
and the fix will be in their 2.41.0 release coming out about the same time as this release.
Along the way, we've made several changes on the Java I2P side to improve the
robustness of network database lookups and stores, and avoid poorly-performing peers in tunnel peer selection.
This should help the network be more robust even in the presence of buggy or malicious routers.
Additionally, we're starting a joint program to test pre-release i2pd and Java I2P routers
together in an isolated test network, so we can find more problems before the releases, not after.
{%- endtrans %}
{% trans -%}
In other news, we continue to make great progress on the design of our new UDP transport "SSU2" (proposal 159)
and have started implementation.
SSU2 will bring substantial performance and security improvements.
It will also allow us to finally replace our last usage of the very slow ElGamal encryption,
completing a full cryptography upgrade that started about 9 years ago.
We expect to start joint testing with i2pd soon, and roll it out to the network later this year.
{%- endtrans %}
{% 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 %}Changes{% endtrans %}**
- {% trans %}BOB: Remove{% endtrans %}
- {% trans %}i2psnark: New torrent editor{% endtrans %}
- {% trans %}i2psnark standalone: Fixes and improvements{% endtrans %}
- {% trans %}i2ptunnel: Support IRCv3 message tags{% endtrans %}
- {% trans %}NetDB: Lookup/store reliability improvements{% endtrans %}
- {% trans %}System tray: Add popup messages{% endtrans %}
- {% trans %}Transport: NTCP2 performance improvements{% endtrans %}
- {% trans %}Transport: NTCP2 clock skew handling improvements{% endtrans %}
- {% trans %}Transport: Use priority in SSU sender queue{% endtrans %}
- {% trans %}Tunnels: Remove outbound tunnel when can't connect to first hop{% endtrans %}
- {% trans %}Tunnels: Fallback to exploratory for building after repeated build failure{% endtrans %}
- {% trans %}Tunnels: Enable tunnel testing by default{% endtrans %}
- {% trans %}Tunnels: Use tunnel builds as a tunnel test{% endtrans %}
**{% trans %}Bug Fixes{% endtrans %}**
- {% trans %}Plugins: Fixes for webapps named different from the plugin{% endtrans %}
- {% trans %}Reseed: Fixes for IPv6-only{% endtrans %}
- {% trans %}Router: Fix rare deadlock at startup{% endtrans %}
- {% trans %}Tunnels: Restore IP restriction tests{% endtrans %}
**{% trans %}Other{% endtrans %}**
- {% trans %}API version{% endtrans %}: 0.9.53
- {% trans %}i2pcontrol: Improved state mapping{% endtrans %}
- {% trans %}i2ptunnel: Refactor UDP support{% endtrans %}
- {% trans %}Plugins: Fixes for webapps{% endtrans %}
- {% trans %}Router: Workarounds for i2pd 2.40.0 SSU bug{% endtrans %}
- {% trans %}Translation updates{% endtrans %}
`{% trans %}Full list of fixed bugs{% endtrans %}`__
__ http://{{ i2pconv('git.idk.i2p') }}/i2p-hackers/i2p.i2p/-/issues?scope=all&state=closed&milestone_title=1.7.0
**{% trans %}SHA256 Checksums:{% endtrans %}**
::
a2206e2578e88aa08294b68df2c9dad4f9301a94dc3d00bfccfe4517555e226c i2pinstall_1.7.0_windows.exe
23b80dd09bf4bb53edfde8e802bf0e428d89062f1232b3cdfeca04fccdbeb685 i2pinstall_1.7.0.jar
aa53591e89eacc3491ab472dc4df998780fb6747eea3b97ecb7a9f81ff2c9a5e i2psource_1.7.0.tar.bz2
fcfd2e3685de8c0b79b2018638821c64411c66c61ab84d2bf74c149358c96dba i2pupdate_1.7.0.zip
d8110d77efb9712d69b622df03b7c9cd7f492b516b71914efb6019d31541e771 i2pupdate.su3

View File

@ -1,31 +0,0 @@
===========================================
{% trans -%}Jpackage Update for Java CVE-2022-21449{%- endtrans %}
===========================================
.. meta::
:author: idk
:date: 2022-04-21
:category: release
:excerpt: {% trans %}Jpackage bundles released with fixes for Java CVE-2022-21449{% endtrans %}
{% trans -%}
Update details
{%- endtrans %}
============================================
{% trans -%}
New I2P Easy-Install bundles have been generated using the latest release of the
Java Virtual Machine which contains a fix for CVE-2022-21449
"Psychic Signatures." It is recommended that users of the easy-install bundles
update as soon as possible. Current OSX users will recieve updates automatically,
Windows users should download the installer from our downloads page and run the
installer normally.
{%- endtrans %}
{% trans -%}
The I2P router on Linux uses the Java Virtual Machine configured by the host
system. Users on those platforms should downgrade to a stable Java version below
Java 14 in order to mitigate the vulnerability until updates are released by
the package maintainers. Other users using an external JVM should update the JVM
to a fixed version as soon as possible.
{%- endtrans %}

View File

@ -1,95 +0,0 @@
===========================================
{% trans -%}1.8.0 Release{%- endtrans %}
===========================================
.. meta::
:author: zzz
:date: 2022-05-23
:category: release
:excerpt: {% trans %}1.8.0 with bug fixes{% endtrans %}
{% trans -%}
Update details
{%- endtrans %}
============================================
{% trans -%}
This release includes bug fixes in i2psnark,
the router, I2CP, and UPnP.
Router fixes address bugs in soft restart, IPv6, SSU peer testing,
network database stores, and tunnel building.
Router family handling and Sybil classification have also been
significantly improved.
{%- endtrans %}
{% trans -%}
Together with i2pd, we are developing our new UDP transport, SSU2.
SSU2 will bring substantial performance and security improvements.
It will also allow us to finally replace our last usage of the very slow ElGamal encryption,
completing the full cryptography upgrade we started about 9 years ago.
This release contains a preliminary implementation which is disabled by default.
If you wish to participate in testing, please look for current information
on zzz.i2p.
{%- endtrans %}
{% 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 %}Changes{% endtrans %}**
- {% trans %}SSU2: Preliminary implementation{% endtrans %}
- Tomcat 9.0.62
**{% trans %}Bug Fixes{% endtrans %}**
- {% trans %}Crypto: Fix handling of EdDSA certs with official OID{% endtrans %}
- {% trans %}I2CP: Fix external connections when session ID is 0{% endtrans %}
- {% trans %}I2PSnark: Fix size calculation causing tracker errors{% endtrans %}
- {% trans %}I2PSnark standalone: More fixes and improvements{% endtrans %}
- {% trans %}Router: Family fixes and improvements{% endtrans %}
- {% trans %}Router: Fix database store logic{% endtrans %}
- {% trans %}Router: Fix invalid store and rekeying at startup{% endtrans %}
- {% trans %}Router: Don't use he.net addresses for GeoIP{% endtrans %}
- {% trans %}Router: Soft restart fixes{% endtrans %}
- {% trans %}SSU: Peer test fixes{% endtrans %}
- {% trans %}SSU: Publish empty IPv6 address when missing introducers{% endtrans %}
- {% trans %}SSU: Reduce ack delay to improve performance{% endtrans %}
- {% trans %}Transport: Fix UPnP deadlock{% endtrans %}
- {% trans %}Tunnels: Don't build client tunnels shorter than minimum length{% endtrans %}
- {% trans %}UPnP: IPv6 fixes{% endtrans %}
**{% trans %}Other{% endtrans %}**
- {% trans %}API version{% endtrans %}: 0.9.54
- {% trans %}Console: Setup wizard redesign{% endtrans %}
- {% trans %}i2psnark: Load system mime types if available{% endtrans %}
- {% trans %}I2PSnark standalone: Add system tray{% endtrans %}
- {% trans %}Router: Reduce build reply timeout so we will retry faster{% endtrans %}
- {% trans %}Router: Avoid Sybil penalty for trusted large families{% endtrans %}
- {% trans %}Source: Remove BOB{% endtrans %}
- {% trans %}Translation updates{% endtrans %}
`{% trans %}Full list of fixed bugs{% endtrans %}`__
__ http://{{ i2pconv('git.idk.i2p') }}/i2p-hackers/i2p.i2p/-/issues?scope=all&state=closed&milestone_title=1.8.0
**{% trans %}SHA256 Checksums:{% endtrans %}**
::
738b7608d7f2c6433dcde8a1cbd7ea025d281e90b45c8695385004625a4c88d1 i2pinstall_1.8.0_windows.exe
ee49cad06fd73e75ed25eaab342f8167e447b901205ee8593a31b5a599d892af i2pinstall_1.8.0.jar
525f2ad3267f130b81296b3dd24102fdcf2adf098d54272da4e1be4abd87df04 i2psource_1.8.0.tar.bz2
446ac94969163bce514aca6bb408cb72d1b8d9bd65fe22e773ec3bcad142db21 i2pupdate_1.8.0.zip
3379fe757eecbf20688ee37685fe52f15ac04fd59e891c6a059a33d519c4ff19 i2pupdate.su3

View File

@ -41,7 +41,7 @@ Writing draft posts
To write a draft post, create the file with the suffix '.draft.rst'. Post files
with this suffix will be visible at their post URL, but will not be shown in
the blog index. To publish the draft post, change the filename to remove the
'.draft' in the suffix (e.g. git mv foo.draft.rst foo.rst).
'.draft' in the suffix (e.g. mtn mv foo.draft.rst foo.rst).
Creating shortlinks
-------------------

View File

@ -7,26 +7,25 @@ from random import randint
from i2p2www import CURRENT_I2P_VERSION, MIRRORS_FILE
DEFAULT_MIRROR = {
"net": "clearnet",
"protocol": "https",
"domain": "files.i2p-projekt.de",
"path": "/%(version)s/%(file)s",
"org": "i2p-projekt",
"org_url": "https://files.i2p-projekt.de",
"country": "de",
}
#DEFAULT_MIRROR = {
# "net": "clearnet",
# "protocol": "https",
# "domain": "download.i2p2.de",
# "path": "/releases/%(version)s/%(file)s",
# "org": "sigterm.no",
# "org_url": "https://download.i2p2.de",
# "country": "no",
# "net": "clearnet",
# "protocol": "https",
# "domain": "files.i2p-projekt.de",
# "path": "/%(version)s/%(file)s",
# "org": "i2p-projekt",
# "country": "de",
#}
DEFAULT_MIRROR = {
"net": "clearnet",
"protocol": "https",
"domain": "download.i2p2.de",
"path": "/releases/%(version)s/%(file)s",
"org": "sigterm.no",
"org_url": "https://download.i2p2.de",
"country": "no",
}
#{
# 'net': 'clearnet',
# 'protocol': 'https',

View File

@ -54,7 +54,6 @@ def get_meetings_ids(num=0):
# iterate over all files
for f in v[2]:
# ignore all non-.rst files
print("Meeting file found", f)
if not f.endswith('.rst'):
continue
try:

View File

@ -1,5 +1,5 @@
I2P dev meeting, October 5, 2021 @ 20:00 UTC
============================================
I2P dev meeting, Sept 7, 2021 @ 20:00 UTC
=========================================
Quick recap
-----------

View File

@ -1,74 +0,0 @@
(04:00:16 PM) eyedeekay: Hi everybody, welcome to the November 2 Community Meeting
(04:00:16 PM) eyedeekay: 1) Hi
(04:00:16 PM) eyedeekay: 2) 1.6.0 Development Status / Upcoming Release
(04:00:16 PM) eyedeekay: 3) mac/win jpackage beta status, user test reports, in-net 17.0.2 update status, plans for 1.6.0 update ?
(04:00:35 PM) zzz: hi
(04:00:38 PM) zlatinb: hi
(04:00:55 PM) eyedeekay: Hi zzz, zlatinb
(04:01:25 PM) eyedeekay: 2) 1.6.0 Development Status / Upcoming Release
(04:02:25 PM) eyedeekay: Release thread is here: http://zzz.i2p/topics/3170-1-6-0-release-summary and we still haven't picked a date, I should have replied on that thread, do we want to do that here?
(04:02:43 PM) zzz: yes please
(04:03:18 PM) zzz: 3 weeks from now would be 13 weeks. +/- 1 week ok with me also
(04:03:19 PM) eyedeekay: OK then in my case I am in favor of the week of the 29th, after US Thanksgiving
(04:04:12 PM) zlatinb: I'm afk from my main workstation until early Dec, so can't build or sign jpackage installers. But I can still give an OTP for the signtool as that's on my phone.
(04:05:34 PM) zzz: ok, so tentatively the week of the 28th then? eche|off eche|on any objections?
(04:07:30 PM) eyedeekay: Week of the 28th sounds good to me for now.
(04:08:34 PM) eyedeekay: Anything else for topic 2)?
(04:08:45 PM) zzz: yeah, quick status
(04:09:02 PM) zzz: looking like a fairly modest release as measured by amount of changes
(04:09:27 PM) zzz: some SSU speedups are perhaps the headline
(04:09:48 PM) zzz: zlatinb, if you have time to squeeze in the unit test deprecation fixes that would be good
(04:09:52 PM) zzz: EOT
(04:10:02 PM) eyedeekay: Thanks zzz
(04:10:28 PM) zlatinb: yeah, no promises on the unit test :)
(04:10:42 PM) eyedeekay: 3) mac/win jpackage beta status, user test reports, in-net 17.0.2 update status, plans for 1.6.0 update?
(04:12:18 PM) zlatinb: I assume that is jdk 17.0.1, there's no 17.0.2 out yet afaik
(04:12:21 PM) zzz: yeah I added that item just to give you two a chance to give the community an update
(04:12:32 PM) eyedeekay: zlatinb and I discussed it a few days ago and evaluated the prospect of doing an OpenJDK 17 update for the jpackage installs
(04:12:43 PM) zzz: ignore any typos :)
(04:13:36 PM) Ryemantis__ is now known as Ryemantis_
(04:14:08 PM) eyedeekay: Right now we're prepared to do in-network updates of the jpackage installs but we are going to wait for the main release to do our jpackage releases which will update to either 17.0.1 or 17.0.2
(04:14:55 PM) zlatinb: 17.0.2 isn't due until mid-january, so we should definitely have a 1.6.0 jpackage release
(04:15:32 PM) zlatinb: my view is that I would really like to do a dry-run of the in-network update process to shake out any insects, but that needs to happen in the next 7 days cause I'm afk afterwards
(04:16:03 PM) zlatinb: to summarize, the following needs to happen:
(04:16:12 PM) zzz: eyedeekay, that wasn't very clear... you're 'prepared' but you're not going to do it, you're going to wait?
(04:16:28 PM) zlatinb: 1. update of the i2p.newsxml repo to produce entries.html per platform
(04:16:50 PM) zlatinb: 2. Make sure idk and ech's news http servers can serve the new news.su3 files
(04:17:17 PM) zlatinb: 3. branch i2p.i2p from the i2p-1.5.0 tag, bump CoreVersion/RouterVersion, tag i2p-1.5.1
(04:17:27 PM) zlatinb: 4. build jpackage installers, sign/notarize as necessary
(04:17:47 PM) zlatinb: 5. build new entries.html with new release.json
(04:17:50 PM) zlatinb: 6. deploy
(04:17:51 PM) zlatinb: eot
(04:18:03 PM) zlatinb: so I don't know if that can happen in 7 days, but it would be very nice if it could
(04:19:10 PM) eyedeekay: By prepared I mean the i2p.newsxml changes produce valid feeds that can be used to distribute in network updates and they work on my lighttpd news setup
(04:20:00 PM) eyedeekay: I need to add platform-specific entries.html support, right now everybody gets all the news but a different torrent
(04:20:38 PM) zzz: even bigger picture, since it's beta, is it going well, are you getting downloads and/or complaints?
(04:21:16 PM) zlatinb: downloads - ~25/day for mac, ~100/day for windows according to matomo
(04:21:44 PM) eyedeekay: No major complaints, there was an issue with detecting the path to the installed package depending on architecture and whether windows was installed which affects some fraction of the Windows users but *only* when the launcher is run from the installer
(04:22:03 PM) eyedeekay: So after the installer is run the bug goes away, and it's fixed in the new version
(04:22:11 PM) eyedeekay: Well, will be
(04:22:15 PM) zzz: great
(04:22:21 PM) eyedeekay: That's the thing zab reported last month
(04:22:40 PM) eyedeekay: *installed or updated from an earlier edition
(04:24:34 PM) Ryemantis_: Hi everyone. Just wanted to also quickly check in and apologize for being quite the last few weeks. October was a very busy month for me and also had a hardware failure mixed in. After this week I should have some time to get my workstation back together and continue work on Android I2P. Currently working on LiveData, Remote-starting I2P, and UPnP fix. Will also update on the forums once I am back at
(04:24:35 PM) Ryemantis_: it. Please let me know too if anything else needs more immediate attention.
(04:25:04 PM) eyedeekay: Excellent to hear from you Ryemantis_ and welcome to the meeting
(04:25:28 PM) eyedeekay: Thanks for the update on what you're working on, hardware failures and life happen to all of us
(04:27:01 PM) eyedeekay: So back to 3) for a moment, for right now it's incumbent on me to add support for entries.html in data/platform/branch/entries.html instead of only in data/entries.html so we can have platform-specific newsfeeds
(04:27:13 PM) Ryemantis_: Definitely appreciate the understanding and thank you all for you hard work
(04:28:23 PM) eyedeekay: As opposed to one feed where everybody gets everybody's news
(04:29:00 PM) eyedeekay: After that, we can start at step 3. in zlatinb's description
(04:29:37 PM) eyedeekay: Anything for 3)?
(04:30:20 PM) zlatinb: no I think that captures everything
(04:30:46 PM) eyedeekay: Cool anything else for the meeting zzz zlatinb Ryemantis_ ?
(04:31:04 PM) zzz: nope
(04:31:30 PM) Ryemantis_: nope
(04:31:49 PM) zlatinb: yeah quick one - next meeting is it on the 1st?
(04:31:54 PM) ***zlatinb checks calendar
(04:32:12 PM) eyedeekay: I think the 7th zlatinb
(04:32:20 PM) zlatinb: ok nvm then
(04:32:33 PM) eyedeekay: The first is a Wednesday by my calendar
(04:33:28 PM) eyedeekay: Oh right that reminds me, DST. I've always scheduled the meetings on UTC, but does anyone want to adjust the time of the meeting for DST?
(04:33:36 PM) zzz has changed the topic to: 1.5.0-4 | Tag freeze Wed. Nov. 17
(04:35:30 PM) eyedeekay: I'll take that as a no then. Unless someone brings it up in a forum thread, meetings will continue to be scheduled at the same time UTC
(04:36:05 PM) eyedeekay: Thanks everybody for coming to the meeting, I'll post the logs in a few minutes.

View File

@ -1,12 +0,0 @@
I2P dev meeting, November 2, 2021 @ 20:00 UTC
=============================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb,
Ryemantis_

View File

@ -1,75 +0,0 @@
(03:00:21 PM) eyedeekay: Hi everybody, welcome to the December 7 meeting
(03:00:28 PM) eyedeekay: 1) Hi
(03:00:28 PM) eyedeekay: 2) 1.6.1 Release Status
(03:00:28 PM) eyedeekay: 3) jpackage Update Status
(03:00:28 PM) eyedeekay: 4) Monero Integrations
(03:00:28 PM) eyedeekay: 5) New SAM Library
(03:00:37 PM) zzz: hi
(03:00:41 PM) zlatinb: hi
(03:01:05 PM) eyedeekay: Hi zzz, hi zlatinb
(03:01:12 PM) eyedeekay: Anybody else here today?
(03:01:16 PM) mode (-m ) by zzz
(03:01:31 PM) eyedeekay: 2) 1.6.1 release status
(03:02:32 PM) eyedeekay: Release 1.6.1 is available, the torrent is live, as are Debian/Ubuntu/Launchpad, Maven, GPlay, and our F-Droid
(03:03:10 PM) eyedeekay: F-Droid's repository is still out of date, one of my tasks this week is to get our app working with their auto-build system again
(03:04:01 PM) eyedeekay: Debian's repositories, as far as we know, aren't going to recieve our updates at this time, people who are using Debian packages should switch to deb.i2p2.de or deb.i2p2.no
(03:05:18 PM) eyedeekay: The DMG bundle built by zlatinb has also been updated to 1.6.1 and is available on the mirrors and as an update
(03:06:01 PM) eyedeekay: The exe bundle built by me is going to be up today, I had planned to do it yesterday but got bogged down in Windows updates so I'll do it this evening.
(03:06:40 PM) eyedeekay: According to stats.i2p about 20% of the network has updated
(03:06:47 PM) eyedeekay: Anything to add zzz, zlatinb?
(03:09:13 PM) eyedeekay: Hello?
(03:11:26 PM) eyedeekay: OK I'm back
(03:11:40 PM) eyedeekay: (03:06:40 PM) eyedeekay: According to stats.i2p about 20% of the network has updated
(03:11:40 PM) eyedeekay: (03:06:47 PM) eyedeekay: Anything to add zzz, zlatinb?
(03:11:50 PM) zzz: yes
(03:12:05 PM) zzz: no sign of a biglybt update yet, hopefully that will come soon
(03:12:10 PM) zzz: no user complaints yet
(03:12:26 PM) zzz: echelon had trouble with a 1.6.1-2 dev build but we don't know why
(03:13:03 PM) zzz: also, users of any i2p package version (current or older) may have a problem due to changing jetty9 dependencies
(03:13:24 PM) zzz: if so, sudo apt install libservlet3.1-java manually
(03:14:44 PM) zlatinb: re biglybt I heard from Parg earlier today regarding an unrelated matter so he is ok.
(03:15:52 PM) zzz: may also affect bleeding-edge ubuntu jammy, not sure
(03:15:52 PM) zzz: eot
(03:16:12 PM) zlatinb: eot
(03:16:22 PM) zzz: I mean debian/ubuntu package
(03:16:22 PM) zzz: eot2
(03:16:22 PM) zzz: this is on debian sid and maybe jammy only
(03:16:22 PM) zzz: eot3
(03:16:22 PM) zzz: will give him a few more days and then bug him
(03:16:31 PM) eyedeekay: Thanks zzz, the package/dependency thing will probably bubble up on Reddit if it's a problem
(03:16:58 PM) eyedeekay: I run sid on the day-to-day basis and haven't hit this one so far
(03:17:01 PM) zzz: ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=997213
(03:18:40 PM) eyedeekay: 3) jpackage Update Status
(03:19:36 PM) eyedeekay: Partly covered this one already, zlatinb's dmg packages are up on the mirrors and listed on the site
(03:20:29 PM) eyedeekay: I had some updates I needed to do to my Windows laptop so didn't get the exe builds done last night, got it out for after the meeting
(03:21:08 PM) eyedeekay: I've flipped my news server over to publish zlatinb's new packages
(03:21:59 PM) eyedeekay: I haven't heard from any users so far
(03:22:27 PM) zlatinb: The dmg jpackage is at this point well-streamlined. We did an end-to-end test of the in-network update with 1.5.0->1.5.1 and that worked (but from the second try)
(03:23:02 PM) zlatinb: 1 person has downloaded the torrent according to snark
(03:23:27 PM) zlatinb: not much else to report on the mac jpackage, it basically works
(03:23:28 PM) zlatinb: eot
(03:24:04 PM) eyedeekay: Thanks zlatinb
(03:24:41 PM) eyedeekay: 4) Monero Integrations
(03:25:55 PM) eyedeekay: There was some renewed interest in getting Monero-over-I2P working automatically in the GUI wallets(like Feather in particular) over the thanksgiving holiday
(03:26:38 PM) eyedeekay: We're doing some design mockups and analysis of the tradeoffs of different configurations over here:
(03:26:39 PM) eyedeekay: https://github.com/monero-project/monero-gui/issues/2274
(03:27:15 PM) eyedeekay: They're interested in adopting several things from us, including eventually our model for distributing software updates in-network
(03:27:53 PM) eyedeekay: If anybody wants to participate in that discussion we're having it there mostly, and also on the Monero Matrix channel
(03:28:06 PM) eyedeekay: Monero-Community
(03:28:20 PM) eyedeekay: EOT
(03:29:05 PM) eyedeekay: 5) New SAM library
(03:29:14 PM) zzz: cool, I assume they've already looked at what bitcoin did for the low-level address protocols
(03:29:17 PM) zzz: eot
(03:30:31 PM) eyedeekay: Yes they have
(03:31:24 PM) eyedeekay: The other cool thing that happened last week is the folks at diva.exchange have created a new SAM library for node.js/javascript in general
(03:32:02 PM) eyedeekay: It's much more thoroughly and recently documented than the old one which is now unmaintained
(03:32:07 PM) eyedeekay: Source is here: https://codeberg.org/diva.exchange/i2p-sam
(03:32:23 PM) eyedeekay: NPM package is here https://www.npmjs.com/package/@diva.exchange/i2p-sam
(03:33:00 PM) eyedeekay: Given how popular node is I'm giving it a bit of a signal boost, seems like everybody writes their webapps in node these days
(03:33:15 PM) eyedeekay: eot
(03:34:21 PM) eyedeekay: Anything else for the meeting?
(03:35:13 PM) zlatinb: not from me
(03:36:01 PM) eyedeekay: timeout 1,
(03:36:04 PM) eyedeekay: 1m
(03:37:03 PM) eyedeekay: OK then thanks zzz, zlatinb, next meeting will be Jan 4, 2022
(03:37:03 PM) eyedeekay: I will post the logs shortly

View File

@ -1,11 +0,0 @@
I2P dev meeting, December 7, 2021 @ 20:00 UTC
=============================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,104 +0,0 @@
(03:00:39 PM) eyedeekay: Hi everyone and welcome to the January 4, 2022 meeting
(03:00:39 PM) eyedeekay: 1. Hi
(03:00:39 PM) eyedeekay: 2. Meeh services/Outproxy requirements http://zzz.i2p/topics/3218-meeh-services-going-down-soon
(03:00:39 PM) eyedeekay: 3. Promoting Mac DMG JPackage to stable https://geti2p.net/en/download/mac
(03:00:39 PM) eyedeekay: 4. NetDB research (Sim/Model) http://zzz.i2p/topics/3227-netdb-simulator-proposal
(03:01:13 PM) zlatinb: hi
(03:01:23 PM) zzz: hello
(03:01:55 PM) eyedeekay: Hi zzz, zlatinb, anybody else here today?
(03:02:20 PM) eyedeekay: Outproxy operators?
(03:02:59 PM) eyedeekay: OK then on to 1, they can chime in if they want :)
(03:03:38 PM) eyedeekay: So we're losing all of meeh's non-static services, for us that's mostly trac, which we've already replaced, and false.i2p, the default outproxy
(03:04:07 PM) eyedeekay: Neither have worked well for a long time, but not having an outproxy tends to have a bad UX so we need to replace it
(03:04:59 PM) eyedeekay: We discussed some options last week, one of which was finding a new volunteer-run outproxy to make it the default.
(03:06:30 PM) eyedeekay: If that is to happen, then we'll need it to meet some basic requirements. Obviously a privacy policy is important.
(03:06:30 PM) eyedeekay: If they aren't passing everything to Tor directly, we'll also need a description of what filtering, if any, occurs
(03:07:34 PM) eyedeekay: Other options are to run one ourselves, which is of limited appeal at best, another is local SOCKS support, which requires a local SOCKS proxy to be available.
(03:08:07 PM) eyedeekay: If anyone wants to volunteer to be an outproxy, the place to reach out is at zzz's forum
(03:09:05 PM) zzz: right
(03:09:12 PM) eyedeekay: I have not been able to get statistics about false.i2p usage from meeh yet. EOT
(03:09:40 PM) zzz: first of all we want to be very careful not to publicly recommend an alternate or set a new default without approval, as that might impose a large burden, financial or otherwise
(03:10:06 PM) zzz: as a tiny baby step, we're looking to get alternates registered on stats.i2p and get approval to add them to our default hosts.txt
(03:10:16 PM) zzz: as that at least makes it easier for people to configure and use them
(03:10:55 PM) zzz: we have approval for that step for two outproxies, however only one is currently registered on stats.i2p
(03:11:05 PM) zzz: so I'm awaiting for that second registration
(03:11:05 PM) zzz: eot
(03:11:35 PM) eyedeekay: Thanks zzz, I'll remind him btw
(03:11:47 PM) dr|z3d: I've had some preliminary discussions with you, zzz, and on that basis I think it should be fairly clear that I'm not interested in offering an official service. Informal is fine, but nothing official.
(03:12:52 PM) zzz: thanks for making it clear, and also thanks for your time and expertise in thoes discussions
(03:12:59 PM) dr|z3d: I'm also of the view that a single outproxy is doomed to failure the moment it becomes official.
(03:14:13 PM) eyedeekay: Certainly can see why that would be the case. Anything else on 1?
(03:14:28 PM) zzz: perhaps. it certainly requires adequate capacity and competent administration
(03:14:29 PM) zzz: eot
(03:14:59 PM) eyedeekay: 3. Promoting Mac DMG Jpackage to stable
(03:15:15 PM) eyedeekay: s/1/2/
(03:15:42 PM) eyedeekay: So this topic was added by zlatinb, take it away
(03:16:21 PM) zlatinb: thanks. Basically, the non-DMG (jar) package is not notarized and the last 2 (or 3?) versions of Mac OS refuse to execute it unless the user changes some advanced settings
(03:16:52 PM) zlatinb: at the same time, the DMG jpackage has been very stable and in-net updates have been tested end-to-end
(03:17:10 PM) zlatinb: so I propose we make it the default mac download and get rid of the .jar option altogether
(03:17:55 PM) zlatinb: since we already have a nice /mac page dedicated to the package, I suggest we keep that, removing the BETA modifier
(03:18:14 PM) zlatinb: and on the Mac div in /download, just have a link to the /mac page, nothing else
(03:18:19 PM) zlatinb: eot
(03:19:22 PM) eyedeekay: I support it.
(03:20:42 PM) eyedeekay: Do we need to wait for release or just do it now?
(03:21:51 PM) anonymousmaybe is now known as Irc2PGuest95343
(03:22:35 PM) mode (+ao zzz zzz) by ChanServ
(03:22:37 PM) zlatinb: no need to wait for a release
(03:22:54 PM) zzz: did you see my 3 questions before I dropped?
(03:23:01 PM) eyedeekay: No I missed them
(03:23:03 PM) zlatinb: no, sorry, pls repost
(03:23:11 PM) zzz: I'll ask a few easy questions:
(03:23:15 PM) zzz: 1) The user base is sufficient that we are confident it's been well-tested?
(03:23:17 PM) zzz: 2) The release process is documented and in theory somebody else could build it if they had the right keys?
(03:23:20 PM) zzz: 3) We're confident we have the resources to continue maintaining it and doing releases?
(03:23:23 PM) zzz: eot
(03:24:08 PM) zlatinb: 1) - according to matomo it gets 20-25 downloads a day. We've had users of M1 Macs report that it works as expected. No negative reports at all
(03:24:28 PM) eyedeekay: 2) and 3) IMO the answers are definitely yes. I can build everything up to the notary part and can teach someone else to
(03:24:53 PM) zlatinb: 2) is yes but requires de-anoning because Apple Inc.
(03:24:54 PM) eyedeekay: So with zlatinb and I there are at least 2 people who know how to build it
(03:25:08 PM) zzz: 2) but it is _documented_ ?
(03:25:33 PM) zlatinb: yes, step by step incl. the notary process in the README.md
(03:25:41 PM) zzz: super
(03:26:16 PM) zzz: 1) does "working" include the update process? have we seen the torrent swarm actually fire off when the news updates?
(03:26:29 PM) zlatinb: http://git.idk.i2p/i2p-hackers/i2p-jpackage-mac
(03:26:43 PM) zzz: (because I think the windows version hasn't actually been seen to work yet)
(03:27:26 PM) zlatinb: 1) yes, the swarm picks up, it's quite small but it's there. I've seen it both at the 1.5.1 and 1.6.1 releases
(03:27:49 PM) zzz: ok great, thanks for the answers, no objections
(03:28:14 PM) eyedeekay: Cool I'll make the site changes tonight after I post the meeting logs
(03:28:26 PM) zlatinb: awesome thanks!
(03:29:05 PM) eyedeekay: Re: Windows, yes but appears it's an issue in the config file I shipped and not the updater itself
(03:29:05 PM) eyedeekay: So Windows needs 1 more manual update to work with automatic updates, which I think I might have known ahead of time but forgot
(03:30:07 PM) eyedeekay: 4. NetDB research (Sim/Model) http://zzz.i2p/topics/3227-netdb-simulator-proposal
(03:30:44 PM) eyedeekay: Also zlatinb's topic, let us know what you're thinking
(03:31:28 PM) zlatinb: So, in the last two weeks or so there has been a noticeable deterioration in the accessibility of sites like zzz.i2p, postman, event major.acetone.i2p... basically sites I know are up
(03:31:57 PM) zlatinb: I've done some debugging and had situations where the LS of zzz.i2p gets fetched fine, but then the RI of the IBGW must be failing to fetch
(03:32:03 PM) zlatinb: (I'm speculating here ofc)
(03:32:47 PM) zlatinb: in a nutshell, there are many unknowns in the functioning of the NetDB and we have to place our faith in the Kad algorithm, which is fine, but I would rather have more confidence via some research
(03:33:33 PM) zlatinb: just like the testnet helped improve the streaming and ssu and ntcp code a lot, I believe a model or a sim can help improve the functioning of the netDB
(03:34:44 PM) zlatinb: and the reason I want to discuss it here is that if we go with a sim that runs the actual code that will be in the router, some refactoring will be necessary of the NetDB code, possibly some of the *Job classses too
(03:34:52 PM) zlatinb: Note, I haven't looked into the multi-router jvm and JVMCommSystem yet
(03:35:03 PM) zlatinb: maybe those can be an answer up to a given number of nodes
(03:35:37 PM) zlatinb: but my goal is to simulate at least a few thousand nodes, which means abstracting away most of the router components
(03:35:42 PM) zlatinb: eot-checkpoint
(03:36:28 PM) major left the room (quit: Ping timeout: 320 seconds).
(03:36:32 PM) zzz: I'm lukewarm at best, due to how hard it would be, and how long before we got any useful results
(03:37:20 PM) zzz: for starters, I made a series of changes recently to make things more reliable
(03:37:27 PM) zzz: in 1.6.1-6 dev build
(03:37:46 PM) zzz: but I don't know if any of the popular servers (besides mine) are running it
(03:38:17 PM) zzz: I would like to see echelon's and eyedeekay's servers try it. Those are two batches that I've had trouble with for months
(03:38:20 PM) zzz: eot
(03:38:44 PM) eyedeekay: Most of my servers just track the PPA, I'll get git.idk.i2p updated
(03:39:17 PM) zzz: git and gitssh are two that frequently shun me. If they get better, I'll notice
(03:40:07 PM) zzz: echelon's servers are another mystery. they seem to have IP-level issues frequently
(03:42:11 PM) eyedeekay: I can do that soon then
(03:43:37 PM) eyedeekay: My questions about the netDB test harness are probably ill-conceived, for instance, does the existing testnet have the ability to simulate a netDB between the routers within it?
(03:44:08 PM) eyedeekay: And if so, is there a way to use it?
(03:44:44 PM) The account has disconnected and you are no longer in this chat. You will automatically rejoin the chat when the account reconnects.
(03:49:14 PM) The topic for #i2p-dev is: 1.6.1-7 | next dev meeting 8 PM UTC Tuesday, January 4, 2022
(03:49:14 PM) Topic for #i2p-dev set by zzz at 09:08:14 AM on 01/03/2022
(03:49:20 PM) zzz: gosh no not pspice. it was some sort of queueing/behavioral network model
(03:50:31 PM) zzz: EOT and out, gotta run, thanks everybody
(03:50:46 PM) eyedeekay: Later zzz
(03:51:41 PM) eyedeekay: Anything else on 4? zlatinb
(03:51:50 PM) zlatinb: no, that's all
(03:52:08 PM) eyedeekay: All right that covers it for the meeting then, have a good week everybody

View File

@ -1,11 +0,0 @@
I2P dev meeting, January 4, 2022 @ 20:00 UTC
=============================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,72 +0,0 @@
(03:01:32 PM) eyedeekay: Hi everyone welcome to the Feburary 8th dev meeting
(03:01:38 PM) eyedeekay: Sorry about last week, hopefully the message dropping issues will not recur
(03:01:45 PM) eyedeekay: Topics:
(03:01:45 PM) eyedeekay: 1. Hi
(03:01:45 PM) eyedeekay: 2. Outproxy Requirements(ongoing)
(03:01:45 PM) eyedeekay: 3. 1.7.0/0.9.53 status / release schedule
(03:02:13 PM) zzz: hi
(03:02:15 PM) mode (-m ) by zzz
(03:02:16 PM) zlatinb: hi
(03:02:30 PM) eyedeekay: hi everybody
(03:02:54 PM) eyedeekay: Let's start right in 2) Outproxy requirements
(03:04:08 PM) eyedeekay: zzz found us a bunch of old lists of requirements, which we should either A) choose one or B) collate into a new list
(03:04:51 PM) eyedeekay: I've been trying to do some research into which requirements are feasible and get some guidance from what Tor does
(03:06:18 PM) eyedeekay: At the same time, some groups and some individuals have emerged to volunteer to help with outproxies, one of which is also a multiple Tor exit node operator operating a non-profit, so hopefully we can benefit from their experience
(03:08:04 PM) eyedeekay: In some cases I find the rules a little murky: - Optional allowlist/blocklist of hosts/IPs? for instance, seems straightforward at once but what we suggest blocking/allowing on a host/IP basis might open operators up to request to block things they don't want to block?
(03:08:45 PM) eyedeekay: Seems like the advice may have been that it's safe to block "ports" but maybe not hostnames?
(03:09:05 PM) zzz: I think there's two categories of requirements
(03:09:57 PM) zzz: 1) Things that we as a project would want to see (header requirements, small error page, link to additional info)
(03:10:48 PM) zzz: 2) Things that any rational outproxy operator would want, especially admin tools, but we don't have the expertise to offer much guidance
(03:11:40 PM) zzz: we should focus on 1)
(03:12:14 PM) eyedeekay: OK that's easier, approaching it from the other direction was like cramming for a test
(03:12:40 PM) zzz: and we should not attempt to offer a turnkey packaged solution for 2), only perhaps suggest some best practices
(03:13:00 PM) eyedeekay: But I think it implies we'll need to be flexible, i.e. things we want will need to be subordinate to the things they'll be able to offer
(03:13:09 PM) eyedeekay: That's probably a given though
(03:13:43 PM) zzz: I'm thinking everything in 1) is pretty basic
(03:14:38 PM) zzz: 1a) filter out any X-I2P headers outbound. Do or don't add an X-forwarded headers in either direction?
(03:14:54 PM) zzz: 1b) have a small error page with a link to more info
(03:15:07 PM) zzz: 1c) have a privacy policy on the more info page
(03:15:13 PM) zzz: stuff like that
(03:16:24 PM) eyedeekay: Yeah I agree, that shouldn't be difficult
(03:17:14 PM) eyedeekay: So I'll avoid trying to figure out what people "should" do re: category 2) for the time being and focus on 1)
(03:18:19 PM) eyedeekay: Anything else for topic 2)?
(03:18:36 PM) zzz: The other thing in 1) is http vs. standard tunnel. I _think_ http is the right choice, and the choice affects the header issues
(03:19:04 PM) zzz: eot for 2)
(03:19:37 PM) eyedeekay: The standard tunnel doesn't add the X-I2P-* headers at all does it?
(03:19:55 PM) zzz: no, it doesn't know about header
(03:20:09 PM) zzz: *headers
(03:20:39 PM) zzz: so the choice affects what the external proxy software "sees"
(03:21:47 PM) eyedeekay: So why http? Wouldn't it be better if the server software didn't have to strip/re-add/keep track of the X-I2P headers to keep them from leaking?
(03:22:23 PM) zzz: any proxy needs to deal with headers
(03:22:49 PM) zzz: the proxy standard specifies that some headers are "hop-by-hop" and need to be stripped/added
(03:23:56 PM) zzz: and of course there's both the HTTP and HTTPS (CONNECT) cases to deal with
(03:27:13 PM) eyedeekay: So in the HTTP tunnel case we would be actually using the X-I2P headers
(03:28:39 PM) zzz: they could be used e.g. for rate limiting by a competent outproxy admin
(03:29:09 PM) eyedeekay: Makes sense
(03:29:57 PM) eyedeekay: Anything else on 2)?
(03:30:05 PM) zzz: no
(03:30:12 PM) eyedeekay: 3. 1.7.0/0.9.53 status / release schedule
(03:30:59 PM) eyedeekay: We're exactly 13 days from release on the 21st
(03:31:10 PM) eyedeekay: Tags are freezing tomorrow
(03:31:39 PM) zzz: yup, checkin deadline Fri. Feb. 18
(03:32:26 PM) zzz: i2pd will be releasing on the 19th or 20th with a fix for the nasty SSU bug that's been causing network reliability issues the last couple of months
(03:32:55 PM) zzz: our release will also have some related workarounds and improvements
(03:33:09 PM) eyedeekay: Good to hear, that's been a rough ride for a lot of folks especially on mobile
(03:33:20 PM) zzz: I'm hopeful that conditions will improve pretty rapidly once people start upgrading
(03:34:10 PM) zzz: other than that, the cycle has been pretty smooth, things are quieting down
(03:35:26 PM) zzz: we're at 14,000 lines of diff, pretty good size
(03:36:00 PM) zzz: eot for 3)
(03:37:45 PM) eyedeekay: I don't have much to add, I'll still be making tiny CSS changes for the next week or so to deal with some quirks on extra-small or extra-wide screens and some contrast issues in the dark theme, but other than that my time will be spent trying to review and test
(03:37:55 PM) zlatinb: I would like to run some tests in the testnet after both i2p and i2pd freeze the code for the release. I've documented them on the gitlab wiki.
(03:38:05 PM) zlatinb: eyedeekay: what about end-to-end test for the windows aio?
(03:38:58 PM) eyedeekay: I got one working yesterday, I had a couple issues to deal, one on the build-config side and one on the router.config side but they should both be gone now as long as I'm extra-careful with my release build
(03:41:18 PM) eyedeekay: Turns out I had built the package without incrementing the router version number so even if a download happened(which would not have happened because the URL in router.config was wrong) it would not trigger an update
(03:42:16 PM) eyedeekay: Both those issues are fixed now and I've set up to test the package after I get it built
(03:42:49 PM) eyedeekay: So my updates were badly broken, but now they should be fixed, EOT
(03:44:07 PM) eyedeekay: Anything else for the meeting? Questions, comments, concerns?
(03:46:02 PM) zzz: aio == "bundle" or "easy install bundle". Let's not use "aio" as the name for it anywhere
(03:46:27 PM) zzz: I always think async i/o
(03:46:36 PM) zzz: nothing else for me
(03:47:06 PM) eyedeekay: OK yeah AIO is ambiguous means different things to different people
(03:47:28 PM) eyedeekay: I'll stick to Bundle or Easy-Install Bundle
(03:48:01 PM) eyedeekay: All right thanks everybody for coming to the meeting, see you next month on the 5th, looks like

View File

@ -1,11 +0,0 @@
I2P dev meeting, February 8, 2022 @ 20:00 UTC
=============================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,83 +0,0 @@
(03:01:40 PM) eyedeekay: Hi everyone, welcome to the dev meeting
(03:01:40 PM) eyedeekay: 1. Hi
(03:01:40 PM) eyedeekay: 2. Release Status (1.7.0 / 0.9.53)
(03:02:10 PM) zlatinb: hi
(03:02:12 PM) zzz: hello
(03:02:39 PM) eyedeekay: Anything else to add to the agenda today before we start the release status?
(03:03:01 PM) zlatinb: I have two small items that could fall into a "wishlist for 1.8.0" item
(03:03:25 PM) eyedeekay: 3) 1.8.0 wishlist
(03:04:24 PM) eyedeekay: 2. Release Status(1.7.0/0.9.53)
(03:05:37 PM) eyedeekay: On my end I do have one remaining item, there is an issue with the .aab bundle build process where static resources that are included from the `i2p.i2p` build are deleted and from the final .aab
(03:06:06 PM) eyedeekay: For the time being, GPlay is delayed, I'm working on it today and should be done soon.
(03:07:53 PM) eyedeekay: F-Droid and Freestanding are both .apk's that use the old build process that isn't broken, so it still works.
(03:07:53 PM) eyedeekay: Are there any other outstanding release processes to finish?
(03:10:03 PM) eyedeekay: zzz anything to add to the release status topic from your end? I understand BiglyBT released their plugin today, is that correct?
(03:10:22 PM) zzz: yes
(03:10:48 PM) zzz: based on expl. build success stats, we've rapidly recovered from i2pd's regression in the last release
(03:10:52 PM) zzz: http://stats.i2p/docs/buildsuccess.png
(03:11:11 PM) zzz: and are now at a higher point than any time in the last few years iirc
(03:12:11 PM) zzz: things should settle out in another week and we'll see where we are
(03:12:13 PM) zzz: eot
(03:12:21 PM) eyedeekay: That's really excellent news. Glad things are looking good so far.
(03:12:32 PM) eyedeekay: Thanks zzz
(03:12:50 PM) eyedeekay: 3. 1.8.0 wishlist
(03:13:17 PM) eyedeekay: zlatinb take it away
(03:13:44 PM) zlatinb: hi, 1) is speeding up initial exploratory build time and 2) JNA
(03:14:05 PM) zlatinb: 1: I've been doing some analysis, 75% of the exploratory tunnels that do build do so in less than 500ms
(03:14:29 PM) zlatinb: out of ~30 samples the slowest successful build was less than 2500ms
(03:14:46 PM) zlatinb: whereas the timeout we have now is 13000 ms, I think reducing that will get the router to RUNNING state faster
(03:15:07 PM) zlatinb: we don't have to decide now, just floating the idea out there
(03:15:12 PM) zlatinb: eot on 1
(03:15:33 PM) zzz: no objections on 1
(03:15:56 PM) eyedeekay: Sounds like an interesting experiment to try at least, it doesn't seem like it could do any harm
(03:16:12 PM) eyedeekay: If all the successful builds are so short
(03:16:13 PM) zlatinb: 2: JNA - we'll definitely need to add JNA to the windows easy install bundle in order to elevate priviledge during auto-update. ProcessBuilder fails if the process requires elevation.
(03:16:20 PM) zzz: although I'd like to see data over a longer time period before we pick the new number
(03:16:25 PM) zlatinb: sure
(03:16:42 PM) zzz: please back up and define JNA
(03:16:43 PM) zlatinb: (back to 1) I'll leave a router running with logging enabled
(03:17:12 PM) zlatinb: (back to 2): JNA is Java Native A-something but it's basically a Java wrapper of native windows linux and mac libraries
(03:17:27 PM) zlatinb: so instead of writing native code you write java code
(03:17:52 PM) zlatinb: two jars combined size 3MB, compressed with LZMA down to 2MB
(03:18:11 PM) zzz: please back up and elaborate on the problem and how prevalent it is
(03:18:38 PM) zlatinb: while testing silent updates in muwire I saw that ProcessBuilder fails to launch an installer with an "priviledge elevation required" or some such
(03:19:07 PM) zzz: windows-only problem?
(03:19:12 PM) zlatinb: googling revealed that it is not possible to do so with ProcessBuilder
(03:19:36 PM) zlatinb: yes windows-only for now
(03:19:40 PM) eyedeekay: It doesn't seem to be happening on the Windows Easy-Install to me, is that because NSIS is asking for the elevated privileges and not Java?
(03:20:02 PM) zlatinb: NSIS is asking
(03:20:16 PM) zlatinb: if you already run the java with priviledge then it won't ask
(03:20:22 PM) zlatinb: privilege*
(03:20:28 PM) zzz: yeah that's my question, windows easy-install has been in beta for months and months, is this a muwire-only problem?
(03:20:48 PM) eyedeekay: Oh OK, then it will start happening before the next update with ShellExecAsUser
(03:21:15 PM) zlatinb: do you elevate if launched not from installer eyedeekay?
(03:21:48 PM) zlatinb: I don't remember seeing an elevation prompt
(03:22:12 PM) zlatinb: so it should be happening with windows easy-install if launched from desktop shortcut, not as a last step of an installer
(03:22:14 PM) eyedeekay: No I don't, it runs as the user running the batch script, but only if I2P isn't already running, presumably as an admin
(03:22:52 PM) zzz: so, before we can start talking about a solution for our easy-install windows bundle, let's verify there is a problem
(03:22:57 PM) eyedeekay: It does not shut down the router with the browser
(03:23:35 PM) eyedeekay: I'm inclined to believe that there will be, but will confirm later this week
(03:23:36 PM) zlatinb: so if the user doesn't uncheck the "launch i2p now" checkbox and leave the router running, it will run as privileged and not prompt on update
(03:23:43 PM) zlatinb: ok
(03:24:22 PM) zlatinb: either way, with 1.7.0 the router is launched as non-privileged even if launched from the installer
(03:24:39 PM) zzz: and while you can follow your own rules in muwire, any solution in our official products will have to be vetted for suitability, maintenance, license compatibility, etc
(03:24:57 PM) zlatinb: Apache 2.0
(03:25:45 PM) zlatinb: looking forward JNA allows us to do anything we like with windows APIs really.. register shell extensions, URI handlers, all that good stuff
(03:25:57 PM) zlatinb: eot on 2
(03:26:35 PM) zzz: let's get a couple cycles in on the easy-install auto-updater, which apparently has never worked?
(03:27:13 PM) zzz: you don't have to wait for a i2p release, just put in a new java, or change something else. let's work out the bugs a little faster
(03:27:14 PM) eyedeekay: It was broken, then fixed, now apparently it will break again on the next update
(03:27:55 PM) eyedeekay: But the other solution from my side would be to change the installer so it no longer uses %ProgramFiles% and installs somewhere unprivileged
(03:28:09 PM) zzz: do a release every week until it's working smoothly. obviously the 3-month pace isn't fast enough to converge on something that works
(03:28:32 PM) eyedeekay: Can do
(03:29:53 PM) eyedeekay: Thanks for bringing these up for us zlatinb, anything else on 3?
(03:29:58 PM) zzz: and that will give us data on the extent of the privileges problem, if any
(03:30:00 PM) zzz: eot
(03:30:21 PM) zlatinb: no, eot from me
(03:30:57 PM) eyedeekay: All right anything else for the meeting? timeout 1m
(03:31:16 PM) zzz: also, use the news to tell your beta testers if the update is broken and they need to re-download
(03:31:35 PM) eyedeekay: will do
(03:32:05 PM) zzz: you both have your own news feeds, but aren't using it to talk to your users, you're just relying on my news entries? you should start testing/using that feature
(03:32:11 PM) zzz: eot
(03:34:07 PM) eyedeekay: Can do, in the past I added the i2p.firefox changelog
(03:34:54 PM) eyedeekay: Thanks for coming to the meeting everybody, looks like I've got a lot of work to do, see you all around IRC

View File

@ -1,11 +0,0 @@
I2P dev meeting, March 1, 2022 @ 20:00 UTC
==========================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,90 +0,0 @@
(04:00:32 PM) eyedeekay: Hi everyone welcome to the April dev meeting, agenda for today:
(04:00:32 PM) eyedeekay: 1. Hi
(04:00:32 PM) eyedeekay: 2. Release Status (1.7.0 / 0.9.53)
(04:00:32 PM) eyedeekay: 3. Development Status (1.8.0 / 0.9.54)
(04:00:32 PM) eyedeekay: 4. JNA in easy-install bundles, what doors does it open?
(04:00:42 PM) eyedeekay: 1. Hi
(04:00:47 PM) zlatinb: hi
(04:00:50 PM) zzz: hi
(04:01:18 PM) eyedeekay: Hi zlatinb, hi zzz
(04:01:27 PM) eyedeekay: Anybody else here today?
(04:01:45 PM) eyedeekay: 2. Release Status (1.7.0 / 0.9.53)
(04:02:52 PM) eyedeekay: 1.7.0 has been out for about 6 weeks now, updates from last month for me are that all the Android packages are successfully deployed and the bug that was discovered at release time is now fixed
(04:03:28 PM) eyedeekay: As usual, the packages in Debian's main repositories haven't seen an update, if you're still using them please switch to deb.i2p2.de/.no as soon as possible
(04:04:23 PM) zzz: re: Debian, I did find a volunteer to get 0.9.48 fixed and reinstated into Sid. that's done
(04:04:46 PM) zzz: whether it will automatically trickle back into bullseye and ubuntu, no idea
(04:05:00 PM) zzz: still no luck finding a new maintainer
(04:05:01 PM) zzz: eot
(04:05:08 PM) eyedeekay: Thanks
(04:05:51 PM) eyedeekay: I have one more, this overlaps 2 and 3 and 4 actually but Easy-install bundles for Windows will still require one more manual update
(04:06:25 PM) zzz: have you made progress since last meeting?
(04:06:30 PM) eyedeekay: Considerable yes
(04:07:15 PM) eyedeekay: Most of it is part of this MR, : https://i2pgit.org/i2p-hackers/i2p.firefox/-/merge_requests/6/diffs#10d851887651eddb01e5952f08999080b019da2e
(04:07:35 PM) zzz: great. you have a target date for when you will propose transition out of beta?
(04:08:02 PM) eyedeekay: As soon as users receive an automatic update I will consider it ready
(04:08:22 PM) zzz: thanks
(04:08:47 PM) eyedeekay: Anything else on 2?
(04:09:33 PM) eyedeekay: 3. Development Status (1.8.0 / 0.9.54)
(04:10:03 PM) zzz: (no, all good, haven't heard any complaints on 1.7.0)
(04:10:21 PM) eyedeekay: Me either, people seem to be pretty happy with it so far
(04:12:12 PM) eyedeekay: As for 3. Development Status (1.8.0 / 0.9.54) Unfortunately I've been a lot slower at some things than I expected, I'm stuck on UDP tunnels but almost ready for an MR on SAM authentication
(04:12:38 PM) eyedeekay: Besides that I'm doing some revisions to the complicated bandwidth wizard pages to make the selection process more understandable and the notifications more noticable
(04:12:52 PM) eyedeekay: We're about 6 weeks in with 7 weeks to go, right zzz?
(04:13:02 PM) zzz: right
(04:13:31 PM) eyedeekay: Do you want to update us on SSU2 or anything else you've been working on?
(04:13:46 PM) zzz: 13 weeks would be a May 23 release
(04:13:53 PM) zzz: yes, thanks
(04:14:01 PM) zzz: enormous progress with i2pd on SSU 2
(04:14:03 PM) mode (+v anonymousmaybe) by ChanServ
(04:14:17 PM) zzz: live testing happening in the network now
(04:14:40 PM) zzz: other things coming in the release: snark standalone improvements, router family fixes
(04:14:49 PM) zzz: an SSU 1 performance fix
(04:15:15 PM) zzz: things should slow down soon on SSU 2, and I'll be turning to some more bug fixes all over
(04:15:23 PM) zzz: eot
(04:16:04 PM) eyedeekay: Awesome, thanks for the updates zzz
(04:16:37 PM) eyedeekay: zlatinb anything you want to talk about for this topic before we get to 4?
(04:16:55 PM) zlatinb: I guess the reduction in tunnel build timeout should result in faster bootup
(04:17:11 PM) zlatinb: or faster 0-to-Router.isRunning()
(04:17:20 PM) zlatinb: that's all eot
(04:17:38 PM) eyedeekay: Thanks zlatinb, that will make people happy :)
(04:17:56 PM) eyedeekay: 4. JNA in easy-install bundles, what doors does it open?
(04:18:15 PM) eyedeekay: zlatinb this was your topic but I have a lot of notes on it too, do you want to start?
(04:18:24 PM) zlatinb: sure.
(04:18:34 PM) zlatinb: Basically MR 6 adds the JNA libraries to the windows easy-install bundle
(04:18:49 PM) zlatinb: which just today I learned wasn't necessary because of JEP 419 (which is built-in JNA replacement)
(04:19:12 PM) zlatinb: but the overall point is the same: since we need to do some native things, what other native things do we want to do?
(04:19:33 PM) eyedeekay: Sometimes we need to talk to power/batter management
(04:19:36 PM) eyedeekay: *battery
(04:19:57 PM) zlatinb: In MuWire I've implemented a "background priority" on windows, which according to the MSDN docs guarantees the process never interferes with foreground processes
(04:20:05 PM) zlatinb: yes, battery power management is another such thing
(04:20:17 PM) eyedeekay: I need to ask for admin rights in a conditional way, which isn't supported by NSIS itself
(04:20:21 PM) zlatinb: so yeah that's from me, just invitation to think native :)
(04:20:21 PM) zlatinb: eot
(04:21:22 PM) eyedeekay: So yeah we definitely have a few cases in mind where it might be useful to have something JNA-like
(04:22:41 PM) zlatinb: ok.. then the question is do we add any/all such functionality in the easy-install bundle and keep it outside of the core router package
(04:22:45 PM) zzz: sorry to be the party-pooper, but at last month's meeting, JNA was a possible solution to a single problem (privilege) on Windows only
(04:23:08 PM) zzz: and today we're at "it's definitely the solution for many problems, what other fun stuff can we do with it" ?
(04:23:18 PM) zlatinb: yeah that's the party theme lol
(04:23:34 PM) zzz: which is both a leap and typical solution-looking-for-a-problem
(04:24:31 PM) zlatinb: that's one way to look at it, I think it (JNA / JEP 419) can make I2P better in many ways
(04:25:14 PM) zlatinb: on many platforms
(04:25:14 PM) zlatinb: I've just scratched the surface on windows tbh
(04:25:28 PM) zzz: so JNA has not been decided on?
(04:25:28 PM) zlatinb: JNA has the benefit of being backwards compatible down to java 1.4, JEP 419 is only in JDK 18
(04:25:51 PM) zlatinb: I would say both are on the table, with JNA having some headstart
(04:26:37 PM) zzz: 419 is "incubator" status meaning it could vanish, don't count on it
(04:27:07 PM) eyedeekay: I'm pro-JNA because being able to control installer privs solves at least 2 problems for me and gives me the power to install to/run entirely from flash drives
(04:27:46 PM) eyedeekay: I don't want to lose that to a project being unready or abandoned
(04:29:03 PM) eyedeekay: So I guess pro-JNA, hesitant on 419 from me
(04:29:54 PM) zlatinb: well 419 with a slightly different api is already in JDK 17 which is LTS, but I won't have a strong opinion until it's out of incubation
(04:30:00 PM) zzz: we should continue to keep an eye out for the best tools to solve the problems we have now... daydreaming what else we could do with it isn't so important
(04:31:10 PM) zzz: going out of the JVM is always going to be messy and less maintainable, to be used only if really necessary, no matter what mechanism is used
(04:33:14 PM) zlatinb: Nobody disagrees with that, but I think we shouldn't stop ourselves from dreaming big
(04:33:38 PM) zlatinb: integrating with the windows shell or power management on laptops sounds awfully nice to me
(04:34:18 PM) zlatinb: that should be possible on linux laptops as well btw
(04:34:33 PM) eyedeekay: I'm still dreaming small TBH, flash-drive-portables were just a by-product of supporting adminless installs
(04:36:24 PM) eyedeekay: But if there's a non-JNA way of doing something then yeah we should probably try that first
(04:38:54 PM) eyedeekay: Anything else on 4?
(04:39:07 PM) zlatinb: not from me, eot
(04:40:26 PM) eyedeekay: Anything else for the meeting? timeout 1m
(04:41:43 PM) eyedeekay: All right thanks everybody for coming, looks like next month meeting will be May 3rd

View File

@ -1,11 +0,0 @@
I2P dev meeting, April 5, 2022 @ 20:00 UTC
==========================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,28 +0,0 @@
(03:48:58 PM) eyedeekay: It would seem not, I'll have a look at gitlab's bugtracker and see if I can find an explanation
(04:00:03 PM) eyedeekay: Hi everyone, welcome to the development meeting
(04:00:03 PM) eyedeekay: 1. Hi
(04:00:03 PM) eyedeekay: 2. Release Date
(04:00:03 PM) eyedeekay: 3. Development Status (1.8.0 / 0.9.54)
(04:00:05 PM) eyedeekay: hi
(04:00:13 PM) zlatinb: hi
(04:00:17 PM) zzz: hello
(04:00:45 PM) eyedeekay: 2. Release date
(04:01:16 PM) eyedeekay: We need to decide on one, tentatively it's been the 23rd for a while, that works for me if it works for everybody else?
(04:01:43 PM) zzz: that would be 13 weeks, fine with me
(04:02:01 PM) zzz: need approval from eche|off eche|on if he's here
(04:03:04 PM) eyedeekay: looks like not but I can email him after the meeting
(04:04:00 PM) eyedeekay: looking like the 23rd pending email to ech
(04:04:09 PM) eyedeekay: Anything else for 2?
(04:04:58 PM) eyedeekay: 3. Development Status (1.8.0 / 0.9.54)
(04:07:41 PM) eyedeekay: We're definitely less than a month from releasing 1.8.0/0.9.54 in any case, with lots of it being preparation/implementation for SSU2 by zzz
(04:08:42 PM) eyedeekay: Big changes should be done soon, and tag freeze is on the 11th so translations must be in by then
(04:09:28 PM) eyedeekay: /translations/strings
(04:09:58 PM) eyedeekay: zzz, zlatinb anything to add on this topic?
(04:10:44 PM) zzz: not much, I'm pretty much done, will be chasing a few minor things on my list in the next couple weeks
(04:11:02 PM) zlatinb: nothing from me
(04:11:03 PM) zzz: any new ssu2 stuff I'll probably either hold off or stick in a branch
(04:11:11 PM) zzz: eot
(04:12:05 PM) eyedeekay: thanks guys
(04:12:49 PM) eyedeekay: Anything else for the meeting? Last-minute topics? timeout 1m
(04:14:13 PM) eyedeekay: All right, quick meeting today
(04:14:33 PM) eyedeekay: Thanks everyone for coming, I'll email echelon then post the logs

View File

@ -1,11 +0,0 @@
I2P dev meeting, May 3, 2022 @ 20:00 UTC
========================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -1,60 +0,0 @@
(04:00:41 PM) eyedeekay: Hi everybody and welcome to the June 7 meeting
(04:00:41 PM) eyedeekay: 1. Hi
(04:00:41 PM) eyedeekay: 2. 1.8.0 release status
(04:00:41 PM) eyedeekay: 3. 1.9.0 development status
(04:00:41 PM) eyedeekay: 4. MoneroKon 2022
(04:01:23 PM) zzz: hi
(04:01:27 PM) zlatinb: hi
(04:01:52 PM) eyedeekay: Hi guys, anybody else here or any topics to add?
(04:03:26 PM) eyedeekay: I'll get us started on 1.8.0 release status then
(04:04:29 PM) eyedeekay: Maven and I2P Easy-Install bundle for Windows were released shortly after the main 1.8.0 release occurred without incident, the I2P Easy-Install bundle got it's first successful automatic update as well
(04:05:12 PM) eyedeekay: The Android release was delayed by about 5 days because I had to change it to avoid asking for a new gated permission from google to release on gplay
(04:05:37 PM) eyedeekay: zzz do you want to apprise us of the main release and debian and then zlatinb, OSX easy install bundle?
(04:06:37 PM) zzz: two weeks since the release, all looks good, haven't heard any complaints
(04:07:01 PM) zzz: about 25% of the network has updated. BiglyBT release should be out shortly, that will give us a big jump
(04:07:01 PM) zzz: that's all I have unless anybody has questions
(04:07:03 PM) mode (-m ) by zzz
(04:07:07 PM) zlatinb: same here, only difference from earlier release is that the Mac bundle includes GPLv2+Classpath license
(04:07:29 PM) eyedeekay: Thanks guys, anything else on this topic?
(04:08:26 PM) eyedeekay: 3. 1.9.0 development status
(04:11:01 PM) eyedeekay: 2 weeks from release we're also 2 weeks into 1.9.0, zzz has been hard at work on ssu2 with orignal, if he wants to give us an update on that
(04:11:22 PM) zzz: thanks
(04:11:31 PM) zzz: we're getting wider testing of SSU2
(04:11:50 PM) zzz: I encourage people who are willing and able, to enable it, and keep up to date with development builds
(04:11:58 PM) anonymousmaybe is now known as Irc2PGuest25323
(04:12:00 PM) zzz: we're still finding bugs in the basic protocol
(04:12:20 PM) zzz: and we're continuing implementation of relay and peer test, which are like sub-protocols
(04:12:41 PM) zzz: fixing other non-ssu2 bugs along the way
(04:12:54 PM) zzz: eyedeekay, you and I need to update the roadmap both for the past release and the next one
(04:13:13 PM) zzz: EOT unless there's any questions
(04:13:23 PM) eyedeekay: Yes indeed, I've got some stuff to move to 1.9.0
(04:13:50 PM) eyedeekay: for me my main goal in Java is to finish UDP tunnels in HSM, that's one of the things that moves to 1.9.0
(04:14:10 PM) eyedeekay: otherwise my immediate goal is to work on NTCP2 in go-i2p, which will probably be hard work but I'm excited to get started
(04:14:18 PM) eyedeekay: EOT for me as well
(04:14:48 PM) zzz: ok, as usual, target big changes to go in early in the cycle please
(04:15:06 PM) eyedeekay: Will do
(04:15:13 PM) eyedeekay: Anything else for 3?
(04:15:35 PM) zzz: nope, let's plan for a release in late August
(04:15:44 PM) eyedeekay: 4. MoneroKon 2022
(04:16:36 PM) eyedeekay: This one is just an announcement, there is going to be quite a bit of I2P related stuff happening at Monero Konferenco 2022 in less than 2 weeks, the 18th and 19th
(04:17:10 PM) zzz: Lisbon, correct?
(04:17:22 PM) eyedeekay: Yes Lisbon
(04:17:54 PM) eyedeekay: But people who aren't in Lisbon are able to stream it from the web site for the conference, https://monerokon.com
(04:17:58 PM) zzz: I'd like to plug the two students sponsored by diva.exchange that will be giving a presentation on their research there
(04:18:17 PM) zzz: you have a workshop also? what about?
(04:18:35 PM) eyedeekay: I'm going to be there to run a workshop on adapting applications to the I2P network
(04:19:29 PM) eyedeekay: I'm going to present on the decisions people need to make when selecting an API, how to find a router, how to build an I2P plugin
(04:19:40 PM) zzz: fantastic. there's going to be a lot of I2P brainpower there to help people and answer questions, I hope you get a good turnout
(04:19:51 PM) anonymousmaybe is now known as Irc2PGuest29437
(04:20:28 PM) eyedeekay: I hope so too, it's my favorite topic :)
(04:21:45 PM) eyedeekay: zlatinb is going to be there as well, so if you can please come see us
(04:22:28 PM) eyedeekay: That's all I've got for 4, anything else for the meeting?
(04:23:55 PM) eyedeekay: All right thanks everybody for coming, same time next month
(04:24:59 PM) obscuratus: eyedeekay: Are they going to stream your workshop?
(04:25:53 PM) eyedeekay: I'm not sure, I'll make all the materials open/permissively licensed regardless
(04:26:24 PM) obscuratus: Neat topic. If they stream it, or if you can post a video later, I'll watch it.
(04:26:32 PM) eyedeekay: I believe the box I marked on the form was that I did consent to be streamed
(04:27:34 PM) zzz: eyedeekay, the times on your reddit post are lisbon local?
(04:27:58 PM) eyedeekay: Yes the schedule on the monerokon website are UTC+1 which is Lisbon Local
(04:28:39 PM) eyedeekay: *times on the monerokon website
(04:29:07 PM) zzz: ok so 5 hours ahead of eastern, so the students are on at 5:30 AM

View File

@ -1,11 +0,0 @@
I2P dev meeting, June 7, 2022 @ 20:00 UTC
=========================================
Quick recap
-----------
* **Present:**
eyedeekay,
zzz,
zlatinb

View File

@ -19,4 +19,9 @@
{{ body }}
{% endautoescape %}
</div>
<p>
<a href="https://flattr.com/submit/auto?user_id=I2P&url={{ canonical() }}" target="_blank">
<img src="{{ url_for('static', filename='images/flattr-badge-large.png') }}" alt="Flattr this" title="Flattr this" border="0">
</a>
</p>
{% endblock %}

View File

@ -1,9 +1,18 @@
<p>{% trans -%} Your web browser will need to be configured in order to browse web sites on I2P and to utilize the outproxies available within I2P. Below are walkthroughs for some of the most popular browsers. {%- endtrans %}</p>
<p>{% trans -%}
Your web browser will need to be configured in order to browse web sites on I2P
and to utilize the outproxies available within I2P. Below are walkthroughs for
some of the most popular browsers.
{%- endtrans %}</p>
<h2>{{ _('Firefox Profile for Windows') }}</h2>
<p>{% trans profile='/firefox' -%} If you are using Windows, the recommended way of accessing I2P is using the
<a href='{{ profile }}'>Firefox profile</a>. {%- endtrans %}</p>
<p>{% trans -%} If you do not wish to use that profile or are not on Windows, you need to configure your browser yourself. Read below on how to that. {%- endtrans %}</p>
<p>{% trans profile='/firefox' -%}
If you are using Windows, the recommended way of accessing I2P is using the
<a href='{{ profile }}'>Firefox profile</a>.
{%- endtrans %}</p>
<p>{% trans -%}
If you do not wish to use that profile or are not on Windows, you need to
configure your browser yourself. Read below on how to that.
{%- endtrans %}</p>
<h2>{{ _('How to configure your browser') }}</h2>
@ -17,50 +26,94 @@
<a name="firefox"></a>
<h3>Firefox</h3>
<h4>{% trans %}Extension-based Configuration: I2P in Private Browsing{% endtrans %}</h4>
<p>{% trans %}A new way of automatically configuring the I2P Browser is currently being tested. It uses the Firefox's "Container Tabs" to build private browsing tools for use with I2P and I2P applications.{% endtrans %}</p>
<p>{% trans %}It does pre-configuration of your browser by enabling some of the privacy Browser Settings like ResistFingerprinting, and enforces WebRTC proxy obedience. It also contains menus, shortcuts, and monitoring tools improving Firefox's integration
with I2P. It should not substantially interfere with your non-I2P Firefox tabs. {% endtrans %}</p>
<p>{% trans %}The extension, <a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">I2P in Private Browsing</a>, can be obtained from the Mozilla addon store. {% endtrans %}</p>
<p>{% trans %}The source code for the extension is, <a href="https://i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox">i2pgit.org</a>. {% endtrans %}</p>
<h4>{% trans %}Experimental, extension-based Configuration{% endtrans %}</h4>
<p>{% trans %}A new way of automatically configuring the I2P Browser is
currently being tested. It uses the Firefox's "Container Tabs" to build private
browsing tools for use with I2P and I2P applications.{% endtrans %}</p>
<p>{% trans %}It does pre-configuration of your browser by enabling some of
the privacy Browser Settings like ResistFingerprinting, and enforces WebRTC proxy
obedience. It also contains menus, shortcuts, and monitoring tools improving
Firefox's integration with I2P. It is a by-product of the I2P Browser project.
{% endtrans %}</p>
<p>{% trans %}The extension, <a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">I2P in Private Browsing</a>,
can be obtained from the Mozilla addon store.
{% endtrans %}</p>
<h4>{% trans %}Instructions for Firefox 57 and above:{% endtrans %}</h4>
<p>{% trans -%} From the Menu button in the top right, select <em>Preferences</em>. Scroll down until you see the <em>Network Proxy</em> section, as shown in the screenshot below. Click on <em>Settings</em> {%- endtrans %}</p>
<img src="{{ url_for('static', filename='images/firefox57.preferences.png') }}" alt="{{ _('Firefox57 Network Options') }}" title="{{ _('Firefox57 Network Options') }}">
<p>{% trans -%} In the <em>Connection Settings</em> pop-up, select <em>Manual proxy
<p>{% trans -%}
From the Menu button in the top right, select <em>Preferences</em>.
Scroll down until you see the <em>Network Proxy</em> section, as shown in the
screenshot below. Click on <em>Settings</em>
{%- endtrans %}</p>
<img src="{{ url_for('static', filename='images/firefox57.preferences.png') }}"
alt="{{ _('Firefox57 Network Options') }}" title="{{ _('Firefox57 Network Options') }}">
<p>{% trans -%}
In the <em>Connection Settings</em> pop-up, select <em>Manual proxy
configuration</em>. Set both the HTTP and SSL Proxy to address
<code>127.0.0.1</code> with port <code>4444</code> as shown in the following screenshot. {%- endtrans %}</p>
<code>127.0.0.1</code> with port <code>4444</code> as shown in the following
screenshot.
{%- endtrans %}</p>
<img src="{{ url_for('static',
filename='images/firefox57.connectionsettings.png') }}" alt="{{ _('Firefox57
Connection Settings') }}" title="{{ _('Firefox57 Connection Settings') }}">
<p>{% trans -%} Finally, go to the address <em>about:config</em> and find the property media.peerConnection.ice.proxy_only. Ensure that this setting is True. {%- endtrans %}</p>
<p>{% trans -%}
Finally, go to the address <em>about:config</em> and find the property
media.peerConnection.ice.proxy_only. Ensure that this setting is True.
{%- endtrans %}</p>
<img src="{{ url_for('static',
filename='images/firefox.webrtc.png') }}" alt="{{ _('Firefox57
PeerConnection Settings') }}" title="{{ _('Firefox57 PeerConnection Settings') }}">
<a name="chrome"></a>
<h3>{% trans %} Chrome {% endtrans %}</h3>
<h4>{% trans %}Extension-based Configuration: I2PChrome.js(Experimental, additional configuration){% endtrans %}</h4>
<p>{% trans %}An experimental, partially-automated configuration process for Chrome is available. In order to configure it, create a new <em>Profile</em> especially for your I2P browsing, separate from the default profile. Then install this <a href="https://chrome.google.com/webstore/detail/i2pchromejs/ikdjcmomgldfciocnpekfndklkfgglpe"><em>Extension</em></a> in your newly-created profile. This profile is now configured to use I2P. Highly detailed instructions are available at the
<a href="https://eyedeekay.github.io/I2P-Configuration-For-Chromium">homepage.</a> {% endtrans %}</p>
<h4>{% trans %}Experimental, extension-based Configuration{% endtrans %}</h4>
<p>{% trans %}An experimental, partially-automated configuration process for
Chrome is available. In order to configure it, create a new <em>Profile</em>
especially for your I2P browsing, separate from the default profile. Then install
this <a href="https://chrome.google.com/webstore/detail/i2pchromejs/ikdjcmomgldfciocnpekfndklkfgglpe"><em>Extension</em></a> in your newly-created profile. This profile
is now configured to use I2P. Highly detailed instructions are available at the
<a href="https://eyedeekay.github.io/I2P-Configuration-For-Chromium">homepage.</a>
{% endtrans %}</p>
<h4>{% trans %}All Chrome Versions{% endtrans %}</h4>
<p>{% trans -%} Chromium-Based Browsers like Chrome have slightly different places for their proxy settings depending on variant and platform. These instructions may be slightly different in Brave or Iridium, for instance. From the <em>Main</em> menu, navigate
to the <em>Settings</em>, and search for the <em></em> menu item. Clicking it will open the right settings for your platform. {%- endtrans %}</p>
<p>{% trans -%}
Chromium-Based Browsers like Chrome have slightly different places for their
proxy settings depending on variant and platform. These instructions may be
slightly different in Brave or Iridium, for instance. From the <em>Main</em>
menu, navigate to the <em>Settings</em>, and search for the <em></em> menu item.
Clicking it will open the right settings for your platform.
{%- endtrans %}</p>
<img src="{{ url_for('static', filename='images/chrome.proxy.png') }}" alt="{{ _('Chrome Proxy Options') }}" title="{{ _('Chrome Proxy Options') }}">
<p>{% trans -%} On Windows, this button will launch you into the shared proxy settings used by <a href="#ie8"><em>Internet Explorer</em></a>, and you can configure it by following the Internet Explorer 8 guide. {%- endtrans %}</p>
<p>{% trans -%}
On Windows, this button will launch you into the shared proxy settings used
by <a href="#ie8"><em>Internet Explorer</em></a>, and you can configure it by
following the Internet Explorer 8 guide.
{%- endtrans %}</p>
<a name="android"></a>
<h3>{% trans %} IceRaven and other Firefoxes for Android {% endtrans %}</h3>
<h4>{% trans %}Extension-based Configuration{% endtrans %}</h4>
<p>{% trans %}Modern Firefoxes(The "Fenix" based Firefoxes) do not generally have an about:config page for you to configure proxy settings manually. It is further not possible to use most extensions in Fenix-based Firefoxes. It is possible to enable support
about:config and enable more extensions in Firefox Nightly at the time of this writing, but it's a manual and difficult process. <em>IceRaven</em> is a fork of Firefox which enables a collection of extensions while Mozilla and the Mozilla Community
work on adding support for extensions to Firefox for Android. It provides the easiest way of configuring a modern Firefox-based Browser for Android. It does not come from Mozilla and carries no guarantees from them. <em>Installing the extension
<p>{% trans %}Modern Firefoxes(The "Fenix" based Firefoxes) do not generally have
an about:config page for you to configure proxy settings manually. It is further
not possible to use most extensions in Fenix-based Firefoxes. It is possible to
enable support about:config and enable more extensions in Firefox Nightly at the time
of this writing, but it's a manual and difficult process. <em>IceRaven</em> is a fork
of Firefox which enables a collection of extensions while Mozilla and the Mozilla
Community work on adding support for extensions to Firefox for Android. It provides
the easiest way of configuring a modern Firefox-based Browser for Android. It does
not come from Mozilla and carries no guarantees from them. <em>Installing the extension
in IceRaven will proxy all your IceRaven browsing over I2P.</em>{% endtrans %}</p>
<p>{% trans %}If you have not installed IceRaven yet, go to the next step. If you have been using IceRaven for a while, go to the main menu, select the History tab, and make sure that you have cleared information about your past browsing by tapping the "Delete
History" button.{% endtrans %}</p>
<p>{% trans %}Open the IceRaven main menu, and scroll to the top until you see the "Add-Ons" submenu. Tap the "Add-Ons Manager" option in the "Add-Ons" submenu. Install the extension named <em>I2P Proxy for Android and other Systems</em>. {% endtrans %}</p>
<p>{% trans %}Your IceRaven browser is now configured to use I2P. {% endtrans %}</p>
<p>{% trans %}This extension also works in pre-Fenix(Pre-Firefox-68) Firefox based web browsers, if installed from the following addons.mozilla.org URL.
<em><a href="https://addons.mozilla.org/en-US/android/addon/i2p-proxy/">I2P Proxy for Android and Other Systems</a><em>
<p>{% trans %}If you have not installed IceRaven yet, go to the next step. If you have been
using IceRaven for a while, go to the main menu, select the History tab, and make
sure that you have cleared information about your past browsing by tapping the
"Delete History" button.{% endtrans %}</p>
<p>{% trans %}Open the IceRaven main menu, and scroll to the top until you see the "Add-Ons"
submenu. Tap the "Add-Ons Manager" option in the "Add-Ons" submenu. Install
the extension named <em>I2P Proxy for Android and other Systems</em>.
{% endtrans %}</p>
<p>{% trans %}Your IceRaven browser is now configured to use I2P.
{% endtrans %}</p>
<p>{% trans %}This extension also works in pre-Fenix(Pre-Firefox-68) Firefox based
web browsers, if installed from the following addons.mozilla.org URL.
<em><a href="https://addons.mozilla.org/en-US/android/addon/i2p-proxy/">I2P Proxy for Android and Other Systems</a><em>
{% endtrans %}</p>
<p>{% trans %}This extension is identical to the Chromium extension and is built from the same source.{% endtrans %}</p>
<p>{% trans %}In order to enable extension support in Firefox Nightly, you should follow
@ -88,14 +141,14 @@ settings and your browser is set to use the I2P proxy.
<a name="TOS"></a>
<h3>{{ _('Outproxy Terms Of Service') }}</h3>
<p>{% trans -%}
I2P is not designed for creating proxies to the Internet.
Remember: I2P was not designed for creating proxies to the outer Internet.
Instead, it is meant to be used as an internal network.
{%- endtrans %}</p>
<p>{% trans -%}
<p><b>The I2P project itself does not run any proxies to the Internet.</b>
The I2P software includes two outproxies: false.i2p and outproxy-tor.meeh.i2p.
Even though domain names are different, it's the same outproxy you hit,
multihomed/keyed for better performance. These are run by a volunteer. </p>
The only outproxy is a service from the privacy solutions project.
Consider donating to them for a continued stable service. Increased funding will
allow them to improve this service. </p>
<a href="http://privacysolutions.no"
target="_blank">http://privacysolutions.no</a>
{%- endtrans %}</p>
@ -105,12 +158,13 @@ and <code>{{ https }}</code>. Even the domain names are different, it's the same
(multi-homed/keyed for better performance)
{%- endtrans %}</p>
<p>{% trans -%}
Filtering is active on these outproxies (for example, mibbit and torrent tracker
access is blocked). I2P Sites that are accessible via .i2p addresses are also
not allowed via the outproxies.
Filtering is active on these outproxies (for example, mibbit and torrent
tracker access is blocked). I2P Sites
that are accessible via .i2p addresses are also not allowed via the outproxies.
As a convenience, the outproxy blocks ad servers.
{%- endtrans %}</p>
<p>{% trans -%}
<a href="https://www.torproject.org">Tor</a> provides a browser to use as an outproxy to the Internet.
<a href="https://www.torproject.org">Tor</a> is a good application to use as an
outproxy to the Internet.
{%- endtrans %}</p>
<!-- vim: set noai ff=unix nosi ft=html tw=79 et sw=4 ts=4 spell spelllang=en: -->
<!-- vim: set noai ff=unix nosi ft=html tw=79 et sw=4 ts=4 spell spelllang=en: -->

View File

@ -3,19 +3,27 @@
{% block content %}
<h1>{{ _('Debian I2P Packages') }}</h1>
<h2 id="bionic">{{ _('Debian Buster, Ubuntu Bionic, and later') }}</h2>
{% trans -%}
I2P is available in the official repositories for Ubuntu Bionic and later, and Debian Buster and Sid.
However, Debian Buster and Ubuntu Bionic (LTS) distributions will have older I2P versions.
If you are not running Debian Sid or the latest Ubuntu release,
use our Debian repo or Launchpad PPA to ensure you're running the latest I2P version.
{%- endtrans %}
<h2 id="others">{{ _('Debian or Ubuntu, All Versions') }}</h2>
{% trans -%}The Debian packages should work on most platforms running:{%- endtrans %}
<ul>
<li>{% trans %}<a href="#ubuntu">Ubuntu</a> (Bionic <em>18.04</em> and newer){% endtrans %}</li>
<li>{% trans %}<a href="#ubuntu">Mint</a>(Tara<em>19</em>) or newer{% endtrans %}</li>
<li>{% trans %}<a href="#debian">Debian Linux</a> (Buster and newer){% endtrans %}</li>
<li>{% trans %}<a href="#ubuntu">Ubuntu</a> (Precise <em>12.04</em> and newer){% endtrans %}</li>
<li><a href="#ubuntu">Mint</a></li>
<li>{% trans %}<a href="#debian">Debian Linux</a> (Wheezy and newer){% endtrans %}</li>
<li><a href="#debian">Knoppix</a></li>
</ul>
{% trans gtitlab='https://i2pgit.org/i2p-hackers/i2p.i2p/' -%}
{% trans trac='http://trac.i2p2.de/newticket?component=package/debian&owner=killyourtv&cc=killyourtv@mail.i2p' -%}
The I2P packages <em>may</em> work on systems not listed above. Please report any issues
with these packages on <a href="{{ gtitlab }}">Gitlab</a> at
<a href="{{ gtitlab }}">i2p.i2p</a>.
with these packages on <a href="{{ trac }}">Trac</a> at
<a href="{{ trac }}">https://trac.i2p2.de</a>.
{%- endtrans %}
<ul>
<li>{% trans %}Option 1: <a href="#ubuntu">Recent versions</a> of Ubuntu and its derivatives (<em>Try this if you're not using Debian)</em>{% endtrans %}</li>
@ -29,8 +37,8 @@ with these packages on <a href="{{ gtitlab }}">Gitlab</a> at
{% trans %}Open a terminal and enter:{% endtrans %}<br />
<code>&nbsp;&nbsp;&nbsp; sudo apt-add-repository ppa:i2p-maintainers/i2p</code><br />
{% trans -%}
This command will add the PPA to <code>/etc/apt/sources.list.d</code> and fetch
the gpg key that the repository has been signed with. The GPG key ensures
This command will add the PPA to /etc/apt/sources.list.d and fetch the
gpg key that the repository has been signed with. The GPG key ensures
that the packages have not been tampered with since being built.
{%- endtrans %}
</li>
@ -47,35 +55,27 @@ was added with the earlier command.
<code>&nbsp;&nbsp;&nbsp;&nbsp;sudo apt-get install i2p</code></li>
</ol>
<h5>{{ _('Adding the PPA Using the Software Center') }}</h5>
<h5>{{ _('Adding the PPA Using Synaptic') }}</h5>
<ol>
<li>
{% trans -%}Open "Software and Updates" via the applications menu.
{% trans -%}
Open Synaptic (System -&gt; Administration -&gt; Synaptic Package Manager).
{%- endtrans %}
<img src="/_static/images/download/ubuntu/software-center-menu.png"></img>
</li>
<li>
{% trans -%}Select the "Other Software" tab and click the "Add" button at the
bottom to configure the PPA.
{% trans -%}
Once Synaptic opens, select <em>Repositories</em> from the <em>Settings</em> menu.
{%- endtrans %}
<img src="/_static/images/download/ubuntu/software-center-addother.png"></img>
</li>
<li>
{% trans -%}Add the PPA by pasting the URL: <code>ppa:i2p-maintainers/i2p</code>
into the PPA dialog.
{% trans -%}
Click the <em>Other Sources</em> tab and click <em>Add</em>. Paste <code>ppa:i2p-maintainers/i2p</code> into the APT-line field and click <em>Add Source</em>. Click the <em>Close</em> button then <em>Reload</em>.
{%- endtrans %}
<img src="/_static/images/download/ubuntu/software-center-ppatool.png"></img>
</li>
<li>
{% trans -%}Download the repository information with the "Reload" button.
{% trans -%}
In the Quick Filter box, type in <code>i2p</code> and press enter. When <code>i2p</code> is returned in the results list, right click <code>i2p</code> and select <em>Mark for Installation</em>. After doing so you may see a <em>Mark additional required changes?</em> popup. If so, click <em>Mark</em> then <em>Apply</em>.
{%- endtrans %}
<img src="/_static/images/download/ubuntu/software-center-reload.png"></img>
</li>
<li>
{% trans -%}Install the I2P software using the "Software" tool from the
applications menu.
{%- endtrans %}
<img src="/_static/images/download/ubuntu/software-center-software.png"></img>
</li>
</ol>
@ -92,110 +92,100 @@ part of <a href="#Post-install_work">starting I2P</a> and configuring it for you
Note: The steps below should be performed with root access (i.e., switching
user to root with <code>su</code> or by prefixing each command with <code>sudo</code>).
{%- endtrans %}</p>
<ol>,
<li>{% trans -%}Ensure that <code>apt-transport-https</code>, <code>curl</code>, <code>lsb-release</code> are installed.{%- endtrans %}
<ol>
<li>{% trans -%}Ensure that <code>apt-transport-https</code> and <code>curl</code> are installed.{%- endtrans %}
<pre>
<code>
sudo apt-get update
sudo apt-get install apt-transport-https lsb-release curl</code>
sudo apt-get install apt-transport-https curl</code>
</pre>
</li>
<li>{% trans file='/etc/apt/sources.list.d/i2p.list',file2='/etc/debian_version' %}
Check which version of Debian you are using on this page at the <a href="https://wiki.debian.org/LTS/" target="_blank">Debian wiki</a>
and verify with <code>{{ file2 }}</code> on your system.
Then, for Debian Bullseye or newer distributions run the following command to create <code>{{ file }}</code>.{% endtrans %}<br>
<pre>
<code>
# Use this command on Debian Bullseye or newer only.
echo "deb [signed-by=/usr/share/keyrings/i2p-archive-keyring.gpg] https://deb.i2p2.de/ $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/i2p.list
</code>
</pre>
{% trans -%}If you're using a downstream variant of Debian like LMDE or Kali Linux, the following command fill find the correct version for your distribution:{%- endtrans %}
<pre>
<code>
# Use this command on Debian Bullseye or newer only.
echo "deb [signed-by=/usr/share/keyrings/i2p-archive-keyring.gpg] https://deb.i2p2.de/ $(dpkg --status tzdata | grep Provides | cut -f2 -d'-') main" \
| sudo tee /etc/apt/sources.list.d/i2p.list
</code>
</pre>
{% trans -%}If you are using Debian Buster or older official Debian distributons, use the following command instead:{%- endtrans %}
<pre>
<code>
# Use this command on Debian Buster or older only.
echo "deb https://deb.i2p2.de/ $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/i2p.list
</code>
</pre>
{% trans -%}If you're using a downstream variant of Debian like LMDE or Kali Linux, the following command fill find the correct version for your distribution:{%- endtrans %}
<pre>
<code>
# Use this command on Debian Buster or older only.
echo "deb https://deb.i2p2.de/ $(dpkg --status tzdata | grep Provides | cut -f2 -d'-') main" \
| sudo tee /etc/apt/sources.list.d/i2p.list
</code>
</pre>
Then, add lines like the following to <code>{{ file }}</code>.{% endtrans %}<br>
<br />
For Buster (stable):<br />
<pre>
<code>deb https://deb.i2p2.de/ buster main
deb-src https://deb.i2p2.de/ buster main</code>
</pre>
<br />
For Stretch (oldstable):<br />
<pre>
<code>deb https://deb.i2p2.de/ stretch main
deb-src https://deb.i2p2.de/ stretch main</code>
</pre>
<br />
For Jessie (oldoldstable):<br />
<pre>
<code>deb https://deb.i2p2.de/ jessie main
deb-src https://deb.i2p2.de/ jessie main</code>
</pre>
<br />
For Wheezy (obsolete):<br>
<pre>
<code>deb https://deb.i2p2.de/ wheezy main
deb-src https://deb.i2p2.de/ wheezy main</code>
</pre>
<br />
{% trans -%}Note: If you are running Debian Sid (testing), then you can install I2P directly from Debian's main repository{%- endtrans %}:
<pre>
<code>sudo apt-get install i2p</code>
</pre>
</li>
<li>{% trans repokey=url_for('static', filename='i2p-debian-repo.key.gpg') -%}
Download <a href="{{ repokey }}">the key used to sign the repository</a>:{%- endtrans %}
<pre>
<code>
curl -o i2p-archive-keyring.gpg https://geti2p.net/_static/i2p-archive-keyring.gpg</code>
</pre>
<li>{% trans repokey=url_for('static', filename='i2p-debian-repo.key.asc') -%}
Download <a href="{{ repokey }}">the key used to sign the repository</a>:{%- endtrans %}
<pre>
<code>
curl -o i2p-debian-repo.key.asc https://geti2p.net/_static/i2p-debian-repo.key.asc</code>
</pre>
</li>
<br />
<li>{% trans -%}Display the key fingerprint.{%- endtrans %}
<pre>
<code>
gpg --keyid-format long --import --import-options show-only --with-fingerprint i2p-archive-keyring.gpg
</code>
</pre>
{% trans -%}Verify that this key fingerprint matches the output:{%- endtrans %}
<pre>
<code>
7840 E761 0F28 B904 7535 49D7 67EC E560 5BCF 1346</code>
</pre>
</li>
<br />
<li>{% trans -%}Copy the keyring to the keyrings directory:{%- endtrans %}
<pre>
<code>
sudo cp ~/i2p-archive-keyring.gpg /usr/share/keyrings</code>
</pre>
If you are using a distribution older than Debian Buster, you will also need
to symlink that key to <code>/etc/apt/trusted.gpg.d</code>.
<pre>
<code>
sudo ln -sf /usr/share/keyrings/i2p-archive-keyring.gpg /etc/apt/trusted.gpg.d/i2p-archive-keyring.gpg</code>
</pre>
</li>
<li>
{% trans %}Notify your package manager of the new repository by entering:{% endtrans %}<br />
{% trans -%}Check the fingerprint and owner of the key without importing anything{%- endtrans %}:<br />
<pre>
<code>
gpg -n --import --import-options import-show i2p-debian-repo.key.asc</code>
</pre>
</li>
<li>
{% trans -%} Add the key to APT's keyring{%- endtrans %}:<br />
<pre>
<code>
sudo apt-key add i2p-debian-repo.key.asc</code>
</pre>
</li>
<li>
{% trans %}Notify your package manager of the new repository by entering{% endtrans %}<br />
<pre>
<code>
sudo apt-get update</code>
</pre>{% trans -%}This command will retrieve the latest list of software
from every repository enabled on your system, including the I2P repository
added in step 1.{%- endtrans %}
</li>
<br />
<li>{% trans -%}You are now ready to install I2P! Installing the <code>i2p-keyring</code>
package will ensure that you receive updates to the repository's GPG key.
{%- endtrans %}<br />
<pre>
</pre>
{% trans -%}
This command will retrieve the latest list of software from every
repository enabled on your system, including the I2P repository added in step
1.
{%- endtrans %}
</li><br />
<li>{% trans -%}
You are now ready to install I2P! Installing the <code>i2p-keyring</code>
package will ensure that you receive updates to the repository's GPG key.
{%- endtrans %}<br />
<pre>
<code>
sudo apt-get install i2p i2p-keyring</code>
</pre>
</li>
</pre></li>
</ol>
<p>
{% trans -%}

View File

@ -4,7 +4,7 @@
{% block content %}
<h1 id="i2p-in-docker">{% trans -%}Installing I2P in Docker{%- endtrans %}</h1>
<h3 id="quick-start">{% trans -%}Very quick start{%- endtrans %}</h3>
<p>{% trans -%}If you just want to give I2P a quick try or are using it in a home network, follow these steps{%- endtrans %}:</p>
<p>{% trans -%}If you just want to give I2P a quick try, follow these steps{%- endtrans %}:</p>
<ol>
<li>{% trans -%}Create two directories "i2pconfig" and "i2ptorrents"{%- endtrans %}</li>
<li>{% trans -%}Copy the following text and save it in a file "docker-compose.yml".{%- endtrans %}</li>
@ -21,7 +21,7 @@ services:
<li>{% trans -%}Execute "docker-compose up"{%- endtrans %}</li>
<li>{% trans -%}Start a browser and go to http://127.0.0.1:7657 to complete the setup wizard.{%- endtrans %}</li>
</ol>
<p>{% trans -%}Note that this quick-start approach is not recommended for production deployments on remote servers. Please read the rest of this document for more information.{%- endtrans %}</p>
<p>{% trans -%}<p>Note that this quick-start approach is not suitable for production use. If you want to use I2P in production please read all the instructions on this page.{%- endtrans %}</p>
<h3 id="building-an-image">{% trans -%}Building an image{%- endtrans %}</h3>
<p>{% trans -%}There is an i2P image available over at <a href="https://hub.docker.com">DockerHub</a>. If you do not want to use that one, you can build one yourself:{%- endtrans %}</p>
<pre><code>docker build -t i2p .</code></pre>
@ -36,7 +36,6 @@ services:
<thead>
<tr class="header">
<th>{% trans -%}Port{%- endtrans %}</th>
<th>{% trans -%}Interface{%- endtrans %}</th>
<th>{% trans -%}Description{%- endtrans %}</th>
<th>{% trans -%}TCP/UDP{%- endtrans %}</th>
</tr>
@ -44,81 +43,57 @@ services:
<tbody>
<tr class="odd">
<td>4444</td>
<td>127.0.0.1</td>
<td>{% trans -%}HTTP Proxy{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>4445</td>
<td>127.0.0.1</td>
<td>{% trans -%}HTTPS Proxy{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="odd">
<td>6668</td>
<td>127.0.0.1</td>
<td>{% trans -%}IRC Proxy{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>7654</td>
<td>127.0.0.1</td>
<td>{% trans -%}I2CP Protocol{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="odd">
<td>7656</td>
<td>127.0.0.1</td>
<td>{% trans -%}SAM Bridge TCP{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>7657</td>
<td>127.0.0.1</td>
<td>{% trans -%}Router console{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="odd">
<td>7658</td>
<td>127.0.0.1</td>
<td>{% trans -%}I2P Site{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>7659</td>
<td>127.0.0.1</td>
<td>{% trans -%}SMTP Proxy{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="odd">
<td>7660</td>
<td>127.0.0.1</td>
<td>{% trans -%}POP3 Proxy{%- endtrans %}</td>
<td>{% trans -%}POP Proxy{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>7652</td>
<td>{% trans -%}LAN interface{%- endtrans %}</td>
<td>{% trans -%}UPnP{%- endtrans %}</td>
<td>{% trans -%}TCP{%- endtrans %}</td>
</tr>
<tr class="odd">
<td>7653</td>
<td>{% trans -%}LAN interface{%- endtrans %}</td>
<td>{% trans -%}UPnP{%- endtrans %}</td>
<td>{% trans -%}UDP{%- endtrans %}</td>
</tr>
<tr class="even">
<td>12345</td>
<td>0.0.0.0</td>
<td>{% trans -%}I2NP Protocol{%- endtrans %}</td>
<td>{% trans -%}TCP and UDP{%- endtrans %}</td>
</tr>
</tbody>
</table>
<p>{% trans -%}You probably want at least the Router Console (7657) and the HTTP Proxy (4444). If you want I2P to be able to receive incoming connections from the internet, and hence not think its firewalled, publish the I2NP Protocol port (12345) - but make sure you publish to a different random port, otherwise others may be able to guess youre running I2P in a Docker image.{%- endtrans %}</p>
<h4 id="example">{% trans -%}Networking{%- endtrans %}</h4>
<p>{% trans -%}A best-practices guide for cloud deployments is beyond the scope of this document, but in general you should try to minimize the number of published ports, while exposing only the I2NP ports to the internet. That means that the services in the list above which are bound to 127.0.0.1 (which include the router console) will need to be accessed via other methods like ssh tunneling or be manually configured to bind to a different interface.{%- endtrans %}</p>
<h4 id="example">{% trans -%}Example{%- endtrans %}</h4>
<p>{% trans -%}Here is an example container that mounts <code>i2phome</code> as home directory, <code>i2ptorrents</code> for torrents, and opens HTTP Proxy, IRC, Router Console and I2NP Protocols. It also limits the memory available to the JVM to 256MB.{%- endtrans %}</p>
<pre><code>docker run \

View File

@ -56,7 +56,7 @@ special configuration. You don't even need to close existing Firefox windows.
{%- set name = 'Windows' -%}
{%- set icon = 'images/download/windows.png' -%}
{%- set filename = 'I2P-Profile-Installer-%s-signed.exe' -%}
{%- set hash = '0012fd31a0bbfca36c820055de00682365d7955d53b11e79432fb2b2ea05432c' -%}
{%- set hash = 'eadb338a5895f73e6ed4985a9f7dfdac722f74c9bcdd0bd35957e7dcd5759a3a' -%}
{% call package_outer('windows', name, icon) %}
<div class = "file">

View File

@ -1,96 +1,203 @@
{% extends "global/layout.html" %} {%- from "downloads/macros" import package, package_outer with context -%} {% set release_signer = 'zzz' %} {% block title %}{{ _('Download') }}{% endblock %} {% block content_nav %}
{% extends "global/layout.html" %}
{%- from "downloads/macros" import package, package_outer with context -%}
{% set release_signer = 'zzz' %}
{% block title %}{{ _('Download') }}{% endblock %}
{% block content_nav %}
<script type="text/javascript" src="/_static/site.js"></script>
<ul>
<li><a href="#windows">Windows</a></li>
<li><a href="#mac">Mac OS X</a></li>
<li><a href="#unix">GNU/Linux / BSD / Solaris</a></li>
<li><a href="#deb">Debian / Ubuntu</a></li>
<li><a href="#android">Android</a></li>
<li><a href="#source">{{ _('Source package') }}</a></li>
<li><a href="#auto">{{ _('Automatic updates') }}</a></li>
<li><a href="#update-file">{{ _('Manual updates') }}</a></li>
<li><a href="#windows">Windows</a>
<li><a href="#mac">Mac OS X</a>
<li><a href="#unix">GNU/Linux / BSD / Solaris</a>
<li><a href="#deb">Debian / Ubuntu</a>
<li><a href="#android">Android</a>
<li><a href="#source">{{ _('Source package') }}</a>
<li><a href="#auto">{{ _('Automatic updates') }}</a>
<li><a href="#update-file">{{ _('Manual updates') }}</a>
</ul>
{% endblock %} {% block content %}
{% endblock %}
{% block content %}
<!--<h3>{{ _('Lab') }}</h3>
{% trans lab='/lab' %}
If you would like to try the latest experimental I2P projects, visit the <a href = "{{ lab }}">I2P Lab</a>
{% endtrans -%}-->
<h3>{{ _('Getting Started') }}</h3>
<h4>{% trans %}Basic Steps{% endtrans %}</h4>
<p>{% trans %}For most platforms and systems, setting I2P installed and running will
consist of up to three steps.{% endtrans %}</p>
<ul>
<li><strong>{% trans %}Install Java: {% endtrans %}</strong>{% trans java='https://java.com/download/',
openjdk='http://openjdk.java.net/install/',
icedtea='http://icedtea.classpath.org/wiki/Main_Page',
arm8='https://openjdk.java.net/install/',
ibmsdk7='http://www.ibm.com/developerworks/java/jdk/linux/download.html',
detectjre='https://java.com/en/download/installed.jsp?detect=jre&amp;try=1' %} I2P is written in Java and requires
a Java system to be installed to run. In addition to the I2P download, you need to install Java if you do not have it
already installed. I2P requires Java Runtime Version 7 or higher.
(<a href="{{ java }}">Oracle</a>,
<a href="{{ openjdk }}">OpenJDK</a>, or
<a href="{{ icedtea }}">IcedTea</a>
Java Version 7 or 8 recommended,
except Raspberry Pi: <a href="{{ arm8 }}">OpenJDK 9 for ARM</a>,
PowerPC: <a href="{{ ibmsdk7 }}">IBM Java SE 7 or 8</a>)
<br />
<a href="{{ detectjre }}">Determine your installed Java version here</a>
or type <tt>java -version</tt> at your command prompt.
Only two platforms do not require Java to be installed before I2P is installed, those platforms are:{% endtrans %}</li>
<ul>
<li><strong>{% trans %}Android: {% endtrans %}</strong>{% trans %}Android comes with a Java virtual machine
as part of the platform, which I2P for Android uses. Therefore it is not necessary to install Java to use
I2P for Android.{% endtrans %}</li>
<li><strong>{% trans %}Debian and Ubuntu: {% endtrans %}</strong>{% trans %}On Debian and Ubuntu when using
a .deb package to install, the system will automatically install and configure a Java environment for you.{% endtrans %}</li>
</ul>
<li><strong>{% trans %}Install I2P: {% endtrans %}</strong>{% trans %}Once you have Java installed, you should
run the I2P installer for your platform. This step applies to all systems.{% endtrans %}</li>
<li><strong>{% trans %}Install/Configure a Browser(Optional): {% endtrans %}</strong>{% trans %}Finally, you'll need to
configure applications to use I2P. Many applications can use I2P, but the first application most people configure is a Web
Browser for browsing I2P sites. Detailed instructions are available on the{% endtrans %}
<a href="{{ site_url() }}about/browser-config">{% trans %}Browser Page{% endtrans %}</a>.</li>
</ul><p>
{% trans -%}
Windows: Java 8 is recommended. Java 9 or higher may not work.
{%- endtrans %}
</p>
<h3>{{ _('Release Notes') }}</h3>
<ul>
<li>
<a href="{{ site_url() }}blog/category/release">{{ _('Release Notes') }}</a>
</li>
<li>
<a href="https://raw.githubusercontent.com/i2p/i2p.i2p/master/history.txt">{{ _('Change Log') }}</a>
</li>
<li>
<a href="https://raw.githubusercontent.com/i2p/i2p.i2p/master/debian/changelog">{{ _('Debian Change Log') }}</a>
</li>
<li>
<a href="https://raw.githubusercontent.com/i2p/i2p.android.base/master/CHANGELOG">{{ _('Android Change Log') }}</a>
</li>
</ul>
<ul><li>
<a href="{{ site_url() }}blog/category/release">{{ _('Release Notes') }}</a>
</li><li>
<a href="https://raw.githubusercontent.com/i2p/i2p.i2p/master/history.txt">{{ _('Change Log') }}</a>
</li><li>
<a href="https://raw.githubusercontent.com/i2p/i2p.i2p/master/debian/changelog">{{ _('Debian Change Log') }}</a>
</li><li>
<a href="https://raw.githubusercontent.com/i2p/i2p.android.base/master/CHANGELOG">{{ _('Android Change Log') }}</a>
</li></ul>
<h3>{{ _('Pick your I2P Bundle') }}</h3>
<p>
When you download the I2P software bundle, you get everything you need to connect
and start participating in the I2P network and community. It even includes basic
applications for every user, like e-mail, bittorrent, and a basic I2P Site for
you to personalize and share.
</p>
<p>After you've installed, a set up wizard will help you configure a few
important things like how much bandwidth you would like to share while your
router begins to make connections to the network. After the set up wizard is
complete, you will be directed to the console home page where you can access
the rest of the applications or configure, monitor, or troubleshoot your
I2P connections.</p>
<div class="downloadlist">
<h5>{%- trans %}I2P for Windows{%- endtrans %}</h5>
{% call package('windows') %}
<p>{% trans java='https://java.com/download' -%}The default I2P installer requires Java to be installed. You can obtain it from <a href="{{java}}">Oracle</a> or from your choice of Java distribution. After installing Java, download the file and double-click
to run it. {%- endtrans %}</p>
<h3>{% trans %}Easy Install Bundle For Windows (Beta){% endtrans %}</h3>
<p>{% trans -%}
After installing Java, download the file and double-click to run it.
{%- endtrans %}</p>
<h3>{% trans %}Easy-Install Bundle (Beta){% endtrans %}</h3>
<div class="file">
<p>{% trans %}It is now possible to install all I2P components using a single package (<strong>No Java required</strong>). To try out the new installer, click below. This bundle can also be used to configure a Firefox Profile. It will not interfere
with an existing I2P installation if one exists.{% endtrans %}</p>
<a class="default" href="/nsis">{% trans %}I2P Easy Install Bundle For Windows (Beta){% endtrans %}</a>
<p>{% trans %}It's now possible to install all I2P components using
a single package(<strong>No Java Required</strong>). To try out the new installer, click here.
This bundle can also be used to configure a Firefox Profile. It will not
interfere with an existing I2P installation if one exists.
{% endtrans %}</p>
<a class="default" href="/nsis">{% trans %}I2P Easy Install Bundle (Beta){% endtrans %}</a>
</div>
<h3>{% trans %}Detailed Install Guide{% endtrans %}</h3>
<div class="file">
<p></p>
<a class="default" href="{{ get_url('downloads_windows') }}">{% trans %}Here is a helpful guide to installing I2P for Windows using a separate Java installation and the classic installer.{% endtrans %}</a>
<p></p>
<a class="default" href="{{ get_url('downloads_windows') }}">{% trans %}Here is a helpful guide to installing I2P for Windows using a separate Java installation and the classic installer.{% endtrans %}</a>
</div>
{% endcall %}
{% endcall %}
<h5>{%- trans %}I2P Easy Install Bundle for Mac OS X{%- endtrans %}</h5>
{% call package_outer('mac', "Mac OS X", 'images/download/mac-osx.png') %}
<h3>{% trans %}I2P Easy Install Bundle for Mac OS X{% endtrans %}</h3>
<p>{% trans i2pversion=ver() -%}The I2P Easy Install Bundle for Mac OS X is packaged using OSX's standard ".dmg" package type, which allows it to use Apple's built-in tools to securely, reliably, and easily install the package. It does not require Java to be installed.
{%- endtrans %}</p>
<div class="file">
<a class="default" href="{{ get_url('downloads_mac') }}">{% trans %}I2P Easy Install Bundle for Mac OS X{% endtrans %}</a>
</div>
{% endcall %}
<h5>{%- trans %}I2P for Linux{%- endtrans %}</h5>
{% call package('unix') %}
<p>{% trans i2pversion=ver() -%} The most reliable way to launch the installer is from a terminal like this:
<code>java -jar i2pinstall_{{ i2pversion }}.jar</code>. This will launch the GUI installer. Depending on how your computer is set up, you may be able to start the installer by double-clicking the &quot;i2pinstall_{{ i2pversion }}.jar&quot; file
or right-clicking the file and selecting &quot;Open with Java&quot;. Unfortunately, this behaviour is difficult to predict. {%- endtrans %}</p>
<h5>{%- trans %}I2P for Mac OSX{%- endtrans %}</h5>
{% call package('mac') %}
<p>{% trans i2pversion=ver() -%}
The most reliable way to launch the installer is from a terminal like this:
<code>java -jar i2pinstall_{{ i2pversion }}.jar</code>. This will launch the GUI installer.
Depending on how your computer is set up, you may be able to start the
installer by double-clicking the &quot;i2pinstall_{{ i2pversion }}.jar&quot; file or
right-clicking the file and selecting &quot;Open with Java&quot;.
Unfortunately, this behaviour is difficult to predict.
{%- endtrans %}</p>
<h3>{% trans %}Command line (headless) install:{% endtrans %}</h3>
{% trans i2pversion=ver() -%} I2P can also be installed in a terminal environment, which may be especially useful for servers, containers, or certain virtual machines. If you wish to use the installer without a GUI, you can use the command
<code>java -jar i2pinstall_{{ i2pversion }}.jar -console</code> to follow the install procedure in your terminal. {%- endtrans %} {% endcall %}
{% trans i2pversion=ver() -%}
I2P can also be installed in a terminal environment, which may be especially
useful for servers, containers, or certain virtual machines. If you wish to
use the installer without a GUI, you can use the command
<code>java -jar i2pinstall_{{ i2pversion }}.jar -console</code> to follow
the install procedure in your terminal.
{%- endtrans %}
<h3>{% trans %}DMG Bundle (Beta){% endtrans %}</h3>
If you do not want to use the installer or do not have a Java Runtime Environment available
on your Mac, you can try our latest DMG bundle.
<div class="file">
<a class="default" href="{{ get_url('downloads_mac') }}">{% trans %}Mac OS DMG Bundle (BETA){% endtrans %}</a>
</div>
{% endcall %}
<h5>{%- trans %}I2P for Linux{%- endtrans %}</h5>
{% call package('unix') %}
<p>{% trans i2pversion=ver() -%}
The most reliable way to launch the installer is from a terminal like this:
<code>java -jar i2pinstall_{{ i2pversion }}.jar</code>. This will launch the GUI installer.
Depending on how your computer is set up, you may be able to start the
installer by double-clicking the &quot;i2pinstall_{{ i2pversion }}.jar&quot; file or
right-clicking the file and selecting &quot;Open with Java&quot;.
Unfortunately, this behaviour is difficult to predict.
{%- endtrans %}</p>
<h3>{% trans %}Command line (headless) install:{% endtrans %}</h3>
{% trans i2pversion=ver() -%}
I2P can also be installed in a terminal environment, which may be especially
useful for servers, containers, or certain virtual machines. If you wish to
use the installer without a GUI, you can use the command
<code>java -jar i2pinstall_{{ i2pversion }}.jar -console</code> to follow
the install procedure in your terminal.
{%- endtrans %}
{% endcall %}
<h5>{%- trans %}I2P for Debian and Ubuntu{%- endtrans %}</h5>
{% call package_outer('deb', 'Debian / Ubuntu', 'images/download/debian-ubuntu.png') %}
{% call package_outer('deb', 'Debian / Ubuntu', 'images/download/debian-ubuntu.png') %}
<div class="file">
<a class="default" href="{{ get_url('downloads_debian') }}">{% trans %}Packages for Debian &amp; Ubuntu are available.{% endtrans %}</a>
<a class="default" href="{{ get_url('downloads_debian') }}">{% trans %}Packages for Debian &amp; Ubuntu are available.{% endtrans %}</a>
</div>
<p>{% trans -%} I2P is available in the official repositories for Ubuntu Bionic and later, and Debian Buster and Sid. However, Debian Buster and Ubuntu Bionic (LTS) distributions will have older I2P versions. If you are not running Debian Sid or the
latest Ubuntu release, use our Debian repo or Launchpad PPA to ensure you're running the latest I2P version. {%- endtrans %}</p>
{% endcall %}
<p>{% trans -%}
I2P is available in the official repositories for Ubuntu Bionic and later, and Debian Buster and Sid.
However, Debian Buster and Ubuntu Bionic (LTS) distributions will have older I2P versions.
If you are not running Debian Sid or the latest Ubuntu release,
use our Debian repo or Launchpad PPA to ensure you're running the latest I2P version.
{%- endtrans %}</p>
{% endcall %}
<h5>{%- trans %}I2P for Android{%- endtrans %}</h5>
{% call package('android') %}
{% call package('android') %}
<div class="warning">
{% trans -%} Requires Android 4.0 (Ice Cream Sandwich) or higher. If you earlier installed I2P, unfortunately this release fixes some IPC issues which will force you to uninstall your current installation before installing this. {%- endtrans %} {% trans
-%} 512 MB RAM minimum; 1 GB recommended. {%- endtrans %} {% trans -%} The releases are not compatible with eachother, as they have different signatures. Uninstall them completely before installing any other version. The apk's from download.i2p2.de
are signed by idk. {%- endtrans %}
{% trans -%}
Requires Android 4.0 (Ice Cream Sandwich) or higher. If you earlier installed
I2P, unfortunately this release fixes some IPC issues which will force you to uninstall your current installation before installing this.
{%- endtrans %}
{% trans -%}
512 MB RAM minimum; 1 GB recommended.
{%- endtrans %}
{% trans -%}
The releases are not compatible with eachother, as they have different signatures. Uninstall them
completely before installing any other version. The apk's from download.i2p2.de are signed by idk.
{%- endtrans %}
</div>
{% endcall %}
{% endcall %}
<h5>{%- trans %}I2P for Docker{%- endtrans %}</h5>
{% call package_outer('docker', 'Docker', 'images/download/docker.png') %}
{% call package_outer('docker', 'Docker', 'images/download/docker.png') %}
<div class="meta">
<!--
TODO: next time we do a release and set a git tag, change this to match the
@ -99,7 +206,9 @@ If you would like to try the latest experimental I2P projects, visit the <a href
<code>1de04ec13945a0505e5b23e2bd22ad9cfaac0da3372c972160b58322b1ca48eb</code>
</div>-->
</div>
<p>{% trans -%}I2P is now available as a Docker package from the Docker Hub. You may retrieve the image by running the 'docker pull' command. {%- endtrans %}
<p>{% trans -%}I2P is now available as a Docker package from the Docker Hub.
You may retrieve the image by running the 'docker pull' command.
{%- endtrans %}
</p>
<pre><code>{% trans-%}
docker pull geti2p/i2p
@ -107,50 +216,107 @@ If you would like to try the latest experimental I2P projects, visit the <a href
</pre></code>
<a href="https://hub.docker.com/r/geti2p/i2p/">Docker Hub</a>
<div class="file">
<a class="default" href="{{ get_url('downloads_docker') }}">{% trans %}Additional instructions for configuring your container can be found here.{% endtrans %}</a>
<a class="default" href="{{ get_url('downloads_docker') }}">{% trans %}Additional instructions for configuring your container can be found here.{% endtrans %}</a>
</div>
{% endcall %} {% call package('source') %}
<p>{% trans monotoneurl=site_url('get-involved/guides/new-developers'), gitrepo='http://'+i2pconv('git.repo.i2p')+'/w/i2p.i2p.git', github='https://github.com/i2p/i2p.i2p', android='https://github.com/i2p/i2p.android.base', i2pversion=ver() -%} Alternately,
you can fetch the source via <a href="{{ monotoneurl }}#getting-the-i2p-code">Git</a> from <a href="{{ gitrepo }}">git.repo.i2p</a> or <a href="{{ github }}">Github</a>.
<br /> Run <code>(tar xjvf i2psource_{{ i2pversion }}.tar.bz2 ; cd i2p-{{ i2pversion }} ; ant pkg)</code> then either run the GUI installer or headless install as above. {%- endtrans %}</p>
<p>{% trans monotoneurl=site_url('get-involved/guides/new-developers'), github='https://github.com/i2p/i2p.android.base' -%} Android source is also in <a href="{{ monotoneurl }}#getting-the-i2p-code">git</a> on <a href="{{ android }}">Github</a>. Android
builds require the I2P source. See the documentation in the Android source for additional build requirements and instructions. {%- endtrans %}</p>
{% endcall %}
{% endcall %}
{% call package('source') %}
<p>{% trans monotoneurl=site_url('get-involved/guides/new-developers'),
gitrepo='http://'+i2pconv('git.repo.i2p')+'/w/i2p.i2p.git',
github='https://github.com/i2p/i2p.i2p',
i2pversion=ver() -%}
Alternately, you can fetch the source from <a href="{{ monotoneurl }}#getting-the-i2p-code">monotone</a>
or via Git from <a href="{{ gitrepo }}">git.repo.i2p</a> or <a href="{{ github }}">Github</a>.
<br />
Run <code>(tar xjvf i2psource_{{ i2pversion }}.tar.bz2 ; cd i2p-{{ i2pversion }} ; ant pkg)</code> then either
run the GUI installer or headless install as above.
{%- endtrans %}</p>
<p>{% trans monotoneurl=site_url('get-involved/guides/new-developers'),
github='https://github.com/i2p/i2p.android.base' -%}
Android source is in <a href="{{ monotoneurl }}#getting-the-i2p-code">git</a>
and on <a href="{{ github }}">Github</a>.
Android builds require the I2P source.
See the documentation in the Android source for additional build requirements and instructions.
{%- endtrans %}</p>
{% endcall %}
</div>
{% trans signer=release_signer, signingkey=site_url('get-involved/develop/release-signing-key') -%} The files are signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>. {%- endtrans %} {% trans signer='zlatinb', signingkey=url_for('static', filename='zlatinb.key.crt') -%} The Windows installer is signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>. {%- endtrans %} {% trans signer='mikalv (meeh)', signingkey=url_for('static', filename='mikalv.key.crt') -%} The Mac OS X native installer is signed by {{ signer }} with his Apple Developer ID certificate,
<a href="{{ signingkey }}">whose key is here</a>. {%- endtrans %}
{% trans signer=release_signer,
signingkey=site_url('get-involved/develop/release-signing-key') -%}
The files are signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>.
{%- endtrans %}
{% trans signer='zlatinb',
signingkey=url_for('static', filename='zlatinb.key.crt') -%}
The Windows installer is signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>.
{%- endtrans %}
{% trans signer='mikalv (meeh)',
signingkey=url_for('static', filename='mikalv.key.crt') -%}
The Mac OS X native installer is signed by {{ signer }} with his Apple Developer ID certificate,
<a href="{{ signingkey }}">whose key is here</a>.
{%- endtrans %}
<h3 id="update">{{ _('Updates from earlier releases:') }}</h3>
<p>{% trans -%} Both automatic and manual upgrades are available for the release. {%- endtrans %}</p>
<p>{% trans -%}
Both automatic and manual upgrades are available for the release.
{%- endtrans %}</p>
{% call package_outer('auto', _('Automatic updates'), 'images/download/update-auto.png') %}
<p>{% trans -%} If you are running 0.7.5 or later, your router should detect the new release. To upgrade simply click the 'Download Update' button on your router console when it appears. {%- endtrans %}</p>
<div class="warning">
<p>{% trans -%} Since 0.9.23, some releases are signed by str4d, whose signing key has been in the router since 0.9.9. Routers older than 0.9.9 will fail to verify update files signed by str4d, and will need to be manually updated using the process below.
{%- endtrans %}</p>
</div>
{% endcall %} {% call package('update-file') %}
<p>{% trans -%}
If you are running 0.7.5 or later, your router should detect the
new release. To upgrade simply click the 'Download Update' button on your router console
when it appears.
{%- endtrans %}</p>
<div class="warning">
<p>{% trans -%}
Since 0.9.23, some releases are signed by str4d, whose signing key has been in the router
since 0.9.9. Routers older than 0.9.9 will fail to verify update files signed by str4d,
and will need to be manually updated using the process below.
{%- endtrans %}</p>
</div>
{% endcall %}
{% call package('update-file') %}
<ol>
<li>
{% trans -%} Download the file to your I2P installation directory and <b>rename as i2pupdate.zip</b>. (alternately, you can get the source as above and run "ant updater", then copy the resulting i2pupdate.zip to your I2P installation directory).
You do NOT need to unzip the file. {%- endtrans %}
</li>
<li>
{% trans -%} Click <a href="http://localhost:7657/configservice.jsp">"Restart"</a> {%- endtrans %}
</li>
<li>
{% trans -%} Grab a cup of coffee and come back in 11 minutes {%- endtrans %}
</li>
<li>
{% trans -%}
Download the file to your I2P
installation directory and <b>rename as i2pupdate.zip</b>.
(alternately, you can get the source as above and run "ant updater", then copy the
resulting i2pupdate.zip to your I2P installation directory). You do
NOT need to unzip the file.
{%- endtrans %}
</li>
<li>
{% trans -%}
Click <a href="http://localhost:7657/configservice.jsp">"Restart"</a>
{%- endtrans %}
</li>
<li>
{% trans -%}
Grab a cup of coffee and come back in 11 minutes
{%- endtrans %}
</li>
</ol>
{% endcall %} {% trans signer=release_signer, signingkey=site_url('get-involved/develop/release-signing-key') -%} The file is signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>. {%- endtrans %}
{% endcall %}
{% trans signer=release_signer,
signingkey=site_url('get-involved/develop/release-signing-key') -%}
The file is signed by {{ signer }},
<a href="{{ signingkey }}">whose key is here</a>.
{%- endtrans %}
<h3>{{ _('Previous Releases') }}</h3>
{% trans echelon=i2pconv('echelon.i2p') -%} Previous releases are available on <a href="http://code.google.com/p/i2p/downloads/list?can=1">Google Code</a> and <a href="https://launchpad.net/i2p/trunk">Launchpad</a> and within the I2P network on <a href="http://{{ echelon }}/">{{ echelon }}</a>.
{%- endtrans %} {% endblock %}
{% trans echelon=i2pconv('echelon.i2p') -%}
Previous releases are available on <a href="http://code.google.com/p/i2p/downloads/list?can=1">Google Code</a>
and <a href="https://launchpad.net/i2p/trunk">Launchpad</a>
and within the I2P network on <a href="http://{{ echelon }}/">{{ echelon }}</a>.
{%- endtrans %}
{% endblock %}

View File

@ -1,12 +1,12 @@
{% extends "global/layout.html" %}
{%- from "downloads/macros" import package_outer with context -%}
{% block title %}Mac OS X Easy Install Bundle{% endblock %}
{% block title %}Mac OS DMG Bundle (BETA){% endblock %}
{% block content %}
<h1>{{ _('Mac OS X Easy Install Bundle') }}</h1>
<h1>{{ _('Mac OS DMG Bundle (BETA)') }}</h1>
<p>{% trans -%}
We are excited to offer you a DMG-based bundle for Mac OS X. It installs and behaves
the same way many other Mac OS X applications do and does not require a Java
We are excited to offer you a DMG bundle for Mac OS. It installs and behaves
the same way many other Mac OS applications do and does not require a Java
Runtime Environment to be available.
{%- endtrans %}</p>
<p>{% trans perf="https://i2pgit.org/i2p-hackers/i2p-jpackage-mac/-/issues/1" -%}
@ -40,18 +40,18 @@ it makes I2P easier to install and work with on Apple computers by using tools
that are familiar and built-into the operating system.
{%- endtrans %}</p>
{%- set name = 'OSX' -%}
{%- set name = 'Windows' -%}
{%- set icon = 'images/download/mac-osx.png' -%}
{%- set filename = 'I2P-%s.dmg' -%}
{%- set hash = '18cb22cfcc3cbe0cec150e89a394d1a35703cb508ed627ef48084b7ba7c90dde' -%}
{%- set hash = '07c729c26fc8a31c0e74fe7b4de7be1f8e390d018748322ada35b29de9d' -%}
{% call package_outer('osx', name, icon) %}
<div class = "file">
<a class = "default" href="{{ url_for('downloads_redirect', version=mver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=mver(filename) )}}">
<span class = "name">{{ mver(filename) }}</span><br/>
<a class = "default" href="{{ url_for('downloads_redirect', version=ver(), net=def_mirror.net, protocol=def_mirror.protocol, domain=def_mirror.domain, file=ver(filename) )}}">
<span class = "name">{{ ver(filename) }}</span><br/>
<span class="mirror">{{ _('Mirror:') }} <img src="{{ url_for('static', filename='images/flags/'+def_mirror.country+'.png') }}" /> {{ def_mirror.org }}</span>
</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=mver(), file=mver(filename)) }}">{{ _('select alternate mirror') }}</a>
<a class="mirrors" href="{{ get_url('downloads_select', version=ver(), file=ver(filename)) }}">{{ _('select alternate mirror') }}</a>
</div>
<div class="meta">
<div class="hash">

View File

@ -1,16 +1,16 @@
{% set i2pinstall_windows_hash = '738b7608d7f2c6433dcde8a1cbd7ea025d281e90b45c8695385004625a4c88d1' %}
{% set i2pinstall_jar_hash = 'ee49cad06fd73e75ed25eaab342f8167e447b901205ee8593a31b5a599d892af' %}
{% set i2psource_hash = '525f2ad3267f130b81296b3dd24102fdcf2adf098d54272da4e1be4abd87df04' %}
{% set i2pupdate_hash = '3379fe757eecbf20688ee37685fe52f15ac04fd59e891c6a059a33d519c4ff19' %}
{% set i2p_android_hash = '0e6196e601b99455d03bca190f6df10d68ef1337f023edcad9ec8953362795a7' %}
{% set i2p_macnative_hash = '18cb22cfcc3cbe0cec150e89a394d1a35703cb508ed627ef48084b7ba7c90dde' %}
{% set i2pinstall_windows_hash = '2c9c382852e17e124d77a2bf28f95056599fd458f8de77adcf8e2aaa22b3ef81' %}
{% set i2pinstall_jar_hash = '8c843c90870223b4808065761d059a02b168b74daddd1773c36f0a0245e201f9' %}
{% set i2psource_hash = '26e5f4d95b1a0766870f97b30e57c9a8e98690279c3bf09198e30effabecc450' %}
{% set i2pupdate_hash = 'ea1b4b8095f4d6f5568ce879242e1d5b077de1beb4366f4a75a75cffd559ee7f' %}
{% set i2p_android_hash = '6ed5622ea592f4e5d24723a8525147d4bd30b94ada7b2e6613c683df583e826a' %}
{% set i2p_macnative_hash = '70447e8a352654afd940cfc6c05f094732de7ab05db7c42c173e49f37259d601' %}
{% set i2p_windows_subver = '' %}
{% set i2p_macosx_launcher_version = '1.8.0' %}
{% set i2p_macosx_launcher_version = '0.1.8' %}
{% set i2p_android_version = '1.8.0' %}
{% set i2p_android_version = '1.5.0' %}
{% set i2p_android_version_kytv = '0.9.22' %}
{% set i2p_android_version_fdroid = '0.9.50' %}
{% set i2p_android_version_fdroid = '0.9.47-1' %}
{% macro package_outer(type, name, icon) -%}
@ -65,10 +65,10 @@
{%- elif type == 'unix' -%}
{%- set name = 'Linux / BSD / Solaris' -%}
{%- set icon = 'images/download/freebsd-tux.png' -%}
{%- set filename = 'i2pinstall_%s.jar' -%}
{%- set signame = 'i2pinstall_%s.jar.sig' -%}
{%- set hash = i2pinstall_jar_hash -%}
{%- endif -%}
{%- set filename = 'i2pinstall_%s.jar' -%}
{%- set signame = 'i2pinstall_%s.jar.sig' -%}
{%- set hash = i2pinstall_jar_hash -%}
{%- endif -%}
{%- set details = caller() -%}
@ -77,8 +77,8 @@
{%- if type == 'android' %}
<!-- do not use url_for here -->
<h3>{% trans %}Download I2P for {% endtrans %}{{name}}</h3>
<a class="default" href="https://download.i2p2.no/android/current/app.apk">{% trans %}Outside I2P{% endtrans %} ({{ i2p_android_version }})</a>
<a class="sig" href="https://download.i2p2.no/android/current/app.apk.asc">sig</a>
<a class="default" href="https://download.i2p2.de/android/current/app.apk">{% trans %}Outside I2P{% endtrans %} ({{ i2p_android_version }})</a>
<a class="sig" href="https://download.i2p2.de/android/current/app.apk.asc">sig</a>
<!-- do not use i2pconv here -->
<!--<a class="default" href="http://update.killyourtv.i2p/i2p.apk">{% trans %}Inside I2P{% endtrans %} ({{ i2p_android_version_kytv }})</a> -->
<a class="default" href="https://play.google.com/store/apps/details?id=net.i2p.android">Google Play ({{ i2p_android_version }})</a>

View File

@ -1,7 +1,7 @@
{"net": "clearnet", "protocol": "https", "domain": "files.i2p-projekt.de", "path": "/%(version)s/%(file)s", "org": "i2p-projekt", "country": "de"}
{"net": "clearnet", "protocol": "https", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
#{"net": "clearnet", "protocol": "https", "domain": "launchpad.net", "path": "/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "country": "us"}
{"net": "i2p", "protocol": "http", "domain": "mgp6yzdxeoqds3wucnbhfrdgpjjyqbiqjdwcfezpul3or7bzm4ga.b32.i2p", "path": "/%(version)s/%(file)s", "org": "idk.i2p"}
{"net": "i2p", "protocol": "http", "domain": "mgp6yzdxeoqds3wucnbhfrdgpjjyqbiqjdwcfezpul3or7bzm4ga.b32.i2p", "path": "/releases/%(version)s/%(file)s", "org": "idk.i2p"}
{"net": "clearnet", "protocol": "http", "domain": "download.i2p2.de", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"net": "clearnet", "protocol": "http", "domain": "download.i2p2.no", "path": "/releases/%(version)s/%(file)s", "org": "sigterm.no", "country": "no"}
{"net": "clearnet", "protocol": "https", "domain": "eyedeekay.github.io", "path": "/files/releases/%(version)s/%(file)s", "org": "idk.i2p"}

View File

@ -4,6 +4,7 @@
<li><a href="https://reddit.com/r/i2p"><div class="footeritem"><img class="socialfooter" src="/_static/images/social/reddit-alien-brands.png"><span>Reddit</span></div></a></li>
<li><a href="https://twitter.com/i2p"><div class="footeritem"><img class="socialfooter" src="/_static/images/social/twitter-brands.png"><span>Twitter</span></div></a></li>
<li><a href="https://i2pgit.org/"><div class="footeritem"><img class="socialfooter" src="/_static/images/social/gitlab-brands.png"><span>Gitlab</span></div></a></li>
</ul>
</div>
<div id="footermenu" class="second">
@ -17,7 +18,7 @@
</div>
<div id="footermenu" class="third">
<ul>
<li><a href="https://i2pgit.org/"><div class="footeritem"><img class="socialfooter" src="/_static/images/social/gitlab-brands.png"><span>Gitlab</span></div></a></li>
<li><a href="{{ site_url('get-involved/donate') }}"><div class="footeritem"><span>{{ _('Donate') }}</span></div></a></li>
<li><a href="{{ site_url('get-involved') }}"><div class="footeritem"><span>{{ _('Get involved!') }}</span></div></a></li>
<li><a href="{{ site_url('faq') }}"><div class="footeritem"><span>{{ _('FAQ') }}</span></div></a></li>
<!--<li><a href="{{ site_url('get-involved/guides/new-developers') }}"><div class="footeritem"><span>Develop</span></div></a></li>-->

View File

@ -64,6 +64,7 @@
</li>
<li><a href="{{ site_url('contact') }}"><div class="menuitem"><span>{{ _('Contact and Team') }}</span></div></a></li>
</ul>
<li><a href="{{ site_url('get-involved/donate') }}"><div class="menuitem"><span class="donateitem">{{ _('Donate') }}</span></div></a></li>
<li class="has-sub"><div class="menuitem"><span>{{ _('Community') }}</span></div>
<ul>
<li><a href="http://{{ i2pconv('i2pforum.i2p') }}/"><div class="menuitem"><span>{{ _('Forums') }}</span></div></a></li>

View File

@ -32,19 +32,6 @@
# Proposed new sections: application privacy, data anonymization, ...
#
@inproceedings {239068,
author = {Nguyen Phong Hoang and Sadie Doreen and Michalis Polychronakis},
title = {Measuring I2P Censorship at a Global Scale},
booktitle = {9th USENIX Workshop on Free and Open Communications on the Internet (FOCI 19)},
year = {2019},
address = {Santa Clara, CA},
url = {https://www.usenix.org/conference/foci19/presentation/hoang},
www_pdf_url = {https://www.usenix.org/system/files/foci19-paper_hoang.pdf},
publisher = {USENIX Association},
month = {August},
www_section = traffic,
}
@inproceedings{orignal2015,
title = {A Transparent Implementation Of The Signature In Scheme EdDSA},
author = {Losev, V. I.},
@ -77,7 +64,7 @@
@misc{gehl_2018,
place={Cambridge, MA},
title={Weaving the dark web: Legitimacy on Freenet, Tor, and I2P},
title={Weaving the dark web: a trial of legitimacy on FreeNet, Tor, and I2P},
howpublished={The MIT Press},
author={Gehl, Robert W.},
year={2018},

View File

@ -11,7 +11,7 @@ developed by community members.
<h2>i2pd</h2>
<p> {% trans i2pd='http://i2pd.website' -%}
<a href="{{ i2pd }}">i2pd</a> is a I2P client implementation in C++.
As of early 2016, i2pd has become stable enough to be used in
As of early 2016, i2pd is became stable enough to be used in
production, and since summer 2016 it fully implements all I2P APIs.
{%- endtrans %}</p>

View File

@ -1,6 +1,6 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Presentations on I2P') }}{% endblock %}
{% block lastupdated %}2022-03{% endblock %}
{% block lastupdated %}2020-11{% endblock %}
{% block content %}
<p>{% trans papers=site_url('papers') -%}
Following are links to presentations, videos, and tutorials about I2P. Links to research papers on I2P are available <a href="{{ papers }}">here</a>.
@ -145,6 +145,34 @@ idk
<h2>{{ _('Tutorials') }}</h2>
<ul>
<li>{% trans link='http://www.youtube.com/watch?v=5J3nh1DoRMw' -%}
<a href="{{ link }}">I2P Windows Tutorial</a>
(Youtube Video)
This guide will show you how to install I2P in Windows XP.
By <a href="http://telecomix.org/">Telecomix</a>
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=QeRN2G9VW5E' -%}
<a href="{{ link }}">I2P Debian Tutorial</a>
(Youtube Video)
This will guide you through how to install I2P on a Debian Linux System.
By <a href="http://telecomix.org/">Telecomix</a>
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=2ylW85vc7SA' -%}
<a href="{{ link }}">How to set up anonymous site in I2P</a>
(Youtube Video)
How to set up an anonymous web site in I2P.
By <a href="http://telecomix.org/">Telecomix</a>
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=d8mvGZqVgE4' -%}
<a href="{{ link }}">I2P Tutorial Mac OS X</a>
(Youtube Video)
A tutorial on how to run i2p on Mac OS X and how to connect to irc.telecomix.i2p.
By <a href="http://telecomix.org/">Telecomix</a>
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=5jv7tVVJdTQ' -%}
<a href="{{ link }}">Felix Atari explains the basic principles of I2P</a>
(Youtube Video)
@ -152,6 +180,25 @@ Agent Felix Atari of the Telecomix Crypto Munitions Bureau.
By <a href="http://telecomix.org/">Telecomix</a>
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=WyN_QK-_3GA' -%}
<a href="{{ link }}">How to get onto I2P, the anonymous P2P Darknet (Windows Install)</a>
(Youtube Video)
This tutorial shows how to install and configure software needed to access I2P.
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=q4owyd_CaGc' -%}
<a href="{{ link }}">How to connect to I2P</a>
(Youtube Video)
How to install I2P on Ubuntu.
{%- endtrans %}</li>
<li>{% trans link='http://www.irongeek.com/i.php?page=videos/i2p-darknet-software-in-linux' -%}
<a href="{{ link }}">Installing the I2P darknet software in Linux</a>
(Video)
Adrian Crenshaw.
January 2011
{%- endtrans %}</li>
<li>{% trans link='http://www.youtube.com/watch?v=NV90TRs_pGE' -%}
<a href="{{ link }}">Short garlic routing animation</a>
(Youtube Video)
@ -236,34 +283,13 @@ Robert Lei, December 31, 2018
<li>{% trans mhatta='https://medium.com/@mhatta' -%}
<a href="{{ mhatta }}">Articles by I2P contributor Masayuki Hatta on Medium.com</a>
2019
{% endtrans %}</li>>
{% endtrans %}
<li>{% trans ctrl='https://www.ctrl.blog/entry/proxy-pac-i2p-onion.html' -%}
<li>{% trans ctrl='https://medium.com/@mhatta' -%}
<a href="{{ ctrl }}">Enabling both .onion and .i2p routing with Proxy Auto-Configuration</a>
Daniel Aleksandersen, February 7 2019
{%- endtrans %}</li>
<li>{% trans advent='https://www.heise.de/news/Open-Source-Adventskalender-Die-Darknets-Freenet-und-I2P-6302109.html' -%}
<a href="{{ advent }}">Open-Source-Adventskalender: Die Darknets Freenet und I2P</a>
Stefan Mey, December 21, 2021
{%- endtrans %}</li>
<li>
<a href="https://torrentfreak.com/i2p-the-censorship-resistant-anonymous-p2p-network-is-20-years-old-220306/">I2P: The Censorship Resistant Anonymous P2P Network is 20 Years Old</a>
- Interview with Lance James, zlatinb, and zzz -
TorrentFreak,
March 6, 2022
</li>
<li>
Network Privacy via I2P -
Interview with idk and Sadie -
Opt Out Podcast Season 2 Episode 10
(<a href="https://www.buzzsprout.com/1790481/10173995-network-privacy-via-i2p-w-idk-and-sadie.mp3">mp3</a>)
(<a href="https://www.youtube.com/watch?v=-VqXfUxVQoA">YouTube Video</a>),
March 6, 2022
</li>
</ul>
<h2>{{ _('Other') }}</h2>

View File

@ -91,16 +91,6 @@ network.
<td valign="top" class="blue">[{{ _('vacant') }}]</td>
<td valign="top"><i>{{ _('threat model / crypto expert') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://i2pgit.org/">Gitlab</a> admin</b></td>
<td valign="top">idk</td>
<td valign="top"><i>{{ _('Manage the project gitlab') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://i2pgit.org/dashboard/issues">Issue Tracker(Replaces Trac)</a> admin</b></td>
<td valign="top">idk</td>
<td valign="top"><i>{{ _('Manage the project bug tracker') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://trac.i2p2.de/">Trac</a> admin</b></td>
<td valign="top">Meeh</td>

View File

@ -161,17 +161,12 @@ GPG Key fingerprint: <tt>EA27 06D6 14F5 28DB 764B F47E CFCD C461 75E6 694A</tt>
<td valign="top"><i>{{ _('threat model / crypto expert') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://i2pgit.org/">Gitlab</a> admin</b></td>
<td valign="top">idk</td>
<td valign="top"><i>{{ _('Manage the project gitlab') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://i2pgit.org/dashboard/issues">Issue Tracker(Replaces Trac)</a> admin</b></td>
<td valign="top">idk</td>
<td valign="top"><b><a href="https://trac.i2p2.de/">Trac</a> admin</b></td>
<td valign="top">Meeh</td>
<td valign="top"><i>{{ _('Manage the project bug tracker') }}</i></td>
</tr>
<tr>
<td valign="top"><b><a href="https://trac.i2p2.de/">Trac</a>backup webserver admin</b></td>
<td valign="top"><b><a href="https://trac.i2p2.de/">Trac</a> webserver admin</b></td>
<td valign="top">Meeh</td>
<td valign="top"><i>{{ _('manage the public project webservers') }}</i></td>
</tr>

View File

@ -23,7 +23,7 @@ either protocol may be carried by either transport.
{%- endtrans %}</p>
<h2>{% trans %}Application Guide{% endtrans %}</h2>
<p>{% trans url='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/datagram/package-summary.html',
<p>{% trans url='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/datagram/package-summary.html',
sam= site_url('docs/api/sam'),
socks=site_url('docs/api/socks') -%}
Applications written in Java may use the
@ -70,7 +70,7 @@ Applications may add 'from' and 'to' ports to the I2CP (gzip) header as describe
the <a href="{{ i2cp }}#format">I2CP page</a>.
{%- endtrans %}</p>
<p>{% trans i2psession='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSession.html' -%}
<p>{% trans i2psession='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/I2PSession.html' -%}
There is no method within the datagram API to specify whether it is non-repliable (raw)
or repliable. The application should be designed to expect the appropriate type.
The I2CP protocol number or port should be used by the application to
@ -88,8 +88,8 @@ PROTO_DATAGRAM = 17
PROTO_DATAGRAM_RAW = 18
</li></ul>
<p>{% trans i2psession='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSession.html',
i2psessionmuxed='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSessionMuxedImpl.html' -%}
<p>{% trans i2psession='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/I2PSession.html',
i2psessionmuxed='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/I2PSessionMuxedImpl.html' -%}
The protocols and ports may be set in I2CP's
<a href="{{ i2psession }}">I2PSession API</a>,
as implemented in

View File

@ -1,7 +1,6 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('I2PControl - Remote Control Service') }}{% endblock %}
{% block lastupdated %}2022-01{% endblock %}
{% block accuratefor %}0.9.52{% endblock %}
{% block lastupdated %}February 2018{% endblock %}
{% block content %}
<p>{% trans itoopie='http://'+i2pconv('itoopie.i2p')+'/' -%}
I2P enables a <a href="http://en.wikipedia.org/wiki/JSON-RPC">JSONRPC2</a> interface via the plugin <a href="{{ itoopie }}">I2PControl</a>.
@ -118,15 +117,8 @@ Parameters are only provided in a named way (maps).
<li>Token &ndash; [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}</li>
</ul>
<ul>{{ _('Response:') }}
<li>**i2p.router.status &ndash; [String] {% trans %}What the status of the router is.{% endtrans %}
A free-format, translated string intended for display to the user.
May include information such as whether the router is accepting participating tunnels.
Content is implementation-dependent.
</li>
<li>**i2p.router.uptime &ndash; [long] {% trans %}What the uptime of the router is in ms.{% endtrans %}
Note: i2pd routers prior to version 2.41 returned this value as a string.
For compatibility, clients should handle both string and long.
</li>
<li>**i2p.router.status &ndash; [String] {% trans %}What the status of the router is.{% endtrans %}</li>
<li>**i2p.router.uptime &ndash; [long] {% trans %}What the uptime of the router is in ms.{% endtrans %}</li>
<li>**i2p.router.version &ndash; [String] {% trans %}What version of I2P the router is running.{% endtrans %}</li>
<li>**i2p.router.net.bw.inbound.1s &ndash; [double] {% trans %}The 1 second average inbound bandwidth in Bps.{% endtrans %}</li>
<li>**i2p.router.net.bw.inbound.15s &ndash; [double] {% trans %}The 15 second average inbound bandwidth in Bps.{% endtrans %}</li>
@ -153,7 +145,7 @@ Parameters are only provided in a named way (maps).
</li>
<li>**i2p.router.net.tunnels.participating &ndash; [long] {% trans %}How many tunnels on the I2P net are we participating in.{% endtrans %}</li>
<li>**i2p.router.netdb.activepeers &ndash; [long] {% trans %}How many peers have we communicated with recently.{% endtrans %}</li>
<li>**i2p.router.netdb.fastpeers &ndash; [long] {% trans %}How many peers are considered 'fast'.{% endtrans %}</li>
<li>**i2p.router.netdb.fastpeers &ndasg; [long] {% trans %}How many peers are considered 'fast'.{% endtrans %}</li>
<li>**i2p.router.netdb.highcapacitypeers &ndash; [long] {% trans %}How many peers are considered 'high capacity'.{% endtrans %}</li>
<li>**i2p.router.netdb.isreseeding &ndash; [boolean] {% trans %}Is the router reseeding hosts to its NetDB?{% endtrans %}</li>
<li>**i2p.router.netdb.knownpeers &ndash; [long] {% trans %}How many peers are known to us (listed in our NetDB).{% endtrans %}</li>
@ -197,10 +189,6 @@ Parameters are only provided in a named way (maps).
<li>Token &ndash; [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method. If null is submitted, current setting will be returned.{% endtrans %}</li>
</ul>
<ul>{{ _('Response:') }}
<li>
Note: i2pd routers prior to version 2.41 returned some of these values as numbers.
For compatibility, clients should handle both strings and numbers.
</li>
<li>**i2p.router.net.ntcp.port &ndash; [String] {% trans %}If requested, returns the port used for the TCP transport.{% endtrans %}</li>
<li>**i2p.router.net.ntcp.hostname &ndash; [String] {% trans %}If requested, returns the hostname used for the TCP transport.{% endtrans %}</li>
<li>**i2p.router.net.ntcp.autoip &ndash; [String] {% trans %}If requested, returns the method used for automatically detecting ip for the TCP transport.{% endtrans %}</li>

View File

@ -4,7 +4,7 @@
<h2>{% trans %}Note{% endtrans %}</h2>
<p>{% trans streaming=site_url('docs/api/streaming'), api='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/package-summary.html' -%}
<p>{% trans streaming=site_url('docs/api/streaming'), api='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/package-summary.html' -%}
The ministreaming library has been enhanced and extended by the
"full" <a href="{{ streaming }}">streaming library</a>.
Ministreaming is deprecated and is incompatible with today's applications.
@ -42,7 +42,7 @@ messages sent (or include any application level ACK or SACK), so it must wait
on average twice the time it takes to send a message before sending another.
{%- endtrans %}</p>
<p>{% trans api='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/package-summary.html',
<p>{% trans api='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/package-summary.html',
samv3=site_url('docs/api/samv3') -%}
Even with those issues, the ministreaming library performs quite well in many
situations, and its <a href="{{ api }}">API</a>

View File

@ -389,7 +389,7 @@ followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_Priv
followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_SigningPrivateKey">Signing Private Key</a>,
which is 884 or more base 64 characters (663 or more bytes in binary),
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
----------------------------------------------------------------------
RESULT values

View File

@ -446,7 +446,7 @@ followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_Priv
followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_SigningPrivateKey">Signing Private Key</a>,
which is 884 or more base 64 characters (663 or more bytes in binary),
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
----------------------------------------------------------------------
RESULT values

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}SAM V3{% endblock %}
{% block lastupdated %}2022-06{% endblock %}
{% block accuratefor %}1.8.0{% endblock %}
{% block lastupdated %}2021-05{% endblock %}
{% block accuratefor %}0.9.50{% endblock %}
{% block content %}
<p>SAM is a simple client protocol for interacting with I2P.
SAM is the recommended protocol for non-Java applications to connect to the I2P network,
@ -67,7 +67,7 @@ Deprecated versions:
<tr class="odd">
<td>sam3</td>
<td>Go</td>
<td>3.3</td>
<td>3.2</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
@ -137,15 +137,6 @@ Deprecated versions:
<td><a href="https://github.com/solatis/haskell-network-anonymous-i2p">github.com/solatis/haskell-network-anonymous-i2p</a></td>
</tr>
<tr class="odd">
<td>i2p-sam</td>
<td>Javascript</td>
<td>3.1</td>
<td>yes</td>
<td>no</td>
<td>yes</td>
<td><a href="https://codeberg.org/diva.exchange/i2p-sam">https://codeberg.org/diva.exchange/i2p-sam</a></td>
</tr>
<tr class="even">
<td>node-i2p</td>
<td>Javascript</td>
<td>3.0</td>
@ -154,7 +145,7 @@ Deprecated versions:
<td>unk</td>
<td><a href="https://github.com/redhog/node-i2p">github.com/redhog/node-i2p</a></td>
</tr>
<tr class="odd">
<tr class="even">
<td>Jsam</td>
<td>Java</td>
<td>3.1</td>
@ -163,7 +154,7 @@ Deprecated versions:
<td>no</td>
<td><a href="https://github.com/eyedeekay/Jsam">github.com/eyedeekay/Jsam</a></td>
</tr>
<tr class="even">
<tr class="odd">
<td>i2pdotnet</td>
<td>.Net</td>
<td>3.0</td>
@ -172,7 +163,7 @@ Deprecated versions:
<td>unk</td>
<td><a href="https://github.com/SamuelFisher/i2pdotnet">github.com/SamuelFisher/i2pdotnet</a></td>
</tr>
<tr class="odd">
<tr class="even">
<td>i2p.rb</td>
<td>Ruby</td>
<td>3.0</td>
@ -181,24 +172,6 @@ Deprecated versions:
<td>no</td>
<td><a href="https://github.com/dryruby/i2p.rb">github.com/dryruby/i2p.rb</a></td>
</tr>
<tr class="even">
<td>solitude</td>
<td>Rust</td>
<td>3.1</td>
<td>WIP</td>
<td>WIP</td>
<td>WIP</td>
<td><a href="https://github.com/syvita/solitude">github.com/syvita/solitude</a></td>
</tr>
<tr class="odd">
<td>i2pSAM-Qt</td>
<td>C++</td>
<td>3.1</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
<td><a href="https://notabug.org/acetone/i2pSAM-Qt">notabug.org/acetone/i2pSAM-Qt</a></td>
</tr>
</tbody>
</table>
@ -542,7 +515,7 @@ followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_Sign
optionally followed by the <a href="{{ site_url('docs/spec/common-structures') }}#struct_OfflineSignature">Offline Signature</a>,
which is 663 or more bytes in binary and 884 or more bytes in base 64,
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
</p><p>
If the signing private key is all zeros, the
@ -605,7 +578,7 @@ followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_Sign
optionally followed by the <a href="{{ site_url('docs/spec/common-structures') }}#struct_OfflineSignature">Offline Signature</a>,
which is 663 or more bytes in binary and 884 or more bytes in base 64,
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
</p><p>
If the SESSION CREATE contained a signing private key of all zeros and
@ -931,41 +904,8 @@ soon as the "forwarding" socket is closed.
<h3>SAM Datagrams</h3>
<p>
SAMv3 provides mechanisms to send and receive datagrams over local datagram sockets.
Some SAMv3 implementations also support the older v1/v2 way of sending/receiving
datagrams over the SAM bridge socket. Both are documented below.
</p><p>
I2P supports two types of datagrams:
</p>
<ul><li>
"Repliable" datagrams are prefixed with the destination of the sender,
and contain the signature of the sender, so the receiver
may verify that the sender's destination was not spoofed,
and may reply to the datagram.
</li><li>
"Raw" datagrams do not contain the destination of the sender or a signature.
</li></ul>
<p>
Default I2CP ports are defined for both repliable and raw datagrams.
The I2CP port may be changed for raw datagrams.
</p><p>
A common protocol design pattern is for repliable datagrams to be sent
to servers, with some identifier included, and the server to
respond with a raw datagram that includes that indentifier,
so the response may be correlated with the request.
This design pattern eliminates the substantial overhead of repliable datagrams
in replies.
All choices of I2CP protocols and ports are application-specific,
and designers should take these issues into consideration.
</p><p>
See also the important notes on datagram MTU in the section below.
</p>
<h4 id="v3dgsend">Sending Repliable or Raw Datagrams</h4>
<h3 id="v3dgsend">SAM Datagrams : Sending Repliable or Raw Datagrams</h3>
<p>
While I2P doesn't inherently contain a FROM address, for ease of use
an additional layer is provided as repliable datagrams - unordered
@ -1040,7 +980,7 @@ data of the message to the specified destination.
For an alternate method of sending repliable and raw datagrams, see <a href="#dgsend">DATAGRAM SEND and RAW SEND</a>.
</p>
<h4>SAM Repliable Datagrams : Receiving a Datagram</h4>
<h3>SAM Repliable Datagrams : Receiving a Datagram</h3>
<p>
Received datagrams are written by SAM on the socket from which the
datagram session was opened, if a forwarding PORT is not specified in the SESSION CREATE
@ -1071,8 +1011,7 @@ or other fields, merely the data that the sender provided. This
continues until the session is closed (by the client dropping the
connection).
<h4>Forwarding Raw or Repliable Datagrams</h4>
<h3>SAM Datagrams : Forwarding Raw or Repliable Datagrams</h3>
<p>
When creating a datagram session, the client can ask SAM to forward
incoming messages to a specified ip:port. It does so by issuing the
@ -1098,7 +1037,7 @@ CREATE command with PORT and HOST options:
optionally followed by the <a href="{{ site_url('docs/spec/common-structures') }}#struct_OfflineSignature">Offline Signature</a>,
which is 884 or more base 64 characters (663 or more bytes in binary),
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
</p><p>
Offline signatures are only supported for RAW datagrams.
@ -1162,7 +1101,7 @@ depending on signature type.
</p>
<h4>SAM Anonymous (Raw) Datagrams</h4>
<h3>SAM Anonymous (Raw) Datagrams</h3>
<p>
Squeezing the most out of I2P's bandwidth, SAM allows clients to send
and receive anonymous datagrams, leaving authentication and reply
@ -1222,30 +1161,7 @@ the forwarded raw datagram will be prepended with a header line as follows:
For an alternate method of sending anonymous datagrams, see <a href="#dgsend">RAW SEND</a>.
</p>
<h4>V3 Datagram MTU Considerations</h4>
<p>
I2P Datagrams may be larger than the typical internet MTU of 1500.
Locally sent datagrams and forwarded repliable datagrams
prefixed with the 516+ byte base64 destination are likely to exceed that MTU.
However, localhost MTUs on Linux systems are typically much larger,
for example 65536. Localhost MTUs will vary by OS.
I2P Datagrams will never be larger than 65536.
Datagram size is dependent on the application protocol.
</p><p>
If the SAM client is local to the SAM server and the system supports
a larger MTU, then the datagrams will not be fragmented locally.
However, if the SAM client is remote, then IPv4 datagrams would
be fragmented and IPv6 datagrams would fail (IPv6 does not support UDP fragmentation).
</p><p>
Client library and application developers should be aware of these issues
and document recommendations to avoid fragmentation and
prevent packet loss, especially on remote SAM client-server connections.
</p>
<h4 id="dgsend">DATAGRAM SEND, RAW SEND (V1/V2 Compatible Datagram Handling)</h4>
<h3 id="dgsend">DATAGRAM SEND, RAW SEND (V1/V2 Compatible Datagram Handling)</h3>
<p>
In SAM V3, the preferred way to send datagrams is via the datagram socket
at port 7655 as documented above. However, repliable datagrams may be sent
@ -1269,7 +1185,7 @@ sent to the most recently created DATAGRAM- or RAW-style session,
as appropriate. Support for the ID parameter may be added in a future release.
<h3 id="primary">SAM PRIMARY Sessions (V3.3 and higher)</h3>
<h3 id="primary">PRIMARY Sessions (V3.3 and higher)</h3>
<p><i>
Version 3.3 was introduced in I2P release 0.9.25.
@ -1503,7 +1419,7 @@ followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_Priv
followed by the <a href="{{ site_url('docs/spec/common-structures') }}#type_SigningPrivateKey">Signing Private Key</a>,
which is 884 or more base 64 characters (663 or more bytes in binary),
depending on signature type.
The binary format is specified in <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
The binary format is specified in <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKeyFile.html">Private Key File</a>.
</p><p>
DEST GENERATE does not require that a session has been created first.
@ -1617,14 +1533,7 @@ SAM SESSION CREATE line.
</p><p>
All sessions may include <a href="{{ site_url('docs/protocol/i2cp') }}#options">I2CP options such as tunnel lengths</a>.
STREAM sessions may include <a href="{{ site_url('docs/api/streaming') }}#options">Streaming library options</a>.
</p><p>
See those references for option names and defaults.
The referenced documention is for the Java router implementation.
Defaults are subject to change.
Option names and values are case-sensitive.
Other router implementations may not support all options and may have different defaults;
consult router documentation for details.
</p>
<h3>BASE 64 Notes</h3>
@ -1633,6 +1542,12 @@ consult router documentation for details.
Base 64 encoding must use the I2P standard Base 64 alphabet "A-Z, a-z, 0-9, -, ~".
</p>
<h3>Client Library Implementations</h3>
<p>
Client libraries are available for C, C++, C#, Perl, and Python.
These are in the apps/sam/ directory in the <a href="{{ get_url('downloads_list') }}">I2P Source Package</a>.
Some may be older and have not been updated for SAMv3 support.
</p>
<h3>Default SAM Setup</h3>
<p>

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Streaming Protocol{% endtrans %}{% endblock %}
{% block lastupdated %}2022-04{% endblock %}
{% block accuratefor %}0.9.53{% endblock %}
{% block title %}{% trans %}Streaming Library{% endtrans %}{% endblock %}
{% block lastupdated %}2020-05{% endblock %}
{% block accuratefor %}0.9.46{% endblock %}
{% block content %}
<h2>{% trans %}Overview{% endtrans %}</h2>
@ -65,11 +65,11 @@ streaming library, to be interpreted by I2CP.
{%- endtrans %}</p>
<p>{% trans i2cp=site_url('docs/protocol/i2cp'),
i2psktmf='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/I2PSocketManagerFactory.html',
i2psktm='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/I2PSocketManager.html',
i2psess='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSession.html',
i2pskt='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/I2PSocket.html',
i2psskt='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/I2PServerSocket.html' -%}
i2psktmf='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/I2PSocketManagerFactory.html',
i2psktm='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/I2PSocketManager.html',
i2psess='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/I2PSession.html',
i2pskt='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/I2PSocket.html',
i2psskt='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/I2PServerSocket.html' -%}
The standard interface to the streaming lib is for the application to use the
<a href="{{ i2psktmf }}">I2PSocketManagerFactory</a> to create an
<a href="{{ i2psktm }}">I2PSocketManager</a>. The application then asks the
@ -79,7 +79,7 @@ can then setup connections with an <a href="{{ i2pskt }}">I2PSocket</a> or
receive connections with an <a href="{{ i2psskt }}">I2PServerSocket</a>.
{%- endtrans %}</p>
<p>{% trans url='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/package-summary.html' -%}
<p>{% trans url='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/package-summary.html' -%}
Here are the <a href="{{ url }}">full streaming library Javadocs</a>.
{%- endtrans %}</p>
@ -89,7 +89,7 @@ For a good example of usage, see the i2psnark code.
<h3 id="options">{% trans %}Options and Defaults{% endtrans %}</h3>
<p>{% trans i2psktmf='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/I2PSocketManagerFactory.html' -%}
<p>{% trans i2psktmf='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/streaming/I2PSocketManagerFactory.html' -%}
The options and current default values are listed below.
Options are case-sensitive and may be set for the whole router, for a particular client, or for an individual socket on a
per-connection basis.

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Bittorrent over I2P{% endtrans %}{% endblock %}
{% block lastupdated %}2022-01{% endblock %}
{% block accuratefor %}0.9.52{% endblock %}
{% block lastupdated %}{% trans %}January 2017{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.28{% endblock %}
{% block content %}
<p>{% trans -%}
@ -71,9 +71,7 @@ There are no known I2P clients or trackers that currently support UDP announce/r
<h2>{% trans %}Non-Compact Tracker Responses{% endtrans %}</h2>
<p>{% trans -%}
The non-compact response is just as in standard bittorrent, with an I2P "ip".
{%- endtrans %}
This is a long base64-encoded "DNS string", probably with a ".i2p" suffix.
</p>
{%- endtrans %}</p>
<p>{% trans -%}
Trackers generally include a fake port key, or use the port from the announce, for compatibility with older clients.
@ -264,8 +262,8 @@ In a response, the "values" key is a list of strings, each containing a single c
{%- endtrans %}</p>
<p>{% trans -%}
Compact node info is 54 bytes (20 byte Node ID + 32 byte SHA256 Hash + 2 byte port)
instead of 20 byte Node ID + 4 byte IP + 2 byte port.
Compact node info is 54 bytes (20 byte SHA1 Hash + 32 byte SHA256 Hash + 2 byte port)
instead of 20 byte SHA1 Hash + 4 byte IP + 2 byte port.
In a response, the "nodes" key is a
single byte string with concatenated compact node info.
{%- endtrans %}</p>
@ -298,8 +296,32 @@ are described below, and are subject to change.
Contact the I2P developers if you wish to develop a client or tracker supporting datagram announces.
{%- endtrans %}</p>
<p>{% trans prop160=site_url('docs/spec/proposals/160') -%}
See <a href="{{ prop160 }}">Proposal 160</a>.
<p>{% trans -%}
A UDP tracker listens on two ports.
The "query port" is the advertised port, and is used to receive repliable (signed) datagrams, for the connect request only.
The "response port" is used to receive unsigned (raw) datagrams, and is the source port for all replies.
The response port is arbitrary.
A client sends and receives on a single port only.
It receives only unsigned (raw) datagrams.
Raw datagrams provides increased efficiency for replies since they contain tokens sent in the query, and need not be signed.
{%- endtrans %}</p>
<p>{% trans -%}
In the announce request, the 4-byte IP is replaced by a 32-byte hash, and the port is still present,
although it may be ignored by the tracker.
In the announce response, each 4-byte IP and 2-byte port is replaced by a 32-byte hash (compact peer info), and no port is present.
The client sends the announce request and scrape request to the source port in the announce response packet.
The connect request, connect response, scrape request, scrape response, and error response are the same as in BEP 15.
{%- endtrans %}</p>
<p>{% trans -%}
Source addresses in I2P cannot be spoofed, so it is possible to use a simplified protocol
with 2 packets instead of 4, omitting the connect request and response.
In this case, the announce request would be a repliable datagram sent to the tracker's query port,
and the tracker would not require a response port.
While this is more efficient, it would be more difficult to modify an existing tracker to support this mode.
The URL for the 4-packet-mode tracker would use standard "udp://" prefix.
The URL for a modified 2-packet-mode tracker would require a different prefix if both modes are supported in I2P.
{%- endtrans %}</p>

View File

@ -0,0 +1,505 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}DNS over I2P{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}October 2021{% endtrans %}{% endblock %}
{% block accuratefor %}1.5.0/0.9.51{% endblock %}
{% block content %}
<p>{% trans -%}
This content was adapted from content written by i2pd contributor Acetone. It
was translated by [TODO: an unknown third party], copied from <a
href="https://rucore.net/en/dns-over-i2p-true-privacy-of-dns-queries-2/">RuCore.
net</a>,
and lightly edited by idk. The original appeared at:
<a href="https://habr.com/ru/company/itsoft/blog/572140/">habr.com</a>.
{%- endtrans %}</p>
<p>{% trans -%}
Today it is difficult to surprise someone with the terms DoH (DNS over HTTPS),
DoT (DNS over TLS) and other crypto-gadgets for DNS. If someone just jumped on a
train and doesnt understand what this is about, DNS (Domain Name System) is a
domain name system that each of us uses hundreds and thousands of times during
the day. All human-readable names like habr.com, cia.gov and others lead to a
specific IP address, which a computer can find out by contacting special
servers.
{%- endtrans %}</p>
<p>{% trans -%}
Large enterprises, home Internet providers, as well as anyone who wants to have
their own DNS server, because the DNS server is very simple in its device. Among
other considerations, their servers are deployed for reasons of additional
privacy, because the administrator of a foreign server, to which we turn, will
see our address and will know which web resource we decided to visit.
{%- endtrans %}</p>
<p>{% trans -%}
The DNS protocol is old (~ 1987), so it does not provide any encryption. All DNS
requests and responses go over the network in the clear, so in the initial
variation, not only the administrator of the DNS server, but also the operators
of all intermediate nodes through which traffic passes, can spy on the user.
Modern solutions like DNSCrypt, DNS over HTTPS and the like solve the
problem of
intercepting information along the way, as they encrypt DNS requests from the
user to the server and in the opposite direction. But! The protocols that
encrypt traffic do not solve one important issue the analysis of all requests
on the side of the server itself, which still sees both the request itself and
the IP address from which it came. The DNSCrypt project has an additional gadget
for that, but I was not impressed by this layering on a three-story pie. Perhaps
because I have my own pie … I will be glad to adequate criticism, but I hope
there will be no stupid comments that every person on the planet needs to have
his own personal DNS server to maintain privacy.
{%- endtrans %}</p>
<p>{% trans -%}
DNS over the anonymous network I2P is a concept in which DNS requests are
encrypted, but also: firstly, the server administrator has no idea about the
real IP address of the user; secondly, the user does not know the location of
the server he is accessing (also good, in order to avoid possible pressure on
the administrator). DNS over I2P, or DoI2P (or DoI at all) is a very
entertaining variation on the use of hidden networks, which we will now take a
closer look at.
{%- endtrans %}</p>
<h2>{% trans %}Theory{% endtrans %}</h2>
<p>{% trans -%}The standard calls for a DNS server to run on port 53 (websites,
for example, run on standard ports 80 and 443), but what is more interesting in
this case is what transport protocol does DNS use. This information is required
to create suitable tunnels over the I2P network.
{%- endtrans %}</p>
<p>{% trans -%}
An I2P router that provides access to the I2P network provides proxies of the
SOCKS and HTTP types at the local address. In most cases, it is a proxy that is
used to work with the network, but to fine-tune the connection through a hidden
network, separate tunnels are created in a special configuration file. Tunnels
can be server and client tunnels. Their essence lies in accepting connections
from a hidden network to a designated local port of some service, for
example, a
web server, or in transferring client connections from a local tunnel
address to
a hidden network. Tunnels are divided into two main types: TCP and UDP.
{%- endtrans %}</p>
<p>{% trans -%}
The main working protocol of DNS is UDP, but the standard provides for the
transfer of some information over the TCP protocol. This means that you need to
create two server and two client tunnels: the first for UDP connections, the
second for TCP.
{%- endtrans %}</p>
<h2>{% trans %}Server Setup{% endtrans %}</h2>
<p>{% trans -%}
The example uses a dnsmasq server that is extremely easy to install and
configure, but you can use any server you like. The simplest configuration
option for this server looks like this:
{%- endtrans %}</p>
<pre><code>
port=53
listen-address=256.257.258.259
domain-needed
bogus-priv
server=8.8.8.8
</code></pre>
<p>{% trans -%}
This configuration means that absolutely all requests will be sent to the
address 8.8.8.8. Such a server does not make much sense, but as a layer of
anonymity and just an example for an article thats it. The server accepts
requests to an IP address 256.257.258.259, port 53. The fictitious IP address
serves only as an example, as if depicting a pre-existing DNS server accessible
from the regular Internet. In fact, you can use a local address 127.0.0.1 and
any port at your discretion, if you serve users exclusively through a hidden
network.
{%- endtrans %}</p>
<p>{% trans -%}
To make the DNS server accessible from I2P, you need to create server tunnels.
I am using i2pd on Debian 10. The default tunnels config file is in the path
/etc/i2pd/tunnels.conf. Below is the minimum configuration required to work.
{%- endtrans %}</p>
<pre><code>
[DNS-TCP]
type = server
host = 256.257.258.259
port = 53
keys = hidden-dns.dat
[DNS-UDP]
type = udpserver
host = 256.257.258.259
address = 256.257.258.259
port = 53
keys = hidden-dns.dat
</code></pre>
<p>{% trans -%}
Notice the line address in the UDP tunnel section. This is a necessary
parameter
for a non-local address, which tells i2pd from which address incoming requests
from the hidden network will come from. This parameter is required for UDP
tunnels. It can be omitted if an address is used 127.0.0.1.
{%- endtrans %}</p>
<p>{% trans -%}
The parameter keys specifies the keys that form the intranet address. By
default, they are in the directory /var/lib/i2pd. If the file is not found, a
new one is created.
{%- endtrans %}</p>
<p>{% trans -%}
Restart i2pd for the changes to take effect. You can see the I2P tunnel address
in the web console, under the “I2P Tunnels” tab. In my case, it is
dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p.
{%- endtrans %}</p>
<h2>{% trans %}Client Setup{% endtrans %}</h2>
<p>{% trans -%}
In my case, the client machine also uses i2pd and the Debian operating system,
the tunnels file is located in the same place as on the server
/etc/i2pd/tunnels.conf. The client configuration might look like this:
{%- endtrans %}</p>
<pre><code>
[DNS-CLIENT-TCP]
type = client
address = 127.0.0.1
port = 35353
inbound.length = 2
outbound.length = 2
destination = dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p
keys = transient-dns
[DNS-CLIENT-UDP]
type = udpclient
address = 127.0.0.1
port = 35353
destination = dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p
keys = transient-dns
</code></pre>
<p>{% trans -%}
The parameters inbound.length and outbound.length are responsible for the
length of the incoming and outgoing tunnels. By default, they are three hops,
but I have reduced these values to two to minimize latency a little.
Similar parameters are applicable for server tunnels as well. Additional
parameters are specified only in the first section, since the very first block
defines the parameters that apply to all tunnels using the same key (in my
case, this transient-dns). Keys starting with a word transient are temporary
after each restart of i2pd, the client will contact the server from a new
intranet address.
{%- endtrans %}</p>
<p>{% trans -%}
For new tunnels to be created, you need to restart i2pd. On this it may seem
that the deed is done. But no, there is one more nuance left.
{%- endtrans %}</p>
<p>{% trans -%}
The file responsible for configuring DNS on my operating system (Debian 10)
does not support specifying a port. Only the IP address of the server can be
specified. All requests will be sent to the port 53, but our tunnel is hanging
on the port 35353. If you specify a port in the client tunnels 53, an error
will occur and no tunnels will be created, because all ports below 1024 are
privileged reserved for special needs. Only the superuser (root) can start
the service on this port, and i2pd, like other applications, works without
superuser rights. Take a deep breath before running i2pd (or some other
third-party software) as root, and then read on.
{%- endtrans %}</p>
<h2>{% trans %}Epilogue{% endtrans %}</h2>
<p>{% trans -%}
{%- endtrans %}</p>
<h2>{% trans %}Additional Information{% endtrans %}</h2>
<ul>
<li></li>
</ul>
{% endblock %}
idk@lib14:~/Workspace/GIT_WORK/i2p.www$ find . -name dns.html -exec bash -c
"cat {} | fold -w 80 -s - | tee {} " \;
{% extends "global/layout.html" %}
{% block title %}{% trans %}DNS over I2P{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}October 2021{% endtrans %}{% endblock %}
{% block accuratefor %}1.5.0/0.9.51{% endblock %}
{% block content %}
<p>{% trans -%}
This content was adapted from content written by i2pd contributor Acetone. It
was machine translated, copied from <a
href="https://rucore.net/en/dns-over-i2p-true-privacy-of-dns-queries-2/">RuCore.
net</a>,
and lightly edited by idk.
{%- endtrans %}</p>
<p>{% trans -%}
Today it is difficult to surprise someone with the terms DoH (DNS over HTTPS),
DoT (DNS over TLS) and other crypto-gadgets for DNS. If someone just jumped on a
train and doesnt understand what this is about, DNS (Domain Name System) is a
domain name system that each of us uses hundreds and thousands of times during
the day. All human-readable names like habr.com, cia.gov and others lead to a
specific IP address, which a computer can find out by contacting special
servers.
{%- endtrans %}</p>
<p>{% trans -%}
Large enterprises, home Internet providers, as well as anyone who wants to have
their own DNS server, because the DNS server is very simple in its device. Among
other considerations, their servers are deployed for reasons of additional
privacy, because the administrator of a foreign server, to which we turn, will
see our address and will know which web resource we decided to visit.
{%- endtrans %}</p>
<p>{% trans -%}
The DNS protocol is old (~ 1987), so it does not provide any encryption. All DNS
requests and responses go over the network in the clear, so in the initial
variation, not only the administrator of the DNS server, but also the operators
of all intermediate nodes through which traffic passes, can spy on the user.
Modern solutions like DNSCrypt, DNS over HTTPS and the like solve the problem of
intercepting information along the way, as they encrypt DNS requests from the
user to the server and in the opposite direction. But! The protocols that
encrypt traffic do not solve one important issue the analysis of all requests
on the side of the server itself, which still sees both the request itself and
the IP address from which it came. The DNSCrypt project has an additional gadget
for that, but I was not impressed by this layering on a three-story pie. Perhaps
because I have my own pie … I will be glad to adequate criticism, but I hope
there will be no stupid comments that every person on the planet needs to have
his own personal DNS server to maintain privacy.
{%- endtrans %}</p>
<p>{% trans -%}
DNS over the anonymous network I2P is a concept in which DNS requests are
encrypted, but also: firstly, the server administrator has no idea about the
real IP address of the user; secondly, the user does not know the location of
the server he is accessing (also good, in order to avoid possible pressure on
the administrator). DNS over I2P, or DoI2P (or DoI at all) is a very
entertaining variation on the use of hidden networks, which we will now take a
closer look at.
{%- endtrans %}</p>
<h2>{% trans %}Theory{% endtrans %}</h2>
<p>{% trans -%}The standard calls for a DNS server to run on port 53 (websites,
for example, run on standard ports 80 and 443), but what is more interesting in
this case is what transport protocol does DNS use. This information is required
to create suitable tunnels over the I2P network.
{%- endtrans %}</p>
<p>{% trans -%}
An I2P router that provides access to the I2P network provides proxies of the
SOCKS and HTTP types at the local address. In most cases, it is a proxy that is
used to work with the network, but to fine-tune the connection through a hidden
network, separate tunnels are created in a special configuration file. Tunnels
can be server and client tunnels. Their essence lies in accepting connections
from a hidden network to a designated local port of some service, for example, a
web server, or in transferring client connections from a local tunnel address to
a hidden network. Tunnels are divided into two main types: TCP and UDP.
{%- endtrans %}</p>
<p>{% trans -%}
The main working protocol of DNS is UDP, but the standard provides for the
transfer of some information over the TCP protocol. This means that you need to
create two server and two client tunnels: the first for UDP connections, the
second for TCP.
{%- endtrans %}</p>
<h2>{% trans %}Server Setup{% endtrans %}</h2>
<p>{% trans -%}
The example uses a dnsmasq server that is extremely easy to install and
configure, but you can use any server you like. The simplest configuration
option for this server looks like this:
{%- endtrans %}</p>
<pre><code>
port=53
listen-address=256.257.258.259
domain-needed
bogus-priv
server=8.8.8.8
</code></pre>
<p>{% trans -%}
This configuration means that absolutely all requests will be sent to the
address 8.8.8.8. Such a server does not make much sense, but as a layer of
anonymity and just an example for an article thats it. The server accepts
requests to an IP address 256.257.258.259, port 53. The fictitious IP address
serves only as an example, as if depicting a pre-existing DNS server accessible
from the regular Internet. In fact, you can use a local address 127.0.0.1 and
any port at your discretion, if you serve users exclusively through a hidden
network.
{%- endtrans %}</p>
<p>{% trans -%}
To make the DNS server accessible from I2P, you need to create server tunnels.
I am using i2pd on Debian 10. The default tunnels config file is in the path
/etc/i2pd/tunnels.conf. Below is the minimum configuration required to work.
{%- endtrans %}</p>
<pre><code>
[DNS-TCP]
type = server
host = 256.257.258.259
port = 53
keys = hidden-dns.dat
[DNS-UDP]
type = udpserver
host = 256.257.258.259
address = 256.257.258.259
port = 53
keys = hidden-dns.dat
</code></pre>
<p>{% trans -%}
Notice the line address in the UDP tunnel section. This is a necessary
parameter
for a non-local address, which tells i2pd from which address incoming requests
from the hidden network will come from. This parameter is required for UDP
tunnels. It can be omitted if an address is used 127.0.0.1.
{%- endtrans %}</p>
<p>{% trans -%}
The parameter keys specifies the keys that form the intranet address. By
default, they are in the directory /var/lib/i2pd. If the file is not found, a
new one is created.
{%- endtrans %}</p>
<p>{% trans -%}
Restart i2pd for the changes to take effect. You can see the I2P tunnel address
in the web console, under the “I2P Tunnels” tab. In my case, it is
dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p.
{%- endtrans %}</p>
<h2>{% trans %}Client Setup{% endtrans %}</h2>
<p>{% trans -%}
In my case, the client machine also uses i2pd and the Debian operating system,
the tunnels file is located in the same place as on the server
/etc/i2pd/tunnels.conf. The client configuration might look like this:
{%- endtrans %}</p>
<pre><code>
[DNS-CLIENT-TCP]
type = client
address = 127.0.0.1
port = 35353
inbound.length = 2
outbound.length = 2
destination = dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p
keys = transient-dns
[DNS-CLIENT-UDP]
type = udpclient
address = 127.0.0.1
port = 35353
destination = dnsgzxkak4zlrrs5tfh42ob57iley4xrp7srrltn2j2yl2ynbiaq.b32.i2p
keys = transient-dns
</code></pre>
<p>{% trans -%}
The parameters inbound.length and outbound.length are responsible for the
length of the incoming and outgoing tunnels. By default, they are three hops,
but I have reduced these values to two to minimize latency a little.
Similar parameters are applicable for server tunnels as well. Additional
parameters are specified only in the first section, since the very first block
defines the parameters that apply to all tunnels using the same key (in my
case, this transient-dns). Keys starting with a word transient are temporary
after each restart of i2pd, the client will contact the server from a new
intranet address.
{%- endtrans %}</p>
<p>{% trans -%}
For new tunnels to be created, you need to restart i2pd. On this it may seem
that the deed is done. But no, there is one more nuance left.
{%- endtrans %}</p>
<p>{% trans -%}
The file responsible for configuring DNS on my operating system (Debian 10)
does not support specifying a port. Only the IP address of the server can be
specified. All requests will be sent to the port 53, but our tunnel is hanging
on the port 35353. If you specify a port in the client tunnels 53, an error
will occur and no tunnels will be created, because all ports below 1024 are
privileged reserved for special needs. Only the superuser (root) can start
the service on this port, and i2pd, like other applications, works without
superuser rights. Take a deep breath before running i2pd (or some other
third-party software) as root, and then read on.
{%- endtrans %}</p>
<p>{% trans -%}
Remove from /etc/resolv.conf the previous DNS, so that all queries were
exclusively through I2P, and add a single server local: nameserver
127.0.0.1.
This will tell the operating system to go to the address for name-to-address
resolution 127.0.0.1:53. It remains to ask the kernel of the system to redirect
requests from the port 53 to 35353where our TCP / UDP tunnels hang, and then
send responses in the opposite direction. Its time for the iptables magic
(sorry not the newfangled netfilter, Im an old school magician).
{%- endtrans %}</p>
<pre><code>
iptables -t nat -A PREROUTING -i lo -p udp dport 53 -j REDIRECT
to-port 35353
iptables -t nat -I OUTPUT -p udp -d 127.0.0.1 dport 53 -j REDIRECT
to-port 35353
iptables -t nat -A PREROUTING -i lo -p tcp dport 53 -j REDIRECT
to-port 35353
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 dport 53 -j REDIRECT
to-port 35353
</code></pre>
<p>{% trans -%}
Do you hear? Listen, this is fanfare! Check the resolving in any convenient
way,
I will use the utility nslookup:
{%- endtrans %}</p>
<pre><code>
acetone@adeb:~$ nslookup habr.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: habr.com
Address: 178.248.237.68
</code></pre>
<h2>{% trans %}Epilogue{% endtrans %}</h2>
<p>{% trans -%}
During the configuration, I noticed that dnsmasq only occupies a UDP socket in
standby mode, but I decided to leave the TCP tunnel according to the DNS
standard, which provides for the transfer of some information over TCP. Be
that as it may, the functionality described is perfectly observed even in
the absence of TCP tunnels.
{%- endtrans %}</p>
<p>{% trans -%}
The above configuration takes on average 1-2 seconds to request and respond
to the DNS server. If your result seems too slow for you, you can reduce the
length of the server and client tunnels to 2. There are options with tunnels
in one transit node, but this is applicable only for devices that you do
not worry about being compromised: for example, if your DNS is not secret ,
the length of the tunnels can be equal to one or even zero! In this case,
you enable the user to build a longer anonymizing tunnel from his side. The
main thing is to do everything wisely and not be lazy to get acquainted with
the documentation , as well as consult with knowledgeable people.
{%- endtrans %}</p>
<p>{% trans -%}
As a demonstration (and maybe for permanent use), you can use the DNS server,
the user configs for which are given above.
{%- endtrans %}</p>
{% endblock %}

View File

@ -364,7 +364,7 @@ as is done in our Java packages.
As always, state management is the difficult part.
{%- endtrans %}</p>
<p>
See also: <a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/router/Router.html">the Router javadocs</a>.
See also: <a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/router/Router.html">the Router javadocs</a>.
</p>
{% endblock %}

View File

@ -201,7 +201,7 @@ This is implementation-dependent.
<a href="{{ site_url('docs/spec/common-structures') }}#struct_RouterInfo">{% trans %}RouterInfo specification{% endtrans %}</a>
</p>
<p>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/router/RouterInfo.html">{% trans %}RouterInfo Javadoc{% endtrans %}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/router/RouterInfo.html">{% trans %}RouterInfo Javadoc{% endtrans %}</a>
</p>
@ -248,9 +248,9 @@ In addition to these leases, the LeaseSet includes:
<a href="{{ site_url('docs/spec/common-structures') }}#struct_LeaseSet">{% trans %}LeaseSet specification{% endtrans %}</a>
</p>
<p>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Lease.html">{% trans %}Lease Javadoc{% endtrans %}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Lease.html">{% trans %}Lease Javadoc{% endtrans %}</a>
<br />
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/LeaseSet.html">{% trans %}LeaseSet Javadoc{% endtrans %}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/LeaseSet.html">{% trans %}LeaseSet Javadoc{% endtrans %}</a>
</p>
<p>{% trans -%}

View File

@ -63,7 +63,7 @@ See <a href="#notes">below</a> for notes on minor changes since the paper was pu
{%- endtrans %}</p>
<h2>{% trans %}Profiles{% endtrans %}</h2>
<p>{% trans url='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/router/peermanager/PeerProfile.html' -%}
<p>{% trans url='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/router/peermanager/PeerProfile.html' -%}
Each peer has a set of data points collected about them, including statistics
about how long it takes for them to reply to a network database query, how
often their tunnels fail, and how many new peers they are able to introduce
@ -142,7 +142,7 @@ speed calculation meets or exceeds the median of all peers.
<li>{% trans %}A peer is considered "standard" if it is not "high capacity"{% endtrans %}</li>
</ul>
<p>{% trans url='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/router/peermanager/ProfileOrganizer.html' -%}
<p>{% trans url='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/router/peermanager/ProfileOrganizer.html' -%}
These groupings are implemented in the router's
<a href="{{ url }}">ProfileOrganizer</a>.
{%- endtrans %}</p>

View File

@ -48,7 +48,7 @@ and others.
<p>{% trans -%}
Unlike web sites hosted within content distribution networks like <a href="#similar.freenet">Freenet</a>
or <a href="https://www.gnunet.org/en/">GNUnet</a>, the services hosted on
or <a href="http://www.ovmj.org/GNUnet/">GNUnet</a>, the services hosted on
I2P are fully interactive - there are traditional web-style search engines,
bulletin boards, blogs you can comment on, database driven sites, and bridges
to query static systems like Freenet without needing to install it locally.

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Index to Technical Documentation{% endtrans %}{% endblock %}
{% block lastupdated %}2022-04{% endblock %}
{% block accuratefor %}0.9.53{% endblock %}
{% block lastupdated %}2021-01{% endblock %}
{% block accuratefor %}0.9.49{% endblock %}
{% block content %}
<p>{% trans -%}
Following is an index to the technical documentation for I2P.
@ -86,15 +86,15 @@ HTTP Bidir Proxy
<h3>{% trans %}End-to-End Transport API and Protocols{% endtrans %}</h3>
{% trans %}The end-to-end protocols used by clients for reliable and unreliable communication.{% endtrans %}
<ul><li>
<a href="{{ site_url('docs/api/streaming') }}">{{ _('Streaming Protocol Overview') }}</a>
<a href="{{ site_url('docs/api/streaming') }}">{{ _('Streaming Library') }}</a>
</li><li>
<a href="{{ spec_url('streaming') }}">{{ _('Streaming Protocol Specification') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/client/streaming/package-summary.html">{{ _('Streaming Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/client/streaming/package-summary.html">{{ _('Streaming Javadoc') }}</a>
</li><li>
<a href="{{ spec_url('datagrams') }}">{{ _('Datagrams') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/client/datagram/package-summary.html">{{ _('Datagram Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/client/datagram/package-summary.html">{{ _('Datagram Javadoc') }}</a>
</li></ul>
<h3>{% trans %}Client-to-Router Interface API and Protocol{% endtrans %}</h3>
@ -107,11 +107,11 @@ Traditionally used only by Java applications and higher-level APIs.
</li><li>
<a href="{{ spec_url('i2cp') }}">{{ _('I2CP Specification') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/client/package-summary.html">{{ _('I2CP API Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/client/package-summary.html">{{ _('I2CP API Javadoc') }}</a>
</li><li>
<a href="{{ spec_url('common-structures') }}">{{ _('Common data structures specification') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
</li></ul>
<h3>{% trans %}End-to-End Encryption{% endtrans %}</h3>
@ -141,13 +141,13 @@ Traditionally used only by Java applications and higher-level APIs.
</li><li>
<a href="{{ spec_url('i2np') }}">{{ _('I2NP Specification') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/i2np/package-summary.html">{{ _('I2NP Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2np/package-summary.html">{{ _('I2NP Javadoc') }}</a>
</li><li>
<a href="{{ spec_url('common-structures') }}">{{ _('Common data structures specification') }}</a>
</li><li>
<a href="{{ spec_url('encryptedleaseset') }}">{{ _('Encrypted Leaseset specification') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
</li></ul>
<h3>{% trans %}Tunnels{% endtrans %}</h3>
@ -184,11 +184,11 @@ Traditionally used only by Java applications and higher-level APIs.
</li><li>
<a href="{{ site_url('docs/how/cryptography') }}#udp">{{ _('SSU transport encryption') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/router/transport/package-summary.html">{{ _('Transport Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/router/transport/package-summary.html">{{ _('Transport Javadoc') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/router/transport/ntcp/package-summary.html">{{ _('NTCP Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/router/transport/ntcp/package-summary.html">{{ _('NTCP Javadoc') }}</a>
</li><li>
<a href="http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/router/transport/udp/package-summary.html">{{ _('SSU Javadoc') }}</a>
<a href="http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/router/transport/udp/package-summary.html">{{ _('SSU Javadoc') }}</a>
</li></ul>
<h3>{% trans %}Other Router Topics{% endtrans %}</h3>
@ -219,8 +219,7 @@ Traditionally used only by Java applications and higher-level APIs.
<a href="{{ site_url('get-involved/guides/dev-guidelines') }}">{{ _('Developer Guidelines') }}</a>
</li><li>
{% trans %}Javadocs on the standard internet:{% endtrans %}
<a href="https://docs.i2p-projekt.de/javadoc/">{% trans num=1 %}Server {{ num }}{% endtrans %}</a>
<a href="https://eyedeekay.github.io/javadoc-i2p/">{% trans num=3 %}Server {{ num }}{% endtrans %}</a>
<a href="http://docs.i2p-projekt.de/javadoc/">{% trans num=1 %}Server {{ num }}{% endtrans %}</a>
{% trans %}Note: always verify that javadocs are current by checking the release number.{% endtrans %}
</li><li>
{% trans %}Javadocs inside I2P:{% endtrans %}
@ -230,7 +229,7 @@ down (kytv)
ancient (str4d)
<a href="http://{{ i2pconv('i2pdocs.str4d.i2p') }}/i2p.i2p/javadoc/">{% trans num=2 %}Server {{ num }}{% endtrans %}</a>
-->
<a href="http://{{ i2pconv('idk.i2p') }}/javadoc-i2p/">{% trans num=3 %}Server {{ num }}{% endtrans %}</a>
<a href="http://{{ i2pconv('echelon.i2p') }}/javadoc/">{% trans num=3 %}Server {{ num }}{% endtrans %}</a>
<!--
<a href="http://{{ i2pconv('docs.i2p2.i2p') }}/javadoc/">Server 4 - out of date, incomplete</a>
-->
@ -244,6 +243,8 @@ ancient (str4d)
</li><li>
<a href="{{ site_url('docs/ports') }}">{{ _('Ports used by I2P') }}</a>
</li><li>
<a href="http://{{ i2pconv('bobthebuilder.i2p') }}/mtn/">{{ _('Automatic updates to development builds inside I2P') }}</a>
</li><li>
<a href="{{ site_url('misc/manual-wrapper') }}">{{ _('Updating the wrapper manually') }}</a>
</li><li>
<a href="http://{{ i2pconv('i2pforum.i2p') }}">{{ _('User forum') }}</a>

View File

@ -140,7 +140,7 @@ It also maintains a reverse-lookup map to implement rapid reverse lookups.
<h3>{{ _('Other Naming Service Facilities') }}</h3>
<p>{% trans nsjavadocs='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/naming/package-summary.html' -%}
<p>{% trans nsjavadocs='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/naming/package-summary.html' -%}
The lookup is case-insensitive.
The first match is used, and conflicts are not detected.
There is no enforcement of naming rules in lookups.

View File

@ -14,29 +14,10 @@ There are now plugins available that support distributed email, blogs, IRC
clients, distributed file storage, wikis, and more.
{%- endtrans %}</p>
<h3>{% trans -%}Easy Installation of Applications{%- endtrans %}</h3>
<p>{% trans -%}
I2P Plugins can be installed by copying the plugin download URL onto
the appropriate section on the <a href="http://127.0.0.1:7657/configplugins">Router Console Plugin Configuration Page</a>.
Benefits to i2p users and app developers:
{%- endtrans %}</p>
<p>{% trans -%}
Start by copying the plugin URL from the page where it is published.
{%- endtrans %}</p>
<img src="/_static/images/plugins/plugin-step-0.png">
<p>{% trans -%}
Then visit the plugin configuration page, which you can find linked on the console homepage.
{%- endtrans %}</p>
<img src="/_static/images/plugins/plugin-step-1.png">
<p>{% trans -%}
Paste in the URL and click the "Install Plugin" button.
{%- endtrans %}</p>
<img src="/_static/images/plugins/plugin-step-2.png">
<h3>{% trans -%}Benefits to i2p users and app developers:{%- endtrans %}</h3>
<ul>
<li>{% trans -%}
Easy distribution of applications
@ -116,7 +97,15 @@ Non-java applications also supported
<h3>{% trans %}Required I2P version{% endtrans %}</h3>
<p>{% trans %}0.7.12 or newer.{% endtrans %}</p>
<h3>{% trans %}Updating a Plugin{% endtrans %}</h3>
<h3>{% trans %}Installation{% endtrans %}</h3>
<p>{% trans -%}
To install and start a plugin, copy the <code>.xpi2p</code> install link to
the form at the bottom of
<a href="http://127.0.0.1:7657/configclients.jsp#plugin">configclients.jsp in
your router console</a> and click the "install plugin" button. After a
plugin is installed and started, a link to the plugin will usually appear at
the top of your summary bar.
{%- endtrans %}</p>
<p>{% trans -%}
To update a plugin to the latest version, just click the update button on
@ -126,7 +115,6 @@ well as a button to check for updates for all plugins. Plugins will be checked
for updates automatically when updating to a new I2P release (not including dev
builds).
{%- endtrans %}</p>
<img src="/_static/images/plugins/plugin-update-0.png">
<h3>{% trans %}Development{% endtrans %}</h3>

View File

@ -15,7 +15,7 @@ I2CP to tell the client when any messages have arrived, and to request authoriza
for some tunnels to be used.
{%- endtrans %}</p>
<p>{% trans url='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/package-summary.html',
<p>{% trans url='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/client/package-summary.html',
libi2cp='http://git.repo.i2p/w/libi2cp.git',
streaming=site_url('docs/api/streaming') -%}
The protocol itself is implemented in Java, to provide the

View File

@ -19,7 +19,7 @@ through multiple hops to the ultimate destination.
Priority is only used locally at the origin, i.e. when queuing for outbound delivery.
{%- endtrans %}</p>
<p>{% trans outnetmessage='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/router/OutNetMessage.html' -%}
<p>{% trans outnetmessage='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/router/OutNetMessage.html' -%}
The priorities listed below may not be current and are subject to change.
See the <a href="{{ outnetmessage }}">OutNetMessage Javadocs</a>
for the current priority settings.

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Protocol Stack{% endtrans %}{% endblock %}
{% block lastupdated %}2021-12{% endblock %}
{% block accuratefor %}0.9.52{% endblock %}
{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %}
{% block accuratefor %}0.8{% endblock %}
{% block content %}
<p>{% trans docs=site_url('docs') -%}
@ -29,10 +29,10 @@ The capabilities are listed below, starting at the bottom of the protocol stack.
<li>
{% trans -%}
<b>I2P Transport Layer:</b> provide encrypted connections between 2 I2P routers. These are not anonymous yet, this is strictly a hop-to-hop connection.
Two protocols are implemented to provide these capabilities. NTCP2 builds on top of TCP, while SSU uses UDP.
Two protocols are implemented to provide these capabilities. NTCP builds on top of TCP, while SSU uses UDP.
{%- endtrans %}
<br />
<a href="{{ spec_url('ntcp2') }}">NTCP2</a>: {% trans %}NIO-based TCP{% endtrans %}
<a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a>: {% trans %}NIO-based TCP{% endtrans %}
<br />
<a href="{{ site_url('docs/transport/ssu') }}">SSU</a>: {% trans %}Secure Semi-reliable UDP{% endtrans %}
</li>
@ -102,9 +102,9 @@ We can order this based on the I2P stack layer they use.
{%- endtrans %}</p>
<ul>
<li>{% trans %}<b>Streaming/datagram applications</b>: i2psnark, Syndie, i2phex...{% endtrans %}</li>
<li>{% trans %}<b>SAM applications</b>: IMule, i2p-bt...{% endtrans %}</li>
<li>{% trans %}<b>SAM/BOB applications</b>: IMule, i2p-bt, i2prufus, Robert...{% endtrans %}</li>
<li>{% trans plugins=site_url('docs/plugins') %}<b>Other I2P applications</b>: Syndie, EepGet, <a href="{{ plugins }}">plugins</a>...{% endtrans %}</li>
<li>{% trans %}<b>Regular applications</b>: Jetty, Apache, Git, browsers, e-mail...{% endtrans %}</li>
<li>{% trans %}<b>Regular applications</b>: Jetty, Apache, Monotone, CVS, browsers, e-mail...{% endtrans %}</li>
</ul>
<div class="box" style="text-align:center;">
@ -115,7 +115,7 @@ We can order this based on the I2P stack layer they use.
<br/>
<p>
* {% trans %}Note: SAM can use both the streaming lib and datagrams.{% endtrans %}
* {% trans %}Note: SAM/SAMv2 can use both the streaming lib and datagrams.{% endtrans %}
</p>
{% endblock %}

View File

@ -1,16 +1,10 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}NTCP (NIO-based TCP){% endtrans %}{% endblock %}
{% block lastupdated %}2021-10{% endblock %}
{% block accuratefor %}0.9.52{% endblock %}
{% block lastupdated %}{% trans %}June 2018{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.36{% endblock %}
{% block content %}
<p>{% trans transports=site_url('docs/transport'), ssu=site_url('docs/transport/ssu'), ntcp2=site_url('docs/spec/ntcp2') -%}
DEPRECATED, NO LONGER SUPPORTED.
Disabled by default as of 0.9.40 2019-05.
Support removed as of 0.9.50 2021-05.
Replaced by <a href="{{ ntcp2 }}">NTCP2</a>.
The others are <a href="{{ ssu }}">SSU</a> and <a href="{{ ntcp2 }}">NTCP2</a>.
NTCP is a Java NIO-based transport introduced in I2P release 0.6.1.22.
Java NIO (new I/O) does not suffer from the 1 thread per connection issues of the old TCP transport.
NTCP-over-IPv6 is supported as of version 0.9.8.

View File

@ -1,14 +1,13 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Secure Semireliable UDP{% endtrans %} (SSU){% endblock %}
{% block lastupdated %}2022-06{% endblock %}
{% block accuratefor %}0.9.54{% endblock %}
{% block lastupdated %}2021-04{% endblock %}
{% block accuratefor %}0.9.50{% endblock %}
{% block content %}
<p>{% trans transports=site_url('docs/transport'), ntcp=site_url('docs/transport/ntcp'), ntcp2=site_url('docs/spec/ntcp2') -%}
SSU (also called "UDP" in much of the I2P documentation and user interfaces)
is one of two <a href="{{ transports }}">transports</a> currently implemented in I2P.
The other is <a href="{{ ntcp2 }}">NTCP2</a>.
Support for <a href="{{ ntcp }}">NTCP</a> has been removed.
is one of three <a href="{{ transports }}">transports</a> currently implemented in I2P.
The others are <a href="{{ ntcp }}">NTCP</a> and <a href="{{ ntcp2 }}">NTCP2</a>.
{%- endtrans %}</p>
<p>{% trans -%}
@ -505,14 +504,11 @@ to designate a new peer as Bob and try again with a different nonce.
{%- endtrans %}</p>
<p>{% trans -%}
Alice's introduction key is included in all of the PeerTest messages
so that Charlie can contact her without knowing any additional information.
As of release 0.9.15, Alice must have an established
session with Bob, to prevent spoofing attacks.
Alice must not have an established session with Charlie for the peer test
to be valid.
Alice may go on to establish a session
with Charlie, but it is not required.
Alice's introduction key is included in all of the PeerTest
messages so that she doesn't need to already have an established
session with Bob and so that Charlie can contact her without knowing
any additional information. Alice may go on to establish a session
with either Bob or Charlie, but it is not required.
{%- endtrans %}</p>
<h3>IPv6 Notes</h3>
@ -527,18 +523,10 @@ and Alice-Bob and Alice-Charlie communication may be via IPv6,
if Bob and Charlie indicate support with a 'B' capability in their published IPv6 address.
See <a href="/spec/proposals/126-ipv6-peer-testing">Proposal 126</a> for details.
</p><p>
Prior to release 0.9.50,
Alice sends the request to Bob using an existing session over the transport (IPv4 or IPv6) that she wishes to test.
When Bob receives a request from Alice via IPv4, Bob must select a Charlie that advertises an IPv4 address.
When Bob receives a request from Alice via IPv6, Bob must select a Charlie that advertises an IPv6 address.
The actual Bob-Charlie communication may be via IPv4 or IPv6 (i.e., independent of Alice's address type).
</p><p>
As of release 0.9.50,
If the message is over IPv6 for an IPv4 introduction,
or (as of release 0.9.50) over IPv4 for an IPv6 introduction,
Alice must include her introduction address and port.
See <a href="/spec/proposals/158">Proposal 158</a> for details.
</p>
@ -625,7 +613,6 @@ If the router is hidden, '4' and '6' may be combined in a single address.
</dl>
<h1><a name="future">{% trans %}Future Work{% endtrans %}</a></h1>
Note: These issues will be addressed in the development of SSU2.
<ul>
<li>{% trans -%}
Analysis of current SSU performance, including assessment of window size adjustment
@ -649,7 +636,7 @@ The protocol should be extended to exchange MTUs during the setup.
{%- endtrans %}</li>
<li>{% trans -%}
Rekeying is currently unimplemented and will never be.
Rekeying is currently unimplemented and may never be.
{%- endtrans %}</li>
<li>{% trans -%}
@ -657,12 +644,26 @@ The potential use of the 'challenge' fields in RelayIntro and RelayResponse,
and use of the padding field in SessionRequest and SessionCreated, is undocumented.
{%- endtrans %}</li>
<li>{% trans -%}
Instead of a single fragment per packet, a more efficient
strategy may be to bundle multiple message fragments into the same packet,
so long as it doesn't exceed the MTU.
{%- endtrans %}</li>
<li>{% trans -%}
A set of fixed packet sizes may be appropriate to further hide the data
fragmentation to external adversaries, but the tunnel, garlic, and end to
end padding should be sufficient for most needs until then.
{%- endtrans %}</li>
<li>{% trans -%}
Why are introduction keys the same as the router hash, should it be changed, would there be any benefit?
{%- endtrans %}</li>
<li>{% trans -%}
Capacities appear to be unused.
{%- endtrans %}</li>
<li>{% trans -%}
Signed-on times in SessionCreated and SessionConfirmed appear to be unused or unverified.
{%- endtrans %}</li>

View File

@ -1044,7 +1044,7 @@ either through our IRC network, IRC2P, or on Freenode.{%- endtrans %}</p>
<li>{% trans -%}Our Bugtracker:{%- endtrans %}
<ul>
<li>{% trans -%}Non-private internet:{%- endtrans %} <a href="https://i2pgit.org/i2p-hackers/i2p.i2p/issues">https://i2pgit.org/i2p-hackers/i2p.i2p/issues</a></li>
<li>{% trans -%}On I2P:{%- endtrans %} <a href="http://git.idk.i2p/i2p-hackers/i2p.i2p/issues">http://git.idk.i2p/i2p-hackers/i2p.i2p/issues</a></li>
<li>{% trans -%}On I2P:{%- endtrans %} <a href="http://git.idk.i2p/i2p-hackers/i2p.i2p/issues">http://i2pgit.org/i2p-hackers/i2p.i2p/issues</a></li>
</ul>
<li>{% trans -%}Our forums:{%- endtrans %} <a href="http://{{ i2pconv('i2pforum.i2p') }}/">{{ i2pconv('i2pforum.i2p') }}</a></li>
<li>{% trans -%}You may paste any interesting logs to a paste service such as the non-private internet services listed on the

View File

@ -306,10 +306,10 @@ Except where otherwise noted, content on this site is licensed under a
</p>
<h2><a id="commit">{{ _('Commit privileges') }}</a></h2>
<p>{% trans git=site_url('docs/applications/git') -%}
Developers may push changes to a distributed git repository if you
<p>{% trans monotone=site_url('get-involved/guides/monotone') -%}
Developers may push changes to a distributed monotone repository if you
receive permission from the person running that repository.
See the <a href="{{ git }}">Monotone Page</a> for details.
See the <a href="{{ monotone }}">Monotone Page</a> for details.
{%- endtrans %}</p>
<p>{% trans -%}

View File

@ -0,0 +1,89 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Donate') }}{% endblock %}
{% block content %}
<h2>{% trans -%}Thank you for your interest in contributing to I2P!{%- endtrans %}</h2>
<p>{% trans -%}For almost two decades the Invisible Internet Project (I2P) has
researched and developed a transport layer and software with a focus on providing
privacy and security for online communication. The Invisible Internet Project
(I2P) supports the right to access. The project works to constantly improve
its circumvention abilities and resistance.
{%- endtrans %}</p>
<p>{% trans %}Both the network and its software is completely free to use.{% endtrans %}</p>
<h3>{% trans -%}Who Uses The Invisible Internet?{%- endtrans %}</h3>
<p>{% trans %}
People who are concerned about their privacy and interested in alternatives to the internet make use of the network and its applications to chat, email, torrent and run their own sites and forums. In some circumstances individuals rely on the network to communicate due to safety issues or censorship. Researchers, developers and digital rights defenders make use of the network as well.
{% endtrans %}</p>
<h3>{% trans -%}How Is The Invisible Internet Project Funded and How Is That Funding Used?{%- endtrans %}</h3>
<p>{% trans %}The Invisible Internet Project (I2P) is 100% community funded. In the past the Project has received a grant from DuckDuckGo, and has received support from the OTF Usability Lab providers. This helped to guide improvements to the Java software and website UX and information architecture.
Donations support I2P maintainers server costs, and other costs associated with keeping the network services up and running. Donations support improving the I2P protocol, application layer, outreach and design.{% endtrans %}</p>
<p>{% trans %}I2P accepts donations in cryptocurrencies and via Paypal. Android users may also support the project through the Google Play Store by choosing the "Donate" edition. I2P funding is handled by meeh.{% endtrans %}</p>
<p>
{% trans %}The following addresses are valid as of June 10th, 2019. Please note that any other addresses not listed here are no longer valid. Please note that addresses may update and more coins may be added. {% endtrans %}
</p>
<p>
{% trans %} Double-Clicking on the cryptocurrency address will copy it onto your
clipboard.{% endtrans %}
<br></p>
<img class="qrcode" width="250px" src="{{ url_for('static', filename='images/donate/cur-btc-addr.png') }}" />
<b class="address">{% trans %}BTC Address{% endtrans %}:</b> <textarea ondblclick="copy(this)" class="coinaddr" rows="1" readonly>3AtDiRUiyDHTSALRxsEZ7yqmB7piwaowaY</textarea><br>
<img class="qrcode" width="250px" src="{{ url_for('static', filename='images/donate/cur-ltc-addr.png') }}" />
<b class="address">{% trans %}LTC Address{% endtrans %}:</b> <textarea ondblclick="copy(this)" class="coinaddr" rows="1" readonly>MN55tu4y7UtdPXUk9WvCSfy4nGUW79DZpN</textarea><br>
<img class="qrcode" width="250px" src="{{ url_for('static', filename='images/donate/cur-eth-addr.png') }}" />
<b class="address">{% trans %}ETH Address{% endtrans %}:</b> <textarea ondblclick="copy(this)" class="coinaddr" rows="1" readonly>0xfC35D2225bA2739eCC5a1e50676a8DbC03569C27</textarea><br>
<img class="qrcode" width="250px" src="{{ url_for('static', filename='images/donate/cur-anc-addr.png') }}" />
<b class="address">{% trans %}ANC Address{% endtrans %}:</b> <textarea ondblclick="copy(this)" class="coinaddr" rows="1" readonly>ANi2pB8RTeuWFf9wki6Ffiv9RJqioQydrH</textarea><br>
<img class="qrcode" width="250px" src="{{ url_for('static', filename='images/donate/cur-xmr-addr.png') }}" />
<b class="address">{% trans %}XMR Address{% endtrans %}:</b> <textarea ondblclick="copy(this)" class="coinaddr" rows="1" readonly>447kucUDzM21jDxdmx7h2jFT4UT4PprD8EMjDk4Bc471gRGkbeZSfSPHcB7JtiumR7gNRJgKqf1dHa2T49nQ7jsfSZSfoLA</textarea><br>
<!--<p><b>{% trans %}We now also accept paypal donations!{% endtrans %}</b></p>-->
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick" />
<input type="hidden" name="hosted_button_id" value="WJA7BJTH89JKN" />
<input type="image" src="https://www.paypalobjects.com/en_US/NO/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
<img alt="" border="0" src="https://www.paypal.com/en_NO/i/scr/pixel.gif" width="1" height="1" />
</form>
<div class="emailforms">
<h2>{% trans %}Let us know about your donation{% endtrans %}</h2>
<p>{% trans %}If you wish, you can inform us of your donation using the form just below.
This is not a required step for your donation to succeed, but if you want to
make sure we know you're out there, get ahold of us here.{% endtrans %}
</p>
<script type="text/javascript">
function copy(that){
var inp = document.createElement('textarea');
document.body.appendChild(inp)
inp.value = that.textContent
inp.select();
document.execCommand('copy', false);
inp.remove();
}
</script>
<form action="mailto:someone@example.com" method="post" enctype="text/plain">
<span class="emaillabel">{% trans %}Preferred Name: {% endtrans %}</span><input class="emailform" type="text" name="firstname"><br>
<span class="emaillabel">{% trans %}E-mail: {% endtrans %}</span><input class="emailform" type="text" name="mail"><br>
<span class="emaillabel">{% trans %}Message: {% endtrans %}</span><input class="emailform messagebox" type="text" name="comment"><br><br>
<input class="emailbutton" type="submit" value="Send">
<input class="emailbutton" type="reset" value="Reset">
</form>
</div>
<h2>{% trans %}Tax Status{% endtrans %}</h2>
<p>{% trans -%}
I2P itself is not incorporated and donations are not tax deductible.
{%- endtrans %}</p>
<h2>{% trans %}Stickers{% endtrans %}</h2>
<p>{% trans -%}
I2P makes stickers available at conferences - please refer to the official I2P
Twitter and Masdodon accounts to contact the I2P team. Stickers can also be
sent by post with your donation while supplies last.
{%- endtrans %}</p>
{% endblock %}

View File

@ -1,6 +1,6 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Developer Guidelines and Coding Style') }}{% endblock %}
{% block lastupdated %}2022-01{% endblock %}
{% block lastupdated %}2021-01{% endblock %}
{% block content %}
<p>{% trans newdevs=site_url('get-involved/guides/new-developers') -%}
Read the <a href="{{ newdevs }}">new developers guide</a> first.
@ -138,7 +138,7 @@ Javadocs for API methods should be clear and complete.
If you add or change the API, also update the documentation on the website (i2p.www branch).
{%- endtrans %}</li>
<li>{% trans -%}
Tag strings for translation where appropriate, which is true for all UI strings.
Tag strings for translation where appropriate.
Don't change existing tagged strings unless really necessary, as it will break existing translations.
Do not add or change tagged strings after the "tag freeze" in the release cycle so that
translators have a chance to update before the release.
@ -219,38 +219,6 @@ Don't start threads in constructors. Use I2PAppThread instead of Thread.
{%- endtrans %}</li>
</ul>
<h3>{{ _('Logging') }}</h3>
The following guidelines apply to the router, webapps, and all plugins.
<ul>
<li>
For any messages not displayed at the default log level (WARN, INFO, and DEBUG),
unless the message is a static string (no concatenation),
always use log.shouldWarn(), log.shouldInfo(), or log.shouldDebug()
before the log call to avoid unnecessary Object churn.
</li><li>
Log messages that may be displayed at the default log level (ERROR, CRIT, and logAlways())
should be brief, clear, and understandable to a non-technical user.
This includes exception reason text that may also be displayed.
Consider translating if the error is likely to happen (for example, on form submission errors).
Otherwise, translation is not necessary, but it may be helpful to search for and reuse
a string that is already tagged for translation elsewhere.
</li><li>
Log messages not displayed at the default log level (WARN, INFO, and DEBUG)
are intended for developer use, and do not have the above requirements.
However, WARN messages are available in the Android log tab, and may be of assistance
to users debugging issues, so use some care with WARN messages as well.
</li><li>
INFO and DEBUG log messages should be used sparingly, especially in hot code paths.
While useful during development, consider removing them or commenting them out
after testing is complete.
</li><li>
Do not log to stdout or stderr (wrapper log).
</li>
</ul>
<h3>{{ _('Licenses') }}</h3>
<ul>
<li>{% trans -%}

View File

@ -1,6 +1,6 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('How to Set up a Reseed Server') }}{% endblock %}
{% block lastupdated %}2021-12{% endblock %}
{% block lastupdated %}2020-07{% endblock %}
{% block content %}
<h2>{% trans %}Overview{% endtrans %}</h2>
@ -44,7 +44,7 @@ This necessitates that you run fail2ban or an equivalent solution.
<p>{% trans -%}
When your setup is complete and ready for testing, we will need the HTTPS URL,
the SSL public key certificate (only if selfsigned), and the su3 public key certificate.
the SSL public key certificate, and the "su3" bundle public key.
After testing is complete, these will be added to the hardcoded entries in the Java and C++ routers in the next release,
and you will start seeing traffic.
We also will need your email address so we may continue to contact you about reseed administration issues.
@ -938,15 +938,13 @@ Do a real reseed test on *another* I2P router machine:
<h3>8. Contact Reseed Maintainer</h3>
<p>
Contact us via email zzz at mail.i2p (alternatively, post in the reseed section on the zzz.i2p forum)
Provide us with details about your new reseed server:
Contact us per email zzz at mail.i2p (fallback is the reseed section at zzz's forum)
Provide us with details about the new
<ul>
<li>Reseed website URL
<li>Public SSL certificate
(Only required if selfsigned, which is not recommended. Please use Lets Encrypt or other CA)
<li>Public reseed su3 certificate
<li>Reseed website URL,
<li>Public part of SSL-certificate
<li>Public su3-key
<li>Your contact email
<li>A statement that you agree to the privacy policy above
</ul>
<p>
Feel free to contact zzz at mail.i2p in case of questions or problems or post your question at zzz's forum in the reseed section.

View File

@ -1,46 +1,114 @@
{% extends "global/layout.html" %} {% block title %}{% trans %}Get Involved{% endtrans %}{% endblock %} {% block content %}
{% extends "global/layout.html" %}
{% block title %}{% trans %}Get Involved{% endtrans %}{% endblock %}
{% block content %}
<h2>{% trans %}There are many ways you can help I2P.{% endtrans %}</h2>
<p>{% trans -%}
To get involved, please feel free to join us on the forum, which is available at <a href="https://i2pforum.net">i2pforum.net</a>
on the non-private internet and at <a href="http://i2pforum.i2p">i2pforum.i2p</a>
inside the I2P network, or to create an account on our project Gitlab <a href="http://git.idk.i2p">inside the I2P network here</a> or <a href="https://i2pgit.org"> on the non-private internet here</a>. If you don't want to create an account on our forum, some
of our developers are active Redditors who will talk to you on <a href="https://reddit.com/r/i2p">r/i2p</a> and many of
us also operate <a href="https://github.com/">Github</a> accounts where we work on I2P-Related projects, but we do not
offer official support for I2P contributions via Github.
For real-time chat, there is an IRC network within I2P. Please join the #i2p-dev IRC channel (on
irc.freenode.net, irc.oftc.net, or within I2P on irc.echelon.i2p, irc.dg.i2p or irc.postman.i2p).
Other contact information is maintained on <a href="{{ team }}">this page</a>.
{%- endtrans %}</p>
<p>{% trans team=site_url('about/contact') -%}
If you're interested in development, <a href="{{ team }}">please get in
touch as we're always looking for new contributors.</a>
{%- endtrans %}</p>
<h3>{% trans %}Join us on our Gitlab{% endtrans %}</h3>
<ul>
<li><strong><a href="http://git.idk.i2p">{% trans %}Inside I2P - (http://git.idk.i2p){% endtrans %}</a></strong>
</li>
<li><strong><a href="https://i2pgit.org">{% trans %}Outside I2P - (https://i2pgit.org){% endtrans %}</a></strong>
</li>
</ul>
<p>{% trans -%}
We need help in many areas, and you don't need to know Java to contribute.
Here's a list to help get you started.
{%- endtrans %}</p>
<h3>{% trans %}Grow the Community{% endtrans %}</h3>
<ul>
<li><b>{% trans %}Support I2P Core Development{% endtrans %}</b>{% trans %}The project hosts meetings on the first Tuesday of every month that are open to the community. This is a great opportunity to see what is happening with I2P core development and
familiarize yourself with Roadmap tasks. Additionally, protocol development meetings take place every Tuesday and zzz's development forum is available all of the time as a place to participate in development and issues that need fixing. See the
new developer's guide for how to get started.{% endtrans %}
</li>
<li><b>{% trans %}Spread the Word.{% endtrans %}</b> &mdash; {% trans -%} Tell people about I2P on forums, blogs, and comments to articles. Fix up the
<a href="https://wikipedia.org/wiki/I2P">Wikipedia article about I2P in your language</a>. Tell your friends, and more importantly, use I2P to communicate with your friends. We have many tools that can help you keep your private conversations
private. {%- endtrans %}
</li>
<li><b><a href="{{ newtrans }}">{{ _('Translation and Documentation') }}</a></b> &mdash; {% trans newtrans=site_url('get-involved/guides/new-translators') -%} Help translate the website and the software into your language. Translators are a very important
part of this decentralized project and your work is always appreciated. See the new translator's guide for details. The project also welcomes support to help keep its documentation updated. See the <a href="{{ newtrans }}">new translator's guide</a> for details. {%- endtrans %}
</li>
</ul>
<li><b>{% trans %}Spread the Word.{% endtrans %}</b> &mdash;
{% trans -%}
Tell people about I2P on forums, blogs, and comments to articles. Fix up the
<a href="https://wikipedia.org/wiki/I2P">Wikipedia article about I2P in your language</a>. Tell your friends, and more
importantly, use I2P to communicate with your friends. We have many tools that
can help you keep your private conversations private.
{%- endtrans %}
</li><li><b><a href="{{ newtrans }}">{{ _('Translation') }}</a></b> &mdash;
{% trans newtrans=site_url('get-involved/guides/new-translators') -%}
Help translate the website and the software into your language. Translators are
a very important part of this decentralized project and your work is always
appreciated.
See the <a href="{{ newtrans }}">new translator's guide</a> for details.
{%- endtrans %}
</li><li><b><a href="https://i2pgit.org/i2p-hackers/i2p.www">{{ _('Documentation') }}</a></b> &mdash;
{% trans -%}
Suggest changes to the website, or help fix the parts of the website that you
notice are outdated or incomplete. Web Site development has been fully migrated to
git, you can participate by creating an account on our project Gitlab
<a href="http://git.idk.i2p/i2p-hackers/i2p.www">inside the I2P network here</a> or
<a href="https://i2pgit.org/i2p-hackers/i2p.www"> on the non-private internet here</a>. We also always
appreciate our wonderful translators, join one of our Transifex teams and help
translate pages into other languages.
{%- endtrans %}
</li><li><b>{{ _('Testing') }}</b> &mdash;
{% trans monotone=site_url('get-involved/guides/monotone'),
trac=i2pconv('trac.i2p2.i2p') -%}
Run the latest builds from <a href="{{ monotone }}">monotone</a> or a recent
build from the <a href="https://github.com/i2p/i2p.i2p">unofficial github mirror</a>
and report results on Gitlab <a href="http://git.idk.i2p/i2p-hackers/i2p.www">inside the I2P network here</a>
or <a href="https://i2pgit.org/i2p-hackers/i2p.www"> on the non-private internet here</a>.
For existing bugs, <a href="http://{{ trac }}/report/1">Trac</a> is still acceptable.
{%- endtrans %}
</li></ul>
<h3>{% trans %}Host Services for Yourself and Others{% endtrans %}</h3>
<ul>
<li><b><a href="{{ site_url('/about/software') }}">{{ _('Services') }}</a></b> &mdash; {% trans -%} Self-hosting almost anything, from an SSH server for yourself to an ActivityPub forum for everyone and anything in between, is helpful to the I2P network,
especially if you write down instructions for others. Almost anything you can think of can be made to work with I2P, and your service is valuable to the network. {%- endtrans %}
</li>
<li><b><a href="{{ reseed }}">{{ _('Reseeding') }}</a></b> &mdash; {% trans reseed=site_url('get-involved/guides/reseed') -%} Getting new users onto the network is a very important task, and that task is handled by our reseed servers. The more reseed
servers we have, the more de-centralized and redundant our infrastructure is. It's a big responsibility, but it's pretty easy to set up a reseed server for new routers to bootstrap from. Detailed instructions are on our <a href="{{ reseed }}">reseed server page</a>.
{%- endtrans %}
</li>
<li><b><a href="{{ site_url('/about/software') }}">{{ _('Services') }}</a></b> &mdash;
{% trans -%}
Self-hosting almost anything, from an SSH server for yourself to an ActivityPub
forum for everyone and anything in between, is helpful to the I2P network,
especially if you write down instructions for others. Almost anything you can
think of can be made to work with I2P, and your service is valuable to the network.
{%- endtrans %}
</li><li><b><a href="{{ reseed }}">{{ _('Reseeding') }}</a></b> &mdash;
{% trans reseed=site_url('get-involved/guides/reseed') -%}
Getting new users onto the network is a very important task, and that task is handled by our reseed servers. The more reseed servers we have, the more de-centralized and redundant our infrastructure is. It's a big responsibility, but it's pretty easy to set up a reseed server for new routers to bootstrap from. Detailed instructions are on our <a href="{{ reseed }}">reseed server page</a>.
{%- endtrans %}
</li>
</ul>
<h3>{% trans %}Develop and Test Software{% endtrans %}</h3>
<h3>{% trans %}Develop Software{% endtrans %}</h3>
<ul>
<li><b><a href="{{ site_url('/get-involved/guides/dev-guidelines') }}">{{ _('Applications') }}</a></b> &mdash; {% trans apps=site_url('get-involved/develop/applications') -%} Write or port applications for I2P. There's some guidelines and a list of ideas
on the <a href="{{ apps }}">applications page</a>. {%- endtrans %}
</li>
<li><a href="{{ site_url('/get-involved/guides/new-developers') }}"><b>{{ _('Coding') }}</a></b> &mdash; {% trans trac=i2pconv('trac.i2p2.i2p'), zzz=i2pconv('zzz.i2p'), newdevs=site_url('get-involved/guides/new-developers') -%} There's plenty to do if
you know Java or are ready to learn. Check for open tickets on <a href="http://{{ trac }}/report/1">Trac</a> or the TODO list on <a href="http://{{ zzz }}">{{ zzz }}</a> for some ideas on where to start. See the <a href="{{ newdevs }}">new developer's guide</a> for details. {%- endtrans %}
</li>
<li><b><a href="{{ site_url('research/index') }}">{{ _('Analysis') }}</b> &mdash; {% trans threatmodel=site_url('docs/how/threat-model') -%} Study or test the code to look for vulnerabilities. Both anonymity vulnerabilities from the various
<a href="{{ threatmodel }}">threat models</a>, and DOS and other weaknesses due to security holes, benefit from ongoing research. {%- endtrans %}
</li>
</ul>
<h4>{% trans %}When you're ready, join us on our Gitlab{% endtrans %}</h4>
<ul>
<li><strong><a href="http://git.idk.i2p">{% trans %}Inside I2P - (http://git.idk.i2p){% endtrans %}</a></strong>
</li>
<li><strong><a href="https://i2pgit.org">{% trans %}Outside I2P - (https://i2pgit.org){% endtrans %}</a></strong>
</li>
</ul>
{% endblock %}
<li><b><a href="{{ site_url('/get-involved/guides/dev-guidelines') }}">{{ _('Applications') }}</a></b> &mdash;
{% trans apps=site_url('get-involved/develop/applications') -%}
Write or port applications for I2P. There's some guidelines and
a list of ideas on the <a href="{{ apps }}">applications page</a>.
{%- endtrans %}
</li><li><a href="{{ site_url('/get-involved/guides/new-developers') }}"><b>{{ _('Coding') }}</a></b> &mdash;
{% trans trac=i2pconv('trac.i2p2.i2p'),
zzz=i2pconv('zzz.i2p'),
newdevs=site_url('get-involved/guides/new-developers') -%}
There's plenty to do if you know Java or are ready to learn.
Check for open tickets on <a href="http://{{ trac }}/report/1">Trac</a>
or the TODO list on <a href="http://{{ zzz }}">{{ zzz }}</a> for
some ideas on where to start.
See the <a href="{{ newdevs }}">new developer's guide</a> for details.
{%- endtrans %}
</li><li><b><a href="{{ site_url('research/index') }}">{{ _('Analysis') }}</b> &mdash;
{% trans threatmodel=site_url('docs/how/threat-model') -%}
Study or test the code to look for vulnerabilities.
Both anonymity vulnerabilities from the various
<a href="{{ threatmodel }}">threat models</a>, and DOS and other weaknesses due
to security holes, benefit from ongoing research.
{%- endtrans %}
</li></ul>
<h3><a href="{{ site_url('get-involved/donate') }}">{% trans %}Donate{% endtrans %}</a></h3>
<ul><li><b>
<a href="{{ site_url('get-involved/donate') }}">{{ _('Donate') }}</a>: I2P is FOSS - Free Open-Source
Software, which is supported by volunteers and by donations. If you use the network, please consider
setting a monthly donation to help cover costs for maintainers and developers to keep improving the
software and network.
</b></li></ul>
{% endblock %}

View File

@ -1,826 +0,0 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Roadmap') }}{% endblock %}
{% block lastupdated %}2021-12{% endblock %}
{% block content %}
<p>
This is an archive of the roadmap for I2P over the course
of it's history.
</p>
<h2 id="2016">2016 - 2020 Releases</h2>
<h2 id="v0.9.24">0.9.24</h2>
<p><b>Released: January 27, 2016</b></p>
<ul><li>
SAM v3.2
</li><li>
Require Java 7
</li><li>
NetDB Family
</li><li>
Remove commons-logging
</li><li>
Use SSU Extended options to request introduction
</li><li>
Experimental Sybil analysis tool
</li><li>
Unit test improvements
</li><li>
Complete transition to Ed25519 signatures for most routers
</li><li>
Tunnel Bloom filter fixes
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.25">0.9.25</h2>
<p><b>Released: March 22, 2016</b></p>
<ul><li>
SAM v3.3
</li><li>
Sybil tool enhancements
</li><li>
QR codes and identicons
</li><li>
Crypto speedups
</li><li>
Router family configuration UI
</li><li>
Custom icons for non-webapp plugins
</li><li>
Pure Java key pair generation
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.26">0.9.26</h2>
<p><b>Released: June 7, 2016</b></p>
<ul><li>
New subscription protocol, addressbook support (proposal 112)
</li><li>
Wrapper 3.5.29
</li><li>
GMP 6.0 (Debian/Ubuntu packages, new installs)
</li><li>
Certificate revocations in the news feed
</li><li>
Debian/Ubuntu/Tails package improvements
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.27">0.9.27</h2>
<p><b>Released: October 17, 2016</b></p>
<ul><li>
SSU IPv6 peer testing (proposal 126)
</li><li>
Enable tray icon on Windows
</li><li>
Add outproxy plugin support in SOCKS
</li><li>
Hidden mode improvements
</li><li>
SSU peer test fixes
</li><li>
Initial work on NTCP2
</li><li>
Initial work on New DH
</li><li>
GMP 6.0 (In-net updates)
</li></ul>
<h2 id="v0.9.28">0.9.28</h2>
<p><b>Released: December 12, 2016</b></p>
<ul><li>
IPv6 improvements
</li><li>
Increase IPv6 MTU (proposal 127)
</li><li>
Blocklist enhancements (proposal 129)
</li><li>
Sybil tool enhancements
</li><li>
Bundled software updates: Jetty, JRobin, Tomcat, Wrapper, Zxing
</li><li>
Fixes for Java 9
</li><li>
Improved self-signed certificates
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.29">0.9.29</h2>
<p><b>Released: February 27, 2017</b></p>
<ul><li>
More fixes for Java 9
</li><li>
NTP hardening and IPv6 support
</li><li>
Same-origin referer pass through
</li><li>
BOB database refactor
</li><li>
Preliminary Docker support
</li><li>
Translated man pages
</li><li>
I2PBote release 0.4.5
</li><li>
stats.i2p accepts authentication strings (proposal #112)
</li><li>
Streaming test harness
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.30">0.9.30</h2>
<p><b>Released: May 3, 2017</b></p>
<ul><li>
Hidden service server sigtype migration (publish dual LS)
</li><li>
Tomcat 8 / Jetty 9.2
</li><li>
Stretch/Zesty support
</li><li>
i2ptunnel authentication page improvements and fixes
</li><li>
Introducer expiration (proposal #133)
</li><li>
I2PBote release 0.4.6
</li><li>
i2psnark-rpc plugin
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.31">0.9.31</h2>
<p><b>Released: August 7, 2017</b></p>
<ul><li>
Console redesign phase 1 ("refresh") (ticket #738)
</li><li>
Move /peers HTML code to console, remove from Android
</li><li>
i2psnark ratings and comments
</li><li>
Launch I2P Summer of Dev 2
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.32">0.9.32</h2>
<p><b>Released: November 7, 2017</b></p>
<ul><li>
Ignore hostnames in router infos (proposal #141)
</li><li>
UI fixes
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="v0.9.33">0.9.33</h2>
<p><b>Released: January 30, 2018</b></p>
<ul><li>
Reseed support for proxies
</li><li>
Enable tray app on OSX
</li><li>
Jetty 9.2.22, Tomcat 8.5.23, Wrapper 3.5.34
</li><li>
Console CSS fixes and improvements
</li><li>
Susimail fixes, improvements, refactoring part 1
</li><li>
Streaming bug fixes
</li><li>
Android fixes
</li><li>
Bote fixes
</li><li>
Debian packaging changes and improvements, dependency changes
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="0.9.34">0.9.34</h2>
<p><b>Released: April 10, 2018</b></p>
<ul><li>
Susimail fixes, improvements, refactoring part 2
</li><li>
I2PControl plugin fixed
</li><li>
UPnP support for IGD 2
</li><li>
IPv6 address selection improvements
</li><li>
Better tunnel peer selection for hidden and IPv6-only modes
</li><li>
Prep for HTTPS console and I2P Site by default
</li><li>
Prep for splitting up Debian package
</li><li>
Mac OS X installer, dock, tray enhancements (research and initial work)
</li><li>
Bug fixes, translation updates, geoip updates
</li></ul>
<h2 id="0.9.35">0.9.35</h2>
<p><b>Released: June 26, 2018</b></p>
<ul><li>
Jetty 9.2.24
</li><li>
Tomcat 8.5.30
</li><li>
Susimail folders, background sending
</li><li>
Improved support for SSL console and I2P Site
</li><li>
Bug fixes, translation updates, geoip updates
</li><li>
Progress on proposal #111 (NTCP2)
</li><li>
Progress on Mac OS X installer, dock, tray enhancements
</li></ul>
<h2 id="0.9.36">0.9.36</h2>
<p><b>Released: August 23, 2018</b></p>
<ul><li>
NTCP2 (disabled by default)
</li><li>
Jetty 9.2.25
</li><li>
Progress on proposal #123
(LS2 with multi-destination support)
</li><li>
Initial research on ElGamal replacement ("new crypto" / proposal #142)
</li><li>
Capacity improvements: discussions, research, preliminary
</li><li>
Streaming improvements
</li><li>
Performance improvements
</li><li>
NTCP Pumper improvements
</li><li>
EdDSA updates
</li></ul>
<h2 id="0.9.37">0.9.37</h2>
<p><b>Released: October 4, 2018</b></p>
<ul><li>
NTCP2 (enabled by default)
</li><li>
Android i2ptunnel SSL crash fix
</li></ul>
<h2 id="0.9.38">0.9.38</h2>
<p><b>Released: January 22, 2019</b></p>
<ul><li>
New setup wizard with bandwidth testing
</li><li>
Beta Mac OS X installer, dock, tray enhancements
</li><li>
Signed Windows installer
</li><li>
Signed Firefox profile installer
</li><li>
Preliminary floodfill support for LS2
</li><li>
Sybil tool background analysis
</li><li>
Switch to Maxmind GeoLite2 GeoIP format
</li><li>
Switch JSON lib to json-simple, add Debian dependency
</li><li>
New light background
</li><li>
Orchid plugin fixes
</li><li>
AppArmor fixes
</li><li>
Continue work on ECIES-X25519 support (proposal #144)
</li></ul>
<h2 id="0.9.39">0.9.39</h2>
<p><b>Released: March 21, 2019</b></p>
<ul><li>
Redesigned website home page
</li><li>
Reduce themes (ticket #2272)
</li><li>
Replacement icons for console home page
</li><li>
Continue work on testnet
</li><li>
Floodfill and client encrypted LS2 support (proposal #123)
</li><li>
LS2 client-side support (proposal #123)
</li><li>
Add option to disable NTCP1
</li><li>
Bundle i2pcontrol
</li><li>
AppArmor fixes
</li><li>
starting investigation of zerodeps jre
</li><li>
starting investigation of monolithic installer
</li><li>
Have apt-transport-i2p and all of its dependencies on-track for inclusion in Debian
(sam3 and gosam, the Go i2p application libraries), include in PPA/Project repo
</li><li>
Write beginner application development guides for SAM applications
</li><li>
Start community PPA and application development (sub)forums
</li><li>
Write materials for newbies on Medium
</li><li>
Complete preferences dialog on the OSX Launcher
</li><li>
Feature for running devbuilds with OSX Launcher
</li></ul>
<h2 id="0.9.40">0.9.40</h2>
<p><b>Released: May 7, 2019</b></p>
<ul><li>
New icons
</li><li>
I2CP and router support for decrypting LS2 (proposal #123)
</li><li>
Router decryption of LS2 support (proposal #123)
</li><li>
Router-side meta LS2 support (proposal #123)
</li><li>
Continue work on ECIES-X25519 support (proposal #144)
</li><li>
Start work on Network ID detection (proposal #147)
</li><li>
Start work on BLAKE2b sig types (proposal #148)
</li><li>
Implement base 32 for encrypted LS2 (proposal #149)
</li><li>
Document protocol for meta LS2 backend (proposal #150)
</li><li>
Disable NTCP1
</li><li>
Signed Windows installer
</li><li>
Scripted connection filter for streaming
</li><li>
geti2p/i2p docker image available at our download page
</li><li>
osx: theme selection
</li><li>
osx: auto updater
</li><li>
osx: upgrade to newer swift version
</li><li>
Browser identity management UI WebExtension for i2p Browser build
</li><li>
Browser tunnel identity management UI WebExtension for i2p Browser build
</li><li>
Browser news/documentation inclusion WebExtension for i2p Browser build
</li><li>
Onboarding improvements
</li><li>
Self-installing client/service demos for nginx(server only), ssh/sshd, and Mattermost client/server using split i2ptunnel configuration and apt
</li><li>
Port any maintainable, i2p-native bittorrent client to be apt-get installable in Debian, likely BiglyBT or XD
</li><li>
Produce ISO for "I2P Linux Distro Redux" Project using these features
</li><li>
Fix I2P-bote Android
</li><li>
Fix I2P-bote seeds
</li><li>
goSam - Up to SAM 3.2, better default signatures.
</li><li>
sam3 - Up to SAM 3.2, better default signatures. Streaming, datagrams, and raw. General improvements.
</li><li>
jsam - Further development
</li><li>
Better support / encourage translation efforts
</li><li>
Android fixes
</li></ul>
<h2 id="0.9.41">0.9.41</h2>
<p><b>Released: July 3, 2019</b></p>
<ul><li>
Redesigned website navigation menu
</li><li>
New console icons and logos
</li><li>
Router-side meta LS2 support (proposal #123)
</li><li>
UI for per-client encrypted LS2 (proposal #123)
</li><li>
Continue work on ECIES-X25519 support (proposal #144)
</li><li>
Implement base 32 for encrypted LS2 (proposal #149)
</li><li>
GMP 6.1.2 (ticket #1869), partial
</li><li>
Wrapper 3.5.39
</li><li>
Wrapper for armv7 and aarch64
</li><li>
IzPack 5 for non-Windows installers
</li><li>
browser: new release, upstream tor changes, minor changes
</li><li>
Browser identity management UI WebExtension for i2p Browser build
</li><li>
Browser news/documentation inclusion WebExtension for i2p Browser build
</li><li>
Android GMP 6 and 64-bit jbigi
</li><li>
Android fixes
</li></ul>
<h2 id="0.9.42">0.9.42</h2>
<p><b>Released: August 27, 2019</b></p>
<ul><li>
Browser web extensions
</li><li>
Self-installing demos of popular apps/services
</li><li>
ISO for Linux distro
</li><li>
Translation efforts
</li><li>
ECIES Proposal 144 (continuing)
</li><li>
GMP 6.1.2
</li><li>
Network ID detection Prop 147
</li><li>
Split configuration
</li><li>
Android fixes
</li></ul>
<h2 id="0.9.43">0.9.43</h2>
<p><b>Released: October 22, 2019</b></p>
<ul><li>
Docker image documentation and promotion to first-class product
</li><li>
I2P browser: Embed router
</li><li>
I2P browser: Delay the user dialog
</li><li>
I2P browser: JSON-RPC2 client for router communication
</li><li>
I2P browser: Fix NoScript
</li><li>
I2P browser releases: beta 5, 6; v3.0 based on 68.1 ESR
</li><li>
I2CP blinding info message
</li><li>
Proxy page for encrypted LS2 credentials
</li><li>
Android client library release
</li><li>
ECIES Proposal 144 (continuing)
</li><li>
Setup wizard improvements
</li><li>
Revamped website navigation menu
</li><li>
Android fixes
</li><li>
Android battery permission
</li></ul>
<h2 id="0.9.44">0.9.44</h2>
<p><b>Released: December 1, 2019</b></p>
<ul><li>
Testnet k8s definitions
</li><li>
ruby gem (ji2p, initial code to be used to control many routers in k8s)
</li><li>
k8s internal communication test with routers using network impl. flannel
</li><li>
k8s ingress definitions (how to make outside contact the router(s) inside k8s)
</li><li>
I2P Browser: See <a href="../browser/roadmap">Browser roadmap</a>
</li><li>
IPv6 fixes
</li><li>
SSU performance improvements
</li><li>
Faster router startup
</li><li>
Console improvements
</li><li>
ECIES Proposal 144 initial implementation
</li><li>
Donation page redesign and backend (development)
</li></ul>
<h2 id="0.9.45">0.9.45</h2>
<p><b>Released: February 25, 2020</b></p>
<ul><li>
Hidden mode fixes
</li><li>
Bandwidth test fixes
</li><li>
ECIES Proposal 144 testing, fixes
</li><li>
Susimail login page improvements
</li><li>
LibSam - deduplication, documentation, support
</li><li>
Console theme modernization(Light and Dark)
</li><li>
Consistency with modern themes for SusiDNS, SusiMail apps
</li><li>
Leftover light theme nits
<ul><li>
border colours that are still present
</li><li>
download sidebar status is still gradient filled
</li><li>
take out network status icons? Replace with colours from style guide?
</li><li>
go over icons on every page and evaluate
</li><li>
try I2P blue icons on /home
</li><li>
buttons / tabs consistency
</li></ul>
</li><li>
Dark Theme
<ul><li>
Carry over tabs/ buttons decisions
</li><li>
decide on theme colour
</li></ul>
</li><li>
Susi Mail Light & Dark
<ul><li>
Remove icon bloat
</li><li>
make buttons rounded
</li><li>
remove gradient on login page
</li><li>
add a product description to login page
</li><li>
**change icon colours for themes
</li></ul>
</li></ul>
<h2 id="0.9.46">0.9.46</h2>
<p><b>Released: May 25, 2020</b></p>
<ul><li>
Replace jrobin with rrd4j
</li><li>
ECIES Proposal 144 testing, fixes, completion
</li><li>
ECIES lookup replies
</li><li>
i2ptunnel edit page redesign
</li><li>
Streaming performance improvements
</li><li>
Start migrating deb.i2p2.no
</li><li>
Android fixes
</li><li>
Long-term strategy for website
</li><li>
Identity and Values Workshops
</li><li>
Branding Foundations Work
</li><li>
Information Architecture Sprint : Console and Website
</li><li>
Console Interface Redesign prototypes
</li><li>
Console Interface Usability Testing
</li><li>
Reproducible build fix
</li><li>
Streaming fixes
</li><li>
UPnP fixes
</li>
</ul>
<h2 id="0.9.47">0.9.47</h2>
<p><b>Released: August 24, 2020</b></p>
<ul><li>
Require Java 8
</li><li>
Jetty 9.3.x
</li><li>
json-simple 2.3.0
</li><li>
RRD4j 3.6
</li><li>
ECIES enabled by default for some tunnels
</li><li>
Increase streaming MTU for ECIES connections
</li><li>
Enable Sybil analysis and blocking by default
</li><li>
Begin transition to Git
</li><li>
Improvements to the Bandwidth Setup/Welcome Wizard imagery and text
</li><li>
Ongoing refinements to new dark and light theme
</li><li>
Find and replace inconsistent icons from the router console
</li><li>
Bug Fixes on Android versions later than 8.0
</li><li>
Hide empty sections on router console home page
</li><li>
Operators guides for reseed services
</li><li>
Detailed install guide for the main I2P Java distribution
</li><li>
Begin implementing Information Architecture improvements to geti2p.net
</li><li>
Identify and Publish information about critical infrastructures(VCS, website, reseeds, repositories, mirrors)
</li><li>
Publish log retention policy Recommendations and Guidelines for service admins
</li><li>
In depth blog entries on: Site Hosting/Service operation, Project Services, Policy Recommendations
</li><li>
Release(Tag)-time "git bundle" generation and distribution by either HTTP or Bittorrent.
</li></ul>
<h2 id="0.9.48">0.9.48</h2>
<p><b>Released: December 1, 2020</b></p>
<ul><li>
ECIES router tunnel build record
</li><li>
Avoid old DSA-SHA1 routers
</li><li>
Block same-country connections when in hidden mode
</li><li>
Deprecate BOB
</li><li>
Drop support for Xenial
</li><li>
Ratchet efficiency improvements and memory reduction
</li><li>
Randomize SSU intro key
</li><li>
Enable system tray for Linux KDE and LXDE
</li><li>
More SSU performance improvements
</li><li>
Continue transition to Git
</li><li>
Operators guides for reseed services
</li><li>
Windows Installer "Install as Windows Service" bugfixes and improvements.
</li><li>
Implement controlled vocabuary as part of Information Architecture improvements
</li><li>
Alternate destination header/meta tag for web sites offering I2P mirrors
</li><li>
Snark in the Browser: Use torrents as alternates sources for resources embedded in an I2P Site
</li><li>
Snark in the Browser: Demo a torrent-backed web page
</li><li>
finish ji2p-cluster which adds the k8s part of the code
</li><li>
Publish reasonable contact information for infrastructure admins
</li></ul>
<h2 id="0.9.49">0.9.49</h2>
<p><b>Released: February 17, 2021</b></p>
<ul><li>
SSU send individual fragments
</li><li>
SSU Westwood+
</li><li>
SSU fast retransmit
</li><li>
SSU fix partial acks
</li><li>
ECIES router encrypted messages
</li><li>
Start rekeying routers to ECIES
</li><li>
Start work on new tunnel build message (proposal 157)
</li><li>
More SSU performance improvements
</li><li>
i2psnark webseed support
</li><li>
Start work on i2psnark hybrid v2 support
</li><li>
Move web resources to wars
</li><li>
Move resources to jars
</li><li>
Fix Gradle build
</li><li>
Hidden mode fixes
</li><li>
Change DoH to RFC 8484
</li><li>
Fix "Start on Boot" support on Android
</li><li>
Add support for copying b32 addresses from the tunnels panel on I2P for Android client
</li><li>
Add SAMv3 Support to I2P for Android
</li><li>
Revise CSS on the default I2P Site to resemble console Light theme
</li><li>
Document setup/configuration of default I2P site on the project site
</li><li>
Add icons and symbols used in I2P router console Light theme to router console Dark theme
</li><li>
Complete transition to Git
</li><li>
Donation page redesign and backend (deployment)
</li><li>
Review and update information about VCS, Code Repositories, and Mirrors across the entire website.
</li></ul>
<h2 id="0.9.50">0.9.50</h2>
<p><b>Released: May 18, 2021</b></p>
<ul><li>
Accelerate rekeying routers to ECIES
</li><li>
UPnP IPv6 support
</li><li>
4/6 router address caps (proposal 158)
</li><li>
IPv6 introducers (proposal 158)
</li><li>
NTP year 2036 fixes
</li><li>
Continue work on new tunnel build message (proposal 157)
</li><li>
Enable DoH for reseeding
</li><li>
Docker improvements
</li><li>
SSU IPv6 fixes
</li><li>
Persist Sybil blocklist
</li><li>
Tunnel bandwidth limiter fixes
</li></ul>
{% endblock %}

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ as a replacement for the
As modPow() is a significant computational portion of many crypto operations, this is of significant benefit.
{%- endtrans %}</p>
<p>{% trans nativebigint='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/util/NativeBigInteger.html',
<p>{% trans nativebigint='http://'+i2pconv('echelon.i2p/javadoc')+'/net/i2p/util/NativeBigInteger.html',
bigint='http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#modPow%28java.math.BigInteger,%20java.math.BigInteger%29' -%}
The standard I2P installation includes about 20 versions of the library for different platforms,
each about 50KB, inside the jbigi.jar file.

View File

@ -13,7 +13,7 @@ documents that track changes to these specifications can be viewed
"Last updated" is the last date when the specification given within a document
was altered in any way, except for changes to the "accurate for" information.
</li><li>
The "accurate for" column gives the API version of the I2P network and reference
The "accurate for" column gives the version of the I2P network and reference
Java implementation that the document is verified to be valid for. Because the
documents are usually only updated when changes are made, the listed versions
can sometimes be several releases behind. This does not mean that documents with
@ -52,21 +52,15 @@ If you find any inaccuracies in the documents linked below, please
<h3>Other specification documents</h3>
Current specifications: These may eventually be migrated to the new format.
These will eventually be migrated to the new specifications system.
<ul>
<li><a href="{{ site_url('docs/how/elgamal-aes') }}">{{ _('ElGamal/AES+SessionTags') }}</a></li>
<li><a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a></li>
<li><a href="{{ site_url('docs/api/i2pcontrol') }}">I2PControl</a></li>
<li><a href="{{ site_url('docs/api/samv3') }}">SAM v3</a></li>
<li><a href="{{ site_url('docs/api/bob') }}">BOB</a></li>
<li><a href="{{ site_url('docs/applications/bittorrent') }}">{{ _('Bittorrent') }}</a></li>
<li><a href="{{ site_url('docs/naming') }}">{{ _('Naming and Address Book') }}</a></li>
</ul>
Obsolete specifications:
<ul>
<li><a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a></li>
<li><a href="{{ site_url('docs/api/bob') }}">BOB</a></li>
</ul>
{% endblock %}

View File

@ -2,7 +2,6 @@
B32 for Encrypted Leasesets
===========================
.. meta::
:category: Design
:lastupdated: 2020-08
:accuratefor: 0.9.47

View File

@ -2,7 +2,6 @@
Blockfile and Hosts Database Specification
==========================================
.. meta::
:category: Formats
:lastupdated: 2020-09
:accuratefor: 0.9.47

View File

@ -94,7 +94,7 @@ P521 132 TBD Reserved, see proposal 145
X25519 32 0.9.38 Little-endian. See [ECIES]_ and [ECIES-ROUTERS]_
======= ============== ====== =====
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PublicKey.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PublicKey.html
.. _type-PrivateKey:
@ -126,7 +126,7 @@ P521 66 TBD Reserved, see proposal 145
X25519 32 0.9.38 Little-endian. See [ECIES]_ and [ECIES-ROUTERS]_
======= ============== ====== =====
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/PrivateKey.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/PrivateKey.html
.. _type-SessionKey:
@ -141,7 +141,7 @@ Contents
````````
32 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/SessionKey.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/SessionKey.html
.. _type-SigningPublicKey:
@ -182,7 +182,7 @@ Notes
* All types are Big Endian, except for EdDSA and RedDSA, which are stored and transmitted
in a Little Endian format.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/SigningPublicKey.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/SigningPublicKey.html
.. _type-SigningPrivateKey:
@ -222,7 +222,7 @@ Notes
* All types are Big Endian, except for EdDSA and RedDSA, which are stored and transmitted
in a Little Endian format.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/SigningPrivateKey.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/SigningPrivateKey.html
.. _type-Signature:
@ -263,7 +263,7 @@ Notes
* All types are Big Endian, except for EdDSA and RedDSA, which are stored and transmitted
in a Little Endian format.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Signature.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Signature.html
.. _type-Hash:
@ -278,7 +278,7 @@ Contents
````````
32 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Hash.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Hash.html
.. _type-SessionTag:
@ -296,7 +296,7 @@ Contents
````````
32 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/SessionTag.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/SessionTag.html
.. _type-TunnelId:
@ -313,7 +313,7 @@ Contents
````````
4 byte Integer_
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/TunnelId.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/TunnelId.html
.. _type-Certificate:
@ -490,7 +490,7 @@ EdDSA_SHA512_Ed25519 96 0
EdDSA_SHA512_Ed25519ph 96 0
====================== ============== ===============================
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Certificate.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Certificate.html
Notes
`````
@ -572,7 +572,7 @@ Notes
.. _I2CP SessionConfig: {{ site_url('docs/spec/i2cp') }}#struct_SessionConfig
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/DataHelper.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/DataHelper.html
Common structure specification
@ -647,7 +647,7 @@ Notes
* The Crypto Public Key is aligned at the start and the Signing Public Key is
aligned at the end. The padding (if any) is in the middle.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/KeysAndCert.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/KeysAndCert.html
.. _struct-RouterIdentity:
@ -680,7 +680,7 @@ Notes
are supported as of release 0.9.48.
Prior to that, all RouterIdentities were ElGamal.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/router/RouterIdentity.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/router/RouterIdentity.html
.. _struct-Destination:
@ -713,7 +713,7 @@ Notes
* The Crypto Public Key is aligned at the start and the Signing Public Key is
aligned at the end. The padding (if any) is in the middle.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Destination.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Destination.html
.. _struct-Lease:
@ -761,7 +761,7 @@ Notes
`````
* Total size: 44 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Lease.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Lease.html
.. _struct-LeaseSet:
@ -901,7 +901,7 @@ Notes
publishes the actual lease expiration for each lease. This is an
implementation detail and not part of the structures specification.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/LeaseSet.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/LeaseSet.html
.. _struct-Lease2:
@ -953,7 +953,7 @@ Notes
`````
* Total size: 40 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/Lease2.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/Lease2.html
@ -1220,7 +1220,7 @@ Notes
may parse the structure even if not all encryption types are known or supported.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/LeaseSet2.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/LeaseSet2.html
.. _struct-MetaLease:
@ -1284,7 +1284,7 @@ Notes
`````
* Total size: 40 bytes
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/MetaLease.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/MetaLease.html
@ -1401,7 +1401,7 @@ Notes
is included in the leaseset2 header.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/MetaLeaseSet.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/MetaLeaseSet.html
@ -1526,7 +1526,7 @@ Notes
.. _EncryptedLeaseSet: {{ site_url('docs/spec/encryptedleaseset') }}
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/EncryptedLeaseSet.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/EncryptedLeaseSet.html
@ -1600,7 +1600,7 @@ Notes
present in most router addresses: "host" (an IPv4 or IPv6 address or host
name) and "port".
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/router/RouterAddress.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/router/RouterAddress.html
.. _struct-RouterInfo:
@ -1708,7 +1708,7 @@ Notes
so the signature is invariant.
This is no longer required, and not worth implementing for backward compatibility.
JavaDoc: http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/router/RouterInfo.html
JavaDoc: http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/router/RouterInfo.html
.. _struct-DeliveryInstructions:

View File

@ -2,7 +2,6 @@
Configuration File Specification
================================
.. meta::
:category: Formats
:lastupdated: March 2020
:accuratefor: 0.9.45
@ -125,12 +124,6 @@ uninstallargs, and classpath lines, for plugins only:
$PLUGIN
This plugin's directory (e.g. ~/.i2p/plugins/foo)
$OS
The operating system name (e.g. "linux")
$ARCH
The architecture name (e.g. "amd64")
All properties except "main" are optional. Lines starting with "#" are
comments.
@ -493,7 +486,7 @@ References
==========
.. [DATAHELPER]
http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/DataHelper.html
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/DataHelper.html
.. [Mapping]
{{ ctags_url('Mapping') }}

View File

@ -1,6 +1,7 @@
=============================
ECIES-X25519 Router Messages
=============================
.. meta::
:category: Protocols
:lastupdated: 2021-01

View File

@ -2,7 +2,6 @@
Access Filter Format Specification
==================================
.. meta::
:category: Formats
:lastupdated: April 2019
:accuratefor: 0.9.40

View File

@ -2,7 +2,6 @@
GeoIP File Specification
========================
.. meta::
:category: Formats
:lastupdated: December 2013
:accuratefor: 0.9.9

View File

@ -3,8 +3,8 @@ I2CP Specification
==================
.. meta::
:category: Protocols
:lastupdated: 2021-12
:accuratefor: 0.9.52
:lastupdated: 2020-11
:accuratefor: 0.9.48
.. contents::
@ -226,7 +226,7 @@ information to communicate correctly with old routers. Clients and routers
should not send messages that are unsupported by the other side, as they
generally disconnect the session upon reception of an unsupported message.
The exchanged version information is the "core" API version or I2CP protocol
The exchanged version information is the "core" version or I2CP protocol
version, and is not necessarily the router version.
A basic summary of the I2CP protocol versions is as follows. For details, see
@ -373,8 +373,6 @@ Notes
The payload is in a gzip format as specified on the I2CP Overview page
[I2CP-FORMAT]_.
Actual message length limit is about 64 KB.
.. _struct-SessionConfig:
Session Config
@ -406,7 +404,7 @@ Offline Signatures
* If the [Destination]_ is offline signed, the [Mapping]_ must contain
the three options i2cp.leaseSetOfflineExpiration, i2cp.leaseSetTransientPublicKey,
and i2cp.leaseSetOfflineSignature.
The [Signature]_ is then generated by the transient [SigningPrivateKey]_ and is verified
The [Signature]_ is then by the transient [SigningPrivateKey]_ and is verified
with the [SigningPublicKey]_ specified in i2cp.leaseSetTransientPublicKey.
See [I2CP-OPTIONS]_ for details.
@ -426,7 +424,6 @@ Contents
Notes
`````
Session ID 0xffff is used to indicate "no session", for example for hostname lookups.
Messages
@ -666,7 +663,8 @@ Notes
The PrivateKeys match each of the [PublicKey]_ from the LeaseSet.
The PrivateKeys are necessary for decrypting garlic routed messages.
See proposal 123 for more information on Encrypted LeaseSets.
The contents and format for EncryptedLeaseSet are preliminary and subject to change.
See proposal 123 for more information.
The contents and format for MetaLeaseSet are preliminary and subject to change.
There is no protocol specified for administration of multiple routers.
@ -830,7 +828,7 @@ Sent from Client to Router. The router responds with a SetDateMessage_.
Contents
````````
1. I2CP API Version [String]_
1. I2CP Version [String]_
2. Authentication [Mapping]_ (optional, as of release 0.9.11)
Notes
@ -1246,7 +1244,7 @@ Description
Request that a client authorize the inclusion of a particular set of inbound
tunnels.
Sent from Router to Client. The client responds with a CreateLeaseSetMessage_ or CreateLeaseSet2Message_.
Sent from Router to Client. The client responds with a CreateLeaseSetMessage_.
Contents
````````
@ -1510,7 +1508,7 @@ handshake to notify the client of a clock shift.
Contents
````````
1. [Date]_
2. I2CP API Version [String]_
2. I2CP Version [String]_
Notes
`````
@ -1547,7 +1545,7 @@ References
{{ site_url('docs/protocol/i2cp', True) }}#options
.. [I2CP-JAVADOCS]
http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/i2cp/package-summary.html
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2cp/package-summary.html
.. [Integer]
{{ ctags_url('Integer') }}
@ -1569,7 +1567,7 @@ References
{{ ctags_url('MetaLeaseSet') }}
.. [MSM-JAVADOCS]
http://{{ i2pconv('idk.i2p/javadoc-i2p') }}/net/i2p/data/i2cp/MessageStatusMessage.html
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2cp/MessageStatusMessage.html
.. [PrivateKey]
{{ ctags_url('PrivateKey') }}

View File

@ -3,8 +3,8 @@ I2NP Specification
==================
.. meta::
:category: Protocols
:lastupdated: 2022-06
:accuratefor: 0.9.54
:lastupdated: 2021-07
:accuratefor: 0.9.51
.. contents::
@ -1085,7 +1085,7 @@ tag :: 8 byte reply_tag
ECIES to ECIES (0.9.49)
`````````````````````````````
-----------------------------
ECIES destination or router sends a lookup to a ECIES router.
Supported as of 0.9.49.
@ -1098,7 +1098,7 @@ The requester is anonymous.
ECIES to ECIES (future)
`````````````````````````````
-----------------------------
This option is not yet fully defined.
See [Prop156]_.

View File

@ -3,8 +3,8 @@ NTCP 2
======
.. meta::
:category: Transports
:lastupdated: 2022-01
:accuratefor: 0.9.53
:lastupdated: 2021-03
:accuratefor: 0.9.50
.. contents::
@ -1991,36 +1991,6 @@ Variants, Fallbacks, and General Issues
Alice may not retry using NTCP 1.
Clock Skew Guidelines
======================
Peer timestamps are included in the first two handshake messages, Session Request and Session Created.
A clock skew between two peers of greater than +/- 60 seconds is generally fatal.
If Bob thinks that his local clock is bad, he may adjust his clock using the
calculated skew, or some external source.
Otherwise, Bob should reply with a Session Created even if the maximum skew is exceeded,
rather than simply closing the connection. This allows Alice to get Bob's timestamp and
calculate the skew, and take action if necessary.
Bob does not have Alice's router identity at this point, but
to conserve resources,
it may be desirable for Bob to ban incoming connections from Alice's IP for some period of time,
or after repeated connection attempts with an excessive skew.
Alice should adjust the calculated clock skew by subtracting half the RTT.
If Alice thinks that her local clock is bad, she may adjust her clock using the
calculated skew, or some external source.
If Alice thinks that Bob's clock is bad, she may ban Bob for some period of time.
In either case, Alice should close the connection.
If Alice does reply with Session Confirmed
(probably because the skew is very close to the 60s limit,
and the Alice and Bob calculations are not exactly the same due to RTT),
Bob should adjust the calculated clock skew by subtracting half the RTT.
If the adjusted clock skew exceeds the maximum, Bob should then reply with
a Disconnect message containing a clock skew reason code, and close
the connection. At this point, Bob has Alice's router identity,
and may ban Alice for some period of time.
References
==========

View File

@ -2,9 +2,8 @@
Plugin Specification
====================
.. meta::
:category: Design
:lastupdated: 2022-01
:accuratefor: 0.9.53
:lastupdated: November 2019
:accuratefor: 0.9.43
.. contents::
@ -120,11 +119,6 @@ router console if present:
The update checker will check bytes 41-56 at this URL
to determine whether a newer version is available
As of 1.7.0(0.9.53), it is possible to use the $OS and $ARCH
variables in the URL. For example, on Windows/amd64, the URL
http://foo.i2p/foo-$OS-$ARCH.xpi2p would be transformed into:
http://foo.i2p/foo-windows-amd64.xpi2p.
Not recommended. Do not use unless you previously distributed
plugins in the xpi2p format, and even then, routers know how
to update with the su3 URL, as of 0.9.15.
@ -138,11 +132,6 @@ router console if present:
The location of the su3-format update file, as of 0.9.15
As of 1.7.0(0.9.53), it is possible to use the $OS and $ARCH
variables in the URL. For example, on Windows/amd64, the URL
http://foo.i2p/foo-$OS-$ARCH.xpi2p would be transformed into:
http://foo.i2p/foo-windows-amd64.xpi2p.
description
in English
@ -182,10 +171,7 @@ console:
Only for webapps.
A path to a 32x32 image, e.g. /icon.png
As of 1.7.0 (API 0.9.53), if consoleLinkURL is specified,
the path is relative to that URL. Otherwise it is relative
to the webapp name.
A path within the webapp to a 32x32 image, e.g. /icon.png
Applies to all webapps in the plugin.
icon-code
@ -297,9 +283,8 @@ console/
jars in $PLUGIN/lib/ or $I2P/lib for the webapp classpath, with
``webapps.warname.classpath=$PLUGIN/lib/foo.jar,$I2P/lib/bar.jar``
NOTE: Prior to release 1.7.0 (API 0.9.53), the classpath line was only
loaded if the warname was the same as the plugin name.
As of API 0.9.53, classpath setting will work for any warname.
NOTE: Currently, the classpath line is only loaded if the warname is the
same as the plugin name.
NOTE: Prior to router version 0.7.12-9, the router looked for
``plugin.warname.startOnLoad`` instead of
@ -359,12 +344,6 @@ stopped.
$PLUGIN
this plugin's installation dir (typically ~/.i2p/plugins/appname)
$OS
the host operating system in the form `windows`, `linux`, `mac`
$ARCH
the host architecture in the form `386`, `amd64`, `arm64`
(See important notes below about running shell scripts or external
programs)
@ -504,16 +483,12 @@ Shell script and external program notes
To run shell scripts or other external programs, see [ZZZ-141]_.
To work on both Windows and Linux, write a small Java class that checks the OS
type, then runs ShellCommand on either the .bat or a .sh file you provide. A
generalized solution for this was added in I2P 1.7.0/0.9.53, the "ShellService"
which performs state tracking for a single command and communicates with the
ClientAppManager.
type, then runs ShellCommand on either the .bat or a .sh file you provide.
External programs won't be stopped when the router stops, and a second copy
will fire up when the router starts. This can usually be mitigated using
a ShellService to perform state tracking. If that is unsuitable to your use case,
you could write a wrapper class or shell script that does the usual storage of
the PID in a PID file, and check for it on start.
will fire up when the router starts. To work around this, you could write a
wrapper class or shell script that does the usual storage of the PID in a PID
file, and check for it on start.
Other plugin guidelines
@ -539,8 +514,7 @@ Other plugin guidelines
uninstallation, the uninstallargs hook could ask.
* $CWD may be anywhere; do not assume it is in a particular place, do not
attempt to read or write files relative to $CWD. For a ShellService, it is
always the same as $PLUGIN.
attempt to read or write files relative to $CWD.
* Java programs should find out where they are with the directory getters in
I2PAppContext.
@ -567,7 +541,7 @@ Other plugin guidelines
* As an alternative to stopargs in clients.config, a Java client may register a
shutdown hook with I2PAppContext.addShutdownTask(). But this wouldn't shut
down a plugin when upgrading, so stopargs is recommended. Also, set all
created threads to daemon mode. This can also be enabled with a ShellService.
created threads to daemon mode.
* Do not include classes duplicating those in the standard installation. Extend
the classes if necessary.

View File

@ -2014,7 +2014,7 @@ Private Key File Changes Required
The private key file (eepPriv.dat) format is not an official part of our specifications
but it is documented in the Java I2P javadocs
http://idk.i2p/javadoc-i2p/net/i2p/data/PrivateKeyFile.html
http://echelon.i2p/javadoc/net/i2p/data/PrivateKeyFile.html
and other implementations do support it.
This enables portability of private keys to different implementations.

View File

@ -5,20 +5,12 @@ Tunnel Build Message Options
:author: zzz
:created: 2018-01-14
:thread: http://zzz.i2p/topics/2500
:lastupdated: 2022-01-28
:status: Rejected
:lastupdated: 2018-01-20
:status: Open
.. contents::
Note
====
This proposal was not implemented as specified,
however, the ECIES long and short build messages (proposals 152 and 157)
were designed with extensible options fields.
See [SPEC]_ for the official specification.
Overview
========
@ -103,11 +95,3 @@ The unused space in the Tunnel Build Records are filled with random data and cur
The space can be converted to contain options without migration issues.
In the build message, the presence of options is indicated in the flags byte.
In the build reply message, the presence of options is indicated by a multi-byte magic number.
References
==========
.. [SPEC]
{{ spec_url('tunnel-creation-ecies') }}

View File

@ -1,6 +1,7 @@
=============
ECIES Tunnels
=============
.. meta::
:author: chisana, zzz, orignal
:created: 2019-07-04

View File

@ -1,6 +1,7 @@
==============================
ChaCha Tunnel Layer Encryption
==============================
.. meta::
:author: chisana
:created: 2019-08-04

View File

@ -6,7 +6,7 @@ ECIES Routers
:created: 2020-09-01
:thread: http://zzz.i2p/topics/2950
:lastupdated: 2021-07-31
:status: Closed
:status: Open
:target: 0.9.51
.. contents::

View File

@ -6,7 +6,7 @@ Smaller Tunnel Build Messages
:created: 2020-10-09
:thread: http://zzz.i2p/topics/2957
:lastupdated: 2021-07-31
:status: Closed
:status: Open
:target: 0.9.51
.. contents::

File diff suppressed because it is too large Load Diff

View File

@ -1,402 +0,0 @@
================================
UDP Trackers
================================
.. meta::
:author: zzz
:created: 2022-01-03
:thread: http://zzz.i2p/topics/1634
:lastupdated: 2022-01-17
:status: Open
:target: 0.9.54
.. contents::
Overview
========
This proposal is for implemention of UDP trackers in I2P.
Motivation
==========
As the user base in general and the number of bittorrent users specifically continues to grow,
we need to make trackers and announces more efficient so that trackers are not overwhelemed.
Bittorrent proposed UDP trackers in BEP 15 [BEP15]_ in 2008, and the vast majority
of trackers on clearnet are now UDP-only.
A preliminary proposal for UDP trackers in I2P was posted on our bittorrent spec page [SPEC]_
in May 2014; this predated our formal proposal process, and it was never implemented.
This proposal simplifies the 2014 version.
It is difficult to calculate the bandwidth savings of datagrams vs. streaming protocol.
A repliable request is about the same size as a streaming SYN, but the payload
is about 500 bytes smaller because the HTTP GET has a huge 600 byte
URL parameter string.
The raw reply is much smaller than a streaming SYN ACK, providing significant reduction
for a tracker's outbound traffic.
Additionally, there should be implementation-specific memory reductions,
as datagrams require much less in-memory state than a streaming connection.
Design
============
This proposal uses both repliable and raw datagrams,
as defined in [DATAGRAMS]_.
BEP 15
-------
The message flow in [BEP15]_ is as follows:
.. raw:: html
{% highlight %}
Client Tracker
Connect Req. ------------->
<-------------- Connect Resp.
Announce Req. ------------->
<-------------- Announce Resp.
Announce Req. ------------->
<-------------- Announce Resp.
{% endhighlight %}
The connect phase is required to prevent IP address spoofing.
The tracker returns a connection ID that the client uses in subsequent announces.
This connection ID expires in one minute at the client, and in two minutes at the tracker.
This is not necessary in I2P because of repliable datagrams.
We propose two mechanisms for I2P, compatibility mode and fast mode.
Compatibility Mode
-------------------------
In compatibility mode, we keep the same message flow as BEP 15,
for ease of adoption in existing UDP-capable client code bases:
.. raw:: html
{% highlight %}
Client Tracker
Connect Req. -------------> (Repliable)
<-------------- Connect Resp. (Raw)
Announce Req. -------------> (Raw)
<-------------- Announce Resp. (Raw)
Announce Req. -------------> (Raw)
<-------------- Announce Resp. (Raw)
...
{% endhighlight %}
This mode is also useful if the client plans to send multiple announces
within one minute to a single tracker, as only the connect
message must be repliable.
I2P Fast Mode
-------------------------
In fast mode, we omit the connect phase, as it is not required to prevent address spoofing.
This significantly simplifies the client-side implementation.
.. raw:: html
{% highlight %}
Client Tracker
Announce Req. -------------> (Repliable)
<-------------- Announce Resp. (Raw)
{% endhighlight %}
This mode omits a round-trip, but requires every announce request to be repliable.
Specification
=============
Repliable datagrams use I2CP protocol 17; raw datagrams use I2CP protocol 18.
Requests may be repliable or raw. Responses are always raw.
Connect Request
-----------------
Client to tracker.
16 bytes. Must be repliable. Same as in [BEP15]_.
.. raw:: html
{% highlight %}
Offset Size Name Value
0 64-bit integer protocol_id 0x41727101980 // magic constant
8 32-bit integer action 0 // connect
12 32-bit integer transaction_id
{% endhighlight %}
Connect Response
-----------------
Tracker to client.
16 bytes. Must be raw. Same as in [BEP15]_.
.. raw:: html
{% highlight %}
Offset Size Name Value
0 32-bit integer action 0 // connect
4 32-bit integer transaction_id
8 64-bit integer connection_id
{% endhighlight %}
The response MUST be sent to the I2CP "to port" that was received as the request "from port".
Announce Request
-----------------
Client to tracker.
98 bytes. Same as in [BEP15]_ except as noted below.
If preceded by a connect request/response, must be raw,
with the connection_id received in the connect response.
If NOT preceded by a connect request/response, must be repliable,
and the connection_id is ignored.
.. raw:: html
{% highlight %}
Offset Size Name Value
0 64-bit integer connection_id
8 32-bit integer action 1 // announce
12 32-bit integer transaction_id
16 20-byte string info_hash
36 20-byte string peer_id
56 64-bit integer downloaded
64 64-bit integer left
72 64-bit integer uploaded
80 32-bit integer event 0 // 0: none; 1: completed; 2: started; 3: stopped
84 32-bit integer IP address 0 // default
88 32-bit integer key
92 32-bit integer num_want -1 // default
96 16-bit integer port
98 TBD additional data TBD
{% endhighlight %}
Changes from [BEP15]_:
- connection_id is ignored if repliable
- IP address is ignored
- key is ignored
- port is probably ignored
- Explicitly indidate that the protocol is extensible,
with possible additional data starting at port 98.
The response MUST be sent to the I2CP "to port" that was received as the request "from port".
Do not use the port from the announce request.
Announce Response
-----------------
Tracker to client.
20+ bytes. Must be raw. Same as in [BEP15]_ except as noted below.
.. raw:: html
{% highlight %}
Offset Size Name Value
0 32-bit integer action 1 // announce
4 32-bit integer transaction_id
8 32-bit integer interval
12 32-bit integer leechers
16 32-bit integer seeders
20 16-bit integer count of hashes to follow
22 + 32 * n 32-byte hash binary hashes
...
22 + 32 * c TBD additional data TBD
{% endhighlight %}
Changes from [BEP15]_:
- Add a hash count before the hashes, so that the response format
is extensible with additional data after the hashes.
- Instead of 6-byte IPv4+port or 18-byte IPv6+port, we return
a multiple of 32-byte "compact responses" with the SHA-256 binary peer hashes.
As with TCP compact responses, we do not include a port.
- Explicitly indidate that the protocol is extensible,
with possible additional data starting after the hashes
The response MUST be sent to the I2CP "to port" that was received as the request "from port".
Do not use the port from the announce request.
I2P datagrams have a very large maximum size of about 16 KB;
however, for reliable delivery, datagrams larger than 4 KB should be avoided.
For bandwidth efficiency, trackers should probably limit the maximum peers
to about 50.
Scrape
----------
Scrape request/response from [BEP15]_ is not required by this proposal,
but may be implemented if desired, no changes required.
The scrape request is always repliable (unless there is a previous connect request/response)
and the scrape response is always raw.
Error Response
------------------
Error response from [BEP15]_ is not required by this proposal,
but may be implemented if desired, no changes required.
The error response is always raw.
Announce URL
------------
As in clearnet, UDP announce URLs are of the form "udp://host:port/path".
The path is ignored and may be empty.
If the ":port" part is omitted, use an I2CP port of 0.
Issues
=======
- Repliable datagrams do not support offline signatures.
That requires a separate proposal.
- This proposal does not support blinded destinations,
but may be extended to do so. See below.
- This proposal offers two modes at the client's option.
An existing clearnet tracker such as "opentracker" would require more modifications
to support the fast mode. There is no way in the announce URL to indicate
support for only one mode.
- Compatibility mode may not be necessary, pending feedback from BiglyBT and
other developers. However, it would still save a lot of bandwidth
if it is used for several announces within a minute.
Repliable announces are about 450 bytes larger than raw announces.
Extensions
=============
Extension bits or a version field are not included.
Clients and trackers should not assume packets to be of a certain size.
This way, additional fields can be added without breaking compatibility.
The announce response is modified to include a count of peer hashes,
so that the response may be easily extended with additional information.
If blinded destination support is required, we can either add the
blinded 35-byte address to the end of the announce request, or define a new blinded announce request message.
The set of blinded 35-byte peer addresses could be added to the end of the announce reply.
Implementation guidelines
==========================
Clients
--------
For a given tracker hostname, a client should prefer UDP over HTTP URLs,
and should not announce to both.
Clients wihout existing BEP 15 support should implement
fast mode only, as it is much simpler.
Clients with existing BEP 15 support should require only small modifications.
Evaluate both fast and compatibility modes and choose
whatever is best for the existing code base.
If a client support DHT or other datagram protocols, it should probably
select a different port as the request "from port" so that the replies
come back to that port and are not mixed up with DHT messages.
The client only receives raw datagrams as replies.
Trackers will never send a repliable datagram to the client.
Clients with a default list of opentrackers should update the list to
add UDP URLs after the known opentrackers are known to support UDP.
Clients may or may not implement retransmission of requests.
Retransmissions, if implemented, should use an initial timeout
of at least 15 seconds, and double the timeout for each retransmission
(exponential backoff).
Trackers
---------
Trackers must implement both compatibility mode and fast mode.
Trackers with existing BEP 15 support should require only small modifications.
This proposal differs from the 2014 proposal, in that the tracker
must support reception of repliable and raw datagrams on the same port.
For an integrated application (router and client in one process, for example the ZzzOT Java plugin),
it should be straightforward to implement and route the streaming and datagram traffic separately.
For an external tracker application that currently uses an HTTP server tunnel to receive
announce requests, the implementation could be quite difficult.
A specialized tunnel could be developed to translate datagrams to local HTTP requests/responses.
Or, a specialized tunnel that handles both HTTP requests and datagrams could be designed
that would forward the datagrams to the external process.
These design decisions will depend heavily on the specific router and tracker implementations,
and are outside the scope of this proposal.
Migration
=========
Existing clients do not support UDP announce URLs and ignore them.
Existing trackers do not support reception of repliable or raw datagrams, they will be dropped.
This proposal is completely optional. Neither clients nor trackers are required to implement it at any time.
Rollout
=======
The first implementations are expected to be in ZzzOT and i2psnark.
They will be used for testing and verification of this proposal.
Other implementations will follow as desired after the testing and verification are complete.
References
==========
.. [BEP15]
http://www.bittorrent.org/beps/bep_0015.html
.. [DATAGRAMS]
{{ spec_url('datagrams') }}
.. [SPEC]
{{ site_url('docs/applications/bittorrent', True) }}

View File

@ -2,7 +2,6 @@
Red25519 Signature Scheme
=========================
.. meta::
:category: Design
:lastupdated: 2020-08
:accuratefor: 0.9.47

Some files were not shown because too many files have changed in this diff Show More