• v2.6.0 c338c28ce3

    Stable

    saavagebueno released this 2024-02-03 13:50:31 -05:00 | 201 commits to master since this release

    📅 Originally published on GitHub: Sat, 03 Feb 2024 18:51:00 GMT
    🏷️ Git tag created: Sat, 03 Feb 2024 18:50:31 GMT

    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 (c338c28ce3)

    Downloads