Skip to content

Conversation

@1r0n3d3v3l0per
Copy link

@1r0n3d3v3l0per 1r0n3d3v3l0per commented Jan 2, 2026

Description

Add support for ApertoDNS Dynamic DNS provider.

ApertoDNS implements the ApertoDNS Protocol v1.2, a modern JSON-based API for Dynamic DNS updates with full backward compatibility with the legacy DynDNS2 protocol.

Features

  • Modern API: Uses POST /.well-known/apertodns/v1/update with Bearer token authentication and JSON request/response
  • Legacy Fallback: Automatic fallback to DynDNS2 GET /nic/update for maximum compatibility
  • Configurable Base URL: Works with any ApertoDNS-compatible server via base_url parameter
  • Full Error Handling: Proper handling of all error codes (invalid_token, hostname_not_found, rate_limited, etc.)

Configuration Example

{
  "settings": [
    {
      "provider": "apertodns",
      "domain": "apertodns.com",
      "owner": "home",
      "token": "your_api_token",
      "ip_version": "ipv4"
    }
  ]
}

Protocol Support

This provider implements both layers of the ApertoDNS Protocol:

  1. Layer 2 (Modern): POST /.well-known/apertodns/v1/update - Primary method
  2. Layer 1 (Legacy): GET /nic/update - Fallback for infrastructure errors

The provider intelligently uses the modern API first, falling back to legacy only for infrastructure errors (not for authentication or validation errors).

Testing

  • go build ./... passes
  • go vet ./... passes
  • gofmt passes
  • Integration tests pass (5/5)
  • Manual testing with live API completed

Files Changed

  • internal/provider/providers/apertodns/provider.go - New provider implementation
  • internal/provider/providers/apertodns/provider_test.go - Integration tests
  • internal/provider/constants/providers.go - Added ApertoDNS constant
  • internal/provider/provider.go - Added import and case
  • docs/apertodns.md - User documentation

Links

Add support for ApertoDNS, a modern Dynamic DNS service implementing
the ApertoDNS Protocol v1.2 with backward compatibility for legacy
DynDNS2 protocol.

Features:
- Modern JSON API (POST /.well-known/apertodns/v1/update)
- Bearer token authentication
- Intelligent fallback to DynDNS2 for infrastructure errors
- Configurable base URL for custom ApertoDNS-compatible servers
- Full IPv4 and IPv6 support

The provider uses the modern API as primary method and falls back
to the legacy DynDNS2 endpoint only for infrastructure errors (404,
500), not for authentication or validation 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