Přehled
Tento návrh popisuje API2 pro I2PControl.
Tento návrh byl zamítnut a nebude implementován, protože narušuje zpětnou kompatibilitu. Podrobnosti naleznete v odkazu na diskuzní vlákno.
Pozor vývojáři!
Všechny parametry RPC budou nyní psány malými písmeny. To přeruší zpětnou kompatibilitu s implementacemi API1. Důvodem je poskytování uživatelům >=API2 co nejjednodušší a nejkoherentnější možné API.
Specifikace API 2
{
"id": "id",
"method": "method_name",
"params": {
"token": "auth_token",
"method_param": "method_parameter_value",
},
"jsonrpc": "2.0"
}
{
"id": "id",
"result": "result_value",
"jsonrpc": "2.0"
}
Parametry
"id"
Číslo id nebo požadavek. Používá se k identifikaci, která odpověď byla vyvolána jakým požadavkem.
"method_name"
Název RPC, který je vyvolán.
"auth_token"
Autentizační token relace. Je potřeba ho dodat s každým RPC, kromě volání ‘authenticate’.
"method_parameter_value"
Parametr metody. Používá se k nabídce různých variant metody. Jako ‘get’, ‘set’ a podobné varianty.
"result_value"
Hodnota, kterou RPC vrací. Její typ a obsah záleží na metodě a konkrétní metodě.
Předpony
Pojmenovací schéma RPC je podobné jako v CSS, s předponami specifickými pro různé implementace API (i2p, kovri, i2pd):
XXX.YYY.ZZZ
i2p.XXX.YYY.ZZZ
i2pd.XXX.YYY.ZZZ
kovri.XXX.YYY.ZZZ
Celkovým záměrem u předpon specifických pro prodejce je umožnit určitý pohyb a umožnit implementacím inovovat, aniž by musely čekat, až všechny ostatní implementace doženou. Pokud je RPC implementováno všemi implementacemi, jeho mnohočetné předpony mohou být odstraněny a může být zahrnuto jako základní RPC v další verzi API.
Průvodce čtením metod
rpc.method
- parameter [typ parametru]: [null], [number], [string], [boolean], [array] nebo [object]. [object] je mapa {key:value}.
- Vrací:
"return_value" [string] // Toto je hodnota vrácená voláním RPC
Metody
authenticate - Za předpokladu, že je poskytnuto správné heslo, tato metoda vám poskytne token pro další přístup a seznam podporovaných úrovní API.
password [string]: Heslo pro tuto implementaci i2pcontrol
Vrací:
[object]
{
"token" : [string], // Token, který má být dodán se všemi ostatními metodami RPC
"api" : [[int],[int], ...] // Seznam podporovaných úrovní API.
}
control. - Ovládání i2p
control.reseed - Spustit opětovné nasazování
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
control.restart - Restartovat instanci i2p
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
control.restart.graceful - Jemně restartovat instanci i2p
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
control.shutdown - Vypnout instanci i2p
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
control.shutdown.graceful - Jemně vypnout instanci i2p
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
control.update.find - BLOKOVÁNÍ Vyhledat podepsané aktualizace
- [nil]: Není potřeba žádný parametr
Vrací:
true [boolean] // Pravda, pokud je k dispozici podepsaná aktualizace
control.update.start - Spustit proces aktualizace
- [nil]: Není potřeba žádný parametr
Vrací:
[nil]
i2pcontrol. - Konfigurace i2pcontrol
i2pcontrol.address - Získat/nastavit IP adresu, na které i2pcontrol naslouchá.
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
"0.0.0.0" [string]
* *set* [string]: Toto bude IP adresa jako "0.0.0.0" nebo "192.168.0.1"
Vrací:
[nil]
i2pcontrol.password - Změnit heslo i2pcontrol.
- set [string]: Nastavit nové heslo na tento řetězec
Vrací:
[nil]
i2pcontrol.port - Získat/nastavit port, na kterém i2pcontrol naslouchá.
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
7650 [number]
* *set* [number]: Změnit port, na kterém i2pcontrol naslouchá, na tento port
Vrací:
[nil]
settings. - Získat/nastavit nastavení instance i2p
settings.advanced - Pokročilá nastavení
- get [string]: Získat hodnotu tohoto nastavení
Vrací:
"setting-value" [string]
* *getAll* [null]:
Vrací:
[object]
{
"setting-name" : "setting-value", [string]
".." : ".."
}
* *set* [string]: Nastavit hodnotu tohoto nastavení
* *setAll* [object] {"setting-name" : "setting-value", ".." : ".." }
Vrací:
[nil]
settings.bandwidth.in - Nastavení příchozí šířky pásma
settings.bandwidth.out - Nastavení odchozí šířky pásma
- get [nil]: Tento parametr nemusí být nastaven.
Vrací:
0 [number]
* *set* [number]: Nastavit limit šířky pásma
Vrací:
[nil]
settings.ntcp.autoip - Získat nastavení automatické detekce IP pro NTCP
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
true [boolean]
settings.ntcp.hostname - Získat hostitel NTCP
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
"0.0.0.0" [string]
* *set* [string]: Nastavit nového hostitele
Vrací:
[nil]
settings.ntcp.port - NTCP port
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
0 [number]
* *set* [number]: Nastavit nový NTCP port.
Vrací:
[nil]
* *set* [boolean]: Nastavit automatickou detekci IP pro NTCP
Vrací:
[nil]
settings.ssu.autoip - Konfigurace nastavení automatické detekce IP pro SSU
- get [nil]: Tento parametr nemusí být nastaven.
Vrací:
true [boolean]
settings.ssu.hostname - Konfigurace hostitele SSU
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
"0.0.0.0" [string]
* *set* [string]: Nastavit nového hostitele SSU
Vrací:
[nil]
settings.ssu.port - SSU port
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
0 [number]
* *set* [number]: Nastavit nový SSU port.
Vrací:
[nil]
* *set* [boolean]: Nastavit automatickou detekci IP pro SSU
Vrací:
[nil]
settings.share - Získat procentuální podíl šířky pásma
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
0 [number] // Procentuální podíl šířky pásma (0-100)
* *set* [number]: Nastavit procentuální podíl šířky pásma (0-100)
Vrací:
[nil]
settings.upnp - Povolte nebo zakažte UPNP
- get [nil]: Tento parametr nemusí být nastaven.
Vrací:
true [boolean]
* *set* [boolean]: Nastavit automatickou detekci IP pro SSU
Vrací:
[nil]
stats. - Získat statistiky z instance i2p
stats.advanced - Tato metoda poskytuje přístup ke všem statistikám vedeným v rámci instance.
- get [string]: Název pokročilé statistiky, kterou je třeba poskytnout
- Optional: period [number]: Období pro požadovanou statistiku
stats.knownpeers - Vrátí počet známých peerů
stats.uptime - Vrátí dobu v ms od doby, kdy byl router spuštěn
stats.bandwidth.in - Vrátí příchozí šířku pásma (ideálně za poslední sekundu)
stats.bandwidth.in.total - Vrátí počet přijatých bajtů od posledního restartu
stats.bandwidth.out - Vrátí odchozí šířku pásma (ideálně za poslední sekundu)’
stats.bandwidth.out.total - Vrátí počet odeslaných bajtů od posledního restartu’
stats.tunnels.participating - Vrátí počet tunelů, kterých se aktuálně účastníte
stats.netdb.peers.active - Vrátí počet peerů, s nimiž jsme nedávno komunikovali
stats.netdb.peers.fast - Vrátí počet ‘rychlých’ peerů
stats.netdb.peers.highcapacity - Vrátí počet peerů s ‘vysokou kapacitou’
stats.netdb.peers.known - Vrátí počet známých peerů
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
0.0 [number]
status. - Získat stav instance i2p
status.router - Získat stav routeru
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
"status" [string]
status.net - Získat stav routerové sítě
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
0 [number]
/**
* 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
*/
status.isfloodfill - Je tato instance i2p momentálně floodfill
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
true [boolean]
status.isreseeding - Dochází u této instance i2p k opětovnému nasazování
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
true [boolean]
status.ip - Veřejná IP zjištěná pro tuto instanci i2p
- get [null]: Tento parametr nemusí být nastaven.
Vrací:
"0.0.0.0" [string]