diff options
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | src/config.rs | 1 | ||||
-rw-r--r-- | src/main.rs | 16 | ||||
-rw-r--r-- | wgconfd@.service | 2 |
4 files changed, 14 insertions, 6 deletions
@@ -10,6 +10,7 @@ serde = { version = "1.0.89" } serde_derive = { version = "1.0.89" } serde_json = { version = "1.0.39" } chrono = { version = "0.4.6", default-features = false } +toml = { version = "0.5" } [profile.release] panic = "abort" diff --git a/src/config.rs b/src/config.rs index 00874c2..cd874da 100644 --- a/src/config.rs +++ b/src/config.rs @@ -40,6 +40,7 @@ pub struct Config { #[serde(flatten)] pub update_config: UpdateConfig, + #[serde(rename = "source")] pub sources: Vec<Source>, } diff --git a/src/main.rs b/src/main.rs index f5ebb26..d556064 100644 --- a/src/main.rs +++ b/src/main.rs @@ -204,13 +204,19 @@ fn fetch_source(url: &str) -> io::Result<proto::Source> { } fn load_config(path: &str) -> io::Result<config::Config> { - use serde_json; + use toml; use std::fs; - let config_file = fs::File::open(path)?; - let rd = io::BufReader::new(config_file); - let mut de = serde_json::Deserializer::from_reader(rd); - Ok(serde::Deserialize::deserialize(&mut de)?) + let mut data = String::new(); + { + use io::Read; + let mut config_file = fs::File::open(path)?; + config_file.read_to_string(&mut data)?; + } + let mut de = toml::Deserializer::new(&data); + serde::Deserialize::deserialize(&mut de).map_err(|e| { + io::Error::new(io::ErrorKind::InvalidData, e) + }) } fn main() { diff --git a/wgconfd@.service b/wgconfd@.service index d6e4127..db71870 100644 --- a/wgconfd@.service +++ b/wgconfd@.service @@ -7,7 +7,7 @@ Before=network-pre.target nftables.service systemd-networkd.service NetworkManag Type=simple CapabilityBoundingSet=CAP_NET_ADMIN ExecStartPre=/usr/bin/wg setconf %i /etc/wireguard/%i.conf -ExecStart=/usr/local/bin/wgconfd %i /etc/wireguard/%i.json +ExecStart=/usr/local/bin/wgconfd %i /etc/wireguard/%i.toml StandardError=journal SyslogLevelPrefix=true |