# User CLI Reference: pcdn


# 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
}