forked from I2P_Developers/i2p.www
Added translation tags to docs/*.html
This commit is contained in:
@ -1,52 +1,56 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}Index to Technical Documentation{% endblock %}
|
||||
{% block lastupdated %}May 2012{% endblock %}
|
||||
{% block title %}{% trans %}Index to Technical Documentation{% endtrans %}{% endblock %}
|
||||
{% block lastupdated %}{% trans %}May 2012{% endtrans %}{% endblock %}
|
||||
{% block accuratefor %}0.9{% endblock %}
|
||||
{% block content %}
|
||||
<h1>How does I2P work?</h1>
|
||||
<h1>{% trans %}How does I2P work{% endtrans %}</h1>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
Following is an index to the technical documentation for I2P.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
This index is ordered from the highest to lowest layers.
|
||||
The higher layers are for "clients" or applications;
|
||||
the lower layers are inside the router itself.
|
||||
The interface between applications and the router is the I2CP (I2P Control Protocol) API.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans trac=i2pconv('trac.i2p2.i2p') -%}
|
||||
The I2P Project is committed to maintaining accurate, current documentation.
|
||||
If you find any inaccuracies in the documents linked below, please
|
||||
<a href="http://{{ i2pconv('trac.i2p2.i2p') }}/report/1">enter a ticket identifying the problem</a>.
|
||||
</p>
|
||||
<a href="http://{{ trac }}/report/1">enter a ticket identifying the problem</a>.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2>Index to Technical Documentation</h2>
|
||||
<h2>{% trans %}Index to Technical Documentation{% endtrans %}</h2>
|
||||
|
||||
<h3>Overview</h3>
|
||||
<h3>{% trans %}Overview{% endtrans %}</h3>
|
||||
<ul class="helplist">
|
||||
<li><a href="{{ site_url('docs/how/techintro') }}">Technical Introduction</a></li>
|
||||
<li><a href="{{ site_url('docs/how/intro') }}">A Less-Technical Introduction</a></li>
|
||||
<li><a href="{{ site_url('docs/how/threatmodel') }}">Threat model and analysis</a></li>
|
||||
<li><a href="{{ site_url('docs/how/networkcomparisons') }}">Comparisons to other anonymous networks</a></li>
|
||||
<li><a href="{{ site_url('docs/protocols') }}">Protocol stack chart</a></li>
|
||||
<li><a href="papers.html">Papers and Presentations on I2P</a></li>
|
||||
<li><a href="{{ url_for('static', filename='pdf/i2p_philosophy.pdf') }}">Invisible Internet Project (I2P) Project Overview</a> August 28, 2003 (pdf)</li>
|
||||
<li><a href="{{ site_url('docs/how/tech-intro') }}">{{ _('Technical Introduction') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/intro') }}">{{ _('A Less-Technical Introduction') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/threat-model') }}">{{ _('Threat model and analysis') }}</a></li>
|
||||
<li><a href="{{ site_url('comparison') }}">{{ _('Comparisons to other anonymous networks') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/protocol') }}">{{ _('Protocol stack chart') }}</a></li>
|
||||
<li><a href="{{ site_url('research/papers') }}">{{ _('Papers on I2P') }}</a></li>
|
||||
<li>{% trans pdf=url_for('static', filename='pdf/i2p_philosophy.pdf') %}<a href="{{ pdf }}">Invisible Internet Project (I2P) Project Overview</a> August 28, 2003 (pdf){% endtrans %}</li>
|
||||
</ul>
|
||||
|
||||
<h3>Application-Layer Topics</h3>
|
||||
<h3>{% trans %}Application-Layer Topics{% endtrans %}</h3>
|
||||
<ul>
|
||||
<li><a href="naming.html">Naming and Addressbook</a></li>
|
||||
<li><a href="plugins.html">Plugins Overview</a></li>
|
||||
<li><a href="plugin_spec.html">Plugin Specification</a></li>
|
||||
<li><a href="updates.html">Router software updates</a></li>
|
||||
<li><a href="{{ site_url('docs/applications/bittorrent') }}">Bittorrent over I2P</a></li>
|
||||
<li><a href="{{ site_url('docs/api/i2pcontrol') }}">I2PControl Plugin API</a></li>
|
||||
<li><a href="blockfile.html">hostsdb.blockfile Format</a></li>
|
||||
<li><a href="configuration.html">Configuration File Format</a></li>
|
||||
<li><a href="{{ site_url('docs/naming') }}">{{ _('Naming and Addressbook') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/plugins') }}">{{ _('Plugins Overview') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/plugin') }}">{{ _('Plugin Specification') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/updates') }}">{{ _('Router software updates') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/applications/bittorrent') }}">{{ _('Bittorrent over I2P') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/api/i2pcontrol') }}">{{ _('I2PControl Plugin API') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/blockfile') }}">{{ _('hostsdb.blockfile Format') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/configuration') }}">{{ _('Configuration File Format') }}</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Application Layer API and Protocols</h3>
|
||||
High-level, easy-to-use APIs for applications written in any language to send and receive data.
|
||||
<h3>{% trans %}Application Layer API and Protocols{% endtrans %}</h3>
|
||||
{% trans %}High-level, easy-to-use APIs for applications written in any language to send and receive data.{% endtrans %}
|
||||
<ul><li>
|
||||
<a href="{{ site_url('develop/applications') }}">Application Development Overview and Guide</a>
|
||||
<a href="{{ site_url('get-involved/develop/applications') }}">{{ _('Application Development Overview and Guide') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/api/i2ptunnel') }}">I2PTunnel</a>
|
||||
</li><li>
|
||||
@ -64,167 +68,170 @@ Streamr Proxy
|
||||
</li><li>
|
||||
HTTP Bidir Proxy
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/api/sam') }}">SAM Protocol</a>
|
||||
<a href="{{ site_url('docs/api/sam') }}">{{ _('SAM Protocol') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/api/samv2') }}">SAMv2 Protocol</a>
|
||||
<a href="{{ site_url('docs/api/samv2') }}">{{ _('SAMv2 Protocol') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/api/samv3') }}">SAMv3 Protocol</a>
|
||||
<a href="{{ site_url('docs/api/samv3') }}">{{ _('SAMv3 Protocol') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/api/bob') }}">BOB Protocol</a>
|
||||
<a href="{{ site_url('docs/api/bob') }}">{{ _('BOB Protocol') }}</a>
|
||||
</li></ul>
|
||||
|
||||
<h3>End-to-End Transport API and Protocols</h3>
|
||||
The end-to-end protocols used by clients for reliable and unreliable communication.
|
||||
<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 Library</a>
|
||||
<a href="{{ site_url('docs/api/streaming') }}">{{ _('Streaming Library') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html">Streaming Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html">{{ _('Streaming Javadoc') }}</a>
|
||||
</li><li>
|
||||
<a href="datagrams.html">Datagrams</a>
|
||||
<a href="{{ site_url('docs/spec/datagrams') }}">{{ _('Datagrams') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html">Datagram Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html">{{ _('Datagram Javadoc') }}</a>
|
||||
</li></ul>
|
||||
|
||||
<h3>Client-to-Router Interface API and Protocol</h3>
|
||||
<h3>{% trans %}Client-to-Router Interface API and Protocol{% endtrans %}</h3>
|
||||
{% trans -%}
|
||||
The lowest-level API used for clients (applications) to send and receive traffic to a router.
|
||||
Traditionally used only by Java applications and higher-level APIs.
|
||||
{%- endtrans %}
|
||||
<ul><li>
|
||||
<a href="i2cp.html">I2CP</a> I2P Control Protocol / API overview
|
||||
<a href="{{ site_url('docs/protocol/i2cp') }}">{{ _('I2CP - I2P Control Protocol / API overview') }}</a>
|
||||
</li><li>
|
||||
<a href="i2cp_spec.html">I2CP Specification</a>
|
||||
<a href="{{ site_url('docs/spec/i2cp') }}">{{ _('I2CP Specification') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/package-summary.html">I2CP API Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/package-summary.html">{{ _('I2CP API Javadoc') }}</a>
|
||||
</li><li>
|
||||
<a href="common_structures_spec.html">Common data structures specification</a>
|
||||
<a href="{{ site_url('docs/spec/common-structures') }}">{{ _('Common data structures specification') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">Data Structures Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
|
||||
</li></ul>
|
||||
|
||||
<h3>End-to-End Encryption</h3>
|
||||
How client messages are end-to-end encrypted by the router.
|
||||
<h3>{% trans %}End-to-End Encryption{% endtrans %}</h3>
|
||||
{% trans %}How client messages are end-to-end encrypted by the router.{% endtrans %}
|
||||
<ul>
|
||||
<li><a href="{{ site_url('docs/how/elgamalaes') }}">ElGamal/AES+SessionTag</a> encryption</li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}">ElGamal and AES cryptography details</a></li>
|
||||
<li><a href="{{ site_url('docs/how/elgamal-aes') }}">{{ _('ElGamal/AES+SessionTag encryption') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}">{{ _('ElGamal and AES cryptography details') }}</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Network Database</h3>
|
||||
Distributed storage and retrieval of information about routers and clients.
|
||||
<h3>{% trans %}Network Database{% endtrans %}</h3>
|
||||
{% trans %}Distributed storage and retrieval of information about routers and clients.{% endtrans %}
|
||||
<ul>
|
||||
<li><a href="{{ site_url('docs/how/networkdatabase') }}">Network database overview, details, and threat analysis</a></li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}#SHA256">Cryptographic hashes</a></li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}#DSA">Cryptographic signatures</a></li>
|
||||
<li><a href="{{ site_url('docs/how/network-database') }}">{{ _('Network database overview, details, and threat analysis') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}#SHA256">{{ _('Cryptographic hashes') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}#DSA">{{ _('Cryptographic signatures') }}</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Router Message Protocol</h3>
|
||||
I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol.
|
||||
<h3>{% trans %}Router Message Protocol{% endtrans %}</h3>
|
||||
{% trans %}I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol.{% endtrans %}
|
||||
<ul><li>
|
||||
<a href="i2np.html">I2NP</a> I2P Network Protocol Overview
|
||||
<a href="{{ site_url('docs/protocol/i2np') }}">{{ _('I2NP - I2P Network Protocol Overview') }}</a>
|
||||
</li><li>
|
||||
<a href="i2np_spec.html">I2NP Specification</a>
|
||||
<a href="{{ site_url('docs/spec/i2np') }}">{{ _('I2NP Specification') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/package-summary.html">I2NP Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/package-summary.html">{{ _('I2NP Javadoc') }}</a>
|
||||
</li><li>
|
||||
<a href="common_structures_spec.html">Common data structures specification</a>
|
||||
<a href="{{ site_url('docs/spec/common-structures') }}">{{ _('Common data structures specification') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">Data Structures Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">{{ _('Data Structures Javadoc') }}</a>
|
||||
</li></ul>
|
||||
|
||||
<h3>Tunnels</h3>
|
||||
Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.
|
||||
<h3>{% trans %}Tunnels{% endtrans %}</h3>
|
||||
{% trans %}Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.{% endtrans %}
|
||||
<ul>
|
||||
<li><a href="{{ site_url('docs/how/peerselection') }}">Peer profiling and selection</a></li>
|
||||
<li><a href="{{ site_url('docs/how/tunnelrouting') }}">Tunnel routing overview</a></li>
|
||||
<li><a href="{{ site_url('docs/how/garlicrouting') }}">Garlic routing and "garlic" terminology</a></li>
|
||||
<li><a href="tunnel-alt.html">Tunnel building and encryption</a></li>
|
||||
<li><a href="{{ site_url('docs/how/elgamalaes') }}">ElGamal/AES</a> for build request encryption</li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}">ElGamal and AES cryptography details</a></li>
|
||||
<li><a href="tunnel-alt-creation.html">Tunnel building specification</a></li>
|
||||
<li><a href="tunnel_message_spec.html">Low-level tunnel message specification</a></li>
|
||||
<li><a href="unidirectional-tunnels.html">Unidirectional Tunnels</a></li>
|
||||
<li><a href="{{ url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf') }}">Peer Profiling and Selection in the I2P Anonymous Network</a>
|
||||
2009 paper (pdf), not current but still generally accurate</li>
|
||||
<li><a href="{{ site_url('docs/how/peer-selection') }}">{{ _('Peer profiling and selection') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/tunnel-routing') }}">{{ _('Tunnel routing overview') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/garlic-routing') }}">{% trans %}Garlic routing and "garlic" terminology{% endtrans %}</a></li>
|
||||
<li><a href="{{ site_url('docs/tunnels/implementation') }}">{{ _('Tunnel building and encryption') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/how/elgamal-aes') }}">{{ _('ElGamal/AES') }}</a> {{ _('for build request encryption') }}</li>
|
||||
<li><a href="{{ site_url('docs/how/cryptography') }}">{{ _('ElGamal and AES cryptography details') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/tunnel-creation') }}">{{ _('Tunnel building specification') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/spec/tunnel-message') }}">{{ _('Low-level tunnel message specification') }}</a></li>
|
||||
<li><a href="{{ site_url('docs/tunnels/unidirectional') }}">{{ _('Unidirectional Tunnels') }}</a></li>
|
||||
<li><a href="{{ url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf') }}">{{ _('Peer Profiling and Selection in the I2P Anonymous Network') }}</a>
|
||||
{{ _('2009 paper (pdf), not current but still generally accurate') }}</li>
|
||||
</ul>
|
||||
|
||||
<h3>Transport Layer</h3>
|
||||
The protocols for direct (point-to-point) router to router communication.
|
||||
<h3>{% trans %}Transport Layer{% endtrans %}</h3>
|
||||
{% trans %}The protocols for direct (point-to-point) router to router communication.{% endtrans %}
|
||||
<ul><li>
|
||||
<a href="{{ site_url('docs/transport') }}">Transport layer overview</a>
|
||||
<a href="{{ site_url('docs/transport') }}">{{ _('Transport layer overview') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a> TCP-based transport overview and specification
|
||||
<a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a> {{ _('TCP-based transport overview and specification') }}
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/transport/ssu') }}">SSU</a> UDP-based transport overview
|
||||
<a href="{{ site_url('docs/transport/ssu') }}">SSU</a> {{ _('UDP-based transport overview') }}
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/transport/ssu/spec') }}">SSU specification</a>
|
||||
<a href="{{ site_url('docs/spec/ssu') }}">{{ _('SSU specification') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/how/cryptography') }}#tcp">NTCP transport encryption</a>
|
||||
<a href="{{ site_url('docs/how/cryptography') }}#tcp">{{ _('NTCP transport encryption') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/how/cryptography') }}#udp">SSU transport encryption</a>
|
||||
<a href="{{ site_url('docs/how/cryptography') }}#udp">{{ _('SSU transport encryption') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/package-summary.html">Transport Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/package-summary.html">{{ _('Transport Javadoc') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/ntcp/package-summary.html">NTCP Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/ntcp/package-summary.html">{{ _('NTCP Javadoc') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/udp/package-summary.html">SSU Javadoc</a>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/udp/package-summary.html">{{ _('SSU Javadoc') }}</a>
|
||||
</li></ul>
|
||||
|
||||
<h3>Other Router Topics</h3>
|
||||
<h3>{% trans %}Other Router Topics{% endtrans %}</h3>
|
||||
<ul><li>
|
||||
<a href="jbigi.html">Native BigInteger Library</a>
|
||||
<a href="{{ site_url('misc/jbigi') }}">{{ _('Native BigInteger Library') }}</a>
|
||||
</li><li>
|
||||
Time synchronization and NTP
|
||||
{{ _('Time synchronization and NTP') }}
|
||||
</li><li>
|
||||
<a href="performance.html">Performance</a> (not current)
|
||||
<a href="{{ site_url('about/performance') }}">{{ _('Performance') }}</a>
|
||||
</li><li>
|
||||
<a href="configuration.html">Configuration File Format</a></li>
|
||||
<a href="{{ site_url('docs/spec/configuration') }}">{{ _('Configuration File Format') }}</a></li>
|
||||
</li></ul>
|
||||
|
||||
<h3>Developer's Guides and Resources</h3>
|
||||
<h3>{% trans %}Developer's Guides and Resources{% endtrans %}</h3>
|
||||
<ul><li>
|
||||
<a href="{{ site_url('get-involved/guides/newdevelopers') }}">New Developer's Guide</a>
|
||||
<a href="{{ site_url('get-involved/guides/new-developers') }}">{% trans %}New Developer's Guide{% endtrans %}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('get-involved/guides/newtranslators') }}">New Translator's Guide</a>
|
||||
<a href="{{ site_url('get-involved/guides/new-translators') }}">{% trans %}New Translator's Guide{% endtrans %}</a>
|
||||
</li><li>
|
||||
<a href="monotone.html">Monotone Guide</a>
|
||||
<a href="{{ site_url('get-involved/guides/monotone') }}">{{ _('Monotone Guide') }}</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('get-involved/guides/devguidelines') }}">Developer Guidelines</a>
|
||||
<a href="{{ site_url('get-involved/guides/dev-guidelines') }}">{{ _('Developer Guidelines') }}</a>
|
||||
</li><li>
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/">Javadocs</a> (standard internet)
|
||||
Note: always verify that javadocs are current by checking the release number.
|
||||
{% trans %}Javadocs on the standard internet:{% endtrans %}
|
||||
<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>
|
||||
Javadocs inside I2P:
|
||||
<a href="http://{{ i2pconv('i2p-javadocs.i2p') }}">Server 1</a>
|
||||
<a href="http://{{ i2pconv('i2pdocs.str4d.i2p') }}/i2p.i2p/javadoc/">Server 2</a>
|
||||
<a href="http://{{ i2pconv('echelon.i2p') }}/javadoc/">Server 3</a>
|
||||
{% trans %}Javadocs inside I2P:{% endtrans %}
|
||||
<a href="http://{{ i2pconv('i2p-javadocs.i2p') }}">{% trans num=1 %}Server {{ num }}{% endtrans %}</a>
|
||||
<a href="http://{{ i2pconv('i2pdocs.str4d.i2p') }}/i2p.i2p/javadoc/">{% trans num=2 %}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>
|
||||
-->
|
||||
Note: always verify that javadocs are current by checking the release number.
|
||||
{% trans %}Note: always verify that javadocs are current by checking the release number.{% endtrans %}
|
||||
</li><li>
|
||||
<a href="ports.html">Ports used by I2P</a>
|
||||
<a href="{{ site_url('docs/ports') }}">{{ _('Ports used by I2P') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('update.killyourtv.i2p') }}/mtn/">Automatic updates to development builds inside I2P</a>
|
||||
<a href="http://{{ i2pconv('update.killyourtv.i2p') }}/mtn/">{{ _('Automatic updates to development builds inside I2P') }}</a>
|
||||
</li><li>
|
||||
<a href="manualwrapper.html">Updating the wrapper manually</a>
|
||||
<a href="{{ site_url('misc/manual-wrapper') }}">{{ _('Updating the wrapper manually') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('forum.i2p') }}">User forum</a>
|
||||
<a href="http://{{ i2pconv('forum.i2p') }}">{{ _('User forum') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('zzz.i2p') }}/">Developer forum inside I2P</a>
|
||||
<a href="http://{{ i2pconv('zzz.i2p') }}/">{{ _('Developer forum inside I2P') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('trac.i2p2.i2p') }}/report/1">Bug tracker</a>
|
||||
<a href="http://{{ i2pconv('trac.i2p2.i2p') }}/report/1">{{ _('Bug tracker') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('stats.i2p') }}/cgi-bin/viewmtn/">Viewmtn inside I2P</a>.
|
||||
<a href="http://{{ i2pconv('stats.i2p') }}/cgi-bin/viewmtn/">{{ _('Viewmtn inside I2P') }}</a>.
|
||||
</li><li>
|
||||
<a href="https://github.com/i2p/i2p.i2p">I2P Source exported to GitHub</a>
|
||||
<a href="https://github.com/i2p/i2p.i2p">{{ _('I2P Source exported to GitHub') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('git.repo.i2p') }}/w/i2p.i2p.git">I2P Source Git Repo inside I2P</a>
|
||||
<a href="http://{{ i2pconv('git.repo.i2p') }}/w/i2p.i2p.git">{{ _('I2P Source Git Repo inside I2P') }}</a>
|
||||
</li><li>
|
||||
<a href="https://www.transifex.net/projects/p/I2P/">Source translation at Transifex</a>
|
||||
<a href="https://www.transifex.net/projects/p/I2P/">{{ _('Source translation at Transifex') }}</a>
|
||||
</li><li>
|
||||
<a href="http://{{ i2pconv('trac.i2p2.i2p') }}/09roadmap">0.9 roadmap wiki</a> (not current)
|
||||
<a href="http://{{ i2pconv('trac.i2p2.i2p') }}/09roadmap">{{ _('0.9 roadmap wiki') }}</a> ({{ _('not current') }})
|
||||
</li><li>
|
||||
<a href="{{ site_url('get-involved/roadmap') }}">Old roadmap</a> (not current)
|
||||
<a href="{{ site_url('get-involved/roadmap') }}">{{ _('Old roadmap') }}</a> ({{ _('not current') }})
|
||||
</li><li>
|
||||
<a href="{{ site_url('get-involved/guides/todo') }}">To Do List</a> (not current)
|
||||
<a href="{{ site_url('get-involved/todo') }}">{{ _('To Do List') }}</a> ({{ _('not current') }})
|
||||
</li></ul>
|
||||
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}Naming and Addressbook{% endblock %}
|
||||
{% block lastupdated %}March 2012{% endblock %}
|
||||
{% block title %}{% trans %}Naming and Addressbook{% endtrans %}{% endblock %}
|
||||
{% block lastupdated %}{% trans %}March 2012{% endtrans %}{% endblock %}
|
||||
{% block accuratefor %}0.8.13{% endblock %}
|
||||
{% block content %}
|
||||
<h1>Naming in I2P</h1>
|
||||
<h2 id="overview">Overview</h2>
|
||||
<h1>{% trans %}Naming in I2P{% endtrans %}</h1>
|
||||
<h2 id="overview">{% trans %}Overview{% endtrans %}</h2>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
I2P ships with a generic naming library and a base implementation
|
||||
designed to work off a local name to destination mapping, as well as an
|
||||
add-on application called the <a href="#addressbook">addressbook</a>.
|
||||
I2P also supports <a href="#base32">Base32 hostnames</a> similar to Tor's .onion addresses.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
The addressbook is a web-of-trust
|
||||
driven secure, distributed, and human readable naming system, sacrificing only
|
||||
the call for all human readable names to be globally unique by mandating only
|
||||
@ -25,116 +25,150 @@ by adding in the entries provided through a third party, or (if some people orga
|
||||
a series of published addressbooks using a first come first serve registration
|
||||
system) people can choose to treat these addressbooks as name servers, emulating
|
||||
traditional DNS.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>
|
||||
<p>{% trans namingdiscussion=site_url('docs/discussions/naming') -%}
|
||||
NOTE: For the reasoning behind the I2P naming system, common arguments against it
|
||||
and possible alternatives see the <a href="{{ site_url('docs/discussions/naming') }}">naming discussion</a>
|
||||
and possible alternatives see the <a href="{{ namingdiscussion }}">naming discussion</a>
|
||||
page.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
|
||||
<h2 id="components">Naming System Components</h2>
|
||||
<p>
|
||||
<h2 id="components">{% trans %}Naming System Components{% endtrans %}</h2>
|
||||
|
||||
<p>{% trans -%}
|
||||
There is no central naming authority in I2P.
|
||||
All hostnames are local.
|
||||
</p>
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
The naming system is quite simple and most of it is implemented
|
||||
in applications external to the router, but bundled with
|
||||
the I2P distribution.
|
||||
The components are:
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<ol>
|
||||
<li>The <a href="#lookup">client application</a> which does local lookups in hosts.txt
|
||||
<li>{% trans -%}
|
||||
The <a href="#lookup">client application</a> which does local lookups in hosts.txt
|
||||
and also takes care of the <a href="#base32">Base32 hostnames</a>.
|
||||
<li>The <a href="#httpproxy">HTTP proxy</a> which asks the router for lookups and points
|
||||
the user to remote jump services to assist with failed lookups
|
||||
<li>HTTP <a href="#add-services">host-add forms</a> which allow users to add hosts to their local hosts.txt
|
||||
<li>HTTP <a href="#jump-services">jump services</a> which provide their own lookups and redirection
|
||||
<li>The <a href="#addressbook">addressbook</a> application which merges external
|
||||
host lists, retrieved via HTTP, with the local list
|
||||
<li>The <a href="#susidns">SusiDNS</a> application which is a simple web front-end
|
||||
{%- endtrans %}</li>
|
||||
<li>{% trans -%}
|
||||
The <a href="#httpproxy">HTTP proxy</a> which asks the router for lookups and points
|
||||
the user to remote jump services to assist with failed lookups.
|
||||
{%- endtrans %}</li>
|
||||
<li>{% trans -%}
|
||||
HTTP <a href="#add-services">host-add forms</a> which allow users to add hosts to their local hosts.txt
|
||||
{%- endtrans %}</li>
|
||||
<li>{% trans -%}
|
||||
HTTP <a href="#jump-services">jump services</a> which provide their own lookups and redirection.
|
||||
{%- endtrans %}</li>
|
||||
<li>{% trans -%}
|
||||
The <a href="#addressbook">addressbook</a> application which merges external
|
||||
host lists, retrieved via HTTP, with the local list.
|
||||
{%- endtrans %}</li>
|
||||
<li>{% trans -%}
|
||||
The <a href="#susidns">SusiDNS</a> application which is a simple web front-end
|
||||
for addressbook configuration and viewing of the local host lists.
|
||||
{%- endtrans %}</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="lookup">Naming Files and Lookups</h2>
|
||||
<p>
|
||||
|
||||
<h2 id="lookup">{% trans %}Naming Files and Lookups{% endtrans %}</h2>
|
||||
|
||||
<p>{% trans namingdiscussion=site_url('docs/discussions/naming'), todo=site_url('get-involved/todo') -%}
|
||||
All destinations in I2P are 516-byte (or longer) keys.
|
||||
(To be more precise, it is a 256-byte public key plus a 128-byte signing key
|
||||
plus a null certificate, which in Base64 representation is 516 bytes.
|
||||
<a href="{{ site_url('docs/discussions/naming') }}#certificates">Certificates</a> are not used now,
|
||||
<a href="{{ namingdiscussion }}#certificates">Certificates</a> are not used now,
|
||||
if they are, the keys will be longer.
|
||||
One possible use of certificates is for <a href="todo.html#hashcash">proof of work</a>.)
|
||||
</p><p>
|
||||
One possible use of certificates is for <a href="{{ todo }}#hashcash">proof of work</a>.)
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
If an application (i2ptunnel or the HTTP proxy) wishes to access
|
||||
a destination by name, the router does a very simple local lookup
|
||||
to resolve that name.
|
||||
The client application (technically, the client side of I2CP in the I2P API)
|
||||
does a linear search through three local files, in order, to
|
||||
look up host names and convert them to a 516-byte destination key:
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<ol>
|
||||
<li>privatehosts.txt
|
||||
<li>userhosts.txt
|
||||
<li>hosts.txt
|
||||
</ol>
|
||||
<p>The lookup is case-insensitive.
|
||||
|
||||
<p>{% trans -%}
|
||||
The lookup is case-insensitive.
|
||||
The first match is used, and conflicts are not detected.
|
||||
There is no enforcement of naming rules in lookups.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans namingdiscussion=site_url('docs/discussions/naming') -%}
|
||||
Lookups are cached for a few minutes.
|
||||
There is an experimental facility for real-time lookups (a la DNS) over the network within the router,
|
||||
although it is not enabled by default
|
||||
(see "EepGet" under <a href="{{ site_url('docs/discussions/naming') }}#alternatives">Alternatives on the discussion page</a>).
|
||||
</p>
|
||||
(see "EepGet" under <a href="{{ namingdiscussion }}#alternatives">Alternatives on the discussion page</a>).
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2 id="httpproxy">HTTP Proxy</h2>
|
||||
<p>The HTTP proxy does a lookup via the router for all hostnames ending in '.i2p'.
|
||||
<h2 id="httpproxy">{% trans %}HTTP Proxy{% endtrans %}</h2>
|
||||
|
||||
<p>{% trans -%}
|
||||
The HTTP proxy does a lookup via the router for all hostnames ending in '.i2p'.
|
||||
Otherwise, it forwards the request to a configured HTTP outproxy.
|
||||
Thus, in practice, all HTTP (eepsite) hostnames must end in the pseudo-Top Level Domain '.i2p'.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
If the router fails to resolve the hostname, the HTTP proxy returns
|
||||
an error page to the user with links to several "jump" services.
|
||||
See below for details.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2 id="addressbook">Addressbook</h2>
|
||||
<h3>Incoming Subscriptions and Merging</h3>
|
||||
<p>
|
||||
<h2 id="addressbook">{% trans %}Addressbook{% endtrans %}</h2>
|
||||
<h3>{% trans %}Incoming Subscriptions and Merging{% endtrans %}</h3>
|
||||
|
||||
<p>{% trans -%}
|
||||
The addressbook application periodically
|
||||
retrieves other users' hosts.txt files and merges
|
||||
them with the local hosts.txt, after several checks.
|
||||
Naming conflicts are resolved on a first-come first-served
|
||||
basis.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Subscribing to another user's hosts.txt file involves
|
||||
giving them a certain amount of trust.
|
||||
You do not want them, for example, 'hijacking' a new site
|
||||
by quickly entering in their own key for a new site before
|
||||
passing the new host/key entry to you.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
For this reason, the only subscription configured by
|
||||
default is <code>http://www.i2p2.i2p/hosts.txt</code>,
|
||||
which contains a copy of the hosts.txt included
|
||||
in the I2P release.
|
||||
Users must configure additional subscriptions in their
|
||||
local addressbook application (via subscriptions.txt or <a href="#susidns">SusiDNS</a>).
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Some other public addressbook subscription links:
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
<ul>
|
||||
<li><a href="http://{{ i2pconv('i2host.i2p') }}/cgi-bin/i2hostetag">http://i2host.i2p/cgi-bin/i2hostetag</a>
|
||||
<li><a href="http://{{ i2pconv('stats.i2p') }}/cgi-bin/newhosts.txt">http://stats.i2p/cgi-bin/newhosts.txt</a>
|
||||
<li><a href="http://{{ i2pconv('i2host.i2p') }}/cgi-bin/i2hostetag">http://{{ i2pconv('i2host.i2p') }}/cgi-bin/i2hostetag</a>
|
||||
<li><a href="http://{{ i2pconv('stats.i2p') }}/cgi-bin/newhosts.txt">http://{{ i2pconv('stats.i2p') }}/cgi-bin/newhosts.txt</a>
|
||||
</ul>
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
The operators of these services may have various policies for listing hosts.
|
||||
Presence on this list does not imply endorsement.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>Naming Rules</h3>
|
||||
<p>
|
||||
<h3>{% trans %}Naming Rules{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
While there are hopefully not any technical limitations within I2P on host names,
|
||||
the addressbook enforces several restrictions on host names
|
||||
imported from subscriptions.
|
||||
@ -143,30 +177,80 @@ and for security.
|
||||
The rules are essentially the same as those in RFC2396 Section 3.2.2.
|
||||
Any hostnames violating these rules may not be propagated
|
||||
to other routers.
|
||||
</p><p>
|
||||
Naming rules:</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Naming rules:
|
||||
{%- endtrans %}</p>
|
||||
<ul>
|
||||
<li>Names are converted to lower case on import.
|
||||
<li>Names are checked for conflict with existing names in the existing userhosts.txt and hosts.txt
|
||||
<li>{% trans -%}
|
||||
Names are converted to lower case on import.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Names are checked for conflict with existing names in the existing userhosts.txt and hosts.txt
|
||||
(but not privatehosts.txt) after conversion to lower case.
|
||||
<li>Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case.
|
||||
<li>Must not start with '.' or '-'.
|
||||
<li>Must end with '.i2p'.
|
||||
<li>67 characters maximum, including the '.i2p'.
|
||||
<li>Must not contain '..'.
|
||||
<li>Must not contain '.-' or '-.' (as of 0.6.1.33).
|
||||
<li>Must not contain '--' except in 'xn--' for IDN.
|
||||
<li>Base32 hostnames (*.b32.i2p) are not allowed.
|
||||
<li>Certain hostnames reserved for project use are not allowed
|
||||
(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, *.console.i2p, and others)
|
||||
<li>Keys are checked for base64 validity.
|
||||
<li>Keys are checked for conflict with existing keys in hosts.txt (but not privatehosts.txt).
|
||||
<li>Minimum key length 516 bytes.
|
||||
<li>Maximum key length 616 bytes (to account for certs up to 100 bytes).
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must not start with '.' or '-'.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must end with '.i2p'.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
67 characters maximum, including the '.i2p'.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must not contain '..'.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must not contain '.-' or '-.' (as of 0.6.1.33).
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Must not contain '--' except in 'xn--' for IDN.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Base32 hostnames (*.b32.i2p) are not allowed.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Certain hostnames reserved for project use are not allowed
|
||||
(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, *.console.i2p, and others)
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Keys are checked for base64 validity.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Keys are checked for conflict with existing keys in hosts.txt (but not privatehosts.txt).
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Minimum key length 516 bytes.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Maximum key length 616 bytes (to account for certs up to 100 bytes).
|
||||
{%- endtrans %}</li>
|
||||
</ul>
|
||||
<p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Any name received via subscription that passes all the checks is added to the local hosts.txt.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Note that the '.' symbols in a host name are of no significance,
|
||||
and do not denote any actual naming or trust hierarchy.
|
||||
If the name 'host.i2p' already exists, there is nothing
|
||||
@ -175,70 +259,110 @@ and this name can be imported by others' addressbook.
|
||||
Methods to deny subdomains to non-domain 'owners' (certificates?),
|
||||
and the desirability and feasibility of these methods,
|
||||
are topics for future discussion.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
International Domain Names (IDN) also work in i2p (using punycode 'xn--' form).
|
||||
To see IDN .i2p domain names rendered correctly in Firefox's location bar,
|
||||
add 'network.IDN.whitelist.i2p (boolean) = true' in about:config.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
As the addressbook application does not use privatehosts.txt at all, in practice
|
||||
this file is the only place where it is appropriate to place private aliases or
|
||||
"pet names" for sites already in hosts.txt.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>Outgoing Subscriptions</h3>
|
||||
<p>
|
||||
<h3>{% trans %}Outgoing Subscriptions{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
Addressbook will publish the merged hosts.txt to a location
|
||||
(traditionally hosts.txt in the local eepsite's home directory) to be accessed by others
|
||||
for their subscriptions.
|
||||
This step is optional and is disabled by default.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>Hosting and HTTP Transport Issues</h3>
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
The addressbook application, together with eepget, saves the Etag and/or Last-Modified
|
||||
information returned by the web server of the subscription.
|
||||
This greatly reduces the bandwidth required, as the web server will
|
||||
return a '304 Not Modified' on the next fetch if nothing has changed.
|
||||
</p>
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
However the entire hosts.txt is downloaded if it has changed.
|
||||
See below for discussion on this issue.
|
||||
</p>
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Hosts serving a static hosts.txt or an equivalent CGI application
|
||||
are strongly encouraged to deliver
|
||||
a Content-Length header, and either an Etag or Last-Modified header.
|
||||
Also ensure that the server delivers a '304 Not Modified' when appropriate.
|
||||
This will dramatically reduce the network bandwidth, and
|
||||
reduce chances of corruption.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2 id="add-services">Host Add Services</h2>
|
||||
<p>
|
||||
<h2 id="add-services">{% trans %}Host Add Services{% endtrans %}</h2>
|
||||
<p>{% trans -%}
|
||||
A host add service is a simple CGI application that takes a hostname and a Base64 key as parameters
|
||||
and adds that to its local hosts.txt.
|
||||
If other routers subscribe to that hosts.txt, the new hostname/key
|
||||
will be propagated through the network.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
It is recommended that host add services impose, at a minimum, the restrictions imposed by the addressbook application listed above.
|
||||
Host add services may impose additional restrictions on hostnames and keys, for example:
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
<ul>
|
||||
<li>A limit on number of 'subdomains'.
|
||||
<li>Authorization for 'subdomains' through various methods.
|
||||
<li>Hashcash or signed certificates.
|
||||
<li>Editorial review of host names and/or content.
|
||||
<li>Categorization of hosts by content.
|
||||
<li>Reservation or rejection of certain host names.
|
||||
<li>Restrictions on the number of names registered in a given time period.
|
||||
<li>Delays between registration and publication.
|
||||
<li>Requirement that the host be up for verification.
|
||||
<li>Expiration and/or revocation.
|
||||
<li>IDN spoof rejection.
|
||||
<li>{% trans -%}
|
||||
A limit on number of 'subdomains'.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Authorization for 'subdomains' through various methods.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Hashcash or signed certificates.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Editorial review of host names and/or content.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Categorization of hosts by content.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Reservation or rejection of certain host names.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Restrictions on the number of names registered in a given time period.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Delays between registration and publication.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Requirement that the host be up for verification.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Expiration and/or revocation.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
IDN spoof rejection.
|
||||
{%- endtrans %}</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="jump-services">Jump Services</h2>
|
||||
<p>
|
||||
<h2 id="jump-services">{% trans %}Jump Services{% endtrans %}</h2>
|
||||
<p>{% trans -%}
|
||||
A jump service is a simple CGI application that takes a hostname as a parameter
|
||||
and returns a 301 redirect to the proper URL with a <code>?i2paddresshelper=key</code>
|
||||
string appended.
|
||||
@ -246,34 +370,41 @@ The HTTP proxy will interpret the appended string and
|
||||
use that key as the actual destination.
|
||||
In addition, the proxy will cache that key so the
|
||||
address helper is not necessary until restart.
|
||||
</p>
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Note that, like with subscriptions, using a jump service
|
||||
implies a certain amount of trust, as a jump service could maliciously
|
||||
redirect a user to an incorrect destination.
|
||||
</p>
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
To provide the best service, a jump service should be subscribed to
|
||||
several hosts.txt providers so that its local host list is current.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2 id="susidns">SusiDNS</h2>
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
SusiDNS is simply a web interface front-end to configuring addressbook subscriptions
|
||||
and accessing the four addressbook files.
|
||||
All the real work is done by the 'addressbook' application.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Currently, there is little enforcement of addressbook naming rules within SusiDNS,
|
||||
so a user may enter hostnames locally that would be rejected by
|
||||
the addressbook subscription rules.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h2 id="base32">Base32 Names</h2>
|
||||
<p>I2P supports Base32 hostnames similar to Tor's .onion addresses.
|
||||
<h2 id="base32">{% trans %}Base32 Names{% endtrans %}</h2>
|
||||
<p>{% trans -%}
|
||||
I2P supports Base32 hostnames similar to Tor's .onion addresses.
|
||||
Base32 addresses are much shorter and easier to handle than the
|
||||
full 516-character Base64 Destinations or addresshelpers.
|
||||
Example: <code>ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p</code>
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
In Tor, the address is 16 characters (80 bits), or half of the SHA-1 hash.
|
||||
I2P uses 52 characters (256 bits) to represent the full SHA-256 hash.
|
||||
The form is {52 chars}.b32.i2p.
|
||||
@ -283,10 +414,12 @@ Base32 lookups will only be successful when the Destination is up and publishing
|
||||
a LeaseSet.
|
||||
Because resolution may require a network database lookup, it may take significantly
|
||||
longer than a local address book lookup.
|
||||
</p><p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans -%}
|
||||
Base32 addresses can be used in most places where hostnames or full destinations
|
||||
are used, however there are some exceptions where they may fail if the
|
||||
name does not immediately resolve. I2PTunnel will fail, for example, if
|
||||
the name does not resolve to a destination.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
{% endblock %}
|
||||
|
@ -1,108 +1,193 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}Plugins{% endblock %}
|
||||
{% block lastupdated %}June 2012{% endblock %}
|
||||
{% block title %}{% trans %}Plugins{% endtrans %}{% endblock %}
|
||||
{% block lastupdated %}{% trans %}June 2012{% endtrans %}{% endblock %}
|
||||
{% block accuratefor %}0.9{% endblock %}
|
||||
{% block content %}
|
||||
<h2>I2P Plugins</h2>
|
||||
<h2>{% trans %}I2P Plugins{% endtrans %}</h2>
|
||||
|
||||
<h3>General Information</h3>
|
||||
<p>
|
||||
<h3>{% trans %}General Information{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
I2P includes a plugin architecture
|
||||
to support easy development and installation of additional software.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
There are now plugins available that support distributed email, blogs, IRC
|
||||
clients, distributed file storage, wikis, and more.
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
Benefits to i2p users and app developers:
|
||||
</p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<ul>
|
||||
<li>Easy distribution of applications</li>
|
||||
<li>Allows innovation and use of additional libraries without worrying about
|
||||
increasing the size of <code>i2pupdate.sud</code></li>
|
||||
<li>Support large or special-purpose applications that would never be bundled
|
||||
with the I2P installation</li>
|
||||
<li>Cryptographically signed and verified applications</li>
|
||||
<li>Automatic updates of applications, just like for the router</li>
|
||||
<li>Separate initial install and update packages, if desired, for smaller update downloads</li>
|
||||
<li>One-click installation of applications. No more asking users to modify
|
||||
<code>wrapper.config</code> or <code>clients.config</code></li>
|
||||
<li>Isolate applications from the base <code>$I2P</code> installation</li>
|
||||
<li>Automatic compatibility checking for I2P version, Java version, Jetty
|
||||
version, and previous installed application version</li>
|
||||
<li>Automatic link addition in console</li>
|
||||
<li>Automatic startup of application, including modifying classpath, without requiring a restart</li>
|
||||
<li>Automatic integration and startup of webapps into console Jetty instance</li>
|
||||
<li>Facilitate creation of 'app stores' like the one at <a
|
||||
href="http://{{ i2pconv('plugins.i2p') }}">plugins.i2p</a></li>
|
||||
<li> One-click uninstall</li>
|
||||
<li> Language and theme packs for the console </li>
|
||||
<li> Bring detailed application information to the router console </li>
|
||||
<li> Non-java applications also supported </li>
|
||||
<li>{% trans -%}
|
||||
Easy distribution of applications
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Allows innovation and use of additional libraries without worrying about
|
||||
increasing the size of <code>i2pupdate.sud</code>
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Support large or special-purpose applications that would never be bundled
|
||||
with the I2P installation
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Cryptographically signed and verified applications
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Automatic updates of applications, just like for the router
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Separate initial install and update packages, if desired, for smaller update downloads
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
One-click installation of applications. No more asking users to modify
|
||||
<code>wrapper.config</code> or <code>clients.config</code>
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Isolate applications from the base <code>$I2P</code> installation
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Automatic compatibility checking for I2P version, Java version, Jetty
|
||||
version, and previous installed application version
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Automatic link addition in console
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Automatic startup of application, including modifying classpath, without requiring a restart
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Automatic integration and startup of webapps into console Jetty instance
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans pluginsite=i2pconv('plugins.i2p') -%}
|
||||
Facilitate creation of 'app stores' like the one at
|
||||
<a href="http://{{ pluginsite }}">{{ pluginsite }}</a>
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
One-click uninstall
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Language and theme packs for the console
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Bring detailed application information to the router console
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Non-java applications also supported
|
||||
{%- endtrans %}</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h4>Required I2P version</h4>
|
||||
<p> 0.7.12 or newer. </p>
|
||||
<h4>{% trans %}Required I2P version{% endtrans %}</h4>
|
||||
<p>{% trans %}0.7.12 or newer.{% endtrans %}</p>
|
||||
|
||||
<h4>Installation</h4>
|
||||
<p> 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
|
||||
<h4>{% trans %}Installation{% endtrans %}</h4>
|
||||
<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. </p>
|
||||
the top of your summary bar.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p> To update a plugin to the latest version, just click the update button on
|
||||
<p>{% trans -%}
|
||||
To update a plugin to the latest version, just click the update button on
|
||||
<a href="http://127.0.0.1:7657/configclients.jsp#plugin">configclients.jsp</a>.
|
||||
There is also a button to check if the plugin has a more recent version, as
|
||||
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).</p>
|
||||
builds).
|
||||
{%- endtrans %}</p>
|
||||
|
||||
|
||||
<h3>Development</h3>
|
||||
<p> See the latest <a href="{{ site_url('docs/spec/plugin') }}">plugin specification</a> and the <a
|
||||
href="http://{{ i2pconv('zzz.i2p') }}/forums/16">plugin forum</a> on zzz.i2p. </p> <p> See
|
||||
also the sources for plugins developed by various people. Some plugins, such
|
||||
as <a href="http://{{ i2pconv('plugins.i2p') }}/plugins/snowman">snowman</a>, were developed
|
||||
specifically as examples. </p>
|
||||
<h3>{% trans %}Development{% endtrans %}</h3>
|
||||
<p>{% trans pluginspec=site_url('docs/spec/plugin'), zzz=i2pconv('zzz.i2p') -%}
|
||||
See the latest <a href="{{ pluginspec }}">plugin specification</a> and the
|
||||
<a href="http://{{ zzz }}/forums/16">plugin forum</a> on {{ zzz }}.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p> <b>Developers wanted!</b> Plugins are a great way to learn more about I2P
|
||||
or easily add some feature. </p>
|
||||
<p>{% trans pluginsite=i2pconv('plugins.i2p') -%}
|
||||
See also the sources for plugins developed by various people. Some plugins, such
|
||||
as <a href="http://{{ pluginsite }}/plugins/snowman">snowman</a>, were developed
|
||||
specifically as examples.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>Getting Started</h3>
|
||||
<p> To create a plugin from an existing binary package you will need to get
|
||||
makeplugin.sh from <a
|
||||
href="http://{{ i2pconv('trac.i2p2.i2p') }}/browser/plugin/makeplugin.sh?rev=776519571fda0689ef09c42f66e7398f30432e87">the
|
||||
i2p.scripts branch in monotone</a>. </p>
|
||||
<p>{% trans -%}
|
||||
<b>Developers wanted!</b> Plugins are a great way to learn more about I2P
|
||||
or easily add some feature.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>{% trans %}Getting Started{% endtrans %}</h3>
|
||||
<p>{% trans url='http://'+i2pconv('trac.i2p2.i2p')+'/browser/plugin/makeplugin.sh?rev=776519571fda0689ef09c42f66e7398f30432e87' -%}
|
||||
To create a plugin from an existing binary package you will need to get
|
||||
makeplugin.sh from <a href="{{ url }}">the i2p.scripts branch in monotone</a>.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
|
||||
<h3>Known Issues</h3>
|
||||
<p> Note that the router's plugin architecture does <b>NOT</b> currently
|
||||
provide any additional security isolation or sandboxing of plugins.</p>
|
||||
<h3>{% trans %}Known Issues{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
Note that the router's plugin architecture does <b>NOT</b> currently
|
||||
provide any additional security isolation or sandboxing of plugins.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<ul>
|
||||
<li>Updates of a plugin with included jars (not wars) won't be recognized if
|
||||
<li>{% trans -%}
|
||||
Updates of a plugin with included jars (not wars) won't be recognized if
|
||||
the plugin was already run, as it requires class loader trickery to flush the
|
||||
class cache; a full router restart is required.</li>
|
||||
<li> The stop button may be displayed even if there is nothing to stop.</li>
|
||||
<li> Plugins running in a separate JVM create a <code>logs/</code> directory in
|
||||
<code>$CWD</code>.</li>
|
||||
<li>No initial keys are present, except for those of jrandom and zzz (using the
|
||||
class cache; a full router restart is required.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
The stop button may be displayed even if there is nothing to stop.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Plugins running in a separate JVM create a <code>logs/</code> directory in
|
||||
<code>$CWD</code>.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
No initial keys are present, except for those of jrandom and zzz (using the
|
||||
same keys as for router update), so the first key seen for a signer is
|
||||
automatically accepted—there is no signing key authority. </li>
|
||||
<li> When deleting a plugin, the directory is not always deleted, especially on
|
||||
Windows. </li>
|
||||
<li> Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result
|
||||
in a "plugin is corrupt" message if pack200 compression of the plugin file is
|
||||
used. </li>
|
||||
<li> Theme and translation plugins are untested. </li>
|
||||
<li> Disabling autostart doesn't always work. </li>
|
||||
automatically accepted—there is no signing key authority.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
When deleting a plugin, the directory is not always deleted, especially on
|
||||
Windows.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result in a
|
||||
"plugin is corrupt" message if pack200 compression of the plugin file is used.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Theme and translation plugins are untested.
|
||||
{%- endtrans %}</li>
|
||||
|
||||
<li>{% trans -%}
|
||||
Disabling autostart doesn't always work.
|
||||
{%- endtrans %}</li>
|
||||
</ul>
|
||||
|
||||
<!-- vim: set noai ff=unix nosi ft=html tw=79 et sw=4 ts=4 spell spelllang=en: -->
|
||||
|
@ -1,20 +1,23 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}Ports Used by I2P{% endblock %}
|
||||
{% block lastupdated %}May 2012{% endblock %}
|
||||
{% block title %}{% trans %}Ports Used by I2P{% endtrans %}{% endblock %}
|
||||
{% block lastupdated %}{% trans %}May 2012{% endtrans %}{% endblock %}
|
||||
{% block accuratefor %}0.9{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<p>
|
||||
<p>{% trans -%}
|
||||
These are the ports used or reserved by I2P, including those for known plugins,
|
||||
common alternates,
|
||||
and some typical related applications.
|
||||
<p>
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<p>{% trans faq=site_url('faq') -%}
|
||||
Note that many of these are not enabled by default.
|
||||
There is more information in <a href="{{ site_url('support/faq') }}#ports">the FAQ</a>.
|
||||
There is more information in <a href="{{ faq }}#ports">the FAQ</a>.
|
||||
See also the documentation for individual plugins.
|
||||
Plugin authors please add any ports you use here.
|
||||
For new plugins, we recommend using the next available port
|
||||
in the 766x range.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<table>
|
||||
<tr><th>Port</th><th>Usage</th></tr>
|
||||
@ -45,7 +48,7 @@ in the 766x range.
|
||||
<tr><td>7662</td><td>Zzzot Plugin</td></tr>
|
||||
<tr><td>7663</td><td>?? Plugin ??</td></tr>
|
||||
<tr><td>7664</td><td>JAMWiki Plugin</td></tr>
|
||||
<tr><td></td><td><i>recommended spot for new plugins/applications</i></td></tr>
|
||||
<tr><td></td><td><i>{% trans %}recommended spot for new plugins/applications{% endtrans %}</i></td></tr>
|
||||
<tr><td>8118</td><td>Privoxy (reserve)</td></tr>
|
||||
<tr><td>8123</td><td>Tor Polipo (reserve)</td></tr>
|
||||
<tr><td>8887</td><td>Old default network port</td></tr>
|
||||
|
Reference in New Issue
Block a user