initial commit

This commit is contained in:
W Anders
2024-05-06 17:37:57 -06:00
commit 12bcac933a
35 changed files with 3027 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
"path/filepath"
"runtime"
)
var (
apiRoot = "http://localhost:9999/api/plugins/netbox-dns"
token = "w5pgWXPqZVmngLN4w4XwuPvZfUC72ytDxnnHgEmI"
execdir string
)
func init() {
_, filename, _, ok := runtime.Caller(0)
if !ok {
panic("unable to get current filename")
}
execdir = filepath.Dir(filename)
}
func post(client *http.Client, path string, filepath string) (string, []byte) {
file, err := os.Open(filepath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
stat, _ := file.Stat()
req, err := http.NewRequest("POST", apiRoot+path, file)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", fmt.Sprintf("Token %s", token))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json; indent=4")
req.ContentLength = stat.Size()
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
content, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
return resp.Status, content
}
func main() {
nameservers := filepath.Join(execdir, "nameservers.json")
zones := filepath.Join(execdir, "zones.json")
records := filepath.Join(execdir, "records.json")
client := &http.Client{}
nsStatus, nsContent := post(client, "/nameservers/", nameservers)
log.Printf("nameservers: %s\n%s", nsStatus, nsContent)
zoneStatus, zoneContent := post(client, "/zones/", zones)
log.Printf("zones: %s\n%s", zoneStatus, zoneContent)
recordStatus, recordContent := post(client, "/records/", records)
log.Printf("records: %s\n%s", recordStatus, recordContent)
}
+8
View File
@@ -0,0 +1,8 @@
[
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
]
+250
View File
@@ -0,0 +1,250 @@
[
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "dns01",
"value": "10.0.0.10"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "dns01",
"value": "2001:db8:dead:beef::1:10"
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "dns02",
"value": "10.0.0.11"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "dns02",
"value": "2001:db8:dead:beef::1:11"
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "aservice",
"value": "10.0.0.12"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "aservice",
"value": "2001:db8:dead:beef::1:12"
},
{
"zone": {
"name": "example.com"
},
"type": "MX",
"name": "@",
"value": "10 mail.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "mail",
"value": "10.0.0.13"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "mail",
"value": "2001:db8:dead:beef::1:13"
},
{
"zone": {
"name": "example.com"
},
"type": "TXT",
"name": "@",
"value": "v=spf1 ip4:10.0.0.13 ip6:2001:db8:dead:beef::1:13 a -all"
},
{
"zone": {
"name": "example.com"
},
"type": "TXT",
"name": "@",
"value": "v=DMARC1;p=none;sp=quarantine;pct=100;rua=admin@example.com;"
},
{
"zone": {
"name": "example.com"
},
"type": "TXT",
"name": "@",
"value": "\"some value\"\\r\\n\"another value\""
},
{
"zone": {
"name": "example.com"
},
"type": "TXT",
"name": "@",
"value": "\"newline record\"\\n\"second value\""
},
{
"zone": {
"name": "example.com"
},
"type": "TXT",
"name": "@",
"value": "\"my value\" \"second my value\" \"third my value\""
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "puppet-server-a",
"value": "10.0.0.15"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "puppet-server-a",
"value": "2001:db8:dead:beef::1:15"
},
{
"zone": {
"name": "example.com"
},
"type": "SRV",
"name": "_x-puppet._tcp",
"value": "0 5 8140 puppet-server-a.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "puppet-server-b",
"value": "10.0.0.16"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "puppet-server-b",
"value": "2001:db8:dead:beef::1:16"
},
{
"zone": {
"name": "example.com"
},
"type": "SRV",
"name": "_x-puppet._tcp",
"value": "0 5 8140 puppet-server-b.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "A",
"name": "web",
"value": "10.0.0.17"
},
{
"zone": {
"name": "example.com"
},
"type": "AAAA",
"name": "web",
"value": "2001:db8:dead:beef::1:17"
},
{
"zone": {
"name": "example.com"
},
"type": "CNAME",
"name": "www",
"value": "web.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "NS",
"name": "sub",
"value": "dns01.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "NS",
"name": "sub",
"value": "dns02.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "NS",
"name": "subtwo",
"value": "dns01.example.com"
},
{
"zone": {
"name": "example.com"
},
"type": "NS",
"name": "subtwo",
"value": "dns02.example.com"
},
{
"zone": {
"name": "sub.example.com"
},
"type": "A",
"name": "myservice",
"value": "10.0.1.10"
},
{
"zone": {
"name": "sub.example.com"
},
"type": "AAAA",
"name": "myservice",
"value": "2001:db8:dead:beef::2:10"
},
{
"zone": {
"name": "subtwo.example.com"
},
"type": "A",
"name": "myotherservice",
"value": "10.0.2.10"
},
{
"zone": {
"name": "subtwo.example.com"
},
"type": "AAAA",
"name": "myotherservice",
"value": "2001:db8:dead:beef::3:10"
}
]
+209
View File
@@ -0,0 +1,209 @@
[
{
"name": "example.com",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "0.0.10.in-addr.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "1.0.0.0.0.0.0.0.0.0.0.0.f.e.e.b.d.a.e.d.8.b.d.0.1.0.0.2.ip6.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "sub.example.com",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "1.0.10.in-addr.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "2.0.0.0.0.0.0.0.0.0.0.0.f.e.e.b.d.a.e.d.8.b.d.0.1.0.0.2.ip6.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "subtwo.example.com",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "2.0.10.in-addr.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
},
{
"name": "3.0.0.0.0.0.0.0.0.0.0.0.f.e.e.b.d.a.e.d.8.b.d.0.1.0.0.2.ip6.arpa",
"nameservers": [
{
"name": "dns01.example.com"
},
{
"name": "dns02.example.com"
}
],
"default_ttl": 3600,
"soa_expire": 2419200,
"soa_minimum": 3600,
"soa_mname": {
"name": "dns01.example.com"
},
"soa_ttl": 86400,
"soa_refresh": 43200,
"soa_retry": 7200,
"soa_rname": "admin.example.com",
"soa_serial_auto": false,
"soa_serial": 1
}
]