Esta traducción fue generada mediante aprendizaje automático y puede no ser 100% precisa. Ver versión en inglés

I2PControl JSON-RPC

API de gestión remota de router a través de la aplicación web I2PControl

Documentación de la API I2PControl

————-revisar agregar cosas————--

I2PControl es una API JSON-RPC 2.0 incluida con el router I2P (desde la versión 0.9.39). Permite el monitoreo y control autenticado del router a través de solicitudes JSON estructuradas.

Contraseña por defecto: itoopie — esta es la configuración de fábrica y debe cambiarse inmediatamente por seguridad.

1. Descripción general y acceso

ImplementaciónPunto final predeterminadoProtocoloHabilitado por defectoNotas
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Debe habilitarse mediante WebApps (Consola del router)Aplicación web incluida
i2pd (implementación en C++)https://127.0.0.1:7650/HTTPS✅ Habilitado por defectoComportamiento de plugin heredado

En el caso de Java I2P, debes ir a Router Console → WebApps → I2PControl y habilitarlo (configurar para que se inicie automáticamente). Una vez activo, todos los métodos requieren que primero te autentiques y recibas un token de sesión.

2. Formato JSON-RPC


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

Todas las solicitudes siguen la estructura JSON-RPC 2.0:

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

Una respuesta exitosa incluye un campo result; en caso de fallo, se devuelve un objeto error:

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

o

3. Flujo de Autenticación

Solicitud (Autenticar)

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/

Respuesta Exitosa

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}
CampoDirecciónTipoDescripción
APISolicitudlongVersión de la API I2PControl solicitada por el cliente. Usar 1.
PasswordSolicitudStringContraseña usada para autenticarse con I2PControl.
APIRespuestalongVersión principal de la API implementada por el servidor.
TokenRespuestaStringToken de autenticación usado en solicitudes posteriores.

Debes incluir ese Token en todas las solicitudes posteriores en los params.

4. Métodos y Endpoints

4.1 RouterInfo


Obtiene telemetría clave sobre el 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/

Ejemplo de Solicitud

Enumeración de Códigos de Estado (i2p.router.net.status)

ClaveTipoDescripción
i2p.router.statusStringEstado del router en formato libre y traducido, destinado a visualización.
i2p.router.uptimelongTiempo activo del router en milisegundos. Versiones antiguas de i2pd podrían devolver una cadena.
i2p.router.versionStringVersión completa del router.
i2p.router.net.statuslongCódigo de estado de red; ver la tabla a continuación.
i2p.router.net.bw.inbound.1sdoubleAncho de banda entrante actual en bytes por segundo.
i2p.router.net.bw.inbound.15sdoublePromedio de ancho de banda entrante en los últimos 15 segundos, en bytes por segundo.
i2p.router.net.bw.outbound.1sdoubleAncho de banda saliente actual en bytes por segundo.
i2p.router.net.bw.outbound.15sdoublePromedio de ancho de banda saliente en los últimos 15 segundos, en bytes por segundo.
i2p.router.net.tunnels.participatinglongNúmero de túneles en los que este router está participando.

Enumeración de Códigos de Estado (i2p.router.net.status)

CódigoSignificado
0OK
1PRUEBAS
2DETRÁS DE CORTAFUEGOS
3OCULTO
4ADVERTENCIA_DET_CORTAFUEGOS_Y_RÁPIDO
5ADVERTENCIA_DET_CORTAFUEGOS_Y_RELLENO
6ADVERTENCIA_DET_CORTAFUEGOS_CON_TCP_ENTRANTE
7ADVERTENCIA_DET_CORTAFUEGOS_CON_UDP_DESACTIVADO
8ERROR_I2CP
9ERROR_DESVIO_RELOJ
10ERROR_DIRECCION_TCP_PRIVADA
11ERROR_NAT_SIMETRICO
12ERROR_PUERTO_UDP_EN_USO
13ERROR_SIN_PARES_ACTIVOS_VERIFIQUE_CONEXION_Y_CORTAFUEGOS
14ERROR_UDP_DESACTIVADO_Y_TCP_NO_CONFIGURADO

NetDB y campos de pares

ClaveTipoDescripción
i2p.router.netdb.knownpeerslongNúmero de pares conocidos, excluyendo el router local.
i2p.router.netdb.activepeerslongNúmero de pares activos.
i2p.router.netdb.fastpeerslongNúmero de pares clasificados como rápidos.
i2p.router.netdb.highcapacitypeerslongNúmero de pares clasificados como alta capacidad.
i2p.router.netdb.isreseedingbooleanIndica si se está realizando un reseed.
Campos de Respuesta (result) Según la documentación oficial (GetI2P): - i2p.router.status (String) — un estado legible por humanos - i2p.router.uptime (long) — milisegundos (o string para i2pd más antiguo) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — cadena de versión :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — ancho de banda entrante en B/s :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — ancho de banda saliente en B/s :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — código de estado numérico (ver enumeración a continuación) :contentReference[oaicite:4]{index=4} - i2p.router.net.tunnels.participating (long) — número de tunnels participantes :contentReference[oaicite:5]{index=5} - i2p.router.netdb.activepeers, fastpeers, highcapacitypeers (long) — estadísticas de peers del netDB :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — si el reseed está activo :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — total de peers conocidos :contentReference[oaicite:8]{index=8}

4.2 GetRate


ParámetroTipoDescripción
StatStringNombre del RateStat del router.
PeriodlongPeriodo de tasa en milisegundos.
Se utiliza para obtener métricas de velocidad (por ejemplo, ancho de banda, éxito de tunnel) durante una ventana de tiempo determinada.
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/

Ejemplo de Solicitud

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

Respuesta de Ejemplo

4.3 RouterManager


ParámetroResultadoDescripción
RestartnullInicia un reinicio inmediato del router.
RestartGracefulnullReinicia después de que expiren los túneles en los que participa.
ShutdownnullInicia un apagado inmediato del router.
ShutdownGracefulnullSe apaga después de que expiren los túneles en los que participa.
ReseednullComienza un reseed del router.
FindUpdatesboolean o StringBloqueante. Busca una actualización firmada del router.
UpdateStringBloqueante. Inicia una actualización firmada del router y devuelve su estado final.
Realizar acciones administrativas.
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/

Parámetros / métodos permitidos - Restart, RestartGraceful - Shutdown, ShutdownGraceful - Reseed, FindUpdates, Update :contentReference[oaicite:10]{index=10}

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

Ejemplo de Solicitud

4.4 NetworkSetting

Respuesta Exitosa


ClaveValor aceptadoDescripción
i2p.router.net.ntcp.portCadena, 1–65535Puerto NTCP; un cambio requiere reinicio.
i2p.router.net.ntcp.hostnameCadenaNombre de host NTCP; un cambio requiere reinicio.
i2p.router.net.ntcp.autoipalways, true o falseSelección automática de dirección NTCP.
i2p.router.net.ssu.portCadena, 1–65535Puerto SSU; un cambio requiere reinicio.
i2p.router.net.ssu.hostnameCadenaNombre de host externo SSU; un cambio requiere reinicio.
i2p.router.net.ssu.autoipssu, local,ssu, upnp,ssu o local,upnp,ssuFuentes de detección de dirección SSU.
i2p.router.net.ssu.detectedipnullDirección SSU detectada de solo lectura.
i2p.router.net.upnpCadenaConfiguración UPnP.
i2p.router.net.bw.shareCadena, 0–100Porcentaje de ancho de banda disponible para túneles participantes.
i2p.router.net.bw.inCadena de entero no negativoLímite de ancho de banda entrante en KiB/s.
i2p.router.net.bw.outCadena de entero no negativoLímite de ancho de banda saliente en KiB/s.
i2p.router.net.laptopmodeCadenaConfiguración de modo portátil.
Obtener o establecer parámetros de configuración de red (puertos, upnp, ancho de banda compartido, etc.)
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/

Ejemplo de Solicitud (obtener valores actuales)

{
  "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
  }
}

Respuesta de Ejemplo

Nota: las versiones de i2pd anteriores a la 2.41 pueden devolver tipos numéricos en lugar de cadenas — los clientes deben manejar ambos. :contentReference[oaicite:11]{index=11}

4.5 Configuración Avanzada


ParámetroTipoDescripción
getCadenaDevuelve una configuración dentro de un objeto resultado get.
getAlln/aDevuelve el mapa completo de configuración dentro de getAll.
setMapa<Cadena, Cadena>Actualiza las configuraciones proporcionadas sin eliminar otras claves.
setAllMapa<Cadena, Cadena>Destructivo: reemplaza todas las configuraciones y elimina las claves no proporcionadas.
Permite manipular parámetros internos del router.

Ejemplo de Solicitud

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/

Ejemplo de Respuesta

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

Códigos de Error Estándar JSON-RPC2


ParámetroTipoDescripción
EchoStringValor devuelto como Result.
{
  "jsonrpc": "2.0",
  "id": "7",
  "method": "Echo",
  "params": {
    "Token": "a1b2c3d4e5",
    "Echo": "hello"
  }
}
{
  "jsonrpc": "2.0",
  "id": "7",
  "result": {
    "Result": "hello"
  }
}

Códigos de Error Específicos de I2PControl

Gestiona I2PControl mismo. El controlador Java actual soporta cambios de contraseña.

ParámetroTipoDescripción
i2pcontrol.passwordStringEstablece una nueva contraseña de I2PControl y revoca los tokens de autenticación existentes.
El resultado contiene SettingsSaved. Si la contraseña fue cambiada, el resultado también contiene "i2pcontrol.password": null. La configuración de dirección y puerto de escucha del plugin independiente heredado no está activa en el controlador Java actual.

Contraseña por defecto: itoopie — esta es la configuración de fábrica y debe cambiarse inmediatamente por seguridad.

5. Códigos de Error

Códigos de error estándar JSON-RPC2

CódigoSignificado
-32700Error de análisis JSON
-32600Solicitud inválida
-32601Método no encontrado
-32602Parámetros inválidos
-32603Error interno

Códigos de error específicos de I2PControl

CódigoSignificado
-32001Contraseña inválida proporcionada
-32002No se presentó ningún token de autenticación
-32003El token de autenticación no existe
-32004El token de autenticación proporcionado ha expirado y será eliminado
-32005La versión de la API I2PControl utilizada no fue especificada, pero es obligatoria especificarla
-32006La versión de la API I2PControl especificada no es compatible con I2PControl

Contraseña por defecto: itoopie — esta es la configuración de fábrica y debe cambiarse inmediatamente por seguridad.

6. Uso y mejores prácticas

  • Incluye siempre el parámetro Token (excepto al autenticarse).
  • Cambia la contraseña predeterminada (itoopie) en el primer uso.
  • Para Java I2P, asegúrate de que la webapp I2PControl esté habilitada a través de WebApps.
  • Prepárate para ligeras variaciones: algunos campos pueden ser números o cadenas, dependiendo de la versión de I2P.
  • Envuelve las cadenas de estado largas para obtener una salida amigable para la visualización.

Contraseña por defecto: itoopie — esta es la configuración de fábrica y debe cambiarse inmediatamente por seguridad.

Was this page helpful?