torrust_tracker_test_helpers/
configuration.rsuse std::env;
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
use torrust_tracker_configuration::{Configuration, HttpApi, HttpTracker, Threshold, UdpTracker};
use crate::random;
#[must_use]
pub fn ephemeral() -> Configuration {
let mut config = Configuration::default();
config.logging.threshold = Threshold::Off; let api_port = 0u16;
let mut http_api = HttpApi {
bind_address: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), api_port),
..Default::default()
};
http_api.add_token("admin", "MyAccessToken");
config.http_api = Some(http_api);
let health_check_api_port = 0u16;
config.health_check_api.bind_address = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), health_check_api_port);
let udp_port = 0u16;
config.udp_trackers = Some(vec![UdpTracker {
bind_address: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), udp_port),
}]);
let http_port = 0u16;
config.http_trackers = Some(vec![HttpTracker {
bind_address: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), http_port),
tsl_config: None,
}]);
let temp_directory = env::temp_dir();
let random_db_id = random::string(16);
let temp_file = temp_directory.join(format!("data_{random_db_id}.db"));
temp_file.to_str().unwrap().clone_into(&mut config.core.database.path);
config
}
#[must_use]
pub fn ephemeral_with_reverse_proxy() -> Configuration {
let mut cfg = ephemeral();
cfg.core.net.on_reverse_proxy = true;
cfg
}
#[must_use]
pub fn ephemeral_without_reverse_proxy() -> Configuration {
let mut cfg = ephemeral();
cfg.core.net.on_reverse_proxy = false;
cfg
}
#[must_use]
pub fn ephemeral_public() -> Configuration {
let mut cfg = ephemeral();
cfg.core.private = false;
cfg
}
#[must_use]
pub fn ephemeral_private() -> Configuration {
let mut cfg = ephemeral();
cfg.core.private = true;
cfg
}
#[must_use]
pub fn ephemeral_listed() -> Configuration {
let mut cfg = ephemeral();
cfg.core.listed = true;
cfg
}
#[must_use]
pub fn ephemeral_private_and_listed() -> Configuration {
let mut cfg = ephemeral();
cfg.core.private = true;
cfg.core.listed = true;
cfg
}
#[must_use]
pub fn ephemeral_with_external_ip(ip: IpAddr) -> Configuration {
let mut cfg = ephemeral();
cfg.core.net.external_ip = Some(ip);
cfg
}
#[must_use]
pub fn ephemeral_ipv6() -> Configuration {
let mut cfg = ephemeral();
let ipv6 = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)), 0);
if let Some(ref mut http_api) = cfg.http_api {
http_api.bind_address.clone_from(&ipv6);
};
if let Some(ref mut http_trackers) = cfg.http_trackers {
http_trackers[0].bind_address.clone_from(&ipv6);
}
if let Some(ref mut udp_trackers) = cfg.udp_trackers {
udp_trackers[0].bind_address.clone_from(&ipv6);
}
cfg
}
#[must_use]
pub fn ephemeral_with_no_services() -> Configuration {
let mut cfg = ephemeral();
cfg.http_api = None;
cfg.http_trackers = None;
cfg.udp_trackers = None;
cfg
}