Skip to content

Releases: qdm12/ddns-updater

v2.10.0

Choose a tag to compare

@qdm12 qdm12 released this 01 May 02:18
6499618

Long overdue release, enjoy 😉

Features

Fixes

  • DNS resolution: prevent program hanging if all DNS resolution fail consecutively (#1099)
  • Route53: don't replace wildcard character * with any when sending update request (#1036)
  • Ionos: use filepath/path for joining URL paths to avoid errors in Windows (#984)
  • DonDominio: change key JSON parameter from apikey to password (#969)
  • deSEC: only update specified ip version (#961)
  • Njalla: add trailing slash to URL path (#978)
  • Update logic: reuse HTTP client transport instead of cloning it (#1095)

Documentation

  • Log: log out <none> when no IP is given to ipsToString
  • Porkbun: align name as Porkbun in the UI (#1066)
  • All providers: add detail on ipv6_suffix about temporary IPv6 addresses
  • Readme:
    • add missing link to Hetzner doc (#977)
    • fix url to #136 to work outside Github (#1075)
    • fix invalid URLs
      • remove no longer working dockeri.co badge
      • remove outdated tokei badge link
      • fix docker image tags link to use GitHub Packages
    • fix outdated providers list (#1031)
  • INWX: clarify DynDNS account requirement (#939)
  • Ionos: add api-key structure clarification (#996)
  • NameSilo: fix typo in namesilo.com (#888)
  • Porkbun: fix example key prefixes in the readme (#995)

Maintenance

Code quality

  • Config tests: take into account the OS specific file separator (#985)

Dependencies

  • Bump github.com/breml/rootcerts from 0.2.19 to 0.3.5 (#1080, #1118, #1126)
  • Bump github.com/go-chi/chi/v5 from 5.2.0 to 5.2.3 (#933, #1078, #1081)
  • Bump github.com/miekg/dns from 1.1.62 to 1.1.72 (#962, #1117)
  • Bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (#1082)
  • Bump golang.org/x/mod from 0.31.0 to 0.32.0 (#1079)
  • Bump golang.org/x/net from 0.33.0 to 0.53.0 (#968, #1116)
  • Bump golang.org/x/oauth2 from 0.24.0 to 0.36.0 (#952, #1115)
  • Upgrade transitive dependencies (#1071)

CI

  • Use Go version from go.mod in Github actions
  • Add 429 and 403 status code as valid code for markdown link check
  • Bump actions/checkout from v4 to v6
  • Bump actions/setup-go from 5 to 6 (#1084)
  • Bump crazy-max/ghaction-github-labeler from 5 to 6 (#1103)
  • Bump DavidAnson/markdownlint-cli2-action from 17 to 23 (#1083, #1120)
  • Bump docker/build-push-action from 6 to 7 (#1119)
  • Bump docker/login-action from 3 to 4 (#1122)
  • Bump docker/metadata-action from 5 to 6 (#1121)
  • Bump docker/setup-buildx-action from 3 to 4 (#1123)
  • Bump docker/setup-qemu-action from 3 to 4 (#1124)
  • Bump github/codeql-action from 3 to 4 (#1069, #1086)
  • Bump goreleaser/goreleaser-action from 6 to 7 (#1101)
  • Bump peter-evans/dockerhub-description from 4 to 5 (#1085)
  • Bump Dockerfile xcputranslate to v0.9.0
  • Bump Dockerfile linter from v2.4.0 to v2.11.4

Development setup

  • Prefer using ghcr.io images
  • Linter:
    • upgraded from v2.4.0 to v2.11.4
    • add linters godoclint, iotamixing, modernize
  • Build:
    • bump Alpine from 3.20 to 3.23
    • bump Go version from 1.23 to 1.26
  • upgrade golang/mock to uber-go/mock v0.6.0
  • Devcontainer: upgrade godevcontainer to v0.22
    • Go upgraded from 1.23 to 1.26
    • golangci-lint upgraded to v2.11.4
    • Alpine upgraded from 3.20 to 3.23
    • Disable package comment requirement by gopls' staticcheck
    • Pull container image from ghcr.io

Contributors

@amroessam @eshirvana @foegra @floriantraber @francesco086 @jccint @jorge-carrasco @legend813 @likt0r @michaelkoelle @MrNuggelz @Mynacol @similicious @simonmarty @teranex @TheZoker @williambout

v2.9.1

Choose a tag to compare

@qdm12 qdm12 released this 01 May 02:09
55962eb

Fixes

  • fix program hanging if all dns resolution fail consecutively (#1099)
  • route53: don't replace wildcard character * with any when sending update request (#1036)
  • ionos: use filepath/path for joining URL paths to avoid errors in Windows (#984)
  • dondominio: change key JSON paramater from apikey to password (#969)
  • desec: only update specified ip version (#961)
  • njalla: add trailing slash to URL path (#978)

v2.9.0

Choose a tag to compare

@qdm12 qdm12 released this 24 Dec 10:38
78f3061

🎄 🎅 🎁 Merry Christmas 🎁🎅 🎄

Features

  • Support for domene.shop (#810)
  • Support for loopia.se (#842)
  • Support for vultr.com (#829)
  • Support myaddr.tools (#885)
  • Support for namesilo.com (#866)
  • Custom provider: allow empty ipv4 and ipv6 keys (see issue #875)
  • Possibility to run health server outside Docker and to disable it in a container
    • disable health server if the health listening address:port is empty
    • default health listening address:port to the empty string
    • Docker default health listening address:port to 127.0.0.1:9999

Fixes

  • Common update mechanism:
    • do not update if public IP address is within multiple IP addresses resolved
    • IPv6 hostname resolution fixed (it was previously only resolving IPv4)
  • Porkbun:
    • update API endpoint (#837)
    • delete default parked DNS entries if needed (#774)
      • delete default @ ALIAS entry when creating a record for the root domain or the wildcard domain
      • delete default * CNAME entry when creating a record for the wildcard domain
  • Gandi.net:
    • update API endpoint
    • leave ttl unmodified if the user does not specify it
  • DonDominio: wildcard support fixed
  • Netcup.de: allow wildcard domains (#863)
  • GCP: prevent crash for missing record (#846)
  • New file/directory permissions fixed given umask (see #813 for more details)
    • remove bad calculation of "our own" umask
    • remove umask "union effect"
    • do not touch system umask unless UMASK is set
    • set system umask only if UMASK is set
  • NoIP: handle response body messages before checking HTTP status code
  • Log: use go-chi realip middleware (#874)
  • Trim space and lower case all HTTP response 'plain' bodies
  • OVH: handling of invalid JSON error bodies fixed
  • Aliyun: error context fixed when handling bad request errors

Documentation

  • Readme: specify duckdns and goip are handled differently for multiple domains
  • GoIP: fix domain field documentation and add domain examples
    • eTLD must be goip.de or goip.it, not eTLD+1
    • remove old domain optional parameter documentation
  • DuckDNS: fix domain documentation on eTLD being duckdns.org and add domain examples

Maintenance

Code quality

  • do not re-check the owner is not empty within provider specific code
  • format code using gofumpt
  • Upgrade linter from v1.56.2 to v1.61.0
  • add new linters fatcontext, intrange and mirror
  • internal/update: use newer LookupNetIP resolver function to use netip.Addr directly

Dependencies

  • Upgrade Go from 1.22 to 1.23
  • Bump github.com/breml/rootcerts from 0.2.18 to 0.2.19 (#870)
  • Bump golang.org/x/net from 0.29.0 to 0.31.0
  • Bump github.com/qdm12/gosettings from 0.4.4-rc1 to 0.4.4
  • Bump golang.org/x/oauth2 from 0.23.0 to 0.24.0
  • Bump golang.org/x/mod from 0.21.0 to 0.22.0
  • Bump github.com/go-chi/chi/v5 from 5.1.0 to 5.2.0 (#881)
  • Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#871)

CI

  • Bump DavidAnson/markdownlint-cli2-action from 17 to 18

Development setup

  • change field source.organizeImports from true to "always"
  • migrate docker-compose.yml settings to devcontainer.json for codespaces support
  • update devcontainer readme
  • pin qmcgaw/godevcontainer image tag to v0.20-alpine

v2.8.2

Choose a tag to compare

@qdm12 qdm12 released this 21 Nov 22:55

Fixes

  • Common update mechanism:
    • do not update if public IP address is within multiple IP addresses resolved
    • IPv6 hostname resolution fixed (it was previously only resolving IPv4)
  • Porkbun:
    • update API endpoint (#837)
    • delete default parked DNS entries if needed (#774)
      • delete default @ ALIAS entry when creating a record for the root domain or the wildcard domain
      • delete default * CNAME entry when creating a record for the wildcard domain
  • Gandi.net:
    • update API endpoint
    • leave ttl unmodified if the user does not specify it
  • DonDominio: wildcard support fixed
  • Netcup.de: allow wildcard domains (#863)
  • GCP: prevent crash for missing record (#846)
  • NoIP: handle response body messages before checking HTTP status code
  • Trim space and lower case all HTTP response 'plain' bodies
  • OVH: handling of invalid JSON error bodies fixed
  • Aliyun: error context fixed when handling bad request errors

Documentation

  • GoIP: fix domain field documentation
    • eTLD must be goip.de or goip.it, not eTLD+1
    • remove old domain optional parameter documentation
  • DuckDNS: fix domain documentation on eTLD being duckdns.org

v2.8.1

Choose a tag to compare

@qdm12 qdm12 released this 20 Sep 07:16
c16287e

Fixes

  • New file/directory permissions fixed given umask (see #813 for more details)
    • remove bad calculation of "our own" umask
    • remove umask "union effect"
    • do not touch system umask unless UMASK is set
    • set system umask only if UMASK is set

v2.8.0

Choose a tag to compare

@qdm12 qdm12 released this 17 Sep 20:57
0674864

Pre-built binaries are attached at the bottom of this release notes in the Assets section. Feel free to 👍 the release!

Features

  • Read both domain ("eTLD+1") and owner (aka host) from the domain field
    • retro-compatible change, host or owner field still work if set
    • documentation updated to only use the domain field
  • Use umask from operating system to set permissions on created files
  • UMASK option to configure a custom umask value to use

Fixes

  • PublicIP HTTP echo: remove google provider which no longer works
  • Porkbun:
    • remove trailing '.' from ALIAS delete API call (#775)
    • fix wildcard behavior (#773)
  • noip: force useProviderIP to false when using IPv6
  • Don Dominio: remove unneeded name field
  • Upgrade github.com/qdm12/gosettings from v0.4.1 to v0.4.4-rc1
  • Bump github.com/breml/rootcerts from 0.2.17 to 0.2.18 (#814)

Changes

  • Deprecate provider_ip config field completely
    • change should not affect any existing configurations
    • change solves issues with dual stack updates (#767)
    • this option was unneeded and added unneeded complexity

Documentation

  • Readme: add instructions to build latest binary
  • Documentation updated to only use the domain field for both the domain and owner/host.
  • Readme: add README.md and docs/ versioned links for each recent releases
  • Readme: add AUR package name to features list section
  • Goip: fix documentation for the host parameter field
  • OVH: link to page to retrieve the consumer_key value
  • Porkbun: fix discrepancy in parameter field names
  • Readme: remove outdated Kanban Github board link

Maintenance

Code health

  • Rename cmd/updater to cmd/ddns-updater to have binaries named as ddns-updater by default
  • internal/providers:
    • split out settings validation in its own pure function
    • move domain check to each provider validation function
    • typo 'agend' fixed to 'agent' in user agent banned error (#790)
  • internal/models: remove unused DomainHost struct
  • rename host to owner
    • Retro-compatible change, host field still works
    • Code updated to use owner variable name
  • internal/providers/porkbun: refactor API code to use a generic httpPost function
  • internal/persistence/json: change mutex to be non embedded in Database struct
  • CI: ignore duckdns.org for links check

Dependencies

  • Drop dependency on github.com/chmike/domain
  • Bump golang.org/x/net from 0.26.0 to 0.29.0 (#806)
  • Bump golang.org/x/oauth2 from 0.21.0 to 0.23.0 (#802)
  • Bump github.com/qdm12/gosplash from 0.1.0 to 0.2.0 (#783)
  • Bump github.com/miekg/dns from 1.1.61 to 1.1.62 (#815)
  • Bump golang.org/x/mod from 0.18.0 to 0.21.0 (#801)
  • Bump github.com/go-chi/chi/v5 from 5.0.12 to 5.1.0 (#755)
  • Upgrade temporary build image Alpine from 3.19 to 3.20
  • Bump docker/build-push-action from 5 to 6 (#747)
  • Bump DavidAnson/markdownlint-cli2-action from 16 to 17 (#811)

v2.7.1

Choose a tag to compare

@qdm12 qdm12 released this 17 Sep 07:58

ℹ️ This is a bugfix release built with fixes only on top of the v2.7.0 program

Fixes

  • publicip/http: remove google provider which no longer works
  • Porkbun: fix wildcard behavior and alias deletion
  • Noip: force useProviderIP to false for IPv6
  • Don Dominio: remove unneeded name field

Documentation fixes

  • readme: add readme and docs/ versioned links
  • goip: fix documentation for the host field

Other minor fixes

  • Upgrade github.com/qdm12/gosettings from v0.4.1 to v0.4.4-rc1
  • Upgrade github.com/breml/rootcerts from 0.2.17 to 0.2.18
  • CI: ignore duckdns.org for links check

v2.6.1

Choose a tag to compare

@qdm12 qdm12 released this 26 Jun 19:00

⚠️ You might want to use release v2.7.0 which is below (due to the last commit time being before)

ℹ️ This is a bugfix release built with fixes only on top of the v2.6.0 program

Fixes

  • custom: url building fixed ⚠️
  • Web UI: IPs chronological order fixed (reverse) 🖱️
  • IP echo: allow custom urls for http ip providers
  • inwx: allow wildcard hosts
  • ionos: wildcard handling
  • name.com
    • update root domain record fixed
    • detect existing root domain records
  • noip
    • IPv6 handling fixed
    • handle useproviderip set to true correctly
  • porkbun: wildcard update fixed

v2.7.0

Choose a tag to compare

@qdm12 qdm12 released this 26 Jun 19:32

Pre-built binaries are attached at the bottom of this release notes in the Assets section. Feel free to 👍 the release!

Features

  • Web UI: improvements and fixes (#687)
  • changeip.com support
  • route53 simple routing support (#715)
  • CONFIG_FILEPATH (or --config-filepath) option to specify a configuration file path
  • healthchecks.io
    • fail and exit codes support
    • HEALTH_HEALTHCHECKSIO_BASE_URL option
  • container: /updater/data built-in with correct ownership (#634)
  • publicip/http:
    • add multiple providers for all IP versions: icanhazip, ident, nnev, wtfismyip, seeip.org
    • add changeip for ipv4orv6
  • publicip/info: add ip2location.io provider
  • SERVER_ENABLED option defaulting to yes
  • Print version when the first argument is version, -version or --version
  • server: serve root at /rooturl on top of /rooturl/
  • validate domain strings for providers using it (#638)

Fixes

See v2.6.1 for fixes incorporated in this release compared to v2.6.0

  • container: rename /updater/app to /updater/ddns-updater so it can easily be found in running processes (see #729)
  • health server: only run it when running in a container
  • trim spaces from each "host" value
  • cloudflare: prevent empty "key" value if "email" is set
  • godaddy: link to comment when status code 403 is received
  • ovh: add no host case handling

Documentation

  • readme: update for standalone binaries
    • update description and title to be generic and non-specific to containers
    • describe availability as container image and prebuilt binaries
    • split features in subsections
  • readme: fix public ip echo custom url prefix url:https:// instead of https://
  • readme: RESOLVER_ADDRESS description improved
  • readme: HEALTH_HEALTHCHECKSIO_UUID description improved
  • readme: reference Qnap setup guide (issue #708)
  • readme: better explain container directory and file creation
  • readme: fix missing allinkl document link
  • contributing document with example provider
    • add example provider in code and docs/example.md
    • merge contributing guides together
    • add contributing section on adding a new provider
  • contributing: change 'remote containers extension' to new 'dev containers extension' (#696)
  • devcontainer: change 'remote containers extension' to new 'dev containers extension'
  • docs/infomaniak.md: add missing details and guide (#677)
  • docs/: fix typo identifiersuffix -> identifier suffix

Maintenance

Coding

  • migrate to service architecture with github.com/qdm12/goservices (#743)
  • porkbun: add context to top level errors
  • linter
    • remove invalid configuration file fields
    • add multiple linters
  • cloudflare: unexport createRecord method
  • public ip: better error messages stating the provider type if unknown
  • cmd/updater: split main function into smaller functions
  • gcp: validate credentials JSON object has "type" field
  • change ttl type from int/uint/int32 to uint32

Dependencies

  • drop Google SDK dependency
    • depend only on golang.org/x/oauth2
    • reduce program size from 17MB to 11.5MB
  • bump github.com/qdm12/gosettings from 0.4.0-rc9 to 0.4.1 (#683)
  • bump github.com/breml/rootcerts from 0.2.14 to 0.2.17 (#612, #631, #741)
  • bump github.com/miekg/dns from 1.1.57 to 1.1.61 (#600, #745)
  • bump golang.org/x/mod from 0.14.0 to 0.18.0 (#637, #736)
  • bump github.com/go-chi/chi/v5 from 5.0.11 to 5.0.12 (#654)
  • bump github.com/stretchr/testify from 1.8.4 to 1.9.0 (#662)
  • Upgrade Go from 1.21 to 1.22

CI

  • bump actions/checkout from 3 to 4 (#599)
  • bump actions/setup-go from 2 to 5 (#630)
  • bump crazy-max/ghaction-github-labeler from 4 to 5 (#596)
  • bump DavidAnson/markdownlint-cli2-action from 14 to 16 (#629, #688)
  • bump docker/login-action from 2 to 3 (#597)
  • bump docker/setup-qemu-action from 2 to 3 (#584)
  • bump golangci-lint to v1.56.2
  • bump goreleaser/goreleaser-action from 5 to 6 (#737)
  • bump peter-evans/dockerhub-description from 3 to 4 (#610)
  • pin docker/build-push-action to v5

v2.6.0

Choose a tag to compare

@qdm12 qdm12 released this 03 Feb 18:51

Features

  • Support CLI flags 🎏 (equivalent to environment variable names)
  • Automated binaries releasing on GitHub for commonly used platforms
  • IPv6: add JSON parameter ipv6_suffix and deprecate IPV6_PREFIX (retro-compatible change) (#611)
  • Public IP fetching 📥
    • DNS fetching uses DNS over TLS (DoT) only 🔒, google removed due to no support for DoT
    • Ipify support for HTTP "IPv4 or IPv6" fetching
    • Remove NoIP HTTP option (only plaintext HTTP fetching)
    • Add Spdyn for HTTP IPv4 or IPv6 fetching
    • Add ipleak for all HTTP modes
  • Existing providers features ♻️
    • DonDominio: add support for subdomains and wildcard host values
    • Porkbun: json decode error messages for log messages
  • Custom provider ✏️ (bugged, fixed in next release v2.7.0)
    • Sends HTTP GET request to url given with ip information
    • Configurable ipv4 and ipv6 query parameter keys
    • Configurable response success detection with a regex
    • Treat non status OK 200 responses as failures
  • 🆕 Providers
  • Shoutrrr 📢
    • Bumped from v0.7.0 to v0.8.0
    • Add SHOUTRRR_DEFAULT_TITLE, disable SHOUTRRR_PARAMS and only add &title= parameter to shoutrrr address if it's not set in the address already
  • healthchecks.io support with configuration option HEALTH_HEALTHCHECKSIO_UUID 🩺
  • Logging 📜
    • Log tree of settings at start
    • Shoutrrr debug logs
    • "IPv6 is not supported on this system" logged if all IP fetching tries fail with an IPv6 error
    • Reduce log spamming: log each IP fetching error at the debug level and log them all at the error level in a single line, if all the fetching tries fail.
  • LISTENING_ADDRESS configuration key (#590) to replace LISTENING_PORT (retro-compatible change) 👂
  • Docker images tags are now with and without the v prefix. For example :v2.6.0 and :2.6.0 🤷
  • internal/config: append :53 to the resolver address if no port is given
  • More exact times for state updates, events and ban time checking 🕙

Fixes

  • Core updating mechanism
    • Get database events by IP version (#514)
    • Skip update if public IP is not found
    • Do not save invalid IP if the public IP is not found
    • Set initial fail status if the public ip fetching failed
  • Public IP fetching
    • IPv6: replace bad regex with custom IPv6 extract function, affects allinkl, dnsomatic, google, he and noip
    • Remove plaintext HTTP option noip
    • over HTTPs:
      • use address of Cloudflare for "ipv4 or ipv6"
      • remove opendns option
    • over DNS: add opendns option
  • Provider specific fixes
    • Desec:
      • default host to "@" if empty
      • allow wildcard hosts
    • DNSOMatic:
      • remove username validation regex
      • treat 'all' host as proxied to reduce updates, and does the IP comparison using the last IP stored in updates.json.
    • DonDominio: update code to use newer https://dondns.dondominio.com/json endpoint
    • DuckDNS:
      • send ip address if "provider_ip": false
      • support for IPv6 (#542)
    • Dyn: always give myip= parameter, provider_ip setting disabled
    • Dynv6: set url ip field as 'auto' when "provider_ip": true (#549)
    • DynDNS: allow wildcard hosts
    • Gandi: personal access token support (#568)
    • Google: removed since no longer functional
    • Infomaniak: handle new response prefixes
    • Inwx: fix success codes detection
    • Njalla: do not compare ip received when using "provider_ip": true
    • Noip: do not check for received IP when using "provider_ip": true
    • OpenDNS: IP received comparison check fixed
    • Porkbun: delete ALIAS record before creating an A or AAAA record
    • Spdyn: validate the host field value even if the token is set
  • Web UI
    • Fix the ipinfo.io link for the current ip (#529)
    • Include ip version for all providers (#512)
    • Href link to the favicon fixed
  • Bump HTTP timeout from 10s to 20s due to slow NoIP servers
  • Logging:
    • correct IP version for the "ipv4 no lookup" log line
    • IPv4 only and IPv6 only debug logging (#513)
    • Creation date set correctly by CI
  • Settings:
    • Ignore echo services absent from PUBLICIP_FETCHERS
    • Web UI listening port validation:
      • Check start of unprivileged ports on Linux
      • Check if running program has bind capability on Linux

Documentation

  • Readme:
    • Fix documentation for SHOUTRRR_DEFAULT_TITLE
    • Fix all dead links
    • Fix shoutrrr bad link (#609)
    • Remove outdated ddnss http public ip fetching
    • Use relative links, now compatible with Docker Hub description sync job
  • docs/ directory:
    • fix all dead links
    • cloudflare: wildcard hosts are allowed
    • gcp: fix typo for provider name (#465)
    • dnsomatic: fix settings fields (#463)
    • infomaniak: add missing username field in example (#467)
    • opendns: fix bad provider name dyn to opendns in example (#470)
    • noip: add missing username field in example (#469)
    • inwx:
      • fix bad provider name opendns -> inwx (#468)
      • remove trail comma in JSON example
    • add missing provider_ip field in examples (#466)
    • add missing ip_version parameter for allinkl, name.com, netcup and porkbun
    • update ip_version description for all providers
    • nowdns:
      • add missing ip_version parameter
      • remove trail comma in JSON example
  • Add Kubernetes examples & documentation (#402)
  • Github:
    • Update all labels
    • More explicit title requirement in issue templates
    • Remove automated @qdm12 assignee
  • Fix typos (#532)

Maintenance

CI

  • Add markdown workflow
    • Remove docker hub description workflow
    • Build workflow ignores md files for spellcheck
  • Add goreleaser steps to build and attach binaries on release
  • Bump linter golangci-lint from v1.52.2 to v1.55.2
  • Add mocks check step
  • Force matching Shoutrrr link with go.mod shoutrrr version (#491)
  • Add dependabot configuration
  • Add build-skip workflow for required workflows
  • Bump github/codeql-action from 2 to 3 (#583)
  • Bump docker/setup-buildx-action from 2 to 3 (#587)
  • Bump docker/metadata-action from 4 to 5 (#585)
  • Bump docker/build-push-action from 4.0.0 to 5.1.0 (#582)

Dependencies

  • Remove dependency on golang.org/x/net
  • Bump breml/rootcerts from v0.2.11 to v0.2.14
  • Bump github.com/miekg/dns from v1.1.42 to v1.1.57
  • Bump golang.org/x/net from v0.1.0 to v0.17.0 (#540)
  • Bump chi from v1.5.4 to v5.0.11
  • Bump Go from 1.20 to 1.21
  • Bump Alpine from 3.18 to 3.19
  • Bump google.golang.org/grpc from 1.50.1 to 1.56.3 (#552)
  • Bump github.com/stretchr/testify from v1.8.1 to v1.8.4
  • Bump golang.org/x/mod from v0.12.0 to v0.14.0

Code

  • Dockerfile:
    • Remove outdated SHOUTRRR_DEFAULT_TITLE
    • Add HEALTH_SERVER_ADDRESS=127.0.0.1:9999
  • Migrate from net.IP* to net/netip.Addr and net/netip.Prefix
  • Drop github.com/qdm12/golibs dependency
    • internal/persistence/json: drop dependency on golibs
    • pkg/publicip/info: remove dependency on golibs
    • cmd/updater: replace golibs/connectivity with internal/health's CheckHTTP function
    • internal/settings: remove dependency on qdm12/golibs/verification
  • Configuration reading reworked to use qdm12/gosettings@v0.4.0-rc9
  • pkg/publicip/dns: set dial timeout as the value of the parent fetcher timeout
  • Namecheap: make code only IPv4 compatible
  • Servercow: use injected domain instead of re-decoding it from JSON
  • internal/update:
    • simplify shouldUpdateRecord functions shouldUpdateRecordNoLookup and shouldUpdateRecordWithLookup
    • simplify log calls
    • rename run.go to service.go
  • persistence/json:
    • simplify StoreNewIP method
    • improve data check error messages
  • internal/data: remove unused GetEvents method
  • internal/models: remove unneeded HTML string alias type
  • OVH: remove unneeded sentinel errors
  • internal/provider/providers:
    • replace ip nil check with useProviderIP check (affects duckdns, infomaniak and namecheap)
    • review HTTP headers: add missing header(s), remove unneeded headers
    • review error wrappings for client.Do and wrap using string doing http request
    • review error wrappings for validation errors
    • Use errors.BadRequest for badrequest responses only
    • Change HTTP request creation error wrappings to be a string only
    • Add missing HTTP request creation error wrappings
    • remove intermediary errors and wrap them with strings instead of other sentinel errors
  • internal/provider/errors: review update errors and wrappings
    • ErrBadHTTPStatus -> ErrHTTPStatusNotValid
    • ErrNumberOfResultsReceived -> ErrResultsCountReceived
    • ErrNoResultReceived -> ErrReceivedNoResult
    • ErrAbuse -> ErrBannedAbuse
    • ErrInvalidSystemParam -> ErrSystemParamNotValid
    • ErrNoIPInResponse -> ErrReceivedNoIP
    • ErrUnsuccessfulResponse -> ErrUnsuccessful
    • Remove ErrRequestEncode and ErrRequestMarshal and wrap errors with string instead
    • Remove ErrUnmarshalResponse and wrap errors with string instead
    • Add ErrResponseTooShort - Remove ErrNotFound and replace with more precise not found errors
    • Add ErrRecordResourceSetNotFound error
    • Sort errors list alphabetically
    • Change Empty -> NotSet
    • Change Malformed -> NotValid
  • internal/shoutrrr new package
  • .gitignore: fix /data path

Note: re-released as v2.6.0 to have permissions fixed for goreleaser to work (c338c28)