Skip to main content

torrust_tracker_deployer_lib/domain/tracker/
mod.rs

1//! Tracker configuration domain types
2//!
3//! This module defines tracker-specific configuration used for deploying
4//! and configuring the Torrust Tracker application.
5//!
6//! # Module Structure
7//!
8//! - `config` - Main `TrackerConfig` and component configurations (includes database)
9//! - `binding_address` - Socket binding address with protocol information
10//! - `protocol` - Network protocol types (UDP, TCP)
11//!
12//! # Layer Separation
13//!
14//! - **Domain types** (this module): `TrackerConfig`, `DatabaseConfig`, etc.
15//!   - Represent semantic meaning of tracker configuration
16//!   - Used in environment user inputs
17//!
18//! # Usage
19//!
20//! ```rust
21//! use torrust_tracker_deployer_lib::domain::tracker::{
22//!     TrackerConfig, TrackerCoreConfig, DatabaseConfig, SqliteConfig,
23//!     UdpTrackerConfig, HttpTrackerConfig, HttpApiConfig, HealthCheckApiConfig
24//! };
25//!
26//! let config = TrackerConfig::new(
27//!     TrackerCoreConfig::new(
28//!         DatabaseConfig::Sqlite(SqliteConfig::new("tracker.db").unwrap()),
29//!         false,
30//!     ),
31//!     vec![
32//!         UdpTrackerConfig::new("0.0.0.0:6868".parse().unwrap(), None).unwrap(),
33//!     ],
34//!     vec![
35//!         HttpTrackerConfig::new("0.0.0.0:7070".parse().unwrap(), None, false).unwrap(),
36//!     ],
37//!     HttpApiConfig::new(
38//!         "0.0.0.0:1212".parse().unwrap(),
39//!         "MyToken".to_string().into(),
40//!         None,
41//!         false,
42//!     ).expect("valid config"),
43//!     HealthCheckApiConfig::new(
44//!         "127.0.0.1:1313".parse().unwrap(),
45//!         None,
46//!         false,
47//!     ).expect("valid config"),
48//! ).expect("valid tracker config");
49//! ```
50
51mod binding_address;
52pub mod config;
53mod protocol;
54
55pub use binding_address::BindingAddress;
56pub use config::{
57    is_localhost, DatabaseConfig, HealthCheckApiConfig, HealthCheckApiConfigError, HttpApiConfig,
58    HttpApiConfigError, HttpTrackerConfig, HttpTrackerConfigError, MysqlConfig, MysqlConfigError,
59    SqliteConfig, SqliteConfigError, TrackerConfig, TrackerConfigError, TrackerCoreConfig,
60    UdpTrackerConfig, UdpTrackerConfigError,
61};
62pub use protocol::{Protocol, ProtocolParseError};