diff options
| author | Jeff Carr <[email protected]> | 2024-01-01 15:31:33 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-01 15:31:33 -0600 |
| commit | f1a0d18ac19d0db4f7060ea5a5c662348118e399 (patch) | |
| tree | f2e454da9c3ff512b6548ce741825261178a6a56 /structs.go | |
initial commit of cloudflare api
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'structs.go')
| -rw-r--r-- | structs.go | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/structs.go b/structs.go new file mode 100644 index 0000000..675cd5e --- /dev/null +++ b/structs.go @@ -0,0 +1,105 @@ +// This is a simple example +package cloudflare + +import ( + "go.wit.com/gui/gui" +) + +var cloudflareURL string = "https://api.cloudflare.com/client/v4/zones/" + +// Define a struct to match the JSON structure of the response. +// This structure should be adjusted based on the actual format of the response. +type DNSRecords struct { + Result []struct { + ID string `json:"id"` + Type string `json:"type"` + Name string `json:"name"` + Content string `json:"content"` + Proxied bool `json:"proxied"` + Proxiable bool `json:"proxiable"` + TTL int `json:"ttl"` + } `json:"result"` +} + +// CFdialog is everything you need forcreating +// a new record: name, TTL, type (CNAME, A, etc) +var CFdialog dialogT + +type dialogT struct { + rootGui *gui.Node // the root node + mainWindow *gui.Node // the window node + zonedrop *gui.Node // the drop down menu of zones + + domainWidget *gui.Node + zoneWidget *gui.Node + authWidget *gui.Node + emailWidget *gui.Node + + loadButton *gui.Node + saveButton *gui.Node + + cloudflareW *gui.Node // the window node + cloudflareB *gui.Node // the cloudflare button + + TypeNode *gui.Node // CNAME, A, AAAA, ... + NameNode *gui.Node // www, mail, ... + ValueNode *gui.Node // 4.2.2.2, "dkim stuff", etc + + rrNode *gui.Node // cloudflare Resource Record ID + proxyNode *gui.Node // If cloudflare is a port 80 & 443 proxy + ttlNode *gui.Node // just set to 1 which means automatic to cloudflare + curlNode *gui.Node // shows you what you could run via curl + resultNode *gui.Node // what the cloudflare API returned + SaveNode *gui.Node // button to send it to cloudflare + + zoneNode *gui.Node // "wit.com" + zoneIdNode *gui.Node // cloudflare zone ID + apiNode *gui.Node // cloudflare API key (from environment var CF_API_KEY) + emailNode *gui.Node // cloudflare email (from environment var CF_API_EMAIL) + urlNode *gui.Node // the URL to POST, PUT, DELETE, etc +} + +// Resource Record (used in a DNS zonefile) +type RRT struct { + ID string + Type string + Name string + Content string + ProxyS string + Proxied bool + Proxiable bool + Ttl string + + Domain string + ZoneID string + Auth string + Email string + url string + data string +} + +/* + This is a structure of all the RR's (Resource Records) + in the DNS zonefiile for a hostname. For example: + + For the host test.wit.com: + + test.wit.com A 127.0.0.1 + test.wit.com AAAA + test.wit.com TXT email [email protected] + test.wit.com TXT phone 212-555-1212 + test.wit.com CNAME real.wit.com +*/ +type hostT struct { + hostname string + RRs []ConfigT +} + +type ConfigT struct { + Domain string + ZoneID string + Auth string + Email string +} + +var Config map[string]*ConfigT |
