Skip to content

Releases: qdm12/ddns-updater

v2.4.0

29 Jun 21:58
Compare
Choose a tag to compare

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 example 0.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 and armv6

Maintenance

  • internal/config package for environment variables
  • Remove github.com/ovh/go-ovh dependency
  • Use time/tzdata anonymous import instead of Alpine's tzdata
  • 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
  • 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 ARGs and LABEL down in final stage (for caching)
    • Move data directory COPY up in final stage (for caching)
  • Upgrade golangci-lint to v1.41.1
  • Upgrade qmcgaw/xcputranslate to v0.6.0
  • Set Docker test stage entrypoint in Dockerfile instead of CI

v2.3.0

07 Jun 15:01
Compare
Choose a tag to compare

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 level
  • HEALTH_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 with go-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 to internal/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 of ioutil whenever possible

v2.2.0

22 Mar 21:39
106bcae
Compare
Choose a tag to compare

Features

  • pkg/publicip package to fetch your public IP address over HTTPs and DNS (#158 and #186)

Documentation

Maintenance

  • Remove unused Insert database method
  • Use anonymous variable name _ for unused matcher argument to settings constructors

v2.1.0

07 Mar 01:36
Compare
Choose a tag to compare

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:
    • Google (#69)
    • NoIP (#74)
    • ddnss.de removed as it's geo-blocked
  • 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 of domain
  • Replace no_dns_lookup option with proxied 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) with http.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 with Proxied() (#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

15 May 23:38
Compare
Choose a tag to compare
  • No SQLite support
  • JSON file stored data
  • Periodic backup

Stable release and backward compatible with SQlite

04 Apr 15:51
Compare
Choose a tag to compare

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