Trackers list from outside
This commit is contained in:
parent
d709557372
commit
52be6d7cef
3 changed files with 15 additions and 5 deletions
|
|
@ -98,7 +98,9 @@ tracing-subscriber = { version = "0.3", default-features = false, features = [
|
||||||
], optional = true }
|
], optional = true }
|
||||||
uuid = { version = "1.2", features = ["v4"] }
|
uuid = { version = "1.2", features = ["v4"] }
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
url = { version = "=2.5.2", default-features = false } # can't upgrade yet until min version is Rust 1.81, see https://github.com/servo/rust-url/issues/992
|
url = { version = "=2.5.2", default-features = false, features = [
|
||||||
|
"serde",
|
||||||
|
] } # can't upgrade yet until min version is Rust 1.81, see https://github.com/servo/rust-url/issues/992
|
||||||
|
|
||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
backoff = "0.4.0"
|
backoff = "0.4.0"
|
||||||
|
|
@ -119,7 +121,7 @@ notify = { version = "7", optional = true }
|
||||||
walkdir = "2.5.0"
|
walkdir = "2.5.0"
|
||||||
arc-swap = "1.7.1"
|
arc-swap = "1.7.1"
|
||||||
intervaltree = "0.2.7"
|
intervaltree = "0.2.7"
|
||||||
async-compression = {version="0.4.18", features= ["tokio", "gzip"] }
|
async-compression = { version = "0.4.18", features = ["tokio", "gzip"] }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,7 @@ pub struct Session {
|
||||||
default_storage_factory: Option<BoxStorageFactory>,
|
default_storage_factory: Option<BoxStorageFactory>,
|
||||||
persistence: Option<Arc<dyn SessionPersistenceStore>>,
|
persistence: Option<Arc<dyn SessionPersistenceStore>>,
|
||||||
disk_write_tx: Option<DiskWorkQueueSender>,
|
disk_write_tx: Option<DiskWorkQueueSender>,
|
||||||
|
trackers: HashSet<url::Url>,
|
||||||
|
|
||||||
// Limits and throttling
|
// Limits and throttling
|
||||||
pub(crate) concurrent_initialize_semaphore: Arc<tokio::sync::Semaphore>,
|
pub(crate) concurrent_initialize_semaphore: Arc<tokio::sync::Semaphore>,
|
||||||
|
|
@ -647,6 +648,7 @@ impl Session {
|
||||||
opts.concurrent_init_limit.unwrap_or(3),
|
opts.concurrent_init_limit.unwrap_or(3),
|
||||||
)),
|
)),
|
||||||
ratelimits: Limits::new(opts.ratelimits),
|
ratelimits: Limits::new(opts.ratelimits),
|
||||||
|
trackers: opts.trackers,
|
||||||
#[cfg(feature = "disable-upload")]
|
#[cfg(feature = "disable-upload")]
|
||||||
_disable_upload: opts.disable_upload,
|
_disable_upload: opts.disable_upload,
|
||||||
blocklist,
|
blocklist,
|
||||||
|
|
@ -1337,6 +1339,8 @@ impl Session {
|
||||||
if is_private && trackers.len() > 1 {
|
if is_private && trackers.len() > 1 {
|
||||||
warn!("private trackers are not fully implemented, so using only the first tracker");
|
warn!("private trackers are not fully implemented, so using only the first tracker");
|
||||||
trackers.truncate(1);
|
trackers.truncate(1);
|
||||||
|
} else {
|
||||||
|
trackers.extend(self.trackers.iter().cloned());
|
||||||
}
|
}
|
||||||
|
|
||||||
let tracker_rx_stats = PeerRxTorrentInfo {
|
let tracker_rx_stats = PeerRxTorrentInfo {
|
||||||
|
|
|
||||||
|
|
@ -440,7 +440,7 @@ async fn parse_trackers_file(filename: &str) -> anyhow::Result<HashSet<url::Url>
|
||||||
let content = tokio::fs::read_to_string(filename)
|
let content = tokio::fs::read_to_string(filename)
|
||||||
.await
|
.await
|
||||||
.with_context(|| format!("error opening {filename}"))?;
|
.with_context(|| format!("error opening {filename}"))?;
|
||||||
Ok(content
|
let trackers = content
|
||||||
.lines()
|
.lines()
|
||||||
.filter_map(|s| {
|
.filter_map(|s| {
|
||||||
let s = s.trim();
|
let s = s.trim();
|
||||||
|
|
@ -449,7 +449,9 @@ async fn parse_trackers_file(filename: &str) -> anyhow::Result<HashSet<url::Url>
|
||||||
}
|
}
|
||||||
url::Url::parse(s).ok()
|
url::Url::parse(s).ok()
|
||||||
})
|
})
|
||||||
.collect())
|
.collect::<HashSet<url::Url>>();
|
||||||
|
info!(filename, count = trackers.len(), "parsed trackers");
|
||||||
|
Ok(trackers)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn async_main(opts: Opts, cancel: CancellationToken) -> anyhow::Result<()> {
|
async fn async_main(opts: Opts, cancel: CancellationToken) -> anyhow::Result<()> {
|
||||||
|
|
@ -471,7 +473,9 @@ async fn async_main(opts: Opts, cancel: CancellationToken) -> anyhow::Result<()>
|
||||||
};
|
};
|
||||||
|
|
||||||
let trackers = if let Some(f) = opts.trackers_filename {
|
let trackers = if let Some(f) = opts.trackers_filename {
|
||||||
parse_trackers_file(&f).await?
|
parse_trackers_file(&f)
|
||||||
|
.await
|
||||||
|
.context("error reading trackers file")?
|
||||||
} else {
|
} else {
|
||||||
Default::default()
|
Default::default()
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue