mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
commit
85d04ac721
19 changed files with 101 additions and 85 deletions
30
Cargo.lock
generated
30
Cargo.lock
generated
|
|
@ -45,7 +45,7 @@ checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic"
|
name = "aquatic"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
"aquatic_http",
|
"aquatic_http",
|
||||||
|
|
@ -56,7 +56,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_cli_helpers"
|
name = "aquatic_cli_helpers"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_toml_config",
|
"aquatic_toml_config",
|
||||||
|
|
@ -69,7 +69,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_common"
|
name = "aquatic_common"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash",
|
"ahash",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|
@ -88,7 +88,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_http"
|
name = "aquatic_http"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -119,7 +119,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_http_load_test"
|
name = "aquatic_http_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -141,7 +141,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_http_protocol"
|
name = "aquatic_http_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bendy",
|
"bendy",
|
||||||
|
|
@ -162,7 +162,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_toml_config"
|
name = "aquatic_toml_config"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aquatic_toml_config_derive",
|
"aquatic_toml_config_derive",
|
||||||
"quickcheck",
|
"quickcheck",
|
||||||
|
|
@ -173,7 +173,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_toml_config_derive"
|
name = "aquatic_toml_config_derive"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|
@ -182,7 +182,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_udp"
|
name = "aquatic_udp"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -209,7 +209,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_udp_bench"
|
name = "aquatic_udp_bench"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -228,7 +228,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_udp_load_test"
|
name = "aquatic_udp_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -248,7 +248,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_udp_protocol"
|
name = "aquatic_udp_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"either",
|
"either",
|
||||||
|
|
@ -258,7 +258,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_ws"
|
name = "aquatic_ws"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -290,7 +290,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_ws_load_test"
|
name = "aquatic_ws_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"aquatic_cli_helpers",
|
"aquatic_cli_helpers",
|
||||||
|
|
@ -315,7 +315,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aquatic_ws_protocol"
|
name = "aquatic_ws_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"criterion",
|
"criterion",
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ of configuration is:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[access_list]
|
[access_list]
|
||||||
# Access list mode. Available modes are white, black and off.
|
# Access list mode. Available modes are allow, deny and off.
|
||||||
mode = "off"
|
mode = "off"
|
||||||
# Path to access list file consisting of newline-separated hex-encoded info hashes.
|
# Path to access list file consisting of newline-separated hex-encoded info hashes.
|
||||||
path = ""
|
path = ""
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,20 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic"
|
name = "aquatic"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "Blazingly fast, multi-threaded BitTorrent tracker (UDP, HTTP, WebTorrent)"
|
description = "Blazingly fast, multi-threaded BitTorrent tracker (UDP, HTTP, WebTorrent)"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["bittorrent", "torrent", "webtorrent"]
|
keywords = ["bittorrent", "torrent", "webtorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "aquatic"
|
name = "aquatic"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_http = "0.1.0"
|
aquatic_http = "0.2.0"
|
||||||
aquatic_udp = "0.1.0"
|
aquatic_udp = "0.2.0"
|
||||||
aquatic_ws = "0.1.0"
|
aquatic_ws = "0.2.0"
|
||||||
mimalloc = { version = "0.1", default-features = false }
|
mimalloc = { version = "0.1", default-features = false }
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_cli_helpers"
|
name = "aquatic_cli_helpers"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "aquatic BitTorrent tracker CLI helpers"
|
description = "aquatic BitTorrent tracker CLI helpers"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
git-testament = "0.2"
|
git-testament = "0.2"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_common"
|
name = "aquatic_common"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "aquatic BitTorrent tracker common code"
|
description = "aquatic BitTorrent tracker common code"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_common"
|
name = "aquatic_common"
|
||||||
|
|
@ -14,7 +15,7 @@ name = "aquatic_common"
|
||||||
cpu-pinning = ["hwloc", "libc"]
|
cpu-pinning = ["hwloc", "libc"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
|
|
||||||
ahash = "0.7"
|
ahash = "0.7"
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,14 @@ use arc_swap::{ArcSwap, Cache};
|
||||||
use hashbrown::HashSet;
|
use hashbrown::HashSet;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
/// Access list mode. Available modes are white, black and off.
|
/// Access list mode. Available modes are allow, deny and off.
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, TomlConfig, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, PartialEq, TomlConfig, Serialize, Deserialize)]
|
||||||
#[serde(rename_all = "lowercase")]
|
#[serde(rename_all = "lowercase")]
|
||||||
pub enum AccessListMode {
|
pub enum AccessListMode {
|
||||||
/// Only serve torrents with info hash present in file
|
/// Only serve torrents with info hash present in file
|
||||||
White,
|
Allow,
|
||||||
/// Do not serve torrents if info hash present in file
|
/// Do not serve torrents if info hash present in file
|
||||||
Black,
|
Deny,
|
||||||
/// Turn off access list functionality
|
/// Turn off access list functionality
|
||||||
Off,
|
Off,
|
||||||
}
|
}
|
||||||
|
|
@ -74,8 +74,8 @@ impl AccessList {
|
||||||
|
|
||||||
pub fn allows(&self, mode: AccessListMode, info_hash: &[u8; 20]) -> bool {
|
pub fn allows(&self, mode: AccessListMode, info_hash: &[u8; 20]) -> bool {
|
||||||
match mode {
|
match mode {
|
||||||
AccessListMode::White => self.0.contains(info_hash),
|
AccessListMode::Allow => self.0.contains(info_hash),
|
||||||
AccessListMode::Black => !self.0.contains(info_hash),
|
AccessListMode::Deny => !self.0.contains(info_hash),
|
||||||
AccessListMode::Off => true,
|
AccessListMode::Off => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -102,8 +102,8 @@ impl AccessListQuery for AccessListArcSwap {
|
||||||
|
|
||||||
fn allows(&self, mode: AccessListMode, info_hash_bytes: &[u8; 20]) -> bool {
|
fn allows(&self, mode: AccessListMode, info_hash_bytes: &[u8; 20]) -> bool {
|
||||||
match mode {
|
match mode {
|
||||||
AccessListMode::White => self.load().0.contains(info_hash_bytes),
|
AccessListMode::Allow => self.load().0.contains(info_hash_bytes),
|
||||||
AccessListMode::Black => !self.load().0.contains(info_hash_bytes),
|
AccessListMode::Deny => !self.load().0.contains(info_hash_bytes),
|
||||||
AccessListMode::Off => true,
|
AccessListMode::Off => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -170,13 +170,13 @@ mod tests {
|
||||||
|
|
||||||
let mut access_list_cache = Cache::new(Arc::clone(&access_list));
|
let mut access_list_cache = Cache::new(Arc::clone(&access_list));
|
||||||
|
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::White, &a));
|
assert!(access_list_cache.load().allows(AccessListMode::Allow, &a));
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::White, &b));
|
assert!(access_list_cache.load().allows(AccessListMode::Allow, &b));
|
||||||
assert!(!access_list_cache.load().allows(AccessListMode::White, &c));
|
assert!(!access_list_cache.load().allows(AccessListMode::Allow, &c));
|
||||||
|
|
||||||
assert!(!access_list_cache.load().allows(AccessListMode::Black, &a));
|
assert!(!access_list_cache.load().allows(AccessListMode::Deny, &a));
|
||||||
assert!(!access_list_cache.load().allows(AccessListMode::Black, &b));
|
assert!(!access_list_cache.load().allows(AccessListMode::Deny, &b));
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::Black, &c));
|
assert!(access_list_cache.load().allows(AccessListMode::Deny, &c));
|
||||||
|
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::Off, &a));
|
assert!(access_list_cache.load().allows(AccessListMode::Off, &a));
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::Off, &b));
|
assert!(access_list_cache.load().allows(AccessListMode::Off, &b));
|
||||||
|
|
@ -184,7 +184,7 @@ mod tests {
|
||||||
|
|
||||||
access_list.store(Arc::new(AccessList::default()));
|
access_list.store(Arc::new(AccessList::default()));
|
||||||
|
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::Black, &a));
|
assert!(access_list_cache.load().allows(AccessListMode::Deny, &a));
|
||||||
assert!(access_list_cache.load().allows(AccessListMode::Black, &b));
|
assert!(access_list_cache.load().allows(AccessListMode::Deny, &b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_http"
|
name = "aquatic_http"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "Blazingly fast, multi-threaded HTTP BitTorrent tracker"
|
description = "Blazingly fast, multi-threaded HTTP BitTorrent tracker"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["http", "server", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["http", "server", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_http"
|
name = "aquatic_http"
|
||||||
|
|
@ -18,10 +19,10 @@ name = "aquatic_http"
|
||||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_http_protocol = "0.1.0"
|
aquatic_http_protocol = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
cfg-if = "1"
|
cfg-if = "1"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_http_load_test"
|
name = "aquatic_http_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
description = "BitTorrent (HTTP over TLS) load tester"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["http", "benchmark", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["http", "benchmark", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "aquatic_http_load_test"
|
name = "aquatic_http_load_test"
|
||||||
|
|
@ -14,10 +16,10 @@ name = "aquatic_http_load_test"
|
||||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_http_protocol = "0.1.0"
|
aquatic_http_protocol = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
futures-lite = "1"
|
futures-lite = "1"
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_http_protocol"
|
name = "aquatic_http_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
description = "HTTP BitTorrent tracker protocol"
|
description = "HTTP BitTorrent tracker protocol"
|
||||||
exclude = ["target"]
|
|
||||||
keywords = ["http", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["http", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_http_protocol"
|
name = "aquatic_http_protocol"
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_toml_config"
|
name = "aquatic_toml_config"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "Serialize toml with comments"
|
description = "Serialize toml with comments"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
exclude = ["target"]
|
|
||||||
keywords = ["toml"]
|
keywords = ["toml"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_toml_config"
|
name = "aquatic_toml_config"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
aquatic_toml_config_derive = { path = "../aquatic_toml_config_derive" }
|
aquatic_toml_config_derive = { version = "0.2.0", path = "../aquatic_toml_config_derive" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_toml_config_derive"
|
name = "aquatic_toml_config_derive"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
|
@ -8,6 +8,7 @@ description = "Serialize toml with comments"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
exclude = ["target"]
|
exclude = ["target"]
|
||||||
keywords = ["toml"]
|
keywords = ["toml"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
proc-macro = true
|
proc-macro = true
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_udp"
|
name = "aquatic_udp"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "Blazingly fast, multi-threaded UDP BitTorrent tracker"
|
description = "Blazingly fast, multi-threaded UDP BitTorrent tracker"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["udp", "server", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["udp", "server", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_udp"
|
name = "aquatic_udp"
|
||||||
|
|
@ -18,10 +19,10 @@ name = "aquatic_udp"
|
||||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
aquatic_udp_protocol = "0.1.0"
|
aquatic_udp_protocol = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
cfg-if = "1"
|
cfg-if = "1"
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,21 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_udp_bench"
|
name = "aquatic_udp_bench"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "aquatic_udp_bench"
|
name = "aquatic_udp_bench"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
aquatic_udp = "0.1.0"
|
aquatic_udp = "0.2.0"
|
||||||
aquatic_udp_protocol = "0.1.0"
|
aquatic_udp_protocol = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
crossbeam-channel = "0.5"
|
crossbeam-channel = "0.5"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_udp_load_test"
|
name = "aquatic_udp_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
description = "BitTorrent (UDP) load tester"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["udp", "benchmark", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["udp", "benchmark", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "aquatic_udp_load_test"
|
name = "aquatic_udp_load_test"
|
||||||
|
|
@ -14,10 +16,10 @@ name = "aquatic_udp_load_test"
|
||||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
aquatic_udp_protocol = "0.1.0"
|
aquatic_udp_protocol = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
hashbrown = "0.12"
|
hashbrown = "0.12"
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_udp_protocol"
|
name = "aquatic_udp_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "UDP BitTorrent tracker protocol"
|
description = "UDP BitTorrent tracker protocol"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["udp", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["udp", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
byteorder = "1"
|
byteorder = "1"
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_ws"
|
name = "aquatic_ws"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
description = "Blazingly fast, multi-threaded WebTorrent tracker"
|
description = "Blazingly fast, multi-threaded WebTorrent tracker"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["webtorrent", "websocket", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["webtorrent", "websocket", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
|
@ -19,10 +20,10 @@ name = "aquatic_ws"
|
||||||
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
aquatic_ws_protocol = "0.1.0"
|
aquatic_ws_protocol = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
async-tungstenite = "0.17"
|
async-tungstenite = "0.17"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_ws_load_test"
|
name = "aquatic_ws_load_test"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
description = "WebTorrent over TLS load tester"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
keywords = ["webtorrent", "websocket", "benchmark", "torrent", "bittorrent"]
|
keywords = ["webtorrent", "websocket", "benchmark", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "aquatic_ws_load_test"
|
name = "aquatic_ws_load_test"
|
||||||
|
|
@ -15,10 +17,10 @@ cpu-pinning = ["aquatic_common/cpu-pinning"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
async-tungstenite = "0.17"
|
async-tungstenite = "0.17"
|
||||||
aquatic_cli_helpers = "0.1.0"
|
aquatic_cli_helpers = "0.2.0"
|
||||||
aquatic_common = "0.1.0"
|
aquatic_common = "0.2.0"
|
||||||
aquatic_toml_config = "0.1.0"
|
aquatic_toml_config = "0.2.0"
|
||||||
aquatic_ws_protocol = "0.1.0"
|
aquatic_ws_protocol = "0.2.0"
|
||||||
|
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "aquatic_ws_protocol"
|
name = "aquatic_ws_protocol"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
authors = ["Joakim Frostegård <joakim.frostegard@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
|
@ -8,6 +8,7 @@ description = "WebTorrent tracker protocol"
|
||||||
repository = "https://github.com/greatest-ape/aquatic"
|
repository = "https://github.com/greatest-ape/aquatic"
|
||||||
exclude = ["target"]
|
exclude = ["target"]
|
||||||
keywords = ["webtorrent", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
keywords = ["webtorrent", "protocol", "peer-to-peer", "torrent", "bittorrent"]
|
||||||
|
readme = "../README.md"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "aquatic_ws_protocol"
|
name = "aquatic_ws_protocol"
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Loading…
Add table
Add a link
Reference in a new issue