Releases: qdm12/ddns-updater
Releases · qdm12/ddns-updater
v2.4.0
Features
- Support for domaindiscount24.com (#207)
- Support Shoutrrr addresses
PUBLICIP_DNS_TIMEOUTvariable
Bug fixes
- Wildcard hosts (#214)
- Keep multi-dots wildcard host structure in display strings
- Use a function
BuildURLQueryHostnamefor API calls to send the correct wildcard hostname - Send the wildcard character in API calls
- Fix behavior for wildcard hosts for: cloudflare, ddnss.de, digitalocean, dnsomatic, dreamhost, dyn, dynv6, google, informaniak, njalla, noip, opendns, ovh, selfhost.de, spdyn, strato and variomedia
- Healthcheck query to
127.0.0.1:portinstead of for example0.0.0.0:port DATADIRdefaults to/updater/data- Server listens on all interfaces (IPv4 and IPv6) instead of just
0.0.0.0 - Context dependent DNS resolutions (to exit the program promptly)
- Larger default timeout of 3s for DNS query of public IP
Documentation
- Add missing architectures to readme:
ppc64le,s390x,riscv64andarmv6
Maintenance
internal/configpackage for environment variables- Remove
github.com/ovh/go-ovhdependency - Use
time/tzdataanonymous import instead of Alpine'stzdata - Use
github.com/qdm12/goshutdownto handle program shutdown - Simplify file paths logic
- Use
signal.NotifyContext(introduced with Go 1.16) - Inject more objects to
_main()in main.go:params.Envos.Args- a default parent logger
- More robust main logic
- Change
main()to encapsulate_main()and handle OS signals itself _main()returns an error instead of an exit code
- Change
- Move
setupGotifyinline in_main()function - Local scoped
buildInfovariable - Optimize Dockerfile for faster rebuilds, better layer caching and faster cross-builds
- Pull
xcputranslatefor build platform only (faster x-builds) - Install
golangci-lintfrom qmcgaw/binpot (faster) - Install
g++in base stage (for caching) - Copy
xcputranslatein base stage (for caching) - Install
golangci-lintin base stage (for caching) - Push
ARG TARGETPLATFORMdown in build stage (faster x-builds) - Push versioning
ARGs andLABELdown in final stage (for caching) - Move data directory
COPYup in final stage (for caching)
- Pull
- Upgrade
golangci-linttov1.41.1 - Upgrade
qmcgaw/xcputranslatetov0.6.0 - Set Docker test stage entrypoint in Dockerfile instead of CI
v2.3.0
Features
- HTTP and DNS Public IP fetching options (#136, #187)
- Njalla support (#180, #181)
- SPDyn support (#182, #179)
- Variomedia support (#208, #174)
- Allow to run without settings
debuglog levelHEALTH_SERVER_ADDRESSto change the internal health server listening address- Request URL and body debug logs for each provider
Fixes
- Read
CONFIGenvironment variable with case sensitivity (#192) - thanks @mchill - Dreamhost: create record before removing outdated one (#206)
ipversiondisplay (#190)ROOT_URLbehavior when served outside of root (bug introduced withgo-chi)IPV6_PREFIXsupport to avoid unneeded updates when using IPV6
Maintenance
- Use embed for static UI (#134)
internal/settingsshared code in sub packages- Move settings construction from
internal/paramstointernal/settings - Split each provider in own subpackage in
internal/settings - Rename each provider file to
provider.go - Upgrade all Go dependencies
- Upgrade devcontainer settings
- Upgrade linting setup with Golangci-lint to
v1.40.1 - Add more linters
- Remove rules from
.golangci.ymlin favor of inline//nolint:comments - Remove
regex.Matcherarg if not needed for some providers - Common receiver struct for all providers
- Use
ioinstead ofioutilwhenever possible
v2.2.0
v2.1.0
Features
- Only call the DNS APIs if the public IP address changes (#63)
- Only one ip method per ip version (ipv4, ipv6, ipv4/v6) (#63)
- Fetches the public ip address once every period for all records (#63)
- Support to update ipv4 and ipv6 records separately
- Support multiple comma separated hosts for each setting
- Read the JSON configuration from an environment variable
CONFIG(#62) - New IP fetch methods:
- New DNS providers support:
- Cloudflare: obtain identifier programmatically (#71)
- IPv6 support for all providers except Namecheap (#71 & #72)
- Resolve IP addresses for each fqdn to compare with the public IP address obtained, instead of comparing with persisted values
- Better log messages when IP address changes
- Handle Cloudflare proxied records (#104)
- Stop sending updates when record is in abuse state for a cooldown period
UPDATE_COOLDOWN_PERIOD(#140) - OVH allow domain parameter (#111)
- OVH subdomains (*) support with zone DNS (#154)
- DDNSgopher favicon (#159)
- Debug logs with debug log level
- 5-tries DNS resolution per record hostname
Bug fixes
- Cloudflare named as
Dreamhoston Web UI (#79) - Accept Cloudflare tokens with a
-in them (#86) - Remove regex domain check (#92)
- Remove regex check for Clouidflare API key (#101)
- Accept email addresses with
+in them (#112) - Accept GoDaddy new key format (#113 and #169)
- Listening port defaults to
8000outside Docker (#152) - Remove GoDaddy secret regex check
Changes
- DuckDNS setting changed to
hostinstead ofdomain - Replace
no_dns_lookupoption withproxiedoption only valid for Clouflare (#160)
Documentation
- Add issue templates
- Readme improved (#106, #151, #165, #167)
- Readme sections moved to docs (#128) (thanks @gauravspatel)
- Timezone
TZvariable (#90) - DuckDNS documentation fix (#171)
- DDNSgopher logo in readme (#157)
- Architecture section in readme
Maintenance
- DNS provider names sorted alphabetically
UNSETstatus before a record gets updated the first time- Using Alpine 3.13 and Go 1.16 for building the binary
- Update Go modules dependencies
- Refactor HTTP servers (#164)
- Rework current server
- Update call is blocking
- Run first update without blocking
- Build information written to Go binary at build
- Use native
http.Client(#145) withhttp.NewRequestWithContextinstead of custom client interface - Remove uuid dependency
- Streamline HTTP headers setting
- Logger upgraded with golibs (using native
loginstead of Uber's zap) (#170) - Replace
DNSLookup()method name withProxied()(#160)
Dev tooling
- Update dev container settings
- Go extension
- Remove rewrap extension
- SSH bind mount as read write
- Remove local vscode directory
- Upgrade golangci-lint to 1.37.0
- Add more Go linters to .golangci.yml
- Removed some Github workflows
- Greetings doesn't work on forked PRs
- Misspell is done with golangci-lint
- Security workflow doesn't run on Scratch based docker images
- Default
BUILDPLATFORM=linux/amd64for older Docker builds - Improve Github Actions workflows to build images for all branches and releases
Scratch based Docker image
- No SQLite support
- JSON file stored data
- Periodic backup
Stable release and backward compatible with SQlite
Associated Docker image tag is also v1
- Web UI (only display)
- Support for A records update for GoDaddy, Namecheap, Cloudflare, Dreamhost, NoIP, DNSPod, Infomaniak, ddnss.de and DuckDNS
- Support for AAAA records update for Infomaniak and ddnss.de
- Using JSON file for persistence of changes, with SQLite for backward compatibility
- Compatible with Gotify
- Docker healthcheck
- Multiple IP methods available