diff --git a/crates/frontend/src/config.rs b/crates/frontend/src/config.rs index 54147ae..3d13679 100644 --- a/crates/frontend/src/config.rs +++ b/crates/frontend/src/config.rs @@ -1,6 +1,7 @@ use serde::{Deserialize, Serialize}; #[derive(Deserialize, Serialize, Debug, Clone)] +#[serde(deny_unknown_fields)] pub struct FrontendConfig { #[serde(serialize_with = "hex::serde::serialize")] #[serde(deserialize_with = "hex::serde::deserialize")] diff --git a/src/config.rs b/src/config.rs index 1056c06..3edd299 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,53 +2,50 @@ use rustical_frontend::FrontendConfig; use rustical_store::auth::StaticUserStoreConfig; use serde::{Deserialize, Serialize}; -fn http_default_host() -> String { - "0.0.0.0".to_owned() -} -fn http_default_port() -> u16 { - 4000 -} - #[derive(Debug, Deserialize, Serialize)] +#[serde(deny_unknown_fields, default)] pub struct HttpConfig { - #[serde(default = "http_default_host")] pub host: String, - #[serde(default = "http_default_port")] pub port: u16, } impl Default for HttpConfig { fn default() -> Self { Self { - host: http_default_host(), - port: http_default_port(), + host: "0.0.0.0".to_owned(), + port: 4000, } } } #[derive(Debug, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] pub struct SqliteDataStoreConfig { pub db_url: String, } #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "backend", rename_all = "snake_case")] +#[serde(deny_unknown_fields)] pub enum DataStoreConfig { Sqlite(SqliteDataStoreConfig), } #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "backend", rename_all = "snake_case")] +#[serde(deny_unknown_fields)] pub enum AuthConfig { Static(StaticUserStoreConfig), } #[derive(Debug, Deserialize, Serialize, Default)] +#[serde(deny_unknown_fields, default)] pub struct TracingConfig { pub opentelemetry: bool, } #[derive(Debug, Deserialize, Serialize)] +#[serde(deny_unknown_fields)] pub struct Config { pub data_store: DataStoreConfig, pub auth: AuthConfig,