Releases: qdm12/ddns-updater
Releases · qdm12/ddns-updater
v2.4.0
Features
- Support for domaindiscount24.com (#207)
- Support Shoutrrr addresses
PUBLICIP_DNS_TIMEOUT
variable
Bug fixes
- Wildcard hosts (#214)
- Keep multi-dots wildcard host structure in display strings
- Use a function
BuildURLQueryHostname
for 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:port
instead of for example0.0.0.0:port
DATADIR
defaults 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
,riscv64
andarmv6
Maintenance
internal/config
package for environment variables- Remove
github.com/ovh/go-ovh
dependency - Use
time/tzdata
anonymous import instead of Alpine'stzdata
- Use
github.com/qdm12/goshutdown
to handle program shutdown - Simplify file paths logic
- Use
signal.NotifyContext
(introduced with Go 1.16) - Inject more objects to
_main()
in main.go:params.Env
os.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
setupGotify
inline in_main()
function - Local scoped
buildInfo
variable - Optimize Dockerfile for faster rebuilds, better layer caching and faster cross-builds
- Pull
xcputranslate
for build platform only (faster x-builds) - Install
golangci-lint
from qmcgaw/binpot (faster) - Install
g++
in base stage (for caching) - Copy
xcputranslate
in base stage (for caching) - Install
golangci-lint
in base stage (for caching) - Push
ARG TARGETPLATFORM
down in build stage (faster x-builds) - Push versioning
ARG
s andLABEL
down in final stage (for caching) - Move data directory
COPY
up in final stage (for caching)
- Pull
- Upgrade
golangci-lint
tov1.41.1
- Upgrade
qmcgaw/xcputranslate
tov0.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
debug
log levelHEALTH_SERVER_ADDRESS
to change the internal health server listening address- Request URL and body debug logs for each provider
Fixes
- Read
CONFIG
environment variable with case sensitivity (#192) - thanks @mchill - Dreamhost: create record before removing outdated one (#206)
ipversion
display (#190)ROOT_URL
behavior when served outside of root (bug introduced withgo-chi
)IPV6_PREFIX
support to avoid unneeded updates when using IPV6
Maintenance
- Use embed for static UI (#134)
internal/settings
shared code in sub packages- Move settings construction from
internal/params
tointernal/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.yml
in favor of inline//nolint:
comments - Remove
regex.Matcher
arg if not needed for some providers - Common receiver struct for all providers
- Use
io
instead ofioutil
whenever 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
Dreamhost
on 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
8000
outside Docker (#152) - Remove GoDaddy secret regex check
Changes
- DuckDNS setting changed to
host
instead ofdomain
- Replace
no_dns_lookup
option withproxied
option only valid for Clouflare (#160)
Documentation
- Add issue templates
- Readme improved (#106, #151, #165, #167)
- Readme sections moved to docs (#128) (thanks @gauravspatel)
- Timezone
TZ
variable (#90) - DuckDNS documentation fix (#171)
- DDNSgopher logo in readme (#157)
- Architecture section in readme
Maintenance
- DNS provider names sorted alphabetically
UNSET
status 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.NewRequestWithContext
instead of custom client interface - Remove uuid dependency
- Streamline HTTP headers setting
- Logger upgraded with golibs (using native
log
instead 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/amd64
for 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