• v2.5.0 a6f72d97bc

    Stable

    saavagebueno released this 2023-06-07 03:51:11 -04:00 | 399 commits to master since this release

    📅 Originally published on GitHub: Wed, 07 Jun 2023 09:07:40 GMT
    🏷️ Git tag created: Wed, 07 Jun 2023 07:51:11 GMT

    Features

    • 🆕 providers
    • Shoutrrr library update to v0.7.0
    • Cloudflare: create record if it does not exist (#477)
    • DNSPod: log entire JSON response on error
    • Dreamhost: allow to specify a custom host
    • Specify resolver address with the RESOLVER_ADDRESS environment variable
    • Specify resolver timeout with the RESOLVER_TIMEOUT environment variable
    • Retry getting IP address up to 3 times
    • Use github.com/breml/rootcerts v0.2.11 for TLS certs
    • Add destination to notification errors
    • Add GHCR registry image (#259)
    • pkg/publicip/info package (#189)
    • pkg/publicip: do not use providers banning us

    Fixes

    • Cloudflare:
      • key -> userServiceKey variable name (#462)
      • fix service key regex
    • dd24:
      • API call and fix (#236)
      • Handle non-empty responses
    • ddnss.de add dual_stack parameter (#270, thanks @quantum-byte)
    • DNSOMatic:
      • allow email addresses as user field
      • remove password regex check
    • DNSPod add IPv6 record ID finder
    • FreeDNS fix no ip change messages decoding
    • Linode fix error decoding and set name field when creating record
    • LuaDNS match configured host instead of first record (#249)
    • Namecheap XML decoding error & allow empty IP field in response
    • OVH:
      • fix signature in api mode
      • support nochg responses
    • Spdyn response handling for good and nochg
    • SHOUTRRR_ADDRESSES case sensitivity fixed
    • Write JSON file from CONFIG variable
    • DNS public IP fetching timeout fixed
    • Better error messages for JSON decoding errors
    • Shoutrrr validation error wrapping

    Maintenance

    • Fix line endings to lf (#220)
    • Remove microbadger which went EOL
    • Remove unneeded /tmp/data directory in Dockerfile
    • Use github.com/qdm12/gosplash for program start log information
    • Update .devcontainer definition files and readme

    Code health

    • General refactoring involving:
      • Return concrete structs instead of interfaces
      • Accept locally defined interfaces as narrow as possible
      • Export returned struct types from exported functions
      • Do not export interfaces for other packages to use
    • Define and use sentinel errors
    • Wrap all sentinel errors
    • Use string comparisons instead of length for string variables
    • Remove short if error checks
    • Interface composition for Database
    • HTTP client logger middleware
    • internal/backup package refactor
    • internal/health: remove unneeded logger argument from functions
    • internal/settings/*: validate using local regexes
    • internal/settings/dyn: change JSON field tag from password to client_key (with retro-compatibility)
    • internal/settings/providers/dyn: more information on bad request error
    • internal/settings/providers/ovh: Add error context to errors
    • internal/settings/providers: rework IP string search code
    • Change database id to be uint instead of int
    • Remove GetAllDomainsHosts database method
    • Return string instead of error when appropriate (linode)

    Linting

    • Upgrade golangci-lint from v1.41.1 to v1.52.2
    • Enable all default linters
    • Add linters and fix new errors: ireturn, revive, asasalint, bidichk, containedctx, cyclop, decorder, durationcheck, errchkjson, errname, errorlint, execinquery, forcetypeassert, gomoddirectives, grouper, interfacebloat, maintidx, makezero, nilnil, nosprintfhostport, promlinter, reassign, tenv, usestdlibvars, goerr113, dupword. paralleltest, musttag, gocheckcompilerdirectives
    • Remove deprecated linters: deadcode, structcheck and varcheck
    • Update exclude rules

    Build

    • Upgrade Go from 1.16 to 1.20
    • Remove unneeded alpine tzdata package
    • Upgraded Alpine from 3.13 to 3.18

    CI

    • Allow slash in branch name for docker image tags (#219)
    • Remove go modules tidy check
    • Add UID and GID build arguments
    • Bump GitHub actions versions (#353)
    • Restrict publish image trigger events

    Dependencies

    • Use github.com/qdm12/log instead of logger from github.com/qdm12/golibs
    • Upgrade qdm12/goshutdown from v0.1.0 to v0.3.0
    • Upgrade github.com/qdm12/golibs
      • Wrap errors in config package with environment variable name
      • Update logger

    Documentation

    • Fix links in .github/CONTRIBUTING.md

    Readme

    • Document RESOLVER_ADDRESS environment variable
    • Add Build the image section
    • Clarify how to use another user ID for the container
    • Rework metadata badges
    • Fix lint errors
    • Remove sanitize query parameter from svg tag
    • Autoformat document

    ./docs

    • Cloudflare:
      • host parameter should be @
      • remove unneeded steps (#363)
    • DuckDNS: fix provider_ip not for ipv6
    • Dyn: change JSON field from password to client_key (with retro-compatibility)
    • FreeDNS: add domain setup section (#238)
    • Gandi: fix JSON example syntax (#362)
    • Google: fix JSON example (#223)
    Downloads