Основная информация
В I2P имеется архитектура плагинов для поддержки легкой разработки и установки дополнительного ПО.
Уже сейчас доступны плагины с поддержкой распределенной электронной почты, блогов, клиентов IRC, распределенного хранилища файлов, wiki и др.
Преимущества для пользователей I2P и разработчиков ПО:
- Простое распространение приложений
- Позволяет использовать инновации и дополнительные библиотеки, не беспокоясь об
увеличении размера
i2pupdate.sud
- Поддержка больших или специализированных приложений, которые никогда не будут связаны с установкой I2P
- Криптографически подписанные и проверенные приложения
- Автоматическое обновление приложений, совсем как для маршрутизатора
- Отдельные начальная установка и пакеты обновлений, по желанию, для уменьшения размера загружаемых обновлений
- Установка приложений в один клик. Не спрашивая пользователей об изменении
wrapper.config
илиclients.config
- Изолирование приложений от базовой установки
$I2P
- Автоматическая проверка совместимости с версией I2P, Java, Jetty и предыдущей установленной версией приложения
- Автоматическое добавление ссылки в консоли
- Автоматический запуск приложения, включая модификацию classpath без необходимости перезапуска
- Автоматическая интеграция и запуск веб-приложения в консольном экземпляре Jetty
- Облегченное создание 'app stores', как для plugins.i2p.xyz
- Удаление в один клик
- Языковые пакеты и темы для консоли
- Вывод детализированной информации от приложения в консоль маршрутизатора
- Также поддерживаются не-Java приложения
Требуемая версия I2P
0.7.12 или новее.
Установка
Чтобы установить и запустить плагин, скопируйте ссылку на установщик .xpi2p
в
форму внизу
configclients.jsp в
консоли вашего маршрутизатора и нажмите кнопку "install plugin". После
установки и запуска плагина ссылка на него обычно появляется вверху
вашей строки состояния.
Чтобы обновить плагин до последней версии, просто нажмите кнопку обновления в configclients.jsp. Также есть кнопка для проверки актуальности версии плагина, как и кнопка проверки наличия обновления для плагина. Проверка наличия обновлений для плагинов будет выполнена при обновлении I2P до нового релиза (за исключением тестовых сборок).
Разработка
Смотри актуальную спецификацию плагинов и форум о плагинах на zzz.i2p.
Также смотри исходники плагинов, разработанных другими людьми. Некоторые плагины, такие как snowman, были разработаны специально в качестве примеров.
Разыскиваются разработчики! Плагины это замечательная возможность узнать больше о I2P, или легко добавить новую возможность.
Начало работы
Чтобы сделать плагин из имеющегося исполняемого пакета вам понадобится makeplugin.sh из ветки i2p.scripts в monotone.
Известные проблемы
Учтите, что архитектура плагинов маршрутизатора на данный момент НЕ предоставляет дополнительную изоляцию безопасности или запуск плагинов в песочнице.
- Обновление плагина с jar-файлами (но не war) не будет распознано, если плагин уже запущен, т.к. для этого требуется, чтобы загрузчик классов сбросил кэш классов; необходим полный перезапуск маршрутизатора.
- Кнопка остановки может отображаться, даже если останавливать нечего.
- Плагины, запущенные в отдельном JVM, создают директорию
logs/
в$CWD
. - Нет никаких первоначальных ключей, за исключением ключей jrandom и zzz (используются те же ключи, что и для обновления маршрутизатора), так что первый ключ, доступный для подписания, автоматически принимается—авторизация подписывающих ключей отсутствует.
- При удалении плагина директории не всегда удаляются, особенно в Windows.
- При установке плагинов, требующих Java 1.6, на машине с Java 1.5 возникнет сообщение "plugin is corrupt", если используется pack200 сжатие плагина.
- Темы и плагины переводов не тестируются.
- Отключение автоматического запуска не всегда срабатывает.