- Add plugin interface with lifecycle hooks (Init/Cleanup) - Implement thread-safe provider registry - Add plugin loader with SHA-256 signature verification - Migrate 10 built-in providers to registry pattern - Add multi-credential support to plugin interface - Create plugin management UI with enable/disable controls - Add dynamic credential fields based on provider metadata - Include PowerDNS example plugin - Add comprehensive user & developer documentation - Fix frontend test hang (33min → 1.5min, 22x faster) Platform: Linux/macOS only (Go plugin limitation) Security: Signature verification, directory permission checks Backend coverage: 85.1% Frontend coverage: 85.31% Closes: DNS Challenge Future Features - Phase 5
1.2 KiB
1.2 KiB
PowerDNS Plugin for Charon
This is an example DNS provider plugin for Charon that adds support for PowerDNS Authoritative Server.
Building
To build this plugin, you must use CGO_ENABLED=1 and the same Go version as the Charon binary:
cd plugins/powerdns
CGO_ENABLED=1 go build -buildmode=plugin -o ../powerdns.so main.go
Installation
- Build the plugin as shown above
- Copy
powerdns.soto/app/plugins/(or your configured plugin directory) - Restart Charon to load the plugin
- The PowerDNS provider will appear in the DNS providers list
Configuration
The PowerDNS plugin requires:
- API URL: The PowerDNS HTTP API endpoint (e.g.,
https://pdns.example.com:8081) - API Key: Your PowerDNS API key (X-API-Key header value)
- Server ID (optional): PowerDNS server ID (default:
localhost)
Caddy Requirement
This plugin only handles the Charon UI/API integration. To use PowerDNS for DNS challenges, Caddy must be built with the caddy-dns/powerdns module.
Security
Always verify the plugin source before loading it. Plugins run in the same process as Charon and have full access to system resources.