Files
i2p.www/www.i2p2/pages/plugins.html

121 lines
4.0 KiB
HTML
Raw Normal View History

{% extends "_layout.html" %}
{% block title %}Plugins{% endblock %}
{% block content %}
<h2>I2P Plugins</h2>
Page last updated July 2010, current as of router version 0.8.
<h3>General Information</h3>
I2P includes a plugin architecture
to support easy development and installation of additional software.
<p>
There are now plugins available that support distributed email, blogs, IRC clients, distributed file storage, and more.
<p>
Benefits to i2p users and app developers:
<ul>
<li>
Easy distribution of applications
<li>
Allows innovation and use of additional libraries without worrying about increasing the size of i2pupdate.sud
<li>
Support large or special-purpose applications that would never be bundled with the I2P installation
<li>
Cryptographically signed and verified applications
<li>
Automatic updates of applications, just like for the router
<li>
Separate initial install and update packages, if desired, for smaller update downloads
<li>
One-click installation of applications. No more asking users to modify wrapper.config or clients.config
<li>
Isolate applications from the base $I2P installation
<li>
Automatic compatibility checking for i2p version, java version, and previous installed application version
<li>
Automatic link addition in console
<li>
Automatic startup of application, including modifying classpath, no restart required
<li>
Automatic integration and startup of webapps into console Jetty instance
<li>
2010-07-30 21:01:19 +00:00
Facilitate creation of 'app stores'
<li>
One-click uninstall
<li>
Language and theme packs for the console
<li>
Bring detailed application information to the router console
<li>
Non-java applications also supported
</ul>
<h4>Required I2P version</h4>
0.7.12
<h4>Installation</h4>
To install and start a plugin, copy the .xpi2p 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 "install plugin".
After a plugin is installed and started, a link to the plugin will usually appear at the top of your summary bar.
<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>.
There is also a button to check if the plugin has a more recent version.
There is not yet any automatic checking or updating mechanism.
<h3>Development</h3>
See the latest
<a href="plugin_spec.html">plugin specification</a>
and the
<a href="http://zzz.i2p/forums/16">plugin forum</a> on zzz.i2p.
<p>
See also the sources for plugins developed by various people.
Some plugins were developed specifically as examples.
<p>
<b>Developers wanted!</b>
Plugins are a great way to learn more about I2P or easily add some feature.
<h3>Getting Started</h3>
To create a plugin from an existing binary package you will need to get
makeplugin.sh from
<a href="http://stats.i2p/cgi-bin/viewmtn/branch/head/browse/i2p.scripts/plugin/makeplugin.sh">the i2p.scripts branch in monotone</a>.
<h3>Known Issues</h3>
Note that the router's plugin architecture does <b>NOT</b> provide any additional security isolation or sandboxing of plugins.
<ul>
<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>
Automatic updates (and check-for-updates) unimplemented.
<li>
Stop button displayed even if there is nothing to stop.
<li>
Plugins running in a separate JVM create a logs/ directory in $CWD.
<li>
No initial keys except for jrandom and zzz (using same keys as for router update),
so the first key seen for a signer is automatically accepted - there is no signing key authority.
<li>
When deleting a plugin, the directory is not always deleted, especially on Windows.
<li>
Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result in a "plugin is corrupt"
message if pack200 is used.
<li>
Theme and translation plugins are untested.
<li>
Disabling autostart doesn't always work
</ul>
{% endblock %}