Compare commits

...

2 commits

Author SHA1 Message Date
fc2361614e
More docs 2024-12-04 23:55:11 -08:00
23ceeffcfa
Print update error messages 2024-12-04 23:40:25 -08:00
3 changed files with 43 additions and 4 deletions

View file

@ -30,5 +30,8 @@ strip = "symbols"
lto = "thin"
codegen-units = 1
[package.metadata.deb]
name = "cloudflare-ddns-rs"
[package.metadata.deb.systemd-units]
unit-scripts = "systemd/"

View file

@ -29,8 +29,15 @@ different IP address.
## Installation
First, create an initial file at `/etc/cloudflare-ddns.toml`. Populate it with
the following:
First, create an initial file at `/etc/cloudflare-ddns.toml`. Set the permissions
so that it is readable and writable by `root` only:
```
# sudo touch /etc/cloudflare-ddns.toml
# chmod 600 /etc/cloudflare-ddns.toml
```
Populate it with the following:
```toml
[account]
@ -128,4 +135,17 @@ successful, installation is complete.
A `.deb` package is created via [`cargo-deb`].
[`cargo-deb`]: https://github.com/kornelski/cargo-deb
[`cargo-deb`]: https://github.com/kornelski/cargo-deb
## Security
This project attempts to take security seriously. Please note the following
hardening notes applied by default.
### Hardened `systemd` service configuration
In principle, this service needs very little access to a host, and needs access
to the internet. As a result, the default `systemd` service configuration
aggressively restricts the capabilities of the binary to a minimum set of
features, namely access to the internet and dependency to do so. If you believe
more directives could be provided, please create a PR.

View file

@ -264,6 +264,22 @@ async fn handle_run(conf: Config, run: Run) -> Result<()> {
cache_file.0.insert(record.id, addr);
continue;
}
for message in resp.messages {
info!(
code = message.code,
message = message.message,
"Cloudflare API returned message"
);
}
for error in resp.errors {
warn!(
code = error.code,
message = error.message,
"Cloudflare API returned error"
);
}
}
}
@ -312,7 +328,7 @@ fn ip_cache_path(cache_dir: Option<PathBuf>) -> Result<PathBuf> {
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
struct Message {
code: u16,
code: u32,
message: String,
}