# User CLI Reference: pcdn
- pcdn overall
- pcdn reload
- pcdn session
- 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
用法
pcdn overall
[--rpchost=<rpchost>]
[--rpcport=<rpcport>]
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --rpchost | 127.0.0.1 | RPC 服务地址 |
| --rpcport | 18060 | RPC 端口 |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
| 303002 | Illegal option | 选项错误 |
| 303003 | Object not Found | 找不到对象 |
| 303004 | Timeout | 超时 |
| 303005 | Illegal argument | 超时 |
例子
# 1. 启动用户节点,监听18061端口
> pcdn start --rpcport=18061
"Succeed: 303000"
# 2. 对已经启动的 pcdn 节点,进行一个RCP调用,连接18060端口
> pcdn config --rpcport=18060
"Succeed: 303000"
# 3.
> pcdn config show --rpcport=18060
"Succeed: 303000"
# pcdn reload
描述
重载配置
用法
pcdn reload config string
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --save | 无 | 保存重载的配置项到文件 |
参数
json形式的配置项,同配置文件
返回
暂无错误码
例子
# 1.
> pcdn reload '{"Download":{"MaxDownloadConn": 100}}'
reload succeed
# 2.
> pcdn reload '{"Download":{"MaxDownloadConn": 100}}' -save
reload succeed
# pcdn session
描述
设置session
pcdn session
用法
pcdn session session string
参数
session
返回
暂无错误码
例子
# 1.
> pcdn session hello
Set session ok
# pcdn daemon
描述
管理用户节点服务
用法
| 子命令 | 描述 |
|---|---|
pcdn daemon start | 启动 pcdn 节点 |
pcdn daemon stop | 关闭节点服务 |
# pcdn daemon start
描述
启动 pcdn 用户节点服务,和其他节点间建立连接并进行通信,同时暴露相应端口以提供 RPC 服务同时会生成配置文件
只有此命令启动服务节点,其他命令都是通过RPC和该服务节点通信完成任务,(start, version 和 help 除外)
命令行中的选项配置会覆盖配置文件中的配置。
pcdn daemon start 和 pcdn start 是相同的命令
指定 wallet-key 选项时,如果当前存在私钥或者 datadir 中存在和此私钥相关的内容,私钥和内容会被替换。
如果未指定 wallet-key 选项,会使用 datadir/wallet/ 目录下的私钥,如果该私钥不存在,则会自动创建一个。
[test]: debug 选项为开的时候,每次自动生成的私钥依据当前TCP端口,debug 选项为关的时候,每次自动生成的私钥都不一样。
用法
pcdn daemon start
[--datadir=<datadir>]
[--config=<config>]
[--wallet-key=<wallet-key>]
[--download=<download>]
[--seed=<seed>]
[--vod=<vod>]
[--session=<session>]
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --datadir | 用户主目录下的.ppio子目录 | 用户节点的数据目录 |
| --config | 数据目录下的ppio.conf文件 | 指定配置文件 |
| --wallet-key | 无 | 指定用户的钱包私钥。64个十六进制字符 |
| --download | 无 | 打开 download 服务模块 |
| --seed | 无 | 打开 seed 服务模块 |
| --vod | 无 | 打开 vod 服务模块 |
| --session | 无 | 设置session |
例子
# 1.
> ppio daemon start
"#daemon 启动信息"
# 2.
> ppio daemon start --download --seed --vod
"#daemon 启动信息"
# 3.
> ppio daemon start --wallet-key=01234567...
"#daemon 启动信息"
# 3.
> ppio daemon start --wallet-key=01234567... --session="I'm session"
"#daemon 启动信息"
# pcdn daemon stop
描述
关闭节点服务
pcdn daemon stop 和 pcdn stop 是相同的命令
用法
pcdn daemon stop
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --datadir | 用户主目录下的.ppio子目录 | 用户节点的数据目录 |
| --config | 数据目录下的ppio.conf文件 | 指定配置文件 |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> pcdn daemon stop
"Succeed: 303000"
# 2.
> pcdn stop
"Succeed: 303000"
# pcdn download
描述
下载服务
用法
| 子命令 | 描述 |
|---|---|
pcdn download add | 添加下载任务 |
pcdn download pause | 暂停下载任务 |
pcdn download resume | 恢复暂停的下载任务 |
pcdn download delete | 删除下载任务 |
pcdn download taskStatus | 查询任务状态 |
pcdn download list | 列出所有下载任务 |
# pcdn download add
描述
新建新的下载任务,如果任务创建成功,则返回该任务的 task-id,同时显示下载进度。
用法
pcdn download add
--url=<url>
--o,file=<o,file>
--b,bakgroud=<b,bakgroud>
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --url | 无 | 指定下载 URL |
| --o,file | 无 | 指定下载文件保存路径 |
| --b,bakgroud | 无 | 不打印进度 |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1. 下载一个小文件
> ./pcdn download add --url=https://www.sina.com.cn/index.html --file=./index.html
Downloading is started. Task ID is: 23a897eb540a4109a5480b1c81d2a86d
download size download speed average download speed HTTP downlaod size P2P download size rate tracker lastMappingSucc lastMappingFail
3200 KB 607.98 KB/s 165.82 KB/s 3200 KB 0 KB 4.06% connect 1.24 s -1.00 s
"23a897eb540a4109a5480b1c81d2a86d"
# 2. 下载一个大文件
> ./pcdn download add --url=https://dldir1.qq.com/qqfile/qq/PCQQ9.1.1/24953/QQ9.1.1.24953.exe --file=./QQ.exe
Downloading is started. Task ID is: dcd2c85757cc4a66ab9c79aa8354ca00
download size download speed average download speed HTTP downlaod size P2P download size rate tracker lastMappingSucc lastMappingFail
3200 KB 607.98 KB/s 165.82 KB/s 3200 KB 0 KB 4.06% connect 2.41 s -1.00 s
"dcd2c85757cc4a66ab9c79aa8354ca00"
# 3. 下载一个文件不打印进度
> ./pcdn download add --url=https://www.sina.com.cn/index.html --file=./index.html -b
Downloading is started. Task ID is: cd96fe3550ae48d3a2969dc9a0286fda
"cd96fe3550ae48d3a2969dc9a0286fda"
# pcdn download pause
描述
暂停下载任务
用法
pcdn download pause
<task-id>
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn download pause dcd2c85757cc4a66ab9c79aa8354ca00
Task is paused: dcd2c85757cc4a66ab9c79aa8354ca00
# pcdn download resume
描述
恢复暂停的下载任务
用法
pcdn download resume
<task-id>
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn download resume 98b41d2193d54abca21a739e96d51cc6
Task is resumed: 98b41d2193d54abca21a739e96d51cc6
# pcdn download delete
描述
删除下载任务
用法
pcdn download delete
<task-id>
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn download delete 98b41d2193d54abca21a739e96d51cc6
Task is deleted: 98b41d2193d54abca21a739e96d51cc6
# pcdn download taskStatus
描述
查询下载任务状态
用法
pcdn download taskStatus
[--once=<once>]
<task-id>
选项
| 选项 | 默认 | 描述 |
|---|---|---|
| --once | 不持续输出任务状态 |
参数
| 参数 | 描述 |
|---|---|
| task-id | 任务 id |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn download taskStatus f1098068c407470eab5928a6b68cbd9f
download size download speed average download speed HTTP downlaod size P2P download size rate tracker lastMappingSucc lastMappingFail
49167 KB 0.00 KB/s 1637.60 KB/s 49167 KB 0 KB 62.41% connect 2.41 s -1.00 s
# 2.
> ./pcdn download taskStatus --once f1098068c407470eab5928a6b68cbd9f
download size download speed average download speed HTTP downlaod size P2P download size rate tracker lastMappingSucc lastMappingFail
49167 KB 0.00 KB/s 1637.60 KB/s 49167 KB 0 KB 62.41% connect 5.32 s -1.00 s
# pcdn download list
描述
列出所有下载任务
用法
pcdn download list
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn download list
ID NAME SPEED PERCENTAGE
2c945cd88bf74b6ab7a1c5e6e70c9c29 index.html 0.00 kB/s 195.70%
f1098068c407470eab5928a6b68cbd9f QQ9.1.2.25096.exe 0.00 kB/s 62.41%
"{\"ID\":\"23a897eb540a4109a5480b1c81d2a86d\",\"Name\":\"index.html\",\"Speed\":0,\"Percent\":95.696465}"
# pcdn seed
描述
做种服务
用法
| 子命令 | 描述 |
|---|---|
pcdn seed add | 做种 |
pcdn seed query | 查询rid |
pcdn seed list | 列出所有做种成功的文件 |
pcdn seed cancel | 停止分享文件 |
# pcdn seed add
描述
做种,返回任务ID
用法
pcdn seed add <file>
参数
| 参数 | 描述 |
|---|---|
| file | 文件 |
返回
暂无错误码
例子
# 1. 做种一个文件
> ./pcdn seed add Makefile
Seeding is started. rid: v1-RAW-SHA256-2a05ababb07b1dd9643e34b79f0172ea2f680bf51c0b8d0dbe3211e442ffa2ee-4578
Seeding is started. seedID: cab070c119f542fd84a3813dda162a4d
# pcdn seed query
描述
做种,返回任务ID
用法
pcdn seed query <taskID>
参数
seed add 返回的任务ID
返回
暂无错误码
例子
> ./pcdn seed query cab070c119f542fd84a3813dda162a4d
rid: bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE
# pcdn seed list
描述
列出所有做种成功的文件
用法
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn seed list
id file rid status err
6f3ee081dd094700852d9587f3e1f87b /home/yates/go/src/github.com/PPIO/go-ppio/Makefile1 2 0 , stat /home/yates/go/src/github.com/PPIO/go-ppio/Makefile1: no such file or directory
148b4907280b4da6a52f18d2381419dd /home/yates/go/src/github.com/PPIO/go-ppio/Makefile bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE 1
dbd880d5b24043ff8282e4d7a2804524 /home/yates/go/src/github.com/PPIO/go-ppio/Makefile 2 0 , alread has the same rid bCWd1uz6fAHsMTtEGqLndkZtRhubpxqmg1g4SkhAYbn2DJNoLbh7QHQVbE
status: 0 正在做种; 1 做种成功; 2 错误
# pcdn seed cancel
描述
停止分享文件
用法
pcdn seed cancel
<file>
参数
| 参数 | 描述 |
|---|---|
| seed id | seed id |
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ./pcdn seed cancel 6f3ee081dd094700852d9587f3e1f87b
cancel seed file: 6f3ee081dd094700852d9587f3e1f87b
# pcdn net
描述
管理用户网络
用法
| 子命令 | 描述 |
|---|---|
pcdn net id | 查看通信 id |
pcdn net servers | 查看 indexer 和 verifier 服务器 |
# pcdn net id
描述
用法
ppio net id
例子
# 1. 查看通信 id
> ppio net id
"002508021221036e583cb64b75cb6fd7d8ea6f8f952c65813177fa4d69f05a881b57963a4538b5"
# pcdn net servers
描述
查看 indexer 和 verifier 服务器
用法
ppio net servers
返回
| 错误码 | 错误消息 | 描述 |
|---|---|---|
| 303000 | Succeed | 命令执行成功 |
| 303001 | Failed | 命令执行失败 |
例子
# 1.
> ppio net servers
"Indexers count: 1 \n0: indexer 127.0.0.1:8030:8030 \nVerifiers count: 1 \n0: verifier 127.0.0.1:8040:8040 \n"
# pcdn wallet
描述
管理用户的钱包
用法
| 子命令 | 描述 |
|---|---|
pcdn wallet key | 导出钱包私钥 |
pcdn wallet account | 导出钱包账户地址 |
# pcdn wallet key
描述
导出钱包私钥,64个十六进制字符串。
用法
ppio wallet key
例子
# 1. 导入钱包私钥
> ppio wallet key
"AAAABBBBCCCCDDDD..."
# pcdn wallet account
描述
导出钱包账户地址,以ppio开头的base58字符串。
用法
ppio wallet account
例子
# 1. 导出钱包账户地址
> ppio wallet account
"ppioBBBBCCCCDDDD..."
# pcdn tool
描述
管理用户网络
用法
| 子命令 | 描述 |
|---|---|
| pcdn tool info | 查看peer信息 |
| pcdn tool servers | 查询中心化服务器信息 |
| pcdn tool peers | 查询指定任务的peer连接信息(暂时只支持download) |
| pcdn tool queryPeers | 向tracker查询peer |
| pcdn tool queryRID | 向mapping查询rid(暂时不可用) |
| pcdn tool NATState | 查询NAT type |
# pcdn tool info
描述 查询本地peer信息
用法
pcdn tool info
例子
> pcdn tool info
{
"ExternalAddress": {
"IP": "192.168.50.249",
"UDPPort": 8061,
"TCPPort": 8061
},
"PeerID": "002508021221037b5fcb2f1a9cfbb76232ee20a84dce4a03f070828875f22a31ba53d37f2ef84a",
"Type": 1,
"IPList": [
"192.168.136.129",
"172.17.0.1",
"172.18.0.1"
],
"InternalPorts": {
"UDPPort": 8061,
"TCPPort": 8061
},
"ProtocolVersion": 1
}
# pcdn tool servers
描述
查询tracker和mapping状态
用法
pcdn tool servers
返回
例子
# 1.
> pcdn tool servers
[
{
"Name": "Tracker",
"Addr": "192.168.50.229:9091",
"Status": "good"
},
{
"Name": "Mapping",
"Addr": "192.168.50.229:9094",
"Status": "good"
}
]
or
[
{
"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\""
}
]
# pcdn tool peers
描述
查询任务的连接信息
用法
pcdn tool peers <taskID>
返回
例子
# 1.
> pcdn tool peers
[
{},
{
"ExternalAddress": {
"IP": "192.168.136.129",
"UDPPort": 8060,
"TCPPort": 8060
},
"PeerID": "002508021221037b5fcb2f1a9cfbb76232ee20a84dce4a03f070828875f22a31ba53d37f2ef84a"
}
]
# pcdn tool queryPeers
描述
查询指定资源的peer信息
用法
pcdn tool queryPeers <rid>
返回
例子
# 1.
> bin/pcdn tool peers c5505048960f4d8eb1451a2ae395ea79
[
{
"ExternalAddress": {
"IP": "192.168.50.249"
},
"StunAddress": {
"IP": "\u003cnil\u003e"
},
"PeerID": "",
"IPList": [
"192.168.136.129",
"172.17.0.1",
"172.18.0.1"
],
"InternalPorts": {
"UDPPort": 8060,
"TCPPort": 8060
},
"ProtocolVersion": 1
}
]
# pcdn tool NATState
描述
查询指定资源的peer信息
用法
pcdn tool NATState
返回
例子
# 1.
> pcdn tool NATState
{
"IsNATCheckFinished": true,
"NATType": "symmetric"
}
or
{
"IsNATCheckFinished": false
}