Bản dịch này được tạo bằng máy học và có thể không chính xác 100%. Xem phiên bản tiếng Anh

I2PControl JSON-RPC

API quản lý router từ xa thông qua webapp I2PControl

Tài liệu API I2PControl

————-kiểm tra thêm nội dung————--

I2PControl là một API JSON-RPC 2.0 được tích hợp sẵn với I2P router (từ phiên bản 0.9.39). Nó cho phép giám sát và điều khiển router đã được xác thực thông qua các yêu cầu JSON có cấu trúc.

Mật khẩu mặc định: itoopie — đây là mật khẩu gốc từ nhà máy và nên được thay đổi ngay lập tức để đảm bảo bảo mật.

1. Tổng quan & Truy cập

ImplementationDefault EndpointProtocolEnabled by DefaultNotes
Java I2P (2.10.0+)http://127.0.0.1:7657/jsonrpc/HTTP❌ Phải bật thông qua WebApps (Router Console)Ứng dụng web tích hợp
i2pd (C++ implementation)https://127.0.0.1:7650/HTTPS✅ Được bật theo mặc địnhHành vi plugin cũ

Trong trường hợp Java I2P, bạn phải vào Router Console → WebApps → I2PControl và bật nó (đặt khởi động tự động). Khi đã hoạt động, tất cả các phương thức đều yêu cầu bạn phải xác thực trước và nhận token phiên.

2. Định dạng JSON-RPC


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

Tất cả các yêu cầu đều tuân theo cấu trúc JSON-RPC 2.0:

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

Một phản hồi thành công bao gồm trường result; khi thất bại, một đối tượng error sẽ được trả về:

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

hoặc

3. Luồng Xác thực

Yêu cầu (Xác thực)

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/

Phản hồi thành công

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "Token": "a1b2c3d4e5",
    "API": 1
  }
}
TrườngHướngKiểuMô tả
APIYêu cầulongPhiên bản API I2PControl mà client yêu cầu. Sử dụng 1.
PasswordYêu cầuStringMật khẩu dùng để xác thực với I2PControl.
APIPhản hồilongPhiên bản API chính được triển khai bởi server.
TokenPhản hồiStringMã xác thực dùng cho các yêu cầu tiếp theo.

Bạn phải bao gồm Token đó trong tất cả các yêu cầu tiếp theo trong params.

4. Phương thức & Điểm cuối

4.1 RouterInfo


Lấy dữ liệu telemetry chính về 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/

Ví dụ Yêu cầu

Enum Mã Trạng Thái (i2p.router.net.status)

KeyTypeMô tả
i2p.router.statusStringTrạng thái router dưới dạng văn bản tự do, đã được dịch để hiển thị.
i2p.router.uptimelongThời gian hoạt động của router tính bằng mili giây. Một số phiên bản i2pd cũ hơn có thể trả về chuỗi ký tự.
i2p.router.versionStringPhiên bản đầy đủ của router.
i2p.router.net.statuslongMã trạng thái mạng; xem bảng dưới đây.
i2p.router.net.bw.inbound.1sdoubleBăng thông đầu vào hiện tại tính bằng byte mỗi giây.
i2p.router.net.bw.inbound.15sdoubleBăng thông trung bình đầu vào trong 15 giây tính bằng byte mỗi giây.
i2p.router.net.bw.outbound.1sdoubleBăng thông đầu ra hiện tại tính bằng byte mỗi giây.
i2p.router.net.bw.outbound.15sdoubleBăng thông trung bình đầu ra trong 15 giây tính bằng byte mỗi giây.
i2p.router.net.tunnels.participatinglongSố lượng tunnel mà router này đang tham gia.

Liệt kê mã trạng thái (i2p.router.net.status)

CodeÝ nghĩa
0Thành công
1ĐANG KIỂM TRA
2BỊ CHẶN BỞI TƯỜNG LỬA
3ẨN
4CẢNH BÁO: BỊ CHẶN BỞI TƯỜNG LỬA VÀ KẾT NỐI NHANH
5CẢNH BÁO: BỊ CHẶN BỞI TƯỜNG LỬA VÀ LÀ MÁY FLOODFILL
6CẢNH BÁO: BỊ CHẶN BỞI TƯỜNG LỬA NHƯNG CÓ TCP ĐẦU VÀO
7CẢNH BÁO: BỊ CHẶN BỞI TƯỜNG LỬA VÀ UDP BỊ TẮT
8LỖI I2CP
9LỖI ĐỒNG HỒ LỆCH THỜI GIAN
10LỖI ĐỊA CHỈ TCP RIÊNG TƯ
11LỖI NAT ĐỐI XỨNG
12LỖI CỔNG UDP ĐÃ ĐƯỢC SỬ DỤNG
13LỖI: KHÔNG CÓ PEER NÀO HOẠT ĐỘNG, KIỂM TRA KẾT NỐI VÀ TƯỜNG LỬA
14LỖI: UDP BỊ TẮT VÀ TCP CHƯA ĐƯỢC THIẾT LẬP

Cơ sở dữ liệu mạng và các trường ngang hàng

KeyTypeMô tả
i2p.router.netdb.knownpeerslongSố lượng peer đã biết, không bao gồm router cục bộ.
i2p.router.netdb.activepeerslongSố lượng peer đang hoạt động.
i2p.router.netdb.fastpeerslongSố lượng peer được phân loại là nhanh.
i2p.router.netdb.highcapacitypeerslongSố lượng peer được phân loại là có sức chứa cao.
i2p.router.netdb.isreseedingbooleanCho biết liệu việc reseed có đang được thực hiện hay không.
Các Trường Phản Hồi (result) Theo tài liệu chính thức (GetI2P): - i2p.router.status (String) — trạng thái có thể đọc được - i2p.router.uptime (long) — mili giây (hoặc chuỗi cho i2pd cũ hơn) :contentReference[oaicite:0]{index=0} - i2p.router.version (String) — chuỗi phiên bản :contentReference[oaicite:1]{index=1} - i2p.router.net.bw.inbound.1s, i2p.router.net.bw.inbound.15s (double) — băng thông đến theo B/s :contentReference[oaicite:2]{index=2} - i2p.router.net.bw.outbound.1s, i2p.router.net.bw.outbound.15s (double) — băng thông đi theo B/s :contentReference[oaicite:3]{index=3} - i2p.router.net.status (long) — mã trạng thái số (xem enum bên dưới) :contentReference[oaicite:4]{index=4} - i2p.router.net.tunnels.participating (long) — số lượng tunnel tham gia :contentReference[oaicite:5]{index=5} - i2p.router.netdb.activepeers, fastpeers, highcapacitypeers (long) — thống kê peer của netDB :contentReference[oaicite:6]{index=6} - i2p.router.netdb.isreseeding (boolean) — có đang thực hiện reseed hay không :contentReference[oaicite:7]{index=7} - i2p.router.netdb.knownpeers (long) — tổng số peer đã biết :contentReference[oaicite:8]{index=8}

4.2 GetRate


Tham sốKiểuMô tả
StatChuỗiTên RateStat của bộ định tuyến.
PerioddàiChu kỳ tính theo mili giây.
Được sử dụng để lấy các chỉ số tốc độ (ví dụ: băng thông, tỷ lệ thành công tunnel) trong một khoảng thời gian nhất định.
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/

Ví dụ Yêu cầu

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

Phản hồi mẫu

4.3 RouterManager


Tham sốKết quảMô tả
RestartnullKhởi động lại bộ định tuyến ngay lập tức.
RestartGracefulnullKhởi động lại sau khi các tunnel tham gia hết hạn.
ShutdownnullTắt bộ định tuyến ngay lập tức.
ShutdownGracefulnullTắt sau khi các tunnel tham gia hết hạn.
ReseednullBắt đầu quá trình reseed cho bộ định tuyến.
FindUpdatesboolean hoặc StringChặn. Tìm kiếm bản cập nhật bộ định tuyến đã ký.
UpdateStringChặn. Bắt đầu cập nhật bộ định tuyến đã ký và trả về trạng thái cuối.
Thực hiện các hành động quản trị.
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/

Các tham số / phương thức được phép - Restart, RestartGraceful - Shutdown, ShutdownGraceful - Reseed, FindUpdates, Update :contentReference[oaicite:10]{index=10}

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

Ví dụ Request

4.4 NetworkSetting

Phản hồi thành công


Chìa khóaGiá trị được chấp nhậnMô tả
i2p.router.net.ntcp.portChuỗi, 1–65535Cổng NTCP; thay đổi yêu cầu khởi động lại.
i2p.router.net.ntcp.hostnameChuỗiTên máy chủ NTCP; thay đổi yêu cầu khởi động lại.
i2p.router.net.ntcp.autoipalways, true, hoặc falseTự động chọn địa chỉ cho NTCP.
i2p.router.net.ssu.portChuỗi, 1–65535Cổng SSU; thay đổi yêu cầu khởi động lại.
i2p.router.net.ssu.hostnameChuỗiTên máy chủ ngoài SSU; thay đổi yêu cầu khởi động lại.
i2p.router.net.ssu.autoipssu, local,ssu, upnp,ssu, hoặc local,upnp,ssuCác nguồn phát hiện địa chỉ cho SSU.
i2p.router.net.ssu.detectedipnullĐịa chỉ SSU được phát hiện (chỉ đọc).
i2p.router.net.upnpChuỗiThiết lập UPnP.
i2p.router.net.bw.shareChuỗi, 0–100Phần trăm băng thông dùng cho các tunnel tham gia.
i2p.router.net.bw.inChuỗi số nguyên không âmGiới hạn băng thông vào tính theo KiB/s.
i2p.router.net.bw.outChuỗi số nguyên không âmGiới hạn băng thông ra tính theo KiB/s.
i2p.router.net.laptopmodeChuỗiThiết lập chế độ máy tính xách tay.
Lấy hoặc thiết lập các tham số cấu hình mạng (cổng, upnp, chia sẻ băng thông, v.v.)
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/

Ví dụ Request (lấy giá trị hiện tại)

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

Phản Hồi Mẫu

Lưu ý: các phiên bản i2pd trước 2.41 có thể trả về các kiểu số thay vì chuỗi — client nên xử lý cả hai. :contentReference[oaicite:11]{index=11}

4.5 Cài đặt Nâng cao


Tham sốKiểuMô tả
getChuỗiTrả về một thiết lập bên trong đối tượng kết quả get.
getAllkhông áp dụngTrả về toàn bộ bản đồ cấu hình bên trong getAll.
setBản đồ<String, String>Cập nhật các thiết lập được cung cấp mà không xóa các khóa khác.
setAllBản đồ<String, String>Có tính phá hủy: thay thế tất cả các thiết lập và xóa các khóa không được cung cấp.
Cho phép thao tác các tham số bên trong router.

Ví dụ Yêu cầu

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/

Ví dụ Phản hồi

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

Mã Lỗi Chuẩn JSON-RPC2


Tham sốKiểuMô tả
EchoChuỗiGiá trị được trả về như Result.
{
  "jsonrpc": "2.0",
  "id": "7",
  "method": "Echo",
  "params": {
    "Token": "a1b2c3d4e5",
    "Echo": "hello"
  }
}
{
  "jsonrpc": "2.0",
  "id": "7",
  "result": {
    "Result": "hello"
  }
}

Mã Lỗi Cụ Thể của I2PControl

Quản lý chính I2PControl. Trình xử lý Java hiện tại hỗ trợ thay đổi mật khẩu.

Tham sốKiểuMô tả
i2pcontrol.passwordChuỗiĐặt mật khẩu I2PControl mới và hủy các mã xác thực hiện tại.
Kết quả chứa SettingsSaved. Nếu mật khẩu đã được thay đổi, kết quả cũng chứa "i2pcontrol.password": null. Các cài đặt địa chỉ và cổng lắng nghe từ plugin độc lập cũ không còn hiệu lực trong bộ xử lý Java hiện tại.

Mật khẩu mặc định: itoopie — đây là mật khẩu gốc từ nhà máy và nên được thay đổi ngay lập tức để đảm bảo bảo mật.

5. Mã Lỗi

Mã lỗi JSON-RPC2 tiêu chuẩn

CodeÝ nghĩa
-32700Lỗi phân tích JSON
-32600Yêu cầu không hợp lệ
-32601Không tìm thấy phương thức
-32602Tham số không hợp lệ
-32603Lỗi nội bộ

Mã lỗi riêng của I2PControl

Mã lỗiÝ nghĩa
-32001Mật khẩu cung cấp không hợp lệ
-32002Không có token xác thực được cung cấp
-32003Token xác thực không tồn tại
-32004Token xác thực cung cấp đã hết hạn và sẽ bị xóa
-32005Phiên bản API I2PControl được dùng chưa được chỉ định, nhưng bắt buộc phải chỉ định
-32006Phiên bản API I2PControl được chỉ định không được I2PControl hỗ trợ

Mật khẩu mặc định: itoopie — đây là mật khẩu gốc từ nhà máy và nên được thay đổi ngay lập tức để đảm bảo bảo mật.

6. Sử dụng & Các phương pháp tốt nhất

  • Luôn bao gồm tham số Token (trừ khi đang xác thực).
  • Thay đổi mật khẩu mặc định (itoopie) khi sử dụng lần đầu.
  • Đối với Java I2P, đảm bảo webapp I2PControl được kích hoạt qua WebApps.
  • Chuẩn bị cho những biến đổi nhỏ: một số trường có thể là số hoặc chuỗi, tùy thuộc vào phiên bản I2P.
  • Ngắt dòng các chuỗi trạng thái dài để hiển thị thân thiện hơn.

Mật khẩu mặc định: itoopie — đây là mật khẩu gốc từ nhà máy và nên được thay đổi ngay lập tức để đảm bảo bảo mật.

Was this page helpful?