diff --git a/Cargo.lock b/Cargo.lock index 6a29ce2..ab82147 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "cloudflare-ddns" -version = "2.1.1" +version = "2.1.2" dependencies = [ "if-addrs", "rand", diff --git a/Cargo.toml b/Cargo.toml index fb0c976..918dc69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cloudflare-ddns" -version = "2.1.1" +version = "2.1.2" edition = "2021" description = "Access your home network remotely via a custom domain name without a static IP" license = "GPL-3.0" diff --git a/RELEASE_NOTES_2.1.2.md b/RELEASE_NOTES_2.1.2.md new file mode 100644 index 0000000..09b14e8 --- /dev/null +++ b/RELEASE_NOTES_2.1.2.md @@ -0,0 +1,48 @@ +# cloudflare-ddns v2.1.2 — Notification & Domain Casing Fixes + +This patch release fixes three bugs reported on GitHub. + +## Bug fixes + +- **Mixed-case domains now match existing DNS records (#255).** + In env-var mode, configuring a domain with mixed casing (for example + `ExaMple.com`) caused every update cycle to attempt a duplicate record + create and fail with Cloudflare error `81058: An identical record already + exists.` Cloudflare normalizes record names to lowercase server-side, so + the lookup is now case-insensitive. + +- **Pushover notifications work again (#258).** + The shoutrrr-style URL `pushover://shoutrrr:TOKEN@USER` (the canonical form + from `containrrr/shoutrrr`) was being parsed with the literal `shoutrrr:` + username included in the API token, which Pushover rejected. The parser + now strips the optional `:` prefix from the token segment, restoring + the v2.0.7 behavior. Optional shoutrrr query parameters (`?devices=...`, + `?priority=...`) are tolerated. + +- **Gotify notifications now produce a valid request URL (#262).** + The Gotify URL parser blindly appended `/message` after any query string, + producing malformed webhook URLs like + `https://host:9090?token=XYZ/message`. The parser now follows shoutrrr's + canonical layout — token as the final path segment or `?token=` query — + and supports `?disabletls=yes` to switch the resulting webhook from HTTPS + to HTTP for typical home-LAN setups, plus the `gotify+http://` / + `gotify+https://` aliases. + +## Already addressed (closing #257) + +The robust public-IP discovery enhancements requested in #257 (multi-endpoint +trace fallback, strict address-family validation, API request timeouts, +duplicate record cleanup) were already folded into the Rust port shipped in +v2.0.8 — see `src/provider.rs` (`CF_TRACE_PRIMARY` / `CF_TRACE_FALLBACK`, +`validate_detected_ip`, `build_split_client`) and `src/cloudflare.rs` +(`set_ips` dedup behavior, per-request `timeout`). + +## Upgrade + +```bash +docker pull timothyjmiller/cloudflare-ddns:2.1.2 +# or +docker pull timothyjmiller/cloudflare-ddns:latest +``` + +No configuration changes are required.