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
- allow email addresses as
- 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
andnochg
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 refactorinternal/health
: remove unneededlogger
argument from functionsinternal/settings/*
: validate using local regexesinternal/settings/dyn
: change JSON field tag frompassword
toclient_key
(with retro-compatibility)internal/settings/providers/dyn
: more information on bad request errorinternal/settings/providers/ovh
: Add error context to errorsinternal/settings/providers
: rework IP string search code- Change database id to be
uint
instead ofint
- Remove
GetAllDomainsHosts
database method - Return
string
instead oferror
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
andvarcheck
- 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 fromgithub.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