Skip to content

feat(provider): feno (feno.no) - #1210

Open
MrErikCodes wants to merge 1 commit into
qdm12:masterfrom
MrErikCodes:feat/feno
Open

feat(provider): feno (feno.no)#1210
MrErikCodes wants to merge 1 commit into
qdm12:masterfrom
MrErikCodes:feat/feno

Conversation

@MrErikCodes

Copy link
Copy Markdown

Adds a dedicated provider for FENO, a Norwegian .no registrar 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-text good/nochg/badauth/nohost/notfqdn/numhost/badagent/abuse/dnserr/911 responses. Public documentation: https://github.com/mrerikcodes/feno-api/blob/main/docs/DDNS.md

It is usable today through the custom provider, but that only allows one query key for both IP families. The dedicated provider sends myip for IPv4 and myipv6 for IPv6, so A and AAAA records are updated independently, and it maps every documented response token onto the existing internal/provider/errors values (modelled on the noip/dyn providers).

Configuration:

{
  "provider": "feno",
  "domain": "example.no",
  "owner": "home",
  "api_key": "feno_live_...",
  "ip_version": "ipv4"
}

Changes (same set of files as the recent hostinger / gigahostno provider PRs):

  • internal/provider/providers/feno/provider.go — provider implementation
  • internal/provider/providers/feno/provider_test.go — unit tests for settings validation and response parsing
  • internal/provider/constants/providers.go + internal/provider/provider.go — registration
  • docs/feno.md — documentation page (from the docs/example.md template)
  • README.md — provider list entries

Checks: go build ./..., go vet ./..., go test ./... (incl. the readme package 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):

?hostname=ddnstest.2002.no&myip=203.0.113.7      -> good 203.0.113.7
?hostname=ddnstest.2002.no&myip=203.0.113.7      -> nochg 203.0.113.7
?hostname=ddnstest.2002.no&myipv6=2001:db8::1    -> good 2001:db8::1

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant