fix: don't use XDG spec, because this is a system service
This commit is contained in:
parent
f84046fd13
commit
a2cf322135
32
Cargo.lock
generated
32
Cargo.lock
generated
|
@ -123,7 +123,6 @@ version = "0.4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cloudflare",
|
"cloudflare",
|
||||||
"directories-next",
|
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"log",
|
"log",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
@ -237,27 +236,6 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "directories-next"
|
|
||||||
version = "2.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"dirs-sys-next",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "dirs-sys-next"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"redox_users",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "encoding_rs"
|
name = "encoding_rs"
|
||||||
version = "0.8.31"
|
version = "0.8.31"
|
||||||
|
@ -837,16 +815,6 @@ dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "redox_users"
|
|
||||||
version = "0.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
|
|
||||||
dependencies = [
|
|
||||||
"getrandom",
|
|
||||||
"redox_syscall",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.7.0"
|
version = "1.7.0"
|
||||||
|
|
|
@ -18,7 +18,6 @@ serde = { version = "1.0.152", features = ["derive"] }
|
||||||
anyhow = "1.0.68"
|
anyhow = "1.0.68"
|
||||||
env_logger = "0.10.0"
|
env_logger = "0.10.0"
|
||||||
log = "0.4.17"
|
log = "0.4.17"
|
||||||
directories-next = "2.0.0"
|
|
||||||
tokio = { version = "1.23.0", features = ["time", "macros", "rt-multi-thread"] }
|
tokio = { version = "1.23.0", features = ["time", "macros", "rt-multi-thread"] }
|
||||||
serde_yaml = "0.9.16"
|
serde_yaml = "0.9.16"
|
||||||
cloudflare = "0.10.1"
|
cloudflare = "0.10.1"
|
||||||
|
|
|
@ -16,9 +16,8 @@ cargo install cloudflare-ddns-service
|
||||||
## Usage
|
## Usage
|
||||||
### Config
|
### Config
|
||||||
|
|
||||||
The services adheres to the XDG spec for locating the config file. In most
|
`cloudflare-ddns-service` expects to find a config file at
|
||||||
cases, that means the config file is located at
|
`/etc/cloudflare-ddns-service/config.yml`.
|
||||||
`~/.config/cloudflare-ddns-service/config.yaml`.
|
|
||||||
|
|
||||||
As you can see from the path, the configuration should be a yaml file. A sample
|
As you can see from the path, the configuration should be a yaml file. A sample
|
||||||
could look like this:
|
could look like this:
|
||||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -1,7 +1,6 @@
|
||||||
mod network;
|
mod network;
|
||||||
|
|
||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use directories_next::ProjectDirs;
|
|
||||||
use network::{get_current_ipv4, get_current_ipv6, get_record, get_zone, update_record};
|
use network::{get_current_ipv4, get_current_ipv6, get_record, get_zone, update_record};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_yaml::{from_str, to_writer};
|
use serde_yaml::{from_str, to_writer};
|
||||||
|
@ -44,16 +43,15 @@ struct Cache {
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
||||||
|
|
||||||
let dirs = ProjectDirs::from("re", "jcg", "cloudflare-ddns-service")
|
let config_string = read_to_string("/etc/cloudflare-ddns-service/config.yaml")
|
||||||
.context("Couldn't find project directories! Is $HOME set?")?;
|
|
||||||
let config_string = read_to_string(dirs.config_dir().join("config.yaml"))
|
|
||||||
.context("couldn't read config file!")?;
|
.context("couldn't read config file!")?;
|
||||||
let config: Config = from_str(&config_string)?;
|
let config: Config = from_str(&config_string)?;
|
||||||
let cache_path = dirs.cache_dir().join("cache.yaml");
|
let cache_dir = PathBuf::from("/var/cache/cloudflare-ddns-service");
|
||||||
|
let cache_path = cache_dir.join("cache.yaml");
|
||||||
let mut cache = match read_to_string(&cache_path) {
|
let mut cache = match read_to_string(&cache_path) {
|
||||||
Ok(cache) => from_str(&cache)?,
|
Ok(cache) => from_str(&cache)?,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
create_dir_all(dirs.cache_dir())?;
|
create_dir_all(cache_dir)?;
|
||||||
Cache::default()
|
Cache::default()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue