I2P habilita una interfaz JSONRPC2 a través del plugin I2PControl. El propósito de la interfaz es proporcionar un camino sencillo a la interacción con un nodo I2P en ejecución. Un cliente, itoopie, ha sido desarrollado en paralelo. La implementación JSONRPC2 para el cliente, así como el plugin, son proporcionados por las librerías Java JSON-RPC 2.0. Una lista de implementaciones de JSON-RPC para diferentes lenguajes puede encontrarse en el wiki de JSON-RPC.

I2PControl por defecto está escuchando sobre https://localhost:7650

API, versión 1.

Los parámetros sólo se proporcionan a través del nombre (mapas).

Formato JSON-RPC 2

Petición:
{
  "id": "id",
  "method": "Method-name",
  "params": {
    "Param-key-1": "param-value-1",
    "Param-key-2": "param-value-2",
    "Token": "**actual token**"
  },
  "jsonrpc": "2.0"
}
Respuesta:
{
  "id": "id",
  "result": {
    "Result-key-1": "result-value-1",
    "Result-key-2": "result-value-2"
  },
  "jsonrpc": "2.0"
}
    method-name – Descripción
      Petición:
    • Param-key-1 – Descripción
    • Param-key-2 – Descripción
    • Token – Muestra usada para autentificar cada petición (excluyendo el método RPC 'Authenticate')
      Respuesta:
    • Result-key-1 – Descripción
    • Result-key-2 – Descripción

Métodos implemetados

    Authenticate – Crea y devuelve un token de autentificación usado para comunicaciones posteriores.
      Petición:
    • API – [long] La versión del API de I2PControl usada por el cliente.
    • Password – [String] La contraseña usada para autentificarse en el servidor remoto.
      Respuesta:
    • API – [long] Versión del API principal de I2PControl implementado por el servidor.
    • Token – [String] La muestra usada para la posterior comunicación.
    Echo – Muestra el valor de la clave eco, se usa para depuración y pruebas.
      Petición:
    • Echo – [String] Un valor será devuelto como respuesta.
    • Token – [String] Token usado para autentificar el cliente. Es provisto por el servidor a través del método RPC 'Authenticate'
      Respuesta:
    • Result – [String] Valor de la clave 'echo', clave eco, en la petición.
    GetRate – Obtiene el rateStat del StatManager del ruter. Crear el stat si no ha sido creado ya.
      Petición:
    • Stat – [String] Determina que rateStat debe obtenerse, vea ratestats.
    • Period – [long] Determina para qué periodo de tiempo se obtendrá el stat. Se mide en ms.
    • Token – [String] Token usado para autentificar el cliente. Es provisto por el servidor a través del método RPC 'Authenticate'
      Respuesta:
    • Result – [double] Devuelve el valor medio del periodo y del rateStat requerido.
    I2PControl – Administra I2PControl, Puertos, contraseñas y cosas de ese tipo.
      Petición:
    • *i2pcontrol.address – [String] Cambia la dirección donde escucha I2PControl (sólo se han implementado 127.0.0.1 y 0.0.0.0 para I2PControl hasta ahora).
    • *i2pcontrol.password – [String] Cambia la contraseña para I2PControl, todos los tokens de autentificación serán revocados.
    • *i2pcontrol.port – [String] Cambia el puerto en el que I2PControl escuchará por conexiones.
    • Token – [String] Token usado para autentificar el cliente. Es provisto por el servidor a través del método RPC 'Authenticate'
      Respuesta:
    • **i2pcontrol.address – [null] Devuelto si la dirección fue cambiada
    • **i2pcontrol.password – [null] Devuelto si la configuración fue cambiada
    • **i2pcontrol.port – [null] Devuelto si la configuración fue cambiada
    • SettingsSaved – [Boolean] Devuelve verdadero si se hizo algún cambio.
    • RestartNeeded – [Boolean] Devuelve verdadero si se hizo algún cambio que necesite un reinicio para tener efecto.
    RouterInfo – Obtiene información básica sobre el ruter I2P. Tiempo encendido, versión, etc.
      Petición:
    • *i2p.router.status – [n/a]
    • *i2p.router.uptime – [n/a]
    • *i2p.router.version – [n/a]
    • *i2p.router.net.bw.inbound.1s – [n/a]
    • *i2p.router.net.bw.inbound.15s – [n/a]
    • *i2p.router.net.bw.outbound.1s – [n/a]
    • *i2p.router.net.bw.outbound.15s – [n/a]
    • *i2p.router.net.status – [n/a]
    • *i2p.router.net.tunnels.participating – [n/a]
    • *i2p.router.netdb.activepeers – [n/a]
    • *i2p.router.netdb.fastpeers – [n/a]
    • *i2p.router.netdb.highcapacitypeers – [n/a]
    • *i2p.router.netdb.isreseeding – [n/a]
    • *i2p.router.netdb.knownpeers – [n/a]
    • Token – [String] Token usado para autentificar el cliente. Es provisto por el servidor a través del método RPC 'Authenticate'
      Respuesta:
    • **i2p.router.status – [String] cuál es el estado del router.
    • **i2p.router.uptime – [long] Cuánto tiempo lleva encendido el ruter en ms.
    • **i2p.router.version – [String] Qué versión de I2P está ejecutando el ruter.
    • **i2p.router.net.bw.inbound.1s – [double] Media del ancho de banda de entrada durante 1 segundo, en Bps.
    • **i2p.router.net.bw.inbound.15s – [double] Media del ancho de banda de entrada durante 15 segundos, en Bps.
    • **i2p.router.net.bw.outbound.1s – [double] Media del ancho de banda de salida durante 1 segundo, en Bps.
    • **i2p.router.net.bw.outbound.15s – [double] Media del ancho de banda de salida durante 15 segundos, en Bps.
    • **i2p.router.net.status – [long] Cuál es el estado actual de la red. De acuerdo con la lista:
      • 0 – OK
      • 1 – TESTING
      • 2 – FIREWALLED
      • 3 – HIDDEN
      • 4 – WARN_FIREWALLED_AND_FAST
      • 5 – WARN_FIREWALLED_AND_FLOODFILL
      • 6 – WARN_FIREWALLED_WITH_INBOUND_TCP
      • 7 – WARN_FIREWALLED_WITH_UDP_DISABLED
      • 8 – ERROR_I2CP
      • 9 – ERROR_CLOCK_SKEW
      • 10 – ERROR_PRIVATE_TCP_ADDRESS
      • 11 – ERROR_SYMMETRIC_NAT
      • 12 – ERROR_UDP_PORT_IN_USE
      • 13 – ERROR_NO_ACTIVE_PEERS_CHECK_CONNECTION_AND_FIREWALL
      • 14 – ERROR_UDP_DISABLED_AND_TCP_UNSET
    • **i2p.router.net.tunnels.participating – [long] En cuántos túneles estamos participando en la red I2p.
    • **i2p.router.netdb.activepeers – [long] Con cuántos túneles nos hemos comunicado recientemente.
    • **i2p.router.netdb.fastpeers &ndasg; [long] Cuántos pares se consideran como 'rápidos'.
    • **i2p.router.netdb.highcapacitypeers – [long] Cuántos pares se consideran de 'alta capacidad'
    • **i2p.router.netdb.isreseeding – [boolean] ¿El router I2P está resembrando nodos en su NetDB?
    • **i2p.router.netdb.knownpeers – [long] Cuántos pares conocemos (listados en nuestra NetDB).
    RouterManager – Maneja el arrancado/apagado del ruter I2P.
      Petición:
    • *FindUpdates – [n/a] Bloqueando. Inicia una búsqueda para actualizaciones firmadas.
    • *Reseed – [n/a] Inicia el resembrado de un ruter, obteniendo los pares para nuestra NetDB desde un ordenador remoto.
    • *Restart – [n/a] Reinicia el router.
    • *RestartGraceful – [n/a] Reinicia el ruter con cuidado (espera a que expiren los túneles participantes).
    • *Shutdown – [n/a] Apaga el router.
    • *ShutdownGraceful – [n/a] Apaga el ruter con cuidado (espera a que expiren los túneles participantes).
    • *Update – [n/a] Inicia una actualización del router I2P desde fuentes firmadas.
    • Token – [String] Token usado para autentificar el cliente. Es provisto por el servidor a través del método RPC 'Authenticate'
      Respuesta:
    • **FindUpdates – [boolean] Bloqueando. Devuelve verdadero si se ha encontrado una actualización firmada.
    • **Reseed – [null] Si se ha requerido, verifica que el resembrado ha sido iniciado.
    • **Restart – [null] Si se ha requerido, verifica que el reinicio ha sido iniciado.
    • **RestartGraceful – [null] Si se ha requerido, verifica que el reinicio con cuidado ha sido iniciado.
    • **Shutdown – [null] Si se ha requerido, verifica que el apagado ha sido iniciado.
    • **ShutdownGraceful – [null] Si se ha requerido, verifica que el apagado con cuidado ha sido iniciado.
    • **Update – [String] Bloqueando. Si se solicita, devuelve el estado de la actualización
    NetworkSetting – Obtiene un conjunto de configuraciones relacionadas con la red. Puertos, direcciones, etc.
      Petición:
    • *i2p.router.net.ntcp.port – [String] Qué puerto es usado para el transporte TCP. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.ntcp.hostname – [String] Qué nombre de dominio es usado para el transporte TCP. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.ntcp.autoip – [String] Usar la ip detectada automáticamente para el transporte TCP . Si se ha enciado null, se devolverá la configuración actual.
    • *i2p.router.net.ssu.port – [String] Qué puerto es usado para el transporte UDP. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.ssu.hostname – [String] Qué nombre de dominio es usado para el transporte UDP. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.ssu.autoip – [String] Qué métodos deben susarse para detectar la dirección ip del transporte UDP. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.ssu.detectedip – [null] Qué ip ha sido detectada para el transporte UDP.
    • *i2p.router.net.upnp – [String] Está UPnP activo. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.bw.share – [String] Qué tanto por ciento del ancho de banda es utilizable para los túneles participantes. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.bw.in – [String] Cuántos KB/s se permiten para el ancho de banda entrante. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.bw.out – [String] Cuántos KB/s se permiten para el ancho de banda de salida. Si se ha enviado null, se devolverá la configuración actual.
    • *i2p.router.net.laptopmode – [String] Si está el modo laptop activado (el cambio de la identidad del ruter cuando cambia la IP). Si se ha enviado null, se devolverá la configuración actual.
    • Token – [String] El identificador (`token`) usado para la autentificación del cliente, es proporcionado por el servidor a través del método 'Authenticate' (autentificar) de RPC. Si se envía vacío ('null'), se devolverá el valor de configuración actual.
      Respuesta:
    • **i2p.router.net.ntcp.port – [String] Si se solicita, devuelve el puerto usado para el transporte TCP.
    • **i2p.router.net.ntcp.hostname – [String] Si se solicita, devuelve el nombre del servidor usado para el transporte TCP.
    • **i2p.router.net.ntcp.autoip – [String] Si se solicita, devuelve el método usado para detectar automáticamente la IP para el transporte TCP.
    • **i2p.router.net.ssu.port – [String] Si se solicita, devuelve el puerto usado para el transporte UDP.
    • **i2p.router.net.ssu.hostname – [String] Si se solicita, devuelve el nombre del servidor usado para el transporte UDP.
    • **i2p.router.net.ssu.autoip – [String] Si se solicita, devuelve los métodos usados para detectar la dirección IP del transporte UDP.
    • **i2p.router.net.ssu.detectedip – [String] Si se solicita, devuelve la IP que ha sido detectada por el transporte UDP.
    • **i2p.router.net.upnp – [String] Si se solicita, devuelve el valor de la configuración UPnP.
    • **i2p.router.net.bw.share – [String] Si se solicita, devuelve el porcentaje de ancho de banda disponible para los túneles participantes.
    • **i2p.router.net.bw.in – [String] Si se solicita, devuelve el número de KB/s de ancho de banda de entrada que están permitidos.
    • **i2p.router.net.bw.out – [String] Si se solicita, devuelve el número de KB/s de ancho de banda de salida que están permitidos.
    • **i2p.router.net.laptopmode – [String] Si se solicita, devuelve el valor del modo laptop (portátil).
    • SettingsSaved – [boolean] Han sido guardadas las configuraciones proporcionadas.
    • RestartNeeded – [boolean] Se necesita un reinicio para que las nuevas configuraciones se usen.
    AdvancedSettings – Permite la manipulación de ajustes avanzados de I2P
      Set: – Establece los pares clave-valor enviados
    • {"setting-key": "setting-value", ...} – [Map]
      SetAll: – Establece los pares clave-valor enviados, elimina todo lo demás
    • {"setting-key": "setting-value", ...} – [Map]
      Get: – Establece los pares clave-valor enviados, elimina todo lo demás
    • "setting-key" – [String]
      GetAll:

* denota un valor opcional.

** denota un valor de retorno que posiblemente ocurra

Códigos de error

    Códigos de error estándar JSON-RPC2.
  • -32700 – Error de procesado JSON.
  • -32600 – Petición no válida.
  • -32601 – Método no encontrado.
  • -32602 – Parámetros no válidos.
  • -32603 – Error interno.
    Códigos de error específicos de I2PControl.
  • -32001 – Se proporcionó una contraseña no válida.
  • -32002 – No se presentó la credencial (`token`) de autentificación.
  • -32003 – La credencial (`token`) de autentificación no existe
  • -32004 – La credencial (`token`) de identificación ha expirado y será eliminada.
  • -32005 – La versión de la API I2PControl usada no fue especificada, pero se requiere que sea especificada.
  • -32006 – La versión de la API I2PControl especificada no está soportada por I2PControl.