1 unstable release
0.1.0 | Apr 17, 2020 |
---|
#68 in #tracker
20KB
182 lines
sobani-tracker
Introduction
Aim to set up a tracker server for sobani service and clients
Setup
Clone to your instance
git clone https://github.com/BlueCocoa/sobani-tracker-rust.git
Compile
cd sobani-tracker-rust
cargo build --release
Start server
cargo run --release
API Documentation
Actions
announce
Announce action relates to the first connection from peer to server, within this action, a client send three parameters to tracker server in order to record and make the share action possible.
If sending is successful, an announced object will be returned.
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "announce" |
Expected response from server:
{
"action": "announced",
"data": {
"shareId": "1AbhoECj"
}
}
alive
alive
action meant to make maintaining the connection and the sharing session valid and possible by rapidly sending a packet to server to report the Alive
state of the client. By doing this, server will store the session and shareId while the clients are alive, if a client stopped to send a packet, server will delete the related shareId and multiaddr it announced before. (Default expiration time will be 5 minutes)
push
Push action tells the server the unique shareId of the target client the peers shared. Tracker server respond with the IP:Port
back to the requesting client, so on, the client can try to establish the connection between.
If sending is successful, a pushed message is returned.
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "push" |
data | dict | yes | The requestee's info |
pushed data is demostrated below
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Expected response from server:
{
"action": "pushed",
"data": {
"peeraddr": "1.2.3.4:23333",
"peerShareId": "1AbhoECj"
}
}
Also, the tracker will send an income
message to the requestee
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "income" |
data | dict | yes | The requestor's info |
income data is demostrated below
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Expected income message from server:
{
"action": "income",
"data": {
"peeraddr": "1.2.3.4:23333",
"peerShareId": "1AbhoECj"
}
}
Types
announced
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "announced" |
data | dict | yes |
announced data
Field | Type | Required | Description |
---|---|---|---|
shareId | string | yes | shareId generated by server side |
pushed
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "pushed" |
data | dict | yes |
pushed data
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
income
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "income" |
data | dict | yes |
income data
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Dependencies
~10–20MB
~310K SLoC