Этот перевод был создан с помощью машинного обучения и может быть не на 100% точным. Просмотреть английскую версию

I2PControl JSON-RPC

API удаленного управления router через веб-приложение I2PControl

Документация API I2PControl

————-проверить добавить материал————--

I2PControl — это JSON-RPC 2.0 API, встроенный в I2P router (начиная с версии 0.9.39). Он обеспечивает аутентифицированный мониторинг и управление router через структурированные JSON-запросы.

Пароль по умолчанию: itoopie — это заводская настройка по умолчанию, которая должна быть изменена немедленно для обеспечения безопасности.

1. Обзор и доступ

РеализацияЭндпоинт по умолчаниюПротоколВключено по умолчаниюПримечания
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Должно быть включено через WebApps (Router Console)Веб-приложение в комплекте
i2pd (реализация на C++)https://127.0.0.1:7650/HTTPS✅ Включено по умолчаниюПоведение устаревшего плагина

В случае Java I2P вам необходимо перейти в Router Console → WebApps → I2PControl и включить его (настроить автоматический запуск). После активации все методы требуют предварительной аутентификации и получения токена сессии.

2. Формат JSON-RPC


{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "MethodName",
  "params": {
    /* named parameters */
  }
}

Все запросы следуют структуре JSON-RPC 2.0:

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": { /* data */ }
}

Успешный ответ включает поле result; при неудаче возвращается объект error:

{
  "jsonrpc": "2.0",
  "id": "1",
  "error": {
    "code": -32001,
    "message": "Invalid password"
  }
}

или

3. Процесс аутентификации

Запрос (Аутентификация)

curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "1",
        "method": "Authenticate",
        "params": {
          "API": 1,
          "Password": "itoopie"
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Успешный ответ

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}
ПолеНаправлениеТипОписание
APIЗапросlongВерсия API I2PControl, запрашиваемая клиентом. Используйте 1.
PasswordЗапросStringПароль, используемый для аутентификации в I2PControl.
APIОтветlongОсновная версия API, реализованная сервером.
TokenОтветStringТокен аутентификации, используемый в последующих запросах.

Вы должны включать этот Token во все последующие запросы в params.

4. Методы и конечные точки

4.1 RouterInfo


Получает ключевую телеметрию о router.

curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "2",
        "method": "RouterInfo",
        "params": {
          "Token": "a1b2c3d4e5",
          "i2p.router.version": "",
          "i2p.router.status": "",
          "i2p.router.net.status": "",
          "i2p.router.net.tunnels.participating": "",
          "i2p.router.net.bw.inbound.1s": "",
          "i2p.router.net.bw.outbound.1s": ""
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Пример запроса

Перечисление кодов состояния (i2p.router.net.status)

КлючТипОписание
i2p.router.statusСтрокаСвободный формат, перевод статуса маршрутизатора, предназначенный для отображения.
i2p.router.uptimelongВремя работы маршрутизатора в миллисекундах. В более старых версиях i2pd может возвращаться строка.
i2p.router.versionСтрокаПолная версия маршрутизатора.
i2p.router.net.statuslongКод сетевого статуса; см. таблицу ниже.
i2p.router.net.bw.inbound.1sdoubleТекущая входящая пропускная способность в байтах в секунду.
i2p.router.net.bw.inbound.15sdoubleСредняя входящая пропускная способность за 15 секунд в байтах в секунду.
i2p.router.net.bw.outbound.1sdoubleТекущая исходящая пропускная способность в байтах в секунду.
i2p.router.net.bw.outbound.15sdoubleСредняя исходящая пропускная способность за 15 секунд в байтах в секунду.
i2p.router.net.tunnels.participatinglongКоличество туннелей, в которых участвует этот маршрутизатор.

Перечисление кода состояния (i2p.router.net.status)

КодЗначение
0OK
1ТЕСТИРОВАНИЕ
2ЗА БРАНДМАУЭРОМ
3СКРЫТЫЙ
4ПРЕДУПРЕЖДЕНИЕ_БРАНДМАУЭР_И_БЫСТРЫЙ
5ПРЕДУПРЕЖДЕНИЕ_БРАНДМАУЭР_И_FLOODFILL
6ПРЕДУПРЕЖДЕНИЕ_БРАНДМАУЭР_С_ВХОДЯЩИМ_TCP
7ПРЕДУПРЕЖДЕНИЕ_БРАНДМАУЭР_С_ОТКЛЮЧЕННЫМ_UDP
8ОШИБКА_I2CP
9ОШИБКА_РАСХОЖДЕНИЯ_ВРЕМЕНИ
10ОШИБКА_ПРИВАТНЫЙ_TCP_АДРЕС
11ОШИБКА_СИММЕТРИЧНЫЙ_NAT
12ОШИБКА_ПОРТ_UDP_ЗАНЯТ
13ОШИБКА_НЕТ_АКТИВНЫХ_ПИРОВ_ПРОВЕРЬТЕ_СОЕДИНЕНИЕ_И_БРАНДМАУЭР
14ОШИБКА_UDP_ОТКЛЮЧЕН_И_TCP_НЕ_НАСТРОЕН

Поля сети и участников

КлючТипОписание
i2p.router.netdb.knownpeerslongКоличество известных пиров, исключая локальный маршрутизатор.
i2p.router.netdb.activepeerslongКоличество активных пиров.
i2p.router.netdb.fastpeerslongКоличество пиров, классифицированных как быстрые.
i2p.router.netdb.highcapacitypeerslongКоличество пиров, классифицированных как высокой ёмкости.
i2p.router.netdb.isreseedingbooleanВыполняется ли повторная загрузка (reseed).
Поля ответа (result) Согласно официальной документации (GetI2P): - i2p.router.status (String) — понятный для человека статус - i2p.router.uptime (long) — миллисекунды (или строка для более старых i2pd) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — строка версии :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — входящая пропускная способность в Б/с :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — исходящая пропускная способность в Б/с :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — числовой код статуса (см. enum ниже) :contentReference[oaicite:4]{index=4} - i2p.router.net.tunnels.participating (long) — количество участвующих tunnel :contentReference[oaicite:5]{index=5} - i2p.router.netdb.activepeers, fastpeers, highcapacitypeers (long) — статистика узлов netDB :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — активна ли пересинхронизация :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — общее количество известных узлов :contentReference[oaicite:8]{index=8}

4.2 GetRate


ПараметрТипОписание
StatСтрокаНазвание RateStat маршрутизатора.
PeriodlongПериод измерения в миллисекундах.
Используется для получения метрик скорости (например, пропускная способность, успешность tunnel) за заданный временной интервал.
curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "3",
        "method": "GetRate",
        "params": {
          "Token": "a1b2c3d4e5",
          "Stat": "bw.combined",
          "Period": 60000
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Пример запроса

{
  "jsonrpc": "2.0",
  "id": "3",
  "result": {
    "Result": 12345.67
  }
}

Пример ответа

4.3 RouterManager


ПараметрРезультатОписание
RestartnullЗапускает немедленную перезагрузку маршрутизатора.
RestartGracefulnullПерезагружает после истечения срока действия участвующих туннелей.
ShutdownnullИнициирует немедленное выключение маршрутизатора.
ShutdownGracefulnullВыключает после истечения срока действия участвующих туннелей.
ReseednullЗапускает повторную инициализацию маршрутизатора (reseed).
FindUpdatesboolean или StringБлокирующий. Ищет подписанное обновление маршрутизатора.
UpdateStringБлокирующий. Запускает подписанное обновление маршрутизатора и возвращает его финальный статус.
Выполнять административные действия.
curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "4",
        "method": "RouterManager",
        "params": {
          "Token": "a1b2c3d4e5",
          "Restart": true
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Разрешённые параметры / методы - Restart, RestartGraceful - Shutdown, ShutdownGraceful - Reseed, FindUpdates, Update :contentReference[oaicite:10]{index=10}

{
  "jsonrpc": "2.0",
  "id": "4",
  "result": {
    "Restart": null
  }
}

Пример запроса

4.4 NetworkSetting

Успешный ответ


КлючПринимаемое значениеОписание
i2p.router.net.ntcp.portСтрока, 1–65535Порт NTCP; для применения изменения требуется перезапуск.
i2p.router.net.ntcp.hostnameСтрокаИмя хоста NTCP; для применения изменения требуется перезапуск.
i2p.router.net.ntcp.autoipalways, true или falseАвтоматический выбор адреса NTCP.
i2p.router.net.ssu.portСтрока, 1–65535Порт SSU; для применения изменения требуется перезапуск.
i2p.router.net.ssu.hostnameСтрокаВнешнее имя хоста SSU; для применения изменения требуется перезапуск.
i2p.router.net.ssu.autoipssu, local,ssu, upnp,ssu или local,upnp,ssuИсточники обнаружения адреса SSU.
i2p.router.net.ssu.detectedipnullОбнаруженный адрес SSU (только для чтения).
i2p.router.net.upnpСтрокаНастройка UPnP.
i2p.router.net.bw.shareСтрока, 0–100Процент пропускной способности, доступной для участия в туннелях.
i2p.router.net.bw.inСтрока, неотрицательное целое числоОграничение входящей пропускной способности в КиБ/с.
i2p.router.net.bw.outСтрока, неотрицательное целое числоОграничение исходящей пропускной способности в КиБ/с.
i2p.router.net.laptopmodeСтрокаНастройка режима ноутбука.
Получить или установить параметры конфигурации сети (порты, upnp, распределение пропускной способности и т.д.)
curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "5",
        "method": "NetworkSetting",
        "params": {
          "Token": "a1b2c3d4e5",
          "i2p.router.net.ntcp.port": null,
          "i2p.router.net.ssu.port": null,
          "i2p.router.net.bw.share": null,
          "i2p.router.net.upnp": null
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Пример запроса (получение текущих значений)

{
  "jsonrpc": "2.0",
  "id": "5",
  "result": {
    "i2p.router.net.ntcp.port": "1234",
    "i2p.router.net.ssu.port": "5678",
    "i2p.router.net.bw.share": "50",
    "i2p.router.net.upnp": "true",
    "SettingsSaved": false,
    "RestartNeeded": false
  }
}

Пример ответа

Примечание: версии i2pd до 2.41 могут возвращать числовые типы вместо строк — клиенты должны обрабатывать оба варианта. :contentReference[oaicite:11]{index=11}

4.5 Расширенные настройки


ПараметрТипОписание
getСтрокаВозвращает один параметр внутри объекта результата get.
getAllн/дВозвращает полную конфигурационную карту внутри getAll.
setMap<String, String>Обновляет предоставленные параметры, не удаляя другие ключи.
setAllMap<String, String>Разрушительная операция: заменяет все параметры и удаляет неуказанные ключи.
Позволяет управлять внутренними параметрами router.

Пример запроса

curl -s -H "Content-Type: application/json" \
  -d '{
        "jsonrpc": "2.0",
        "id": "6",
        "method": "AdvancedSettings",
        "params": {
          "Token": "a1b2c3d4e5",
          "set": {
            "router.sharePercentage": "75",
            "i2np.flushInterval": "6000"
          }
        }
      }' \
  http://127.0.0.1:7657/jsonrpc/

Пример ответа

{
  "jsonrpc": "2.0",
  "id": "6",
  "result": {}
}

Стандартные коды ошибок JSON-RPC2


ПараметрТипОписание
EchoStringЗначение, возвращаемое как Result.
{
  "jsonrpc": "2.0",
  "id": "7",
  "method": "Echo",
  "params": {
    "Token": "a1b2c3d4e5",
    "Echo": "hello"
  }
}
{
  "jsonrpc": "2.0",
  "id": "7",
  "result": {
    "Result": "hello"
  }
}

Специфические коды ошибок I2PControl

Управляет самим I2PControl. Текущий обработчик на Java поддерживает изменение паролей.

ПараметрТипОписание
i2pcontrol.passwordСтрокаУстанавливает новый пароль I2PControl и отзывает существующие токены аутентификации.
Результат содержит SettingsSaved. Если пароль был изменён, в результате также содержится "i2pcontrol.password": null. Настройки адреса и порта прослушивания из устаревшего автономного плагина неактивны в текущем Java-обработчике.

Пароль по умолчанию: itoopie — это заводская настройка по умолчанию, которая должна быть изменена немедленно для обеспечения безопасности.

5. Коды ошибок

Стандартные коды ошибок JSON-RPC2

КодЗначение
-32700Ошибка разбора JSON
-32600Недопустимый запрос
-32601Метод не найден
-32602Недопустимые параметры
-32603Внутренняя ошибка

Коды ошибок, специфичные для I2PControl

КодЗначение
-32001Указан неверный пароль
-32002Не предоставлено токен аутентификации
-32003Токен аутентификации не существует
-32004Предоставленный токен аутентификации истек и будет удалён
-32005Версия используемого I2PControl API не указана, хотя должна быть указана
-32006Указанная версия I2PControl API не поддерживается I2PControl

Пароль по умолчанию: itoopie — это заводская настройка по умолчанию, которая должна быть изменена немедленно для обеспечения безопасности.

6. Использование и лучшие практики

  • Всегда включайте параметр Token (кроме случаев аутентификации).
  • Измените пароль по умолчанию (itoopie) при первом использовании.
  • Для Java I2P убедитесь, что веб-приложение I2PControl включено через WebApps.
  • Будьте готовы к небольшим различиям: некоторые поля могут быть числами или строками, в зависимости от версии I2P.
  • Переносите длинные строки статуса для удобного отображения.

Пароль по умолчанию: itoopie — это заводская настройка по умолчанию, которая должна быть изменена немедленно для обеспечения безопасности.

Was this page helpful?