Command-line Tool: xdb-cli
The xdb-cli
is a command-line tool to use the decentralized storage network by a DataOwner node or a Storage node.
There are four major subcommands of xdb-cli
as follows.
command
explanation
key
generate node private/public key pair
nodes
control actions related to storage nodes
files
file operations on the decentralized storage network
challenge
challenge operations used to check file integrity in the storage node
Command Parsing: xdb-cli key
The subcommand xdb-cli key
used to generate the node private/public key pair or add client's public key into the whitelist.
command
explanation
genkey
generate a pair of key
addukey
used for the dataOwner node to add client's public key into the whitelist
genpdpkeys
generate pairing based challenge parameters
xdb-cli key genkey
used for node or node's client to generate a pair of key
flag
short flag
explanation
necessary
--output
-o
output path
yes
DEMO:
$ ./xdb-cli key genkey -o ./keys
$ ./xdb-cli key genkey -o ./ukeys
flag
short flag
explanation
necessary
--output
-o
output path
yes
--user
-u
user public key
yes
DEMO:
$ ./xdb-cli key addukey -o ./authkeys -u 339524f35fb86a85bc3f9eed2b6ffd976de08b2cd47953b6640912f16e6863f2123f057cfef1f7132072602255a5a39bf254569fa6f8591327255c97881bc112
DEMO:
$ ./xdb-cli key genpdpkeys
Command Parsing: xdb-cli nodes
command
explanation
get
get the storage node by id
health
get the storage node's health status by id
list
list storage nodes
mrecords
get node slice migrate records
heartbeat
get storage node heart beat number of one day, example '2021-07-10 12:00:00'
offline
set a storage node offline
online
set a storage node online
global flag
short flag
explanation
necessary
--host
-h
the storage node's host
yes
flag
short flag
explanation
necessary
--id
-i
storage node's id
no, you can replace 'id' with 'keyPath'
--keyPath
the file path of the stroaga node's public key
no, default './keys'
DEMO:
$ ./xdb-cli nodes get --host http://localhost:8122 --keyPath ./keys
flag
short flag
explanation
necessary
--id
-i
storage node's id
no, you can replace 'id' with 'keyPath'
--keyPath
the file path of the stroaga node's public key
no, default './keys'
DEMO:
$ ./xdb-cli nodes health --host http://localhost:8122 --keyPath ./keys
DEMO:
$ ./xdb-cli nodes list --host http://localhost:8122
flag
short flag
explanation
necessary
--id
-i
storage node's id
no, you can replace 'id' with 'keyPath'
--keyPath
the file path of the stroaga node's public key
no, default './keys'
--limit
-l
limit for list slice migrate records
no
--start
-s
start time of the slice migrate' query
no
--end
-e
end time of the slice migrate' query
no
DEMO:
$ ./xdb-cli nodes mrecords --host http://localhost:8122 --keyPath ./keys
flag
short flag
explanation
necessary
--id
-i
storage node's id
no, you can replace 'id' with 'keyPath'
--keyPath
the file path of the stroaga node's public key
no, default './keys'
--ctime
-c
storage node heart beat number of one day
yes
DEMO:
$ ./xdb-cli nodes heartbeat --host http://localhost:8122 --keyPath ./keys -c "2021-08-04 17:29:00"
flag
short flag
explanation
necessary
--privateKey
-k
private key
no, you can replace 'privateKey' with 'keyPath'
--keyPath
the file path of the storage node's private key
no, default './keys'
DEMO:
$ ./xdb-cli --host http://localhost:8122 nodes offline --keyPath ./keys
flag
short flag
explanation
necessary
--privateKey
-k
private key
no, you can replace 'privateKey' with 'keyPath'
--keyPath
the file path of the storage node's private key
no, default './keys'
DEMO:
$ ./xdb-cli --host http://localhost:8122 nodes online --keyPath ./keys
Command Parsing: xdb-cli files
command
explanation
addns
add a file namespace into XuperDB
download
download the file from XuperDB
getbyid
get the file by id from XuperDB
getbyname
get the file by name from XuperDB
getns
get the file namespace detail in XuperDB
list
list files in XuperDB
listexp
list expired but valid files in XuperDB
listns
list file namespaces of the DataOwner
syshealth
get the DataOwner's health status
upload
save a file into XuperDB
ureplica
update file replica of XuperDB
utime
update file's expiretime by the id
getauthbyid
get the file authorization application detail
confirmauth
confirm the applier's file authorization application
rejectauth
reject the applier's file authorization application
listauth
list file authorization applications
global flag
short flag
explanation
necessary
--host
-h
the dataOwner node's host
yes
flag
short flag
explanation
necessary
--privateKey
-k
private key
no, you can replace 'privateKey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--namespace
-n
namespace
yes
--description
-d
description
no
--replica
-r
replica
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files addns -n testns -r 2 --keyPath ./ukeys
flag
short flag
explanation
necessary
--fileid
-f
file's id in XuperDB
no
--filename
-m
file's name in XuperDB
no
--namespace
-n
namespace
yes
--output
-o
output file path
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
DEMO:
$ ./xdb-cli --host http://localhost:8121 files download --keyPath ./ukeys -n testns -m bigfile -o ./testdata/bigfile
flag
short flag
explanation
necessary
--id
-i
file's id in XuperDB
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files getbyid --id d86737bf-97ac-427f-a835-871d307c3589
flag
short flag
explanation
necessary
--filename
-m
file's name
yes
--namespace
-n
namespace
yes
--owner
-o
DataOwner's public key
no, default host node's public key
DEMO:
$ ./xdb-cli --host http://localhost:8121 files getbyname -n testns -m bigfile
flag
short flag
explanation
necessary
--namespace
-n
namespace
yes
--owner
-o
DataOwner's public key
no, default host node's public key
DEMO:
$ ./xdb-cli --host http://localhost:8121 files getns -n testns
flag
short flag
explanation
necessary
--owner
-o
DataOwner's public key
no, default host node's public key
--namespace
-n
namespace
yes
--limit
-l
limit for list, 0 for unlimited
no
--start
-s
start time of the slice migrate' query
no
--end
-e
end time of the slice migrate' query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 files list -n testns -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"
flag
short flag
explanation
necessary
--owner
-o
DataOwner's public key
no, default host node's public key
--namespace
-n
namespace
yes
--limit
-l
limit for list, 0 for unlimited
no
--start
-s
start time of the slice migrate' query
no
--end
-e
end time of the slice migrate' query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 files listexp -n testns -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"
flag
short flag
explanation
necessary
--owner
-o
DataOwner's public key
no, default host node's public key
--limit
-l
limit for list, 0 for unlimited
no
--start
-s
start time of the slice migrate' query
no
--end
-e
end time of the slice migrate' query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 files listns -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"
flag
short flag
explanation
necessary
--owner
-o
DataOwner's public key
no, default host node's public key
DEMO:
$ ./xdb-cli --host http://localhost:8121 files syshealth
flag
short flag
explanation
necessary
--description
-d
description
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--expireTime
-e
expiretime of the file in XuperDB
yes
--ext
file extra info
yes
--filename
-m
file's name in XuperDB
yes
--namespace
-n
namespace
yes
--input
-i
input file path
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files upload --keyPath ./ukeys -n testns -m bigfile -i ./bin/client -e "2021-06-30 15:00:00" -d "this is a test file"
flag
short flag
explanation
necessary
--namespace
-n
namespace
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--replica
-r
replica
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files ureplica -n testns -r 3 --keyPath ./ukeys
flag
short flag
explanation
necessary
--id
-i
file's id in XuperDB
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--expireTime
-e
expiretime of the file in XuperDB
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files utime -e '2021-08-08 15:15:04' -i b87b588f-2e46-4ee5-8128-888592ada4fd --keyPath ./ukeys
flag
short flag
explanation
necessary
--authID
-i
id of file authorization application
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files getauthbyid --id 933b347a-a207-46ed-bcd7-8fdde94596d0
flag
short flag
explanation
necessary
--authID
-i
id for file authorization application
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--expireTime
-e
file authorization expiration time, example '2022-07-10 12:00:00'
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files confirmauth -e '2022-08-08 15:15:04' -i b87b588f-2e46-4ee5-8128-888592ada4fd --keyPath ./ukeys
flag
short flag
explanation
necessary
--authID
-i
id for file authorization application
yes
--privkey
-k
private key
no, you can replace 'privkey' with 'keyPath'
--keyPath
the file path of the dataOwner node client's private key
no, default './ukeys'
--rejectReason
-e
reason for reject the authorization
yes
DEMO:
$ ./xdb-cli --host http://localhost:8121 files rejectauth -r '拒绝授权申请' -i b87b588f-2e46-4ee5-8128-888592ada4fd --keyPath ./ukeys
flag
short flag
explanation
necessary
--applier
-a
applier's public key
no
--owner
-o
file owner
no, default host node's public key
--end
-e
authorization applications publish before endTime, example '2022-07-10 12:00:00'
no
--fileID
-f
sample file ID
no
--start
-s
authorization applications publish after startTime, example '2022-06-10 12:00:00'
no
--limit
-l
limit for list file authorization applications
no
--status
status of file authorization application, example 'Unapproved, Approved or Rejected'
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 files listauth -s '2022-01-08 15:15:04'
Command Parsing: xdb-cli challenge
command
explanation
failed
get failed challenges by filters
get
get pdp challenge by id
proved
get proved challenges by filters
toprove
get ToProve challenges by filters
global flag
short flag
explanation
necessary
--host
-h
the dataOwner node's host
yes
flag
short flag
explanation
necessary
--id
-i
challenge's id
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 challenge get --id ff334622-1442-425c-8d57-3f1b915b84e8
flag
short flag
explanation
necessary
--file
-f
file's id in XuperDB
no
--limit
-l
limit for list num
no
--list
whether or not show challenges list, 0:not show
default 1
--node
-n
storage node's id
yes
--owner
-o
DataOwner's public key
no, default host node's public key
--start
-s
start time of the query
no
--end
-e
end time of the query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 challenge proved -n 58c4fe74988b3bd62a99f143bd07eb1b1e27f77a0c2d90d1c76f84d1adbcb240c652c81f005e4a0a0b3f43c9ebfab713e0e68d74695701f5564478ee59354f58 -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"
flag
short flag
explanation
necessary
--file
-f
file's id in XuperDB
no
--limit
-l
limit for list num
no
--list
whether or not show challenges list, 0:not show
default 1
--node
-n
storage node's id
yes
--owner
-o
DataOwner's public key
no, default host node's public key
--start
-s
start time of the query
no
--end
-e
end time of the query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 challenge failed -n 58c4fe74988b3bd62a99f143bd07eb1b1e27f77a0c2d90d1c76f84d1adbcb240c652c81f005e4a0a0b3f43c9ebfab713e0e68d74695701f5564478ee59354f58 -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"
flag
short flag
explanation
necessary
--file
-f
file's id in XuperDB
no
--limit
-l
limit for list num
no
--list
whether or not show challenges list, 0:not show
default 1
--node
-n
storage node's id
yes
--owner
-o
DataOwner's public key
no, default host node's public key
--start
-s
start time of the query
no
--end
-e
end time of the query
no
DEMO:
$ ./xdb-cli --host http://localhost:8121 challenge toprove -n 58c4fe74988b3bd62a99f143bd07eb1b1e27f77a0c2d90d1c76f84d1adbcb240c652c81f005e4a0a0b3f43c9ebfab713e0e68d74695701f5564478ee59354f58 -l 10 -s "2021-06-30 15:00:00" -e "2021-06-30 16:00:00"