Files
i2p.www/i2p2www/pages/site/docs/plugins.html

110 lines
4.8 KiB
HTML
Raw Normal View History

2012-12-11 05:26:18 +00:00
{% extends "global/layout.html" %}
{% block title %}Plugins{% endblock %}
{% block content %}
<h2>I2P Plugins</h2>
2012-06-09 13:27:58 +00:00
Page last updated June 2012, current as of router version 0.9.
<h3>General Information</h3>
2012-06-09 13:27:58 +00:00
<p>
I2P includes a plugin architecture
to support easy development and installation of additional software.
2012-06-09 13:27:58 +00:00
</p>
<p>
2012-06-09 13:27:58 +00:00
There are now plugins available that support distributed email, blogs, IRC
clients, distributed file storage, wikis, and more.
</p>
<p>
Benefits to i2p users and app developers:
2012-06-09 13:27:58 +00:00
</p>
<ul>
2012-06-09 13:27:58 +00:00
<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
2012-12-11 05:26:18 +00:00
href="http://{{ i2pconv('plugins.i2p') }}">plugins.i2p</a></li>
2012-06-09 13:27:58 +00:00
<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>
</ul>
<h4>Required I2P version</h4>
2012-06-09 13:27:58 +00:00
<p> 0.7.12 or newer. </p>
<h4>Installation</h4>
2012-06-09 13:27:58 +00:00
<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
plugin is installed and started, a link to the plugin will usually appear at
the top of your summary bar. </p>
<p> 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>.
2012-06-09 13:27:58 +00:00
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>
<h3>Development</h3>
2012-12-11 05:43:44 +00:00
<p> See the latest <a href="{{ site_url('docs/spec/plugin') }}">plugin specification</a> and the <a
2012-12-11 05:26:18 +00:00
href="http://{{ i2pconv('zzz.i2p') }}/forums/16">plugin forum</a> on zzz.i2p. </p> <p> See
2012-06-09 13:27:58 +00:00
also the sources for plugins developed by various people. Some plugins, such
2012-12-11 05:26:18 +00:00
as <a href="http://{{ i2pconv('plugins.i2p') }}/plugins/snowman">snowman</a>, were developed
2012-06-09 13:27:58 +00:00
specifically as examples. </p>
<p> <b>Developers wanted!</b> Plugins are a great way to learn more about I2P
or easily add some feature. </p>
<h3>Getting Started</h3>
2012-06-09 13:27:58 +00:00
<p> To create a plugin from an existing binary package you will need to get
makeplugin.sh from <a
2012-12-11 05:26:18 +00:00
href="http://{{ i2pconv('trac.i2p2.i2p') }}/browser/plugin/makeplugin.sh?rev=776519571fda0689ef09c42f66e7398f30432e87">the
2012-06-09 13:27:58 +00:00
i2p.scripts branch in monotone</a>. </p>
<h3>Known Issues</h3>
2012-06-09 13:27:58 +00:00
<p> Note that the router's plugin architecture does <b>NOT</b> currently
provide any additional security isolation or sandboxing of plugins.</p>
<ul>
2012-06-09 13:27:58 +00:00
<li>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
same keys as for router update), so the first key seen for a signer is
automatically accepted&mdash;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>
</ul>
2012-06-09 13:27:58 +00:00
<!-- vim: set noai ff=unix nosi ft=html tw=79 et sw=4 ts=4 spell spelllang=en: -->
{% endblock %}