Esta tradução foi gerada usando aprendizado de máquina e pode não ser 100% precisa. Ver versão em inglês

I2PControl JSON-RPC

API de gerenciamento remoto de router via webapp I2PControl

Documentação da API I2PControl

————-verificar adicionar coisas————--

I2PControl é uma API JSON-RPC 2.0 incluída com o router I2P (desde a versão 0.9.39). Ela permite monitoramento autenticado e controle do router através de requisições JSON estruturadas.

Senha padrão: itoopie — esta é a senha padrão de fábrica e deve ser alterada imediatamente por segurança.

1. Visão Geral e Acesso

ImplementaçãoEndpoint PadrãoProtocoloHabilitado por PadrãoObservações
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Deve ser habilitado via WebApps (Console do Roteador)Aplicativo web incluso
i2pd (implementação C++)https://127.0.0.1:7650/HTTPS✅ Habilitado por padrãoComportamento de plugin legado

No caso do Java I2P, você deve ir para Router Console → WebApps → I2PControl e habilitá-lo (configurar para iniciar automaticamente). Uma vez ativo, todos os métodos exigem que você primeiro se autentique e receba um token de sessão.

2. Formato JSON-RPC


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

Todas as requisições seguem a estrutura JSON-RPC 2.0:

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

Uma resposta bem-sucedida inclui um campo result; em caso de falha, um objeto error é retornado:

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

ou

3. Fluxo de Autenticação

Solicitação (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/

Resposta Bem-sucedida

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}
CampoDireçãoTipoDescrição
APISolicitaçãolongVersão da API I2PControl solicitada pelo cliente. Use 1.
PasswordSolicitaçãoStringSenha usada para autenticar com o I2PControl.
APIRespostalongVersão principal da API implementada pelo servidor.
TokenRespostaStringToken de autenticação usado em solicitações subsequentes.

Você deve incluir esse Token em todas as solicitações subsequentes nos params.

4. Métodos e Endpoints

4.1 RouterInfo


Obtém telemetria chave sobre o 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/

Exemplo de Requisição

Enumeração de Código de Status (i2p.router.net.status)

ChaveTipoDescrição
i2p.router.statusStringStatus do roteador em formato livre e traduzido, destinado à exibição.
i2p.router.uptimelongTempo de atividade do roteador em milissegundos. Versões mais antigas do i2pd podem retornar uma string.
i2p.router.versionStringVersão completa do roteador.
i2p.router.net.statuslongCódigo de status da rede; veja a tabela abaixo.
i2p.router.net.bw.inbound.1sdoubleLargura de banda de entrada atual em bytes por segundo.
i2p.router.net.bw.inbound.15sdoubleMédia de largura de banda de entrada nos últimos 15 segundos em bytes por segundo.
i2p.router.net.bw.outbound.1sdoubleLargura de banda de saída atual em bytes por segundo.
i2p.router.net.bw.outbound.15sdoubleMédia de largura de banda de saída nos últimos 15 segundos em bytes por segundo.
i2p.router.net.tunnels.participatinglongNúmero de túneis nos quais este roteador está participando.

Enumeração de Código de Status (i2p.router.net.status)

CódigoSignificado
0OK
1TESTANDO
2BLOQUEADO POR FIREWALL
3OCULTO
4AVISO_BLOQUEADO_POR_FIREWALL_E_RÁPIDO
5AVISO_BLOQUEADO_POR_FIREWALL_E_FLOODFILL
6AVISO_BLOQUEADO_POR_FIREWALL_COM_TCP_DE_ENTRADA
7AVISO_BLOQUEADO_POR_FIREWALL_COM_UDP_DESATIVADO
8ERRO_I2CP
9ERRO_DESINCRONIA_DE_RELOGIO
10ERRO_ENDEREÇO_TCP_PRIVADO
11ERRO_NAT_SIMÉTRICO
12ERRO_PORTA_UDP_EM_USO
13ERRO_SEM_PARES_ATIVOS_VERIFIQUE_CONEXÃO_E_FIREWALL
14ERRO_UDP_DESATIVADO_E_TCP_NÃO_CONFIGURADO

Campos do NetDB e do Par

ChaveTipoDescrição
i2p.router.netdb.knownpeerslongNúmero de pares conhecidos, excluindo o roteador local.
i2p.router.netdb.activepeerslongNúmero de pares ativos.
i2p.router.netdb.fastpeerslongNúmero de pares classificados como rápidos.
i2p.router.netdb.highcapacitypeerslongNúmero de pares classificados como alta capacidade.
i2p.router.netdb.isreseedingbooleanIndica se um reseed está em andamento.
Campos de Resposta (result) De acordo com a documentação oficial (GetI2P): - i2p.router.status (String) — um status legível para humanos - i2p.router.uptime (long) — milissegundos (ou string para i2pd mais antigo) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — string de versão :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — largura de banda de entrada em B/s :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — largura de banda de saída em B/s :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — código de status numérico (ver enum abaixo) :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) — estatísticas de peers do netDB :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — se o reseed está ativo :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — total de peers conhecidos :contentReference[oaicite:8]{index=8}

4.2 GetRate


ParâmetroTipoDescrição
StatStringNome do RateStat do roteador.
PeriodlongPeríodo de taxa em milissegundos.
Usado para buscar métricas de taxa (por exemplo, largura de banda, sucesso do tunnel) ao longo de uma janela de tempo 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/

Exemplo de Solicitação

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

Resposta de Exemplo

4.3 RouterManager


ParâmetroResultadoDescrição
RestartnullInicia uma reinicialização imediata do roteador.
RestartGracefulnullReinicia após os túneis participantes expirarem.
ShutdownnullInicia uma desativação imediata do roteador.
ShutdownGracefulnullDesativa após os túneis participantes expirarem.
ReseednullInicia um reseed do roteador.
FindUpdatesboolean ou StringBloqueante. Procura por uma atualização assinada do roteador.
UpdateStringBloqueante. Inicia uma atualização assinada do roteador e retorna seu status final.
Executar ações 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
  }
}

Exemplo de Solicitação

4.4 NetworkSetting

Resposta de Sucesso


ChaveValor AceitoDescrição
i2p.router.net.ntcp.portString, 1–65535Porta NTCP; uma alteração exige reinicialização.
i2p.router.net.ntcp.hostnameStringNome de host NTCP; uma alteração exige reinicialização.
i2p.router.net.ntcp.autoipalways, true ou falseSeleção automática de endereço NTCP.
i2p.router.net.ssu.portString, 1–65535Porta SSU; uma alteração exige reinicialização.
i2p.router.net.ssu.hostnameStringNome de host externo SSU; uma alteração exige reinicialização.
i2p.router.net.ssu.autoipssu, local,ssu, upnp,ssu ou local,upnp,ssuFontes de descoberta de endereço SSU.
i2p.router.net.ssu.detectedipnullEndereço SSU detectado (somente leitura).
i2p.router.net.upnpStringConfiguração UPnP.
i2p.router.net.bw.shareString, 0–100Porcentagem de largura de banda disponível para túneis participantes.
i2p.router.net.bw.inString de inteiro não negativoLimite de largura de banda de entrada em KiB/s.
i2p.router.net.bw.outString de inteiro não negativoLimite de largura de banda de saída em KiB/s.
i2p.router.net.laptopmodeStringConfiguração de modo laptop.
Obter ou definir parâmetros de configuração da rede (portas, upnp, compartilhamento de largura de banda, 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/

Exemplo de Requisição (obter valores atuais)

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

Resposta de Exemplo

Nota: versões do i2pd anteriores à 2.41 podem retornar tipos numéricos em vez de strings — os clientes devem lidar com ambos. :contentReference[oaicite:11]{index=11}

4.5 Configurações Avançadas


ParâmetroTipoDescrição
getStringRetorna uma configuração dentro de um objeto resultado get.
getAlln/aRetorna o mapa completo de configurações dentro de getAll.
setMap<String, String>Atualiza as configurações fornecidas sem remover outras chaves.
setAllMap<String, String>Destrutivo: substitui todas as configurações e remove chaves não fornecidas.
Permite manipular parâmetros internos do router.

Exemplo de Solicitação

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/

Exemplo de Resposta

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

Códigos de Erro Padrão JSON-RPC2


ParâmetroTipoDescrição
EchoStringValor retornado 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 Erro Específicos do I2PControl

Gerencia o próprio I2PControl. O manipulador Java atual suporta alterações de senha.

ParâmetroTipoDescrição
i2pcontrol.passwordStringDefine uma nova senha I2PControl e revoga tokens de autenticação existentes.
O resultado contém SettingsSaved. Se a senha foi alterada, o resultado também contém "i2pcontrol.password": null. As configurações de endereço e porta de escuta do plugin autônomo legado não estão ativas no manipulador Java atual.

Senha padrão: itoopie — esta é a senha padrão de fábrica e deve ser alterada imediatamente por segurança.

5. Códigos de Erro

Códigos de Erro Padrão JSON-RPC2

CódigoSignificado
-32700Erro de análise JSON
-32600Solicitação inválida
-32601Método não encontrado
-32602Parâmetros inválidos
-32603Erro interno

Códigos de erro específicos do I2PControl

CódigoSignificado
-32001Senha inválida fornecida
-32002Nenhum token de autenticação apresentado
-32003O token de autenticação não existe
-32004O token de autenticação fornecido expirou e será removido
-32005A versão da API I2PControl usada não foi especificada, mas é obrigatória
-32006A versão da API I2PControl especificada não é suportada pelo I2PControl

Senha padrão: itoopie — esta é a senha padrão de fábrica e deve ser alterada imediatamente por segurança.

6. Uso e Melhores Práticas

  • Sempre inclua o parâmetro Token (exceto ao autenticar).
  • Altere a senha padrão (itoopie) no primeiro uso.
  • Para Java I2P, certifique-se de que o webapp I2PControl esteja habilitado via WebApps.
  • Esteja preparado para pequenas variações: alguns campos podem ser números ou strings, dependendo da versão do I2P.
  • Quebre strings de status longas para uma saída amigável à exibição.

Senha padrão: itoopie — esta é a senha padrão de fábrica e deve ser alterada imediatamente por segurança.