directadmin

package module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2025 License: MIT Imports: 15 Imported by: 4

README

DirectAdmin for libdns

Go Reference

This package implements the libdns interfaces for DirectAdmin, allowing you to manage DNS records.

Authenticating

This package supports API Login Keys for authentication.

To create a key select Login Keys from the top right dropdown menu:

Screenshot of login keys dropdown

From the Login Keys page select Create Key

Screenshot of login keys page with create key button

You will need to create a login key with the following settings:

  • Key Name
    • Select Descriptive Name
  • Expires On
    • You can set this to whatever you need, but "Never" is likely the best option
  • Clear Key
    • Unchecked
  • Allow HTM
    • Unchecked
  • Commands To Allow
    • CMD_API_SHOW_DOMAINS
    • CMD_API_DNS_CONTROL

The CMD_API_SHOW_DOMAINS permission is needed to get the zone ID, the CMD_API_DNS_CONTROL permission is obviously necessary to edit the DNS records.

If you're only using the GetRecords() method, you can remove the CMD_API_DNS_CONTROL permission to guarantee no changes will be made.

Screenshot of login key settings

Documentation

Overview

Package directadmin implements a DNS record management client compatible with the libdns interfaces for DirectAdmin.

Index

Constants

This section is empty.

Variables

View Source
var ErrUnsupported = errors.New("unsupported record type")

Functions

This section is empty.

Types

type Provider

type Provider struct {
	// ServerURL should be the hostname (with port if necessary) of the DirectAdmin instance
	// you are trying to use
	ServerURL string `json:"host,omitempty"`

	// User should be the DirectAdmin username that the Login Key is created under
	User string `json:"user,omitempty"`

	// LoginKey is used for authentication
	//
	// The key will need two permissions:
	//
	// `CMD_API_SHOW_DOMAINS`
	//
	// `CMD_API_DNS_CONTROL`
	//
	// Unless you are only using `GetRecords()`, in which case `CMD_API_DNS_CONTROL`
	// can be omitted
	LoginKey string `json:"login_key,omitempty"`

	// InsecureRequests is an optional parameter used to ignore SSL related errors on the
	// DirectAdmin host
	InsecureRequests bool `json:"insecure_requests,omitempty"`

	// Debug - can set this to stdout or stderr to dump
	// debugging information about the API interaction with
	// powerdns.  This will dump your auth token in plain text
	// so be careful.
	Debug string `json:"debug,omitempty"`
	// contains filtered or unexported fields
}

Provider facilitates DNS record manipulation with DirectAdmin.

func (*Provider) AppendRecords

func (p *Provider) AppendRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)

AppendRecords adds records to the zone. It returns the records that were added.

func (*Provider) DeleteRecords

func (p *Provider) DeleteRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)

DeleteRecords deletes the records from the zone. It returns the records that were deleted.

func (*Provider) GetRecords

func (p *Provider) GetRecords(ctx context.Context, zone string) ([]libdns.Record, error)

GetRecords lists all the records in the zone.

func (*Provider) SetRecords

func (p *Provider) SetRecords(ctx context.Context, zone string, records []libdns.Record) ([]libdns.Record, error)

SetRecords sets the records in the zone, either by updating existing records or creating new ones. It returns the updated records.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL