# User RPC Reference: pcdn
- pcdn overall
- ReloadConfig
- SetSession
- pcdn daemon
- pcdn download
- pcdn seed
- pcdn net
- pcdn wallet
- pcdn tool
# pcdn 全局描述
描述
pcdn 节点是 ppio 存储分发网络的 peer 端,随着启动命令可以加载不同的服务,比如,下载(download),做种(seed),点播服务(vod)等
"pcdn daemon start" 会启动一个 pcdn 用户节点
除了 "daemon start", "init", "help", "version" ,其他命令或者子命令都是通过RPC调用,访问或者控制该用户节点,故除非特别说明,它们都有相同的选项 rpchost 和 rpcport
"pcdn daemon start" 也有选项 "rpchost 和 rpcport",是用来临时覆盖默认配置文件中的RPC服务监听地址和端口
对于需要改变状态的操作,ppio账户钱包里必须要有一些token才能进行
启动 pcdn 节点之前,需要启动配套的服务结点,比如 tracker, mapping, coinpool
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 默认 | 描述 |
|---|---|---|
| rpchost | 127.0.0.1 | RPC 服务地址 |
| rpcport | 18060 | RPC 端口 |
| session | "" | 设置session |
返回
暂无错误码
例子
# 1. 启动用户节点,监听18061端口
> pcdn start --rpcport=18061
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}
# 2. 对已经启动的 pcdn 节点,进行一个RCP调用,连接18060端口
> pcdn config --rpcport=18060
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}
# 3.
> pcdn config show --rpcport=18060
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}
# 4.
> pcdn config show --rpcport=18060 --session 'I am session'
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"Succeed: 303000"}
# ReloadConfig
描述
重载服务器配置 并非所有重载都会对当前服务生效,目前只验证了MaxDownload(最大同时下载数),计划支持maxdownloadconn(最大下载连接数), maxuploadloadconn(最大上传连接数), maxUpload(最大同时上传数)
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":"[config string]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 类型 | 默认 | 描述 | 示例 |
|---|---|---|---|---|
| config | string | 无 | json形式的配置字符串 | {"Download":{"MaxDownloadConn": 30}} |
| save | bool | false | 是否保存重载后的配置 | true |
返回
暂无错误码,成功返回 {"id":1,"jsonrpc":"2.0","result":null} 错误返回{"error":{"code":-1,"message":error string},"id":1,"jsonrpc":"2.0"}
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":["{\"Download\":{\"MaxDownloadConn\": 100}}",false]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":null}
# 2.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ReloadConfig","params":["{\"Download\":{\"MaxDownloadCdfdonn\": 100},}",false]}' http://127.0.0.1:18060/rpc
{"error":{"code":-1,"message":"invalid character '}' looking for beginning of object key string"},"id":1,"jsonrpc":"2.0"}
# SetSession
描述
设置session,目前只针对cpool
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SetSession","params":"[session]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
| session | string | 无 | session |
返回
暂无错误码,成功返回 {"id":1,"jsonrpc":"2.0","result":null}
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SetSession","params":["hello"]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":null}
# daemon
描述
管理用户节点服务
用法
| 方法 | 描述 |
|---|---|
StopDaemon | 关闭节点服务 |
ReloadConfig | 重载配置 |
SetSession | 设置session |
# StopDaemon
描述
关闭节点服务
pcdn daemon stop 和 pcdn stop 是相同的命令
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"StopDaemon"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 默认 | 描述 |
|---|---|---|
| datadir | 用户主目录下的.ppio子目录 | 用户节点的数据目录 |
| config | 数据目录下的ppio.conf文件 | 指定配置文件 |
返回
暂无返回值
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"StopDaemon","params":null}' http://127.0.0.1:18060/rpc
# download
描述
下载服务
用法
| 方法 | 描述 |
|---|---|
DownloadFile | 添加下载任务 |
PauseTask | 暂停下载任务 |
ResumeTask | 恢复暂停的下载任务 |
DeleteTask | 删除下载任务 |
GetTaskStatus | 查询任务状态 |
ListTasks | 列出所有下载任务 |
# DownloadFile
描述
新建新的下载任务,如果任务创建成功,则返回该任务的 task-id。
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 类型 | 默认 | 描述 | 示例 |
|---|---|---|---|---|
| url | string | 无 | 指定下载 URL | "https://www.sina.com.cn/index.html" |
| rid | string | 无 | 指定下载rid | "cvqwlmreojgorkf" |
| file | string | 无 | 指定下载文件保存路径 | "/home/user/download/test.txt" |
| seeds | list | 无 | 指定连接peer地址列表 | ["127.0.0.1:1080", "127.0.0.1:1081"] |
| http head | list | 无 | http首部列表 | ["date: Sun, 02 Jun 2019 14:29:56 GMT", "expires: Sun, 02 Jun 2019 14:29:56 GMT"] |
| cookie | string | 无 | http cookie | "expires=Sat, 31-Aug-2019 14:29:56 GMT; path=/; " |
返回 暂无错误码 成功返回{"id":1,"jsonrpc":"2.0","result":taskID} 错误返回{"error":{"code":-1,"message":error string},"id":1,"jsonrpc":"2.0"}
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":["https://dldir1.qq.com/qqfile/qq/PCQQ9.1.2/25096/QQ9.1.2.25096.exe","","/home/yates/go/src/github.com/PPIO/go-ppio/test6",null,"",""]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"23a897eb540a4109a5480b1c81d2a86d"}
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DownloadFile","params":["https://dldir1.qq.com/qqfile/qq/PCQQ9.1.2/25096/QQ9.1.2.25096.exe","","/home/yates/go/src/github.com/PPIO/go-ppio/test6",null,"",""]}' http://127.0.0.1:18060/rpc
{"error":{"code":-1,"message":"file already exists"},"id":1,"jsonrpc":"2.0"}
# PauseTask
描述
暂停下载任务
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"PauseTask","params":taskid}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回 暂无错误码
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"PauseTask","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc
成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}
# ResumeTask
描述
恢复暂停的下载任务
用法
>curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ResumeTask","params":[taskid]}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
暂无错误码
例子
# 1.
> ./pcdn download resume 98b41d2193d54abca21a739e96d51cc6
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ResumeTask","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc
成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}
# DeleteTask
描述
删除下载任务
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":"[taskid,remove]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
| remove | 是否删除文件 |
返回
暂无错误码
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":["ab0673f25c9a4da08c6c102f60cd457e", false]}' http://127.0.0.1:18060/rpc
成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"DeleteTask","params":["0350533b3cf84c39934b731732a7ca6a",true]}' http://127.0.0.1:18060/rpc
成功:{"id":1,"jsonrpc":"2.0","result":null}
失败:{"error":{"code":-1,"message":"308105: task not found"},"id":1,"jsonrpc":"2.0"}
# GetTaskStatus
描述
查询下载任务状态
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetTaskStatus","params":"[taskid]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
暂无错误码
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetTaskStatus","params":["ab0673f25c9a4da08c6c102f60cd457e"]}' http://127.0.0.1:18060/rpc
成功:{"id":1,"jsonrpc":"2.0","result":"{"Status":1,"FileSize":80674680,"Progress":0,"DownloadSize":28246016,"UploadSize":0,"HTTPDownloadSize":28246016,"P2PDownloadSize":0,"DownloadSpeed":717619,"AverageDownloadSpeed":760628,"UploadSpeed":0,"AverageUploadSpeed":0,"TrackerStatus":1,"LastMapingSucc":0,"LastMapingFail":3839258293,"PeerCount":0,"ConnectionCount":0,"Error":""}"}
成功:{"id":1,"jsonrpc":"2.0","result":{"Status":5,"FileSize":0,"Path":"/home/yates/go/src/github.com/PPIO/go-ppio/asedsd","Progress":0,"DownloadSize":0,"UploadSize":0,"HTTPDownloadSize":0,"P2PDownloadSize":0,"DownloadSpeed":0,"AverageDownloadSpeed":1,"UploadSpeed":0,"AverageUploadSpeed":0,"RemainTime":0,"TrackerStatus":0,"LastMapingSucc":0,"LastMapingFail":0,"PeerCount":0,"ConnectionCount":0,"Error":"201 , timeout, too long no data download\n"}}
失败: {"error":{"code":-1,"message":"task not found"},"id":1,"jsonrpc":"2.0"}
status: 1 初始状态,2 运行中, 3 停止, 4 完成, 5 错误
# ListTasks
描述
列出所有下载任务
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListTasks","params":"[taskStatus, taskType]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
| status | int | 任务状态 | 0 |
| type | int | 任务类型 | 1 |
status:0 init, 1 running, 2 stop, 3 finish, 4 error, 5 all
0 all, 1 init, 2 running, 3 stop, 4 finish, 5 error
type:0 download task, 1 all
0 all, 1 download task
返回
暂无错误码
例子
> ./pcdn download list
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListTasks","params":[5, 0]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"{"ID":"23a897eb540a4109a5480b1c81d2a86d","Name":"index.html","Speed":0,"Percent":95.696465}"}
{"id":1,"jsonrpc":"2.0","result":[{"ID":"0350533b3cf84c39934b731732a7ca6a","Name":"asedsd","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0},{"ID":"c015ea1105d04510b8f52c7c52f7249c","Name":"ased","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0},{"ID":"","Name":"","Speed":0,"Percent":0,"HTTPSize":0,"P2PSize":0,"ConnectCount":0}]}
# seed
描述
做种服务
用法
| 方法 | 描述 |
|---|---|
SeedFile | 做种 |
QuerySeed | 查询rid |
ListSeeds | 列出所有做种成功的文件 |
CancelSeedFile | 停止分享文件 |
# SeedFile
描述
做种,返回任务ID
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SeedFile","params":"[filepath]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| file | 文件 |
返回
暂无错误码
例子
# 1. 做种一个文件
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"SeedFile","params":["Makefile"]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"4e848b08ba4443e2b6df958a5216f2e4"}
# QuerySeed
描述
查询rid
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QuerySeed","params":"[seed-id]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| taskid | 任务ID |
返回
暂无错误码
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QuerySeed","params":["4e848b08ba4443e2b6df958a5216f2e4"]}' http://127.0.0.1:18060/rpc
未完成: {"id":1,"jsonrpc":"2.0","result":""}
成功: {"id":1,"jsonrpc":"2.0","result":"sheN5h7aE5HmSS8H4zQeVinkWUjWACGi1mn1dVy3zT4oWwaLNLjkctSPdXNGVD"}
错误: {"error":{"code":-1,"message":"alread has the same rid bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE"},"id":1,"jsonrpc":"2.0"}
# ListSeeds
描述
列出所有做种成功的文件
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListSeeds"}' http://127.0.0.1:18060/rpc
返回
暂无错误码
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"ListSeeds"}' http://127.0.0.1:18060/rpc
~~{
"id": 1,
"jsonrpc": "2.0",
"result": "[{\"err\":\"0 , stat /home/yates/go/src/github.com/PPIO/go-ppio/Makefile1: no such file or directory\\n\",\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile1\",\"id\":\"6f3ee081dd094700852d9587f3e1f87b\",\"status\":2},{\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile\",\"id\":\"148b4907280b4da6a52f18d2381419dd\",\"rid\":\"bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE\",\"status\":1},{\"err\":\"0 , alread has the same rid bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE\\n\",\"file\":\"/home/yates/go/src/github.com/PPIO/go-ppio/Makefile\",\"id\":\"dbd880d5b24043ff8282e4d7a2804524\",\"status\":2}]"
}~~
{"id":1,"jsonrpc":"2.0","result":[{"ID":"41097b074cef4b26a4d25e63e5acd53f","RID":"CVEuLabrkdHhHf1ub4FRVAUwdUMAxk8iMALWZrfRcFGPxDqtYqBa99oHCtjs1","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":1,"Error":""},{"ID":"a8761de0664e4a10a76b44db06bc31f8","RID":"","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":2,"Error":""},{"ID":"aa45106ad47c423b903c13eb224000bd","RID":"CVEuLabrkdCFfpSyYwiuCvg56htrJQiP1tuSYFhGNyMmFPHDULzao4Y7fCxV7","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test100M","Status":1,"Error":""},{"ID":"3fdf15b8000a4d4796d0eb268410ca63","RID":"","Path":"/home/yates/go/src/github.com/PPIO/go-ppio/test200M","Status":0,"Error":""}]}
status: 0 正在做种; 1 做种成功; 2 错误
# CancelSeedFile
描述
停止分享文件
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"CancelSeedFile","params":"[rid]"}' http://127.0.0.1:18060/rpc
参数
| 参数 | 描述 |
|---|---|
| seed id | seed rid |
返回
暂无错误吗
例子
# 1.
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"CancelSeedFile","params":["6f3ee081dd094700852d9587f3e1f87b"]}' http://127.0.0.1:18060/rpc
成功: {"id":1,"jsonrpc":"2.0","result":null}
错误: {"error":{"code":-1,"message":"no resource rid:"},"id":1,"jsonrpc":"2.0"}
#
描述
管理用户网络
用法
| 方法 | 描述 |
|---|---|
| `` | 查看通信 id |
| `` | 查看 indexer 和 verifier 服务器 |
#
描述
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
例子
# 1. 查看通信 id
> ppio net id
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"002508021221036e583cb64b75cb6fd7d8ea6f8f952c65813177fa4d69f05a881b57963a4538b5"}
#
描述
查看 indexer 和 verifier 服务器
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ppio net servers
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"Indexers count: 1 \n0: indexer 127.0.0.1:8030:8030 \nVerifiers count: 1 \n0: verifier 127.0.0.1:8040:8040 \n"}
#
描述
管理用户的钱包
用法
| 方法 | 描述 |
|---|---|
| `` | 导出钱包私钥 |
| `` | 导出钱包账户地址 |
#
描述
导出钱包私钥,64个十六进制字符串。
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
例子
# 1. 导入钱包私钥
> ppio wallet key
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"AAAABBBBCCCCDDDD..."}
#
描述
导出钱包账户地址,以ppio开头的base58字符串。
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":"[param1, param2, ...]"}' http://127.0.0.1:18060/rpc
例子
# 1. 导出钱包账户地址
> ppio wallet account
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"","params":null}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"ppioBBBBCCCCDDDD..."}
# tool
描述
pcdn辅助工具
用法
| 方法 | 描述 |
|---|---|
| `` | 查看peer信息 |
| `` | 查询中心化服务器信息 |
| `` | 查询指定任务的peer连接信息(暂时只支持download) |
| `` | 向tracker查询peer |
| `` | 向mapping查询rid(暂时不可用) |
| `` | 查询NAT type |
# peerInfo
描述
查看peer信息
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetInfo"}' http://127.0.0.1:18060/rpc
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetInfo"}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":{"ExternalAddress":{"UDPPort":8060,"TCPPort":8060},"PeerID":"002508021221037b5fcb2f1a9cfbb76232ee20a84dce4a03f070828875f22a31ba53d37f2ef84a","Type":1,"IPList":["192.168.136.129","172.17.0.1","172.18.0.1"],"InternalPorts":{"UDPPort":8060,"TCPPort":8060},"ProtocolVersion":1}}
# servers
描述
查询中心化服务器信息
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetServices"}' http://127.0.0.1:18060/rpc
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NetServices"}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":[{"Name":"Tracker","Addr":"192.168.50.229:9091","Status":"good"},{"Name":"Mapping","Addr":"192.168.50.229:9094","Status":"good"}]}
or
{"id":1,"jsonrpc":"2.0","result":[{"Name":"Tracker","Addr":"localhost:9091","Status":"invalid response from tracker"},{"Name":"Mapping","Addr":"localhost:9094","Status":"rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial tcp 127.0.0.1:9094: connect: connection refused\""}]}
# peers
描述
查询指定任务的peer连接信息(暂时只支持download)
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetConnect","params":[taskID]}' http://127.0.0.1:18060/rpc
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"GetConnect","params":["c3ec7b94e23a4b68a3e3a6c5d8654b08"]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":[null,{"ExternalAddress":{"IP":"192.168.136.129","UDPPort":8061,"TCPPort":8061},"PeerID":"0025080212210298508a4218f1fbd912996402c21d812819aa257c61547350eef34ad57d0dbc60"}]}
# queryPeers
描述
向tracker查询peer
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QueryPeers","params":[RID]}' http://127.0.0.1:18060/rpc
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"QueryPeers","params":["sheN5h7aE58ggVDxc2hCN6zxUhWqiv9e1WheKW1ds29fg95mtTXR5Leh7pmH8Y"]}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":[{"ExternalAddress":{"IP":"101.94.136.189","UDPPort":8060,"TCPPort":8060},"StunAddress":{"IP":"182.117.235.58","Port":8060},"PeerID":"","IPList":["10.230.8.157","192.168.1.105"],"InternalPorts":{"UDPPort":8060,"TCPPort":8060},"ProtocolVersion":1}]}
# NATState
描述
查询NAT type
用法
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NATState"}' http://127.0.0.1:18060/rpc
例子
> curl -X POST -H 'content-type:text/json;' --data '{"id":1,"jsonrpc":"2.0","method":"NATState"}' http://127.0.0.1:18060/rpc
{"id":1,"jsonrpc":"2.0","result":"{\n \"IsNATCheckFinished\": true,\n \"NATType\": \"symmetric\"\n}"}
or
{"id":1,"jsonrpc":"2.0","result":"{\n \"IsNATCheckFinished\": false\n}"}