diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/config.rs b/src/config.rs index 18c3bab..4b333fe 100644 --- a/src/config.rs +++ b/src/config.rs | |||
@@ -4,6 +4,7 @@ use serde::Deserialize; | |||
4 | use crate::auth; | 4 | use crate::auth; |
5 | 5 | ||
6 | #[derive(Debug, Clone, Deserialize)] | 6 | #[derive(Debug, Clone, Deserialize)] |
7 | #[serde(default)] | ||
7 | pub struct Config { | 8 | pub struct Config { |
8 | pub serveraddr: String, | 9 | pub serveraddr: String, |
9 | pub pingtimeout: i64, | 10 | pub pingtimeout: i64, |
@@ -11,23 +12,37 @@ pub struct Config { | |||
11 | pub auth: Auth, | 12 | pub auth: Auth, |
12 | } | 13 | } |
13 | 14 | ||
15 | impl Default for Config { | ||
16 | fn default() -> Self { | ||
17 | Self { | ||
18 | serveraddr: "0.0.0.0:7229".to_string(), | ||
19 | pingtimeout: 10, | ||
20 | pingthreshold: 1, | ||
21 | auth: Default::default(), | ||
22 | } | ||
23 | } | ||
24 | } | ||
25 | |||
14 | #[derive(Debug, Clone, Deserialize)] | 26 | #[derive(Debug, Clone, Deserialize)] |
15 | pub struct Auth { | 27 | pub struct Auth { |
16 | pub method: auth::Methods, | 28 | pub method: auth::Methods, |
17 | pub secret: String, | 29 | pub secret: String, |
18 | } | 30 | } |
19 | 31 | ||
32 | impl Default for Auth { | ||
33 | fn default() -> Self { | ||
34 | Self { | ||
35 | method: auth::Methods::None, | ||
36 | secret: String::new(), | ||
37 | } | ||
38 | } | ||
39 | } | ||
40 | |||
20 | impl Config { | 41 | impl Config { |
21 | pub fn load() -> Result<Self, config::ConfigError> { | 42 | pub fn load() -> Result<Self, config::ConfigError> { |
22 | let config = config::Config::builder() | 43 | let config = config::Config::builder() |
23 | .set_default("serveraddr", "0.0.0.0:7229")? | 44 | .add_source(File::with_name("/etc/webol").required(false)) |
24 | .set_default("pingtimeout", 10)? | ||
25 | .set_default("pingthreshold", 1)? | ||
26 | .set_default("timeoffset", 0)? | ||
27 | .set_default("auth.method", "none")? | ||
28 | .set_default("auth.secret", "")? | ||
29 | .add_source(File::with_name("config.toml").required(false)) | 45 | .add_source(File::with_name("config.toml").required(false)) |
30 | .add_source(File::with_name("config.dev.toml").required(false)) | ||
31 | .add_source(config::Environment::with_prefix("WEBOL").separator("_")) | 46 | .add_source(config::Environment::with_prefix("WEBOL").separator("_")) |
32 | .build()?; | 47 | .build()?; |
33 | 48 | ||