Cette traduction a été générée par apprentissage automatique et peut ne pas être exacte à 100%. Voir la version anglaise

I2PControl JSON-RPC

API de gestion de router distant via l'application web I2PControl

————-vérifier ajout d’éléments————–

Documentation de l’API I2PControl

I2PControl est une API JSON-RPC 2.0 intégrée au router I2P (depuis la version 0.9.39). Elle permet la surveillance et le contrôle authentifiés du router via des requêtes JSON structurées.

Mot de passe par défaut : itoopie — il s’agit du paramètre d’usine par défaut et doit être changé immédiatement pour la sécurité.


1. Vue d’ensemble et accès

ImplementationDefault EndpointProtocolEnabled by DefaultNotes
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Must be enabled via WebApps (Router Console)Bundled webapp
i2pd (C++ implementation)https://127.0.0.1:7650/HTTPS✅ Enabled by defaultLegacy plugin behavior
Dans le cas de Java I2P, vous devez aller dans **Console du routeur → WebApps → I2PControl** et l'activer (régler pour démarrer automatiquement). Une fois actif, toutes les méthodes nécessitent que vous vous authentifiiez d'abord et receviez un jeton de session.

2. Format JSON-RPC

Toutes les requêtes suivent la structure JSON-RPC 2.0 :

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

Une réponse réussie inclut un champ result ; en cas d’échec, un objet error est retourné :

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

ou

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

3. Flux d’authentification

Requête (Authentifier)

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/

Réponse réussie

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}

Vous devez inclure ce Token dans toutes les requêtes suivantes dans les params.


4. Méthodes et points de terminaison

4.1 RouterInfo

Récupère les données de télémétrie clés concernant le router.

Exemple de requête

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/

Champs de réponse (result) Selon la documentation officielle (GetI2P) : - i2p.router.status (String) — un statut lisible par l’homme - i2p.router.uptime (long) — millisecondes (ou chaîne pour les anciennes versions d’i2pd) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — chaîne de version :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — bande passante entrante en B/s :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — bande passante sortante en B/s :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — code de statut numérique (voir l’énumération ci-dessous) :contentReference[oaicite:4]{index=4} - i2p.router.net.tunnels.participating (long) — nombre de tunnels participants :contentReference[oaicite:5]{index=5} - i2p.router.netdb.activepeers, fastpeers, highcapacitypeers (long) — statistiques des pairs netDB :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — indique si le réamorçage est actif :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — total des pairs connus :contentReference[oaicite:8]{index=8}

Énumération des codes de statut (i2p.router.net.status)

CodeMeaning
0OK
1TESTING
2FIREWALLED
3HIDDEN
4WARN_FIREWALLED_AND_FAST
5WARN_FIREWALLED_AND_FLOODFILL
6WARN_FIREWALLED_WITH_INBOUND_TCP
7WARN_FIREWALLED_WITH_UDP_DISABLED
8ERROR_I2CP
9ERROR_CLOCK_SKEW
10ERROR_PRIVATE_TCP_ADDRESS
11ERROR_SYMMETRIC_NAT
12ERROR_UDP_PORT_IN_USE
13ERROR_NO_ACTIVE_PEERS_CHECK_CONNECTION_AND_FIREWALL
14ERROR_UDP_DISABLED_AND_TCP_UNSET
---

4.2 GetRate

Utilisé pour récupérer les métriques de débit (par exemple bande passante, succès des tunnels) sur une fenêtre de temps donnée.

Exemple de requête

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/

Exemple de Réponse

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

4.3 RouterManager

Effectuer des actions administratives.

Paramètres / méthodes autorisés - Restart, RestartGraceful - Shutdown, ShutdownGraceful - Reseed, FindUpdates, Update :contentReference[oaicite:10]{index=10}

Exemple de requête

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/

Réponse réussie

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

4.4 NetworkSetting

Obtenir ou définir les paramètres de configuration réseau (ports, upnp, partage de bande passante, etc.)

Exemple de requête (obtenir les valeurs actuelles)

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/

Exemple de réponse

{
  "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": true,
    "RestartNeeded": false
  }
}

Note : les versions d’i2pd antérieures à 2.41 peuvent retourner des types numériques au lieu de chaînes de caractères — les clients doivent gérer les deux. :contentReference[oaicite:11]{index=11}


4.5 Paramètres avancés

Permet de manipuler les paramètres internes du router.

Exemple de requête

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/

Exemple de réponse

{
  "jsonrpc": "2.0",
  "id": "6",
  "result": {
    "Set": {
      "router.sharePercentage": "75",
      "i2np.flushInterval": "6000"
    }
  }
}

5. Codes d’erreur

Codes d’erreur JSON-RPC2 standard

CodeMeaning
-32700JSON parse error
-32600Invalid request
-32601Method not found
-32602Invalid parameters
-32603Internal error
### Codes d'erreur spécifiques à I2PControl
CodeMeaning
-32001Invalid password provided
-32002No authentication token presented
-32003Authentication token doesn't exist
-32004The provided authentication token was expired and will be removed
-32005The version of the I2PControl API used wasn't specified, but is required to be specified
-32006The version of the I2PControl API specified is not supported by I2PControl
---

6. Utilisation et bonnes pratiques

  • Toujours inclure le paramètre Token (sauf lors de l’authentification).
  • Changer le mot de passe par défaut (itoopie) lors de la première utilisation.
  • Pour Java I2P, s’assurer que l’application web I2PControl est activée via WebApps.
  • Se préparer à de légères variations : certains champs peuvent être des nombres ou des chaînes, selon la version d’I2P.
  • Encapsuler les longues chaînes de statut pour un affichage convivial.

Was this page helpful?