Фреймворк плагинов I2P позволяет расширять функциональность router без изменения базовой установки. Доступные плагины охватывают почту, блоги, IRC, хранилище данных, вики, инструменты мониторинга и многое другое.
Примечание по безопасности: Плагины работают с теми же правами доступа, что и роутер. Относитесь к загрузкам от сторонних разработчиков так же, как вы относитесь к любому подписанному обновлению программного обеспечения — проверяйте источник перед установкой.
1. Установка плагина
- Скопируйте URL для загрузки плагина со страницы проекта.

- Откройте страницу конфигурации плагинов
в консоли router.

- Вставьте URL в поле установки и нажмите Install Plugin.

Роутер загружает подписанный архив, проверяет подпись и активирует плагин немедленно. Большинство плагинов добавляют ссылки в консоль или фоновые сервисы без необходимости перезапуска роутера.
2. Почему плагины важны
- Установка в один клик для конечных пользователей — без ручного редактирования
wrapper.configилиclients.config - Сохраняет размер основного пакета
i2update.su3небольшим, предоставляя крупные или нишевые функции по требованию - Опциональные JVM для каждого плагина обеспечивают изоляцию процессов при необходимости
- Автоматическая проверка совместимости с версией роутера, средой выполнения Java и Jetty
- Механизм обновления аналогичен роутеру: подписанные пакеты и инкрементальные загрузки
- Поддерживаются интеграции с консолью, языковые пакеты, темы UI и приложения не на Java (через скрипты)
- Позволяет создавать курируемые каталоги «магазинов приложений», такие как
plugins.i2p
3. Управление установленными плагинами
Используйте элементы управления на странице плагинов маршрутизатора I2P , чтобы:
- Проверка обновлений для отдельного плагина
- Проверка всех плагинов одновременно (запускается автоматически после обновления роутера)
- Установка всех доступных обновлений одним кликом

- Включение/отключение автозапуска для плагинов, регистрирующих сервисы
- Чистое удаление плагинов
4. Создайте свой собственный плагин
- Изучите спецификацию плагинов для понимания требований к упаковке, подписи и метаданным.
- Используйте
makeplugin.shдля упаковки существующего бинарного файла или веб-приложения в устанавливаемый архив. - Опубликуйте URL-адреса как для установки, так и для обновления, чтобы роутер мог различать первоначальную установку и инкрементные обновления.
- Разместите контрольные суммы и ключи подписи на видном месте на странице вашего проекта, чтобы помочь пользователям проверить подлинность.
Ищете примеры? Просмотрите исходный код плагинов сообщества на plugins.i2p (например, образец snowman).
5. Известные ограничения
- Обновление плагина, который поставляется в виде обычных JAR-файлов, может потребовать перезапуска роутера, так как загрузчик классов Java кэширует классы.
- Консоль может отображать кнопку Stop, даже если у плагина нет активного процесса.
- Плагины, запущенные в отдельной JVM, создают директорию
logs/в текущем рабочем каталоге. - При первом появлении ключа подписанта он автоматически считается доверенным; централизованного центра подписи не существует.
- Windows иногда оставляет пустые директории после удаления плагина.
- Установка плагина, предназначенного только для Java 6, на JVM Java 5 выдаёт ошибку «plugin is corrupt» из-за сжатия Pack200.
- Плагины тем и переводов остаются в основном непротестированными.
- Флаги автозапуска не всегда сохраняются для неуправляемых плагинов.
6. Требования и рекомендации
- Поддержка плагинов доступна в I2P версии 0.7.12 и новее.
- Поддерживайте свой router и плагины в актуальном состоянии, чтобы получать исправления безопасности.
- Включайте краткие примечания к выпуску, чтобы пользователи понимали, какие изменения произошли между версиями.
- По возможности размещайте архивы плагинов по HTTPS внутри I2P, чтобы минимизировать раскрытие метаданных в открытой сети.
7. Дополнительные материалы
- Спецификация плагинов
- Фреймворк клиентских приложений
- Репозиторий скриптов I2P для утилит упаковки