support systemd credentials

This commit is contained in:
Robin Appelman 2024-03-27 22:57:19 +01:00
commit 8fc69baf69
3 changed files with 313 additions and 307 deletions

609
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -7,13 +7,14 @@ rust-version = "1.67.0"
license = "MIT"
[dependencies]
rss = "2.0.6"
reqwest = { version = "0.11.23", default-features = false, features = ["rustls-tls", "json"] }
tokio = { version = "1.35.1", features = ["macros", "rt-multi-thread", "signal"] }
serde = { version = "1.0.195", features = ["derive"] }
serde_json = "1.0.111"
rss = "2.0.7"
reqwest = { version = "0.12.2", default-features = false, features = ["rustls-tls", "json"] }
tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread", "signal"] }
serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.115"
toml = "0.8.8"
color-eyre = "0.6.2"
env_logger = "0.10.1"
log = "0.4.20"
time = { version = "0.3.31", features = ["serde", "serde-well-known"] }
color-eyre = "0.6.3"
env_logger = "0.10.2"
log = "0.4.21"
time = { version = "0.3.34", features = ["serde", "serde-well-known"] }
secretfile = "0.1.0"

View file

@ -6,6 +6,7 @@ use std::collections::HashMap;
use std::convert::{TryFrom, TryInto};
use std::path::Path;
use reqwest::header::{HeaderValue, InvalidHeaderValue};
use secretfile::{load, SecretError};
use serde::de::Error;
use serde_json::Value;
@ -56,11 +57,10 @@ impl TryFrom<&HeaderVal> for HeaderValue {
}
}
fn load_secret(raw: String) -> Result<String, std::io::Error> {
fn load_secret(raw: String) -> Result<String, SecretError> {
let path: &Path = raw.as_ref();
if raw.starts_with('/') && path.exists() {
let raw = read_to_string(raw)?;
Ok(raw.trim().into())
if (raw.starts_with('/') && path.exists()) || raw.contains("$CREDENTIALS_DIRECTORY") {
load(&raw)
} else {
Ok(raw)
}