torrust_tracker_configuration/v2_0_0/
http_tracker.rs

1use std::net::{IpAddr, Ipv4Addr, SocketAddr};
2
3use serde::{Deserialize, Serialize};
4use serde_with::serde_as;
5
6use crate::TslConfig;
7
8/// Configuration for each HTTP tracker.
9#[serde_as]
10#[derive(Serialize, Deserialize, PartialEq, Eq, Debug, Clone)]
11pub struct HttpTracker {
12    /// The address the tracker will bind to.
13    /// The format is `ip:port`, for example `0.0.0.0:6969`. If you want to
14    /// listen to all interfaces, use `0.0.0.0`. If you want the operating
15    /// system to choose a random port, use port `0`.
16    #[serde(default = "HttpTracker::default_bind_address")]
17    pub bind_address: SocketAddr,
18
19    /// TSL config.
20    #[serde(default = "HttpTracker::default_tsl_config")]
21    pub tsl_config: Option<TslConfig>,
22}
23
24impl Default for HttpTracker {
25    fn default() -> Self {
26        Self {
27            bind_address: Self::default_bind_address(),
28            tsl_config: Self::default_tsl_config(),
29        }
30    }
31}
32
33impl HttpTracker {
34    fn default_bind_address() -> SocketAddr {
35        SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 7070)
36    }
37
38    fn default_tsl_config() -> Option<TslConfig> {
39        None
40    }
41}