Added mdbook sources for documentation
This commit is contained in:
parent
d5b8a4a858
commit
13a985e329
1
docs/.gitignore
vendored
Normal file
1
docs/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
book
|
10
docs/book.toml
Normal file
10
docs/book.toml
Normal file
|
@ -0,0 +1,10 @@
|
|||
[book]
|
||||
authors = ["Naim A."]
|
||||
title = "UDPT v3"
|
||||
description = "UDPT v3 User Guide"
|
||||
|
||||
[build]
|
||||
create-missing = false
|
||||
|
||||
[output.html]
|
||||
google-analytics = "UA-11289087-19"
|
25
docs/src/README.md
Normal file
25
docs/src/README.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
# UDPT
|
||||
|
||||
- Project Page: [github.com/naim94a/udpt](https://github.com/naim94a/udpt)
|
||||
- Documentation: [naim94a.github.io/udpt](https://naim94a.github.io/udpt)
|
||||
|
||||
UDPT is a lightweight torrent tracker that uses the UDP protocol for tracking and fully implements [BEP-15](http://bittorrent.org/beps/bep_0015.html).
|
||||
This project was developed with security & simplicity in mind, so it shouldn't be difficult to get a server started.
|
||||
|
||||
Unlike most HTTP torrent-trackers, you can save about 50% bandwidth using a UDP tracker.
|
||||
|
||||
## Features
|
||||
- UDP tracking protocol
|
||||
- Simple [TOML](https://en.wikipedia.org/wiki/TOML) configuration
|
||||
- [HTTP REST API](./api.md)
|
||||
- Logging
|
||||
- Choice to run in *static* or *dynamic* modes
|
||||
- Blacklist torrents using the REST API
|
||||
- Can be built/run on many platforms
|
||||
- (Re)written in [Rust](https://www.rust-lang.org/)
|
||||
|
||||
## Licenses
|
||||
UDPT available under the [MIT license](https://github.com/naim94a/udpt/blob/master/LICENSE).
|
||||
|
||||
## About
|
||||
Originally written in C++ by [@naim94a](https://github.com/naim94a) in 2012 for fun.
|
9
docs/src/SUMMARY.md
Normal file
9
docs/src/SUMMARY.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Summary
|
||||
|
||||
[UDPT](README.md)
|
||||
|
||||
* [Building](./build.md)
|
||||
* [Configuration](./config.md)
|
||||
- [Tracking Modes](tracking_modes.md)
|
||||
* [Usage](./usage.md)
|
||||
* [REST API](./api.md)
|
39
docs/src/api.md
Normal file
39
docs/src/api.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
# REST API
|
||||
The REST API can help you manage UDPT with your own scripts.
|
||||
|
||||
__**Notice:**__
|
||||
The API should only be used in trusted networks.
|
||||
APIs should not be exposed directly to the internet, they are intended for internal use only.
|
||||
|
||||
## Endpoints
|
||||
|
||||
All Endpoints require a authorization token which must be set in the configuration before running the tracker.
|
||||
|
||||
- Listing Torrents
|
||||
|
||||
This can be useful if you want to see which torrents are currently registered in any of the tracking modes.
|
||||
|
||||
`GET /t?offset=0&limit=1000&token=... HTTP/1.0`
|
||||
|
||||
Optional Parameters:
|
||||
- `offset` - Offset of the torrent list to return. Default: 0.
|
||||
- `limit` - Limit of torrents to output. Between 1 and 4096. Default 1000.
|
||||
|
||||
- Getting a torrent's stats
|
||||
|
||||
Allows collection of stats from active torrents.
|
||||
|
||||
`GET /t/<info_hash>?token=... HTTP/1.0`
|
||||
|
||||
This request will return information about the torrent, such as:
|
||||
- if the torrent is flagged
|
||||
- seeders & leechers
|
||||
- times the torrent's download was completed
|
||||
|
||||
- Preforming actions on torrents
|
||||
|
||||
`POST /t/<info_hash>&action=<action>&token=... HTTP/1.0`
|
||||
|
||||
Valid actions are: `flag`, `unflag`, `add` & `remove`.
|
||||
|
||||
`add` & `remove` are only valid for non-dynamic tracking modes.
|
35
docs/src/build.md
Normal file
35
docs/src/build.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Building UDPT
|
||||
If you're reading this, you're probably interested in using UDPT - so first, thanks for your interest!
|
||||
|
||||
UDPT used to be harder to build, especially on Windows due to it's dependencies. Thanks to Rust, it's much simpler now.
|
||||
|
||||
## Required tools
|
||||
- [Git](https://git-scm.com) - Version Control
|
||||
- [Rust](https://www.rust-lang.org/) - Compiler toolchain & Package Manager (cargo)
|
||||
|
||||
### Getting the sources
|
||||
```
|
||||
git clone https://github.com/naim94a/udpt.git
|
||||
```
|
||||
|
||||
If you prefer to just download the code, you can get the [latest codebase here](https://github.com/naim94a/udpt/archive/master.zip).
|
||||
|
||||
### Building
|
||||
This step will download all required dependencies (from [crates.io](https://crates.io/)) and build them as well.
|
||||
|
||||
Building should always be done with the latest Rust compiler.
|
||||
|
||||
```
|
||||
cd udpt
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
Once cargo is done building, `udpt` will be built at `target/release/udpt`.
|
||||
|
||||
### Running Tests
|
||||
UDPT comes with unit tests, they can be run with the following command:
|
||||
```
|
||||
cargo test
|
||||
```
|
||||
|
||||
If a build or test fails, please submit Issues to [UDPT's issue tracker](https://github.com/naim94a/udpt/issues).
|
45
docs/src/config.md
Normal file
45
docs/src/config.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
# Configuring UDPT
|
||||
UDPT's configuration is a simple TOML file.
|
||||
|
||||
## Configuration
|
||||
At the root level, the following options are configurable:
|
||||
`mode` - Specifies which mode the tracker will operate in. Values can be `static`, `dynamic` or `private`.
|
||||
|
||||
### Root Level
|
||||
- `mode` - Required. Possbile Values: `private`, `static` or `dynamic`.
|
||||
- `log_level` - Default: `info`. Possible Values: `off`, `error`, `warning`, `info`, `debug`, `trace`.
|
||||
- `db_path` - Database path. If not set, database will be volatile.
|
||||
- `cleanup_interval` - Default: 600. Interval to run cleanup in seconds. Cleanup also saves the Database.
|
||||
|
||||
### `[udp]` section
|
||||
This section must exist.
|
||||
|
||||
- `bind_address` - Required. This is where the UDP port will bind to. Example: `0.0.0.0:6969`.
|
||||
- `announce_interval` - Required. Sets the `announce_interval` that will be sent to peers (in seconds).
|
||||
|
||||
### `[http]` section
|
||||
This section is optional.
|
||||
|
||||
- `bind_address` - Required (if section exists). The HTTP REST API will be bound to this address. It's best not to expose this address publically. Example: `127.0.0.1:1234`.
|
||||
|
||||
### `[http.access_tokens]` section
|
||||
Section is required if `[http]` section exists.
|
||||
|
||||
In this section you can make up keys that would be user ids, and values that would be their access token.
|
||||
If this section is empty, the REST API will not be very useful.
|
||||
|
||||
## Sample Configuration
|
||||
```toml
|
||||
mode = "dynamic"
|
||||
db_path = "database.json.bz2"
|
||||
|
||||
[udp]
|
||||
announce_interval = 120 # Two minutes
|
||||
bind_address = "0.0.0.0:1212"
|
||||
|
||||
[http]
|
||||
bind_address = "127.0.0.1:1212"
|
||||
|
||||
[http.access_tokens]
|
||||
someone = "MyAccessToken"
|
||||
```
|
24
docs/src/tracking_modes.md
Normal file
24
docs/src/tracking_modes.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Tracking Modes
|
||||
UDPT currently supports Static & Dynamic tracking modes.
|
||||
Private tracking is planned, but isn't yet completely implemented.
|
||||
|
||||
## Dynamic Mode
|
||||
In this mode a tracker allows any torrent, even if unknown to be tracked.
|
||||
Trackers that run in this mode usually don't know about the contents of the tracked torrent.
|
||||
In addition, trackers don't usually know anything about the peers.
|
||||
|
||||
UDPT supports dynamic mode, and allows blacklisting torrents to avoid copyright infringement.
|
||||
Torrents can be blacklisted (or "flagged") using the REST API.
|
||||
|
||||
## Static Mode
|
||||
In static mode, anyone can use the tracker like in dynamic mode.
|
||||
Except that torrents must be registered ahead of time.
|
||||
|
||||
UDPT supports static mode, and torrents can be added or removed using the REST API.
|
||||
|
||||
## Private Mode
|
||||
Private tracking requires all peers to be authenticated.
|
||||
Some implementations require torrents to be registered, and some do not.
|
||||
This mode can be either static or dynamic with peer authentication.
|
||||
|
||||
UDPT doesn't currently implement private mode, although there are plans to implement private tracking in the future.
|
4
docs/src/usage.md
Normal file
4
docs/src/usage.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Usage
|
||||
At the moment, `udpt` doesn't have many options. Once you've modified the configuration file, you could start `udpt`:
|
||||
|
||||
udpt -c configuration.toml
|
Loading…
Reference in a new issue