feat(provider): feno (feno.no) - #1210
Open
MrErikCodes wants to merge 1 commit into
Open
Conversation
Add a dedicated provider for FENO (https://feno.no), a Norwegian .no registrar whose dynamic DNS endpoint speaks dyndns2 with HTTP Basic auth (API key as password). The provider sends `myip` for IPv4 and `myipv6` for IPv6 so each address family is updated independently, and maps the dyndns2 response tokens to the existing provider errors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a dedicated provider for FENO, a Norwegian
.noregistrar with hosted DNS.FENO's dynamic DNS endpoint (
https://api.feno.no/v1/nic/update) speaks the standard dyndns2 protocol: HTTP Basic auth where the API key is the password (username ignored),hostname=,myip=/myipv6=, plain-textgood/nochg/badauth/nohost/notfqdn/numhost/badagent/abuse/dnserr/911responses. Public documentation: https://github.com/mrerikcodes/feno-api/blob/main/docs/DDNS.mdIt is usable today through the
customprovider, but that only allows one query key for both IP families. The dedicated provider sendsmyipfor IPv4 andmyipv6for IPv6, so A and AAAA records are updated independently, and it maps every documented response token onto the existinginternal/provider/errorsvalues (modelled on thenoip/dynproviders).Configuration:
{ "provider": "feno", "domain": "example.no", "owner": "home", "api_key": "feno_live_...", "ip_version": "ipv4" }Changes (same set of files as the recent
hostinger/gigahostnoprovider PRs):internal/provider/providers/feno/provider.go— provider implementationinternal/provider/providers/feno/provider_test.go— unit tests for settings validation and response parsinginternal/provider/constants/providers.go+internal/provider/provider.go— registrationdocs/feno.md— documentation page (from thedocs/example.mdtemplate)README.md— provider list entriesChecks:
go build ./...,go vet ./...,go test ./...(incl. thereadmepackage test) all pass;golangci-lint run(v2.11.4, the version pinned in the Dockerfile) reports no issues for the new package.I maintain the FENO API side, so I am happy to adjust anything on either end.
Live run against a real FENO zone (
ddnstest.2002.no, the exact request the provider builds, HTTP Basic with the key as password):