sustenet_shared/
config.rs1pub mod master {
2 use config::{ Config, File, FileFormat::Toml };
3
4 use crate::utils::constants::MASTER_PORT;
5
6 pub struct Settings {
7 pub server_name: String,
8
9 pub max_connections: u32,
10 pub port: u16,
11 }
12
13 pub fn read() -> Settings {
14 let settings = Config::builder()
15 .add_source(File::new("Config.toml", Toml))
16 .build()
17 .expect("Failed to read the configuration file.");
18
19 Settings {
20 server_name: settings
21 .get::<String>("all.server_name")
22 .unwrap_or("Master Server".to_string()),
23
24 max_connections: settings.get::<u32>("all.max_connections").unwrap_or(0),
25 port: match settings.get::<u16>("all.port") {
26 Ok(port) =>
27 match port {
28 0 => MASTER_PORT,
29 _ => port,
30 }
31 Err(_) => MASTER_PORT,
32 },
33 }
34 }
35}
36
37pub mod cluster {
38 use config::{ Config, File, FileFormat::Toml };
39
40 use crate::utils::constants::{ CLUSTER_PORT, DEFAULT_IP, MASTER_PORT };
41
42 pub struct Settings {
43 pub server_name: String,
44
45 pub max_connections: u32,
46 pub port: u16,
47
48 pub key_name: String,
49 pub master_ip: String,
50 pub master_port: u16,
51
52 pub domain_pub_key: Option<String>,
53 }
54
55 pub fn read() -> Settings {
56 let settings = Config::builder()
57 .add_source(File::new("Config.toml", Toml))
58 .build()
59 .expect("Failed to read the configuration file.");
60
61 Settings {
62 server_name: settings
63 .get::<String>("all.server_name")
64 .unwrap_or("Cluster Server".to_string()),
65
66 max_connections: settings.get::<u32>("max_connections").unwrap_or(0),
67 port: match settings.get::<u16>("all.port") {
68 Ok(port) =>
69 match port {
70 0 => CLUSTER_PORT,
71 _ => port,
72 }
73 Err(_) => CLUSTER_PORT,
74 },
75
76 key_name: settings
77 .get::<String>("cluster.key_name")
78 .unwrap_or("cluster_key".to_string()),
79 master_ip: settings
80 .get::<String>("cluster.master_ip")
81 .unwrap_or(DEFAULT_IP.to_string()),
82 master_port: match settings.get::<u16>("cluster.master_port") {
83 Ok(port) =>
84 match port {
85 0 => MASTER_PORT,
86 _ => port,
87 }
88 Err(_) => MASTER_PORT,
89 },
90
91 domain_pub_key: match settings.get::<String>("cluster.domain_pub_key") {
92 Ok(domain) => Some(domain),
93 Err(_) => None,
94 },
95 }
96 }
97}