Container to update DNS records periodically with WebUI for many DNS providers
MIT License
Pre-built binaries are attached at the bottom of this release notes in the Assets section. Feel free to đ the release!
domain
field
host
or owner
field still work if setdomain
fieldUMASK
option to configure a custom umask value to usegoogle
provider which no longer worksuseProviderIP
to false
when using IPv6name
fieldprovider_ip
config field completely
domain
field for both the domain and owner/host.README.md
and docs/
versioned links for each recent releaseshost
parameter fieldconsumer_key
valuecmd/updater
to cmd/ddns-updater
to have binaries named as ddns-updater
by defaultinternal/providers
:
internal/models
: remove unused DomainHost
structhost
to owner
host
field still worksinternal/providers/porkbun
: refactor API code to use a generic httpPost
functioninternal/persistence/json
: change mutex to be non embedded in Database structduckdns.org
for links checkPublished by qdm12 about 1 month ago
name
fieldreadme
and docs/
versioned linkshost
fieldPublished by qdm12 4 months ago
Pre-built binaries are attached at the bottom of this release notes in the Assets section. Feel free to đ the release!
CONFIG_FILEPATH
(or --config-filepath
) option to specify a configuration file pathHEALTH_HEALTHCHECKSIO_BASE_URL
option/updater/data
built-in with correct ownership (#634)publicip/http
:
publicip/info
: add ip2location.io providerSERVER_ENABLED
option defaulting to yes
version
, -version
or --version
See v2.6.1 for fixes incorporated in this release compared to v2.6.0
/updater/app
to /updater/ddns-updater
so it can easily be found in running processes (see #729)cloudflare
: prevent empty "key" value if "email" is setgodaddy
: link to comment when status code 403 is receivedovh
: add no host case handlingurl:https://
instead of https://
RESOLVER_ADDRESS
description improvedHEALTH_HEALTHCHECKSIO_UUID
description improveddocs/infomaniak.md
: add missing details and guide (#677)docs/
: fix typo identifiersuffix
-> identifier suffix
porkbun
: add context to top level errorscloudflare
: unexport createRecord
methodgcp
: validate credentials JSON object has "type" fieldPublished by qdm12 4 months ago
â ī¸ 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
custom
: url building fixed â ī¸inwx
: allow wildcard hostsionos
: wildcard handlingname.com
noip
useproviderip
set to true correctlyporkbun
: wildcard update fixedPublished by qdm12 9 months ago
ipv6_suffix
and deprecate IPV6_PREFIX
(retro-compatible change) (#611)google
removed due to no support for DoTSHOUTRRR_DEFAULT_TITLE
, disable SHOUTRRR_PARAMS
and only add &title=
parameter to shoutrrr address if it's not set in the address alreadyHEALTH_HEALTHCHECKSIO_UUID
đŠēLISTENING_ADDRESS
configuration key (#590) to replace LISTENING_PORT
(retro-compatible change) đv
prefix. For example :v2.6.0
and :2.6.0
đ¤ˇinternal/config
: append :53
to the resolver address if no port is givennoip
https://dondns.dondominio.com/json
endpoint"provider_ip": false
myip=
parameter, provider_ip
setting disabled"provider_ip": true
(#549)"provider_ip": true
"provider_ip": true
PUBLICIP_FETCHERS
SHOUTRRR_DEFAULT_TITLE
ddnss
http public ip fetchingdocs/
directory:
username
field in example (#467)dyn
to opendns
in example (#470)username
field in example (#469)opendns
-> inwx
(#468)provider_ip
field in examples (#466)ip_version
parameter for allinkl, name.com, netcup and porkbunip_version
description for all providersip_version
parametergolangci-lint
from v1.52.2 to v1.55.2golang.org/x/net
SHOUTRRR_DEFAULT_TITLE
HEALTH_SERVER_ADDRESS=127.0.0.1:9999
net.IP*
to net/netip.Addr
and net/netip.Prefix
github.com/qdm12/golibs
dependency
internal/persistence/json
: drop dependency on golibspkg/publicip/info
: remove dependency on golibscmd/updater
: replace golibs/connectivity with internal/health
's CheckHTTP
functioninternal/settings
: remove dependency on qdm12/golibs/verification
qdm12/[email protected]
pkg/publicip/dns
: set dial timeout as the value of the parent fetcher timeoutinternal/update
:
shouldUpdateRecordNoLookup
and shouldUpdateRecordWithLookup
persistence/json
:
StoreNewIP
methodinternal/data
: remove unused GetEvents
methodinternal/models
: remove unneeded HTML
string alias typeinternal/provider/providers
:
useProviderIP
check (affects duckdns, infomaniak and namecheap)client.Do
and wrap using string doing http request
errors.BadRequest
for badrequest
responses onlyinternal/provider/errors
: review update errors and wrappings
ErrBadHTTPStatus
-> ErrHTTPStatusNotValid
ErrNumberOfResultsReceived
-> ErrResultsCountReceived
ErrNoResultReceived
-> ErrReceivedNoResult
ErrAbuse
-> ErrBannedAbuse
ErrInvalidSystemParam
-> ErrSystemParamNotValid
ErrNoIPInResponse
-> ErrReceivedNoIP
ErrUnsuccessfulResponse
-> ErrUnsuccessful
ErrRequestEncode
and ErrRequestMarshal
and wrap errors with string insteadErrUnmarshalResponse
and wrap errors with string insteadErrResponseTooShort
- Remove ErrNotFound
and replace with more precise not found errorsErrRecordResourceSetNotFound
errorEmpty
-> NotSet
Malformed
-> NotValid
internal/shoutrrr
new package/data
pathNote: re-released as v2.6.0 to have permissions fixed for goreleaser to work (c338c28ce3ab3aa9948f0fe133307b75fe6d34d2)
Published by qdm12 over 1 year ago
v0.7.0
host
RESOLVER_ADDRESS
environment variableRESOLVER_TIMEOUT
environment variablegithub.com/breml/rootcerts
v0.2.11 for TLS certspkg/publicip/info
package (#189)pkg/publicip
: do not use providers banning uskey
-> userServiceKey
variable name (#462)dual_stack
parameter (#270, thanks @quantum-byte)user
fieldno ip change
messages decodingname
field when creating recordnochg
responsesgood
and nochg
SHOUTRRR_ADDRESSES
case sensitivity fixed/tmp/data
directory in Dockerfilegithub.com/qdm12/gosplash
for program start log information.devcontainer
definition files and readmeinternal/backup
package refactorinternal/health
: remove unneeded logger
argument from functionsinternal/settings/*
: validate using local regexesinternal/settings/dyn
: change JSON field tag from password
to client_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 codeuint
instead of int
GetAllDomainsHosts
database methodstring
instead of error
when appropriate (linode)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
deadcode
, structcheck
and varcheck
tzdata
packagegithub.com/qdm12/log
instead of logger from github.com/qdm12/golibs
qdm12/goshutdown
from v0.1.0 to v0.3.0github.com/qdm12/golibs
.github/CONTRIBUTING.md
RESOLVER_ADDRESS
environment variablesanitize
query parameter from svg tag./docs
@
provider_ip
not for ipv6password
to client_key
(with retro-compatibility)Published by qdm12 about 3 years ago
SHOUTRRR_ADDRESSES
case sensitivityPublished by qdm12 over 3 years ago
PUBLICIP_DNS_TIMEOUT
variableBuildURLQueryHostname
for API calls to send the correct wildcard hostname127.0.0.1:port
instead of for example 0.0.0.0:port
DATADIR
defaults to /updater/data
0.0.0.0
ppc64le
, s390x
, riscv64
and armv6
internal/config
package for environment variablesgithub.com/ovh/go-ovh
dependencytime/tzdata
anonymous import instead of Alpine's tzdata
github.com/qdm12/goshutdown
to handle program shutdownsignal.NotifyContext
(introduced with Go 1.16)_main()
in main.go:
params.Env
os.Args
main()
to encapsulate _main()
and handle OS signals itself_main()
returns an error instead of an exit codesetupGotify
inline in _main()
functionbuildInfo
variablexcputranslate
for build platform only (faster x-builds)golangci-lint
from qmcgaw/binpot (faster)g++
in base stage (for caching)xcputranslate
in base stage (for caching)golangci-lint
in base stage (for caching)ARG TARGETPLATFORM
down in build stage (faster x-builds)ARG
s and LABEL
down in final stage (for caching)COPY
up in final stage (for caching)golangci-lint
to v1.41.1
qmcgaw/xcputranslate
to v0.6.0
Published by qdm12 over 3 years ago
debug
log levelHEALTH_SERVER_ADDRESS
to change the internal health server listening addressCONFIG
environment variable with case sensitivity (#192) - thanks @mchillipversion
display (#190)ROOT_URL
behavior when served outside of root (bug introduced with go-chi
)IPV6_PREFIX
support to avoid unneeded updates when using IPV6internal/settings
shared code in sub packagesinternal/params
to internal/settings
internal/settings
provider.go
v1.40.1
.golangci.yml
in favor of inline //nolint:
commentsregex.Matcher
arg if not needed for some providersio
instead of ioutil
whenever possiblePublished by qdm12 over 3 years ago
pkg/publicip
package to fetch your public IP address over HTTPs and DNS (#158 and #186)Insert
database method_
for unused matcher argument to settings constructorsPublished by qdm12 over 3 years ago
CONFIG
(#62)UPDATE_COOLDOWN_PERIOD
(#140)Dreamhost
on Web UI (#79)-
in them (#86)+
in them (#112)8000
outside Docker (#152)host
instead of domain
no_dns_lookup
option with proxied
option only valid for Clouflare (#160)TZ
variable (#90)UNSET
status before a record gets updated the first timehttp.Client
(#145) with http.NewRequestWithContext
instead of custom client interfacelog
instead of Uber's zap) (#170)DNSLookup()
method name with Proxied()
(#160)BUILDPLATFORM=linux/amd64
for older Docker buildsPublished by qdm12 over 4 years ago
Published by qdm12 over 4 years ago
Associated Docker image tag is also v1