Compare commits

..

4 Commits

Author SHA1 Message Date
Jeff Carr 7116cab218 minor update
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-06 21:05:45 -06:00
Jeff Carr 89e740330f return *gui.BasicWindow
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-06 21:04:31 -06:00
Jeff Carr 8f34aa62f2 send everything through go.wit.com/log
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-05 19:33:41 -06:00
Jeff Carr 2ce239c6ce CURL output flag works
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-05 19:18:36 -06:00
10 changed files with 95 additions and 82 deletions

37
api.go
View File

@ -22,7 +22,7 @@ func DoChange() *RRT {
var dnsRow *RRT
dnsRow = new(RRT)
log.Println("DoChange() START")
log.Log(INFO, "DoChange() START")
if (CFdialog.proxyNode.S == "On") {
dnsRow.Proxied = true
} else {
@ -42,20 +42,20 @@ func DoChange() *RRT {
dnsRow.data = makeJSON(dnsRow)
// show the JSON
log.Println(dnsRow)
log.Log(INFO, dnsRow)
if (CFdialog.curlNode != nil) {
pretty, _ := FormatJSON(dnsRow.data)
log.Println("http PUT curl =", pretty)
log.Log(INFO, "http PUT curl =", pretty)
CFdialog.curlNode.SetText(pretty)
}
return dnsRow
}
func SetRow(dnsRow *RRT) {
log.Println("Look for changes in row", dnsRow.ID)
log.Log(INFO, "Look for changes in row", dnsRow.ID)
if (CFdialog.proxyNode != nil) {
log.Println("Proxy", dnsRow.Proxied, "vs", CFdialog.proxyNode.S)
log.Log(INFO, "Proxy", dnsRow.Proxied, "vs", CFdialog.proxyNode.S)
if (dnsRow.Proxied == true) {
CFdialog.proxyNode.SetText("On")
} else {
@ -68,12 +68,12 @@ func SetRow(dnsRow *RRT) {
if (CFdialog.zoneIdNode != nil) {
CFdialog.zoneIdNode.SetText(dnsRow.ZoneID)
}
log.Println("zoneIdNode =", dnsRow.ZoneID)
log.Log(INFO, "zoneIdNode =", dnsRow.ZoneID)
if (CFdialog.rrNode != nil) {
CFdialog.rrNode.SetText(dnsRow.ID)
}
if (CFdialog.ValueNode != nil) {
log.Println("Content", dnsRow.Content, "vs", CFdialog.ValueNode.S)
log.Log(INFO, "Content", dnsRow.Content, "vs", CFdialog.ValueNode.S)
CFdialog.ValueNode.SetText(dnsRow.Content)
}
if (CFdialog.NameNode != nil) {
@ -90,17 +90,17 @@ func SetRow(dnsRow *RRT) {
// show the JSON
tmp := makeJSON(dnsRow)
log.Println(tmp)
log.Spew(tmp)
if (CFdialog.curlNode != nil) {
pretty, _ := FormatJSON(tmp)
log.Println("http PUT curl =", pretty)
log.Spew("http PUT curl =", pretty)
CFdialog.curlNode.SetText(pretty)
}
}
func GetZonefile(c *ConfigT) *DNSRecords {
var url = cloudflareURL + c.ZoneID + "/dns_records/?per_page=10"
log.Println("getZonefile()", c.Domain, url)
var url = cloudflareURL + c.ZoneID + "/dns_records/?per_page=100"
log.Log(ZONE, "getZonefile()", c.Domain, url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Error(err, "http.NewRequest error")
@ -112,7 +112,7 @@ func GetZonefile(c *ConfigT) *DNSRecords {
// req.Header.Set("X-Auth-Key", c.Auth)
// req.Header.Set("X-Auth-Email", c.Email)
log.Println("getZonefile() auth, email", c.Auth, c.Email)
log.Log(ZONE, "getZonefile() auth, email", c.Auth, c.Email)
client := &http.Client{}
resp, err := client.Do(req)
@ -142,7 +142,7 @@ func GetZonefile(c *ConfigT) *DNSRecords {
return nil
}
log.Println("getZonefile() worked", records)
log.Log(ZONE, "getZonefile() worked", records)
return &records
}
@ -172,7 +172,7 @@ func makeJSON(dnsRow *RRT) string {
// https://api.cloudflare.com/client/v4/zones
func GetZones(auth, email string) *DNSRecords {
var url = "https://api.cloudflare.com/client/v4/zones?per_page=100"
log.Println("getZones()", url)
log.Log(ZONE, "getZones()", url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Error(err, "http.NewRequest error")
@ -184,7 +184,7 @@ func GetZones(auth, email string) *DNSRecords {
// req.Header.Set("X-Auth-Key", auth)
// req.Header.Set("X-Auth-Email", email)
log.Println("getZones() auth, email", auth, email)
log.Log(ZONE, "getZones() auth, email", auth, email)
client := &http.Client{}
resp, err := client.Do(req)
@ -218,9 +218,6 @@ func GetZones(auth, email string) *DNSRecords {
Proxiable bool "json:\"proxiable\""; TTL int "json:\"ttl\"" }
*/
// log.Println("getZones() worked", records)
// log.Println("spew dump:")
// spew.Dump(records)
for _, record := range records.Result {
log.Spew("spew record:", record)
log.Info("record:", record.Name, record.ID)
@ -234,10 +231,10 @@ func GetZones(auth, email string) *DNSRecords {
newc.Email = email
Config[record.Name] = newc
log.Println("zonedrop.AddText:", record.Name, record.ID)
log.Log(ZONE, "zonedrop.AddText:", record.Name, record.ID)
}
for d, _ := range Config {
log.Println("Config entry:", d)
log.Log(ZONE, "Config entry:", d)
}
return &records

18
args.go
View File

@ -6,15 +6,29 @@ import (
"go.wit.com/log"
)
var INFO log.LogFlag
var CURL log.LogFlag
var POLL log.LogFlag
var BUG log.LogFlag
var ZONE log.LogFlag
func init() {
INFO.B = true
INFO.Name = "INFO"
INFO.Subsystem = "cloudflare"
INFO.Short = "gui cf"
INFO.Desc = "general info"
INFO.Register()
CURL.B = true
CURL.Name = "CURL"
CURL.Subsystem = "cloudflare"
CURL.Short = "gui cf"
CURL.Desc = "curl interactions()"
CURL.Register()
ZONE.B = true
ZONE.Name = "ZONE"
ZONE.Subsystem = "cloudflare"
ZONE.Short = "gui cf"
ZONE.Desc = "zone details"
ZONE.Register()
}

View File

@ -29,17 +29,17 @@ func Create(zone string, hostname string, value string) bool {
GetZones(key, email)
var z *ConfigT
for d, v := range Config {
log.Info("cloudflare.Create() zone =", d, "value =", v)
log.Log(INFO, "cloudflare.Create() zone =", d, "value =", v)
if (zone == d) {
z = Config[zone]
log.Info("cloudflare.Create() FOUND ZONE", zone, "ID =", z.ZoneID)
log.Log(INFO, "cloudflare.Create() FOUND ZONE", zone, "ID =", z.ZoneID)
}
}
if (z == nil) {
log.Warn("cloudflare.Create() COULD NOT FIND ZONE", zone)
return false
}
log.Info("cloudflare.Create() FOUND ZONE", z)
log.Log(INFO, "cloudflare.Create() FOUND ZONE", z)
// make a json record to send on port 80 to cloudflare
var data string
@ -52,6 +52,6 @@ func Create(zone string, hostname string, value string) bool {
result := doCurlCreate(key, email, z.ZoneID, data)
pretty, _ := FormatJSON(result)
log.Info("cloudflare.Create() result =", pretty)
log.Spew("cloudflare.Create() result =", pretty)
return true
}

2
go.mod
View File

@ -5,7 +5,7 @@ go 1.21.4
require (
go.wit.com/gui/gadgets v0.1.3
go.wit.com/gui/gui v0.10.3
go.wit.com/log v0.3.1
go.wit.com/log v0.4.2
)
require (

4
go.sum
View File

@ -17,8 +17,8 @@ go.wit.com/gui/gui v0.10.3 h1:plWd7trEZ0QuR0D1zGK01RXJAmoLoVK2KqLJY0pZGRc=
go.wit.com/gui/gui v0.10.3/go.mod h1:xT5B88UTZORtfJ11CJB/vRb7Mj0rk4PLB/HpVNkF0Yo=
go.wit.com/gui/toolkits v0.4.1 h1:Kw9gTAajHwQShuK8MOj8UizGPeY5hOtDfvAxYpDXjUw=
go.wit.com/gui/toolkits v0.4.1/go.mod h1:f2QuC3z15/JxNnwujyFkgvkYjBS1fy0ni+QQ9idZnWQ=
go.wit.com/log v0.3.1 h1:UXtgJ4dwyWL0Yv4mw6gQnlmrIQU/zz6nClCB7NGKBQs=
go.wit.com/log v0.3.1/go.mod h1:GmsggfsKrqdZdAj26fEOlcTz6qEIazbV33uyuuktvB8=
go.wit.com/log v0.4.2 h1:oYCOD7qCY0A+LsrQXPv5ETtVyD8AhIHgvNBMdly9hy0=
go.wit.com/log v0.4.2/go.mod h1:EZLvivLZpMoXl5AUBArH0zsIgr+c+WyNXm14BCF+sdw=
go.wit.com/spew v0.0.0-20240101141411-c7b8e91573c9 h1:UEX2EzLQPzLTfy/kUFQD7OXtvKn8wk/+jpDOkbl4ff4=
go.wit.com/spew v0.0.0-20240101141411-c7b8e91573c9/go.mod h1:qBpgJXThMMT15vym7/E4Ur9y8oOo2nP7t2RP52QHUNw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

61
http.go
View File

@ -49,20 +49,22 @@ func doCurlDelete(auth string, email string, zoneId string, rrId string) string
// Set headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Auth-Key", auth)
req.Header.Set("X-Auth-Email", email)
req.Header.Set("Authorization", "Bearer " + auth)
// changed from this 2024-01-05
// req.Header.Set("X-Auth-Key", auth)
// req.Header.Set("X-Auth-Email", email)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Println(err)
log.Error(err)
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
log.Error(err)
return ""
}
@ -80,32 +82,33 @@ func doCurlCreate(auth string, email string, zoneId string, data string) string
url := "https://api.cloudflare.com/client/v4/zones/" + zoneId + "/dns_records/"
log.Info("doCurlCreate() POST url =", url)
log.Info("doCurlCreate() POST Auth =", auth)
log.Info("doCurlCreate() POST Email =", email)
log.Info("doCurlCreate() POST data =", data)
log.Log(CURL, "doCurlCreate() POST url =", url)
log.Log(CURL, "doCurlCreate() POST Auth =", auth)
log.Log(CURL, "doCurlCreate() POST Email =", email)
log.Log(CURL, "doCurlCreate() POST data =", data)
req, err = http.NewRequest(http.MethodPost, url, bytes.NewBuffer( []byte(data) ))
// Set headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Auth-Key", auth)
req.Header.Set("X-Auth-Email", email)
req.Header.Set("Authorization", "Bearer " + auth)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Println(err)
log.Error(err, "client.Do() failed")
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
log.Error(err, "ioutil.ReadAll(body) failed")
return ""
}
pretty, _ := FormatJSON(string(body))
log.Log(CURL, "Create() result =", pretty)
return string(body)
}
@ -123,25 +126,24 @@ func doCurl(method string, rr *RRT) string {
// Set headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Auth-Key", rr.Auth)
req.Header.Set("X-Auth-Email", rr.Email)
req.Header.Set("Authorization", "Bearer " + rr.Auth)
log.Println("http PUT url =", rr.url)
log.Println("http PUT Auth =", rr.Auth)
log.Println("http PUT Email =", rr.Email)
log.Println("http PUT data =", rr.data)
log.Log(CURL, "http PUT url =", rr.url)
log.Log(CURL, "http PUT Auth =", rr.Auth)
log.Log(CURL, "http PUT Email =", rr.Email)
log.Log(CURL, "http PUT data =", rr.data)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Println(err)
log.Error(err)
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
log.Error(err)
return ""
}
@ -155,35 +157,34 @@ func curlPost(dnsRow *RRT) string {
url := dnsRow.url
tmp := dnsRow.data
log.Println("curlPost() START")
log.Println("curlPost() authkey = ", authKey)
log.Println("curlPost() email = ", email)
log.Println("curlPost() url = ", url)
log.Log(CURL, "curlPost() START")
log.Log(CURL, "curlPost() authkey = ", authKey)
log.Log(CURL, "curlPost() email = ", email)
log.Log(CURL, "curlPost() url = ", url)
data := []byte(tmp)
req, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(data))
// Set headers
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Auth-Key", authKey)
req.Header.Set("X-Auth-Email", email)
req.Header.Set("Authorization", "Bearer " + authKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Println(err)
log.Error(err, "client.Do() failed")
return ""
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
log.Error(err)
return ""
}
log.Spew("http PUT body =", body)
log.Println("result =", string(body))
log.Println("curl() END")
pretty, _ := FormatJSON(string(body))
log.Log(CURL, "result =", pretty)
log.Log(CURL, "curl() END")
return pretty
}

View File

@ -2,9 +2,9 @@
package cloudflare
import (
"log"
"strconv"
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
)
@ -12,7 +12,7 @@ import (
func LoadZoneWindow(n *gui.Node, c *ConfigT) {
hostname := c.Domain
zoneID := c.ZoneID
log.Println("adding DNS record", hostname)
log.Log(INFO, "adding DNS record", hostname)
newW := gadgets.NewBasicWindow(n, hostname)
newg := newW.Box().NewGroup("more zoneID = " + zoneID)
@ -21,7 +21,7 @@ func LoadZoneWindow(n *gui.Node, c *ConfigT) {
grid := newg.NewGrid("gridnuts", 6, 1)
// grid.NewButton("Type", func () {
// log.Println("sort by Type")
// log.Log(INFO, "sort by Type")
// })
grid.NewLabel("RR type")
grid.NewLabel("hostname")
@ -74,7 +74,7 @@ func LoadZoneWindow(n *gui.Node, c *ConfigT) {
load := grid.NewButton("Load", nil)
load.Custom = func () {
name := "save stuff to cloudflare for " + rr.ID
log.Println(name)
log.Log(INFO, name)
/*
rr.Domain = domainWidget.S

View File

@ -3,8 +3,8 @@ package cloudflare
import (
"os"
"log"
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
)
@ -13,7 +13,7 @@ import (
func MakeCloudflareWindow(n *gui.Node) *gadgets.BasicWindow {
CFdialog.rootGui = n
log.Println("buttonWindow() START")
log.Log(INFO, "buttonWindow() START")
CFdialog.mainWindow = gadgets.NewBasicWindow(n,"Cloudflare Config")
CFdialog.mainWindow.Vertical()
@ -34,15 +34,15 @@ func MakeCloudflareWindow(n *gui.Node) *gadgets.BasicWindow {
CFdialog.zonedrop.Custom = func () {
domain := CFdialog.zonedrop.S
log.Println("custom dropdown() zone (domain name) =", CFdialog.zonedrop.Name, domain)
log.Log(ZONE, "custom dropdown() zone (domain name) =", CFdialog.zonedrop.Name, domain)
if (Config[domain] == nil) {
log.Println("custom dropdown() Config[domain] = nil for domain =", domain)
log.Log(ZONE, "custom dropdown() Config[domain] = nil for domain =", domain)
CFdialog.domainWidget.SetText(domain)
CFdialog.zoneWidget.SetText("")
CFdialog.authWidget.SetText("")
CFdialog.emailWidget.SetText("")
} else {
log.Println("custom dropdown() a =", domain, Config[domain].ZoneID, Config[domain].Auth, Config[domain].Email)
log.Log(ZONE, "custom dropdown() a =", domain, Config[domain].ZoneID, Config[domain].Auth, Config[domain].Email)
CFdialog.domainWidget.SetText(Config[domain].Domain)
CFdialog.zoneWidget.SetText(Config[domain].ZoneID)
CFdialog.authWidget.SetText(Config[domain].Auth)
@ -82,16 +82,16 @@ func makeConfigWindow(vb *gui.Node) {
grid.Pad()
vb.NewButton("Lookup Hostname", func () {
log.Println("Find all the Resource Records for hostname:", hostname.Get())
log.Println("Find all the Resource Records for zone:", zone.Get())
log.Log(INFO, "Find all the Resource Records for hostname:", hostname.Get())
log.Log(INFO, "Find all the Resource Records for zone:", zone.Get())
GetZones(aw.S, ew.S)
for d, v := range Config {
log.Println("Zone =", d, "v =", v)
log.Log(ZONE, "Zone =", d, "v =", v)
}
})
vb.NewButton("getZones()", func () {
log.Println("getZones()")
log.Log(ZONE, "getZones()")
GetZones(aw.S, ew.S)
for d, _ := range Config {
CFdialog.zonedrop.AddText(d)

15
rr.go
View File

@ -7,9 +7,9 @@
package cloudflare
import (
"log"
"os"
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
)
@ -18,12 +18,12 @@ func init() {
Config = make(map[string]*ConfigT)
}
func CreateRR(myGui *gui.Node, zone string, zoneID string) {
func CreateRR(myGui *gui.Node, zone string, zoneID string) *gadgets.BasicWindow {
if (CFdialog.cloudflareW != nil) {
// skip this if the window has already been created
log.Println("createRR() the cloudflare window already exists")
log.Warn("createRR() the cloudflare window already exists")
CFdialog.cloudflareB.Disable()
return
return CFdialog.cloudflareW
}
CFdialog.cloudflareW = gadgets.NewBasicWindow(myGui, "cloudflare " + zone + " API")
@ -130,7 +130,7 @@ func CreateRR(myGui *gui.Node, zone string, zoneID string) {
CFdialog.resultNode.SetText(result)
pretty, _ := FormatJSON(result)
log.Println(pretty)
log.Spew(pretty)
})
group.NewButton("Update RR doCurl(PUT)", func () {
@ -142,12 +142,13 @@ func CreateRR(myGui *gui.Node, zone string, zoneID string) {
CFdialog.resultNode.SetText(result)
pretty, _ := FormatJSON(result)
log.Println(pretty)
log.Spew(pretty)
})
// CFdialog.saveNode.Disable()
group.Pad()
grid.Pad()
grid.Expand()
return CFdialog.cloudflareW
}

View File

@ -19,15 +19,15 @@ func drawZoneBox(box *gui.Node) {
CFdialog.zonedrop.Custom = func () {
domain := CFdialog.zonedrop.S
log.Println("custom dropdown() zone (domain name) =", CFdialog.zonedrop.Name, domain)
log.Log(INFO, "custom dropdown() zone (domain name) =", CFdialog.zonedrop.Name, domain)
if (Config[domain] == nil) {
log.Println("custom dropdown() Config[domain] = nil for domain =", domain)
log.Log(INFO, "custom dropdown() Config[domain] = nil for domain =", domain)
CFdialog.domainWidget.SetText(domain)
CFdialog.zoneWidget.SetText("")
CFdialog.authWidget.SetText("")
CFdialog.emailWidget.SetText("")
} else {
log.Println("custom dropdown() a =", domain, Config[domain].ZoneID, Config[domain].Auth, Config[domain].Email)
log.Log(INFO, "custom dropdown() a =", domain, Config[domain].ZoneID, Config[domain].Auth, Config[domain].Email)
CFdialog.domainWidget.SetText(Config[domain].Domain)
CFdialog.zoneWidget.SetText(Config[domain].ZoneID)
CFdialog.authWidget.SetText(Config[domain].Auth)