Tento překlad byl vytvořen pomocí strojového učení a nemusí být 100% přesný. Zobrazit anglickou verzi

I2PControl JSON-RPC

API pro vzdálenou správu routeru přes webovou aplikaci I2PControl

Dokumentace I2PControl API

————-zkontrolovat přidání věcí————--

I2PControl je JSON-RPC 2.0 API dodávané s I2P routerem (od verze 0.9.39). Umožňuje autentifikované monitorování a ovládání routeru prostřednictvím strukturovaných JSON požadavků.

Výchozí heslo: itoopie — toto je tovární výchozí nastavení a mělo by být okamžitě změněno z bezpečnostních důvodů.

1. Přehled a přístup

ImplementaceVýchozí koncový bodProtokolPovoleno ve výchozím nastaveníPoznámky
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Musí být povoleno přes webové aplikace (konzole směrovače)Dodávaná webová aplikace
i2pd (C++ implementace)https://127.0.0.1:7650/HTTPS✅ Povoleno ve výchozím nastaveníChování staršího pluginu

V případě Java I2P musíte jít do Router Console → WebApps → I2PControl a povolit ho (nastavit na automatické spuštění). Jakmile je aktivní, všechny metody vyžadují, abyste se nejprve autentifikovali a obdrželi token relace.

2. Formát JSON-RPC


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

Všechny požadavky dodržují strukturu JSON-RPC 2.0:

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

Úspěšná odpověď obsahuje pole result; při selhání je vrácen objekt error:

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

nebo

3. Tok autentizace

Požadavek (Autentifikace)

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/

Úspěšná odpověď

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}
PoleSměrTypPopis
APIPožadaveklongVerze I2PControl API požadovaná klientem. Použijte 1.
PasswordPožadavekStringHeslo použité k ověření u I2PControl.
APIOdpověďlongPrimární verze API implementovaná serverem.
TokenOdpověďStringOvěřovací token použitý pro následné požadavky.

Tento Token musíte zahrnout do všech následujících požadavků v params.

4. Metody a koncové body

4.1 RouterInfo


Získává klíčovou telemetrii o routeru.

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/

Příklad požadavku

Status Code Enum (i2p.router.net.status)

KlíčTypPopis
i2p.router.statusŘetězecVolný formát, přeložený stav směrovače určený pro zobrazení.
i2p.router.uptimelongDoba běhu směrovače v milisekundách. Starší verze i2pd mohou vracet řetězec.
i2p.router.versionŘetězecPlná verze směrovače.
i2p.router.net.statuslongKód síťového stavu; viz níže uvedená tabulka.
i2p.router.net.bw.inbound.1sdoubleAktuální příchozí šířka pásma v bajtech za sekundu.
i2p.router.net.bw.inbound.15sdoublePrůměrná příchozí šířka pásma za 15 sekund v bajtech za sekundu.
i2p.router.net.bw.outbound.1sdoubleAktuální odchozí šířka pásma v bajtech za sekundu.
i2p.router.net.bw.outbound.15sdoublePrůměrná odchozí šířka pásma za 15 sekund v bajtech za sekundu.
i2p.router.net.tunnels.participatinglongPočet tunelů, ve kterých tento směrovač účinkuje.

Výčet stavového kódu (i2p.router.net.status)

KódVýznam
0OK
1TESTOVÁNÍ
2ZABLOKOVÁNO FIREWALLU
3SKRYTÝ
4VAROVÁNÍ_ZABLOKOVÁNO_FIREWALLU_A_RYCHLÝ
5VAROVÁNÍ_ZABLOKOVÁNO_FIREWALLU_A_FLOODFILL
6VAROVÁNÍ_ZABLOKOVÁNO_FIREWALLU_S_PŘÍCHODNÝM_TCP
7VAROVÁNÍ_ZABLOKOVÁNO_FIREWALLU_A_UDP_VYPNUTO
8CHYBA_I2CP
9CHYBA_ROZDÍLU_V_ČASE
10CHYBA_SOUKROMÉ_TCP_ADRESY
11CHYBA_SYMETRICKÉ_NAT
12CHYBA_UDP_PORT_UŽ_OBSAZEN
13CHYBA_ŽÁDNÍ_AKTIVNÍ_PARTNEŘI_ZKONTROLUJTE_PŘIPOJENÍ_A_FIREWALL
14CHYBA_UDP_VYPNUTO_A_TCP_NE nastaveno

Síťová databáze a pole protějšku

KlíčTypPopis
i2p.router.netdb.knownpeerslongPočet známých peerů, s výjimkou místního směrovače.
i2p.router.netdb.activepeerslongPočet aktivních peerů.
i2p.router.netdb.fastpeerslongPočet peerů klasifikovaných jako rychlé.
i2p.router.netdb.highcapacitypeerslongPočet peerů klasifikovaných jako vysoké kapacity.
i2p.router.netdb.isreseedingbooleanUdává, zda probíhá opětovné zasazování (reseed).
Pole odpovědi (result) Podle oficiální dokumentace (GetI2P): - i2p.router.status (String) — čitelný stav - i2p.router.uptime (long) — milisekundy (nebo string pro starší i2pd) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — řetězec verze :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — příchozí šířka pásma v B/s :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — odchozí šířka pásma v B/s :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — číselný stavový kód (viz výčet níže) :contentReference[oaicite:4]{index=4} - i2p.router.net.tunnels.participating (long) — počet účastnických tunelů :contentReference[oaicite:5]{index=5} - i2p.router.netdb.activepeers, fastpeers, highcapacitypeers (long) — statistiky peerů v netDb :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — zda je aktivní reseed :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — celkový počet známých peerů :contentReference[oaicite:8]{index=8}

4.2 GetRate


ParametrTypPopis
StatŘetězecNázev RateStat směrovače.
PeriodlongDoba výpočtu v milisekundách.
Používá se k načtení metrik rychlosti (např. šířka pásma, úspěšnost tunnelů) během daného časového okna.
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/

Příklad požadavku

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

Ukázková odpověď

4.3 RouterManager


ParametrVýsledekPopis
RestartnullSpustí okamžité restartování směrovače.
RestartGracefulnullRestartuje po vypršení platnosti zapojených tunelů.
ShutdownnullSpustí okamžité vypnutí směrovače.
ShutdownGracefulnullVypne po vypršení platnosti zapojených tunelů.
ReseednullSpustí reseedování směrovače.
FindUpdatesboolean nebo StringBlokující. Hledá podepsanou aktualizaci směrovače.
UpdateStringBlokující. Spustí podepsanou aktualizaci směrovače a vrátí její konečný stav.
Provádět administrativní akce.
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/

Povolené parametry / metody - Restart, RestartGraceful - Shutdown, ShutdownGraceful - Reseed, FindUpdates, Update :contentReference[oaicite:10]{index=10}

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

Příklad požadavku

4.4 NetworkSetting

Úspěšná odpověď


KlíčPřijatá hodnotaPopis
i2p.router.net.ntcp.portŘetězec, 1–65535NTCP port; změna vyžaduje restart.
i2p.router.net.ntcp.hostnameŘetězecNTCP hostname; změna vyžaduje restart.
i2p.router.net.ntcp.autoipalways, true nebo falseAutomatický výběr adresy NTCP.
i2p.router.net.ssu.portŘetězec, 1–65535SSU port; změna vyžaduje restart.
i2p.router.net.ssu.hostnameŘetězecExterní SSU hostname; změna vyžaduje restart.
i2p.router.net.ssu.autoipssu, local,ssu, upnp,ssu nebo local,upnp,ssuZdroje detekce adresy pro SSU.
i2p.router.net.ssu.detectedipnullPouze pro čtení, zjištěná SSU adresa.
i2p.router.net.upnpŘetězecNastavení UPnP.
i2p.router.net.bw.shareŘetězec, 0–100Procento šířky pásma dostupné pro účast v tunelech.
i2p.router.net.bw.inŘetězec s nezáporným celým číslemLimit vstupní šířky pásma v KiB/s.
i2p.router.net.bw.outŘetězec s nezáporným celým číslemLimit výstupní šířky pásma v KiB/s.
i2p.router.net.laptopmodeŘetězecNastavení režimu notebooku.
Získat nebo nastavit parametry konfigurace sítě (porty, upnp, sdílení šířky pásma, atd.)
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/

Příklad požadavku (získání aktuálních hodnot)

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

Ukázková odpověď

Poznámka: verze i2pd starší než 2.41 mohou vracet číselné typy namísto řetězců — klienti by měli zvládnout oba případy. :contentReference[oaicite:11]{index=11}

4.5 Pokročilé nastavení


ParametrTypPopis
getŘetězecVrací jedno nastavení uvnitř objektu výsledku get.
getAlln/aVrací kompletní mapu konfigurace uvnitř getAll.
setMapa<Řetězec, Řetězec>Aktualizuje dodaná nastavení, aniž by odstranila ostatní klíče.
setAllMapa<Řetězec, Řetězec>Ničivé: nahradí všechna nastavení a odstraní klíče, které nebyly poskytnuty.
Umožňuje manipulaci s interními parametry routeru.

Příklad požadavku

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/

Příklad odpovědi

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

Standardní chybové kódy JSON-RPC2


ParametrTypPopis
EchoŘetězecHodnota vrácená jako Result.
{
  "jsonrpc": "2.0",
  "id": "7",
  "method": "Echo",
  "params": {
    "Token": "a1b2c3d4e5",
    "Echo": "hello"
  }
}
{
  "jsonrpc": "2.0",
  "id": "7",
  "result": {
    "Result": "hello"
  }
}

I2PControl specifické chybové kódy

Spravuje samotné I2PControl. Aktuální Java obsluha podporuje změnu hesla.

ParametrTypPopis
i2pcontrol.passwordStringNastaví nové heslo I2PControl a zruší stávající ověřovací tokeny.
Výsledek obsahuje SettingsSaved. Pokud bylo heslo změněno, výsledek také obsahuje "i2pcontrol.password": null. Nastavení listen-address a listen-port z běžného samostatného pluginu nejsou v aktuálním Java handleru aktivní.

Výchozí heslo: itoopie — toto je tovární výchozí nastavení a mělo by být okamžitě změněno z bezpečnostních důvodů.

5. Kódy chyb

Standardní kódy chyb JSON-RPC2

KódVýznam
-32700Chyba parsování JSON
-32600Neplatný požadavek
-32601Metoda nenalezena
-32602Neplatné parametry
-32603Vnitřní chyba

Specifické chybové kódy I2PControl

KódVýznam
-32001Bylo zadáno neplatné heslo
-32002Nebyl předložen žádný ověřovací token
-32003Ověřovací token neexistuje
-32004Zadaný ověřovací token vypršel a bude odstraněn
-32005Verze I2PControl API nebyla uvedena, ale je vyžadována
-32006Uvedená verze I2PControl API není službou I2PControl podporována

Výchozí heslo: itoopie — toto je tovární výchozí nastavení a mělo by být okamžitě změněno z bezpečnostních důvodů.

6. Použití a nejlepší postupy

  • Vždy zahrňte parametr Token (kromě případů autentifikace).
  • Při prvním použití změňte výchozí heslo (itoopie).
  • Pro Java I2P se ujistěte, že je I2PControl webapp povolena přes WebApps.
  • Buďte připraveni na drobné variace: některá pole mohou být čísla nebo řetězce v závislosti na verzi I2P.
  • Zalamujte dlouhé stavové řetězce pro přívětivý výstup pro zobrazení.

Výchozí heslo: itoopie — toto je tovární výchozí nastavení a mělo by být okamžitě změněno z bezpečnostních důvodů.