osal.coredns #
CoreDNS Redis Record Management
This module provides functionality for managing DNS records in Redis for use with CoreDNS. It supports various DNS record types and provides a simple interface for adding and managing DNS records.
import freeflowuniverse.herolib.lib.osal.coredns
// Create a new DNS record set
mut rs := coredns.new_dns_record_set()
// Create and populate DNS records
rs.set_soa(mbox: 'hostmaster.example.net.', ns: 'ns1.example.net.')
rs.add_srv(target: 'tcp.example.com.', port: 123)
rs.add_txt(text: 'this is a wildcard')
rs.add_mx(host: 'host1.example.net.')
rs.add_a(name: 'host1', ip: '5.5.5.5')
rs.add_aaaa(name: 'host1', ip: '2001:db8::1')
rs.add_ns(host: 'ns1.example.net.')
rs.add_ns(host: 'ns2.example.net.')
// Store records in Redis
rs.set('example.com')!
Record Types
The following DNS record types are supported:
SRV Record
SRVRecord {
target string // Required: Target hostname
port int // Required: Port number
priority int // Default: 10
weight int // Default: 100
ttl int // Default: 300
}
TXT Record
TXTRecord {
text string // Required: Text content
ttl int // Default: 300
}
MX Record
MXRecord {
host string // Required: Mail server hostname
preference int // Default: 10
ttl int // Default: 300
}
A Record
ARecord {
name string // Required: Hostname
ip string // Required: IPv4 address
ttl int // Default: 300
}
AAAA Record
AAAARecord {
name string // Required: Hostname
ip string // Required: IPv6 address
ttl int // Default: 300
}
NS Record
NSRecord {
host string // Required: Nameserver hostname
ttl int // Default: 300
}
SOA Record
SOARecord {
mbox string // Required: Email address of the admin
ns string // Required: Primary nameserver
refresh int // Default: 44
retry int // Default: 55
expire int // Default: 66
minttl int // Default: 100
ttl int // Default: 300
}
fn new_dns_record_set #
fn new_dns_record_set() DNSRecordSet
new_dns_record_set creates a new DNSRecordSet
fn play_dns #
fn play_dns(mut plbook playbook.PlayBook) !DNSRecordSet
play_dns processes DNS-related actions from heroscript
fn (DNSRecordSet) add_srv #
fn (mut rs DNSRecordSet) add_srv(args AddSRVRecordArgs)
add_srv adds an SRV record to the set
fn (DNSRecordSet) add_txt #
fn (mut rs DNSRecordSet) add_txt(args AddTXTRecordArgs)
add_txt adds a TXT record to the set
fn (DNSRecordSet) add_mx #
fn (mut rs DNSRecordSet) add_mx(args AddMXRecordArgs)
add_mx adds an MX record to the set
fn (DNSRecordSet) add_a #
fn (mut rs DNSRecordSet) add_a(args AddARecordArgs)
add_a adds an A record to the set
fn (DNSRecordSet) add_aaaa #
fn (mut rs DNSRecordSet) add_aaaa(args AddAAAARecordArgs)
add_aaaa adds an AAAA record to the set
fn (DNSRecordSet) add_ns #
fn (mut rs DNSRecordSet) add_ns(args AddNSRecordArgs)
add_ns adds an NS record to the set
fn (DNSRecordSet) set_soa #
fn (mut rs DNSRecordSet) set_soa(args SOA_Record)
set_soa sets the SOA record for the set
fn (DNSRecordSet) set #
fn (mut rs DNSRecordSet) set(args SetArgs) !
populate_redis populates Redis with the DNS records domain e.g. example.com. (not sure the . is at end)
fn (DNSRecordSet) example #
fn (mut rs DNSRecordSet) example() !
struct AAAA_Record #
@[params]
struct AAAA_Record {
pub:
ip string @[required]
ttl int = 300
}
struct A_Record #
@[params]
struct A_Record {
pub:
ip string @[required]
ttl int = 300
}
struct AddAAAARecordArgs #
struct AddAAAARecordArgs {
AAAA_Record
pub:
sub_domain string = '@'
}
struct AddARecordArgs #
struct AddARecordArgs {
A_Record
pub:
sub_domain string = '@'
}
struct AddMXRecordArgs #
struct AddMXRecordArgs {
MX_Record
pub:
sub_domain string = '@'
}
struct AddNSRecordArgs #
struct AddNSRecordArgs {
NS_Record
pub:
sub_domain string = '@'
}
struct AddSRVRecordArgs #
struct AddSRVRecordArgs {
SRV_Record
pub:
service string @[required]
protocol string @[required]
host string @[required]
}
struct AddTXTRecordArgs #
struct AddTXTRecordArgs {
TXT_Record
pub:
sub_domain string = '@'
}
struct CAA_Record #
@[params]
struct CAA_Record {
pub:
flag u8
tag string
value string
}
struct CNAME_Record #
@[params]
struct CNAME_Record {
pub:
host string
ttl int = 300
}
struct MX_Record #
@[params]
struct MX_Record {
pub:
host string @[required]
preference int = 10
ttl int = 300
}
struct NS_Record #
@[params]
struct NS_Record {
pub:
host string @[required]
ttl int = 300
}
struct Record #
struct Record {
pub mut:
a ?[]A_Record
aaaa ?[]AAAA_Record
txt ?[]TXT_Record
cname ?[]CNAME_Record
ns ?[]NS_Record
mx ?[]MX_Record
srv ?[]SRV_Record
caa ?[]CAA_Record
soa ?SOA_Record
}
struct SOA_Record #
@[params]
struct SOA_Record {
pub:
mbox string @[required]
ns string @[required]
refresh int = 44
retry int = 55
expire int = 66
minttl int = 100
ttl int = 300
}
struct SRV_Record #
@[params]
struct SRV_Record {
pub:
target string @[required]
port int @[required]
priority int = 10
weight int = 100
ttl int = 300
}
struct SetArgs #
struct SetArgs {
pub:
domain string
key_prefix string
}
struct TXT_Record #
@[params]
struct TXT_Record {
pub:
text string @[required]
ttl int = 300
}
- README
- fn new_dns_record_set
- fn play_dns
- type DNSRecordSet
- struct AAAA_Record
- struct A_Record
- struct AddAAAARecordArgs
- struct AddARecordArgs
- struct AddMXRecordArgs
- struct AddNSRecordArgs
- struct AddSRVRecordArgs
- struct AddTXTRecordArgs
- struct CAA_Record
- struct CNAME_Record
- struct MX_Record
- struct NS_Record
- struct Record
- struct SOA_Record
- struct SRV_Record
- struct SetArgs
- struct TXT_Record