From d3536a2b2881c6103bd39fb14ffa0b8484c3edc5 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 5 Jan 2024 18:52:47 -0600 Subject: [PATCH] cloudflare API changed Signed-off-by: Jeff Carr --- api.go | 46 +++++++++++++++++++++++++++++++--------------- args.go | 20 ++++++++++++++++++++ http.go | 3 +-- mainWindow.go | 1 + zonesBox.go | 40 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 17 deletions(-) create mode 100644 args.go create mode 100644 zonesBox.go diff --git a/api.go b/api.go index 41ddae6..1a56423 100644 --- a/api.go +++ b/api.go @@ -99,37 +99,46 @@ func SetRow(dnsRow *RRT) { } func GetZonefile(c *ConfigT) *DNSRecords { - var url = cloudflareURL + c.ZoneID + "/dns_records/?per_page=100" + var url = cloudflareURL + c.ZoneID + "/dns_records/?per_page=10" log.Println("getZonefile()", c.Domain, url) req, err := http.NewRequest("GET", url, nil) if err != nil { - log.Println("http.NewRequest error:", err) + log.Error(err, "http.NewRequest error") return nil } // Set headers - req.Header.Set("X-Auth-Key", c.Auth) - req.Header.Set("X-Auth-Email", c.Email) + req.Header.Set("Authorization", "Bearer " + c.Auth) + // 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) client := &http.Client{} resp, err := client.Do(req) + // log.Spew("SPEWING", resp) if err != nil { - log.Println("http.Client error:", err) + log.Error(err, "http.Client error") return nil } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { - log.Println("ioutil.ReadAll() error", err) + log.Error(err, "ioutil.ReadAll() error") return nil } + log.Spew("SPEWING", body) + pretty, err := FormatJSON(string(body)) + if err != nil { + log.Error(err, "FormatJSON error") + } else { + log.Warn(pretty) + } var records DNSRecords if err := json.Unmarshal(body, &records); err != nil { - log.Println("json.Unmarshal() error", err) + log.Error(err, "json.Unmarshal() error") return nil } @@ -166,35 +175,42 @@ func GetZones(auth, email string) *DNSRecords { log.Println("getZones()", url) req, err := http.NewRequest("GET", url, nil) if err != nil { - log.Println("http.NewRequest error:", err) + log.Error(err, "http.NewRequest error") return nil } // Set headers - req.Header.Set("X-Auth-Key", auth) - req.Header.Set("X-Auth-Email", email) + req.Header.Set("Authorization", "Bearer " + auth) + // req.Header.Set("X-Auth-Key", auth) + // req.Header.Set("X-Auth-Email", email) log.Println("getZones() auth, email", auth, email) client := &http.Client{} resp, err := client.Do(req) if err != nil { - log.Println("getZones() http.Client error:", err) + log.Error(err, "getZones() http.Client error") return nil } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { - log.Println("getZones() ioutil.ReadAll() error", err) + log.Error(err, "getZones() ioutil.ReadAll() error") return nil } var records DNSRecords if err := json.Unmarshal(body, &records); err != nil { - log.Println("getZones() json.Unmarshal() error", err) + log.Error(err, "getZones() json.Unmarshal() error") return nil } + pretty, err := FormatJSON(string(body)) + if err != nil { + log.Error(err, "FormatJSON error") + } else { + log.Warn(pretty) + } /* Cloudflare API returns struct[] of: struct { ID string "json:\"id\""; Type string "json:\"type\""; Name string "json:\"name\""; @@ -206,8 +222,8 @@ func GetZones(auth, email string) *DNSRecords { // log.Println("spew dump:") // spew.Dump(records) for _, record := range records.Result { - log.Println("spew record:", record) - log.Println("record:", record.Name, record.ID) + log.Spew("spew record:", record) + log.Info("record:", record.Name, record.ID) var newc *ConfigT newc = new(ConfigT) diff --git a/args.go b/args.go new file mode 100644 index 0000000..6ecea2d --- /dev/null +++ b/args.go @@ -0,0 +1,20 @@ +package cloudflare + +// initializes logging and command line options + +import ( + "go.wit.com/log" +) + +var CURL log.LogFlag +var POLL log.LogFlag +var BUG log.LogFlag + +func init() { + CURL.B = true + CURL.Name = "CURL" + CURL.Subsystem = "cloudflare" + CURL.Short = "gui cf" + CURL.Desc = "curl interactions()" + CURL.Register() +} diff --git a/http.go b/http.go index f976b96..ec6869e 100644 --- a/http.go +++ b/http.go @@ -180,8 +180,7 @@ func curlPost(dnsRow *RRT) string { log.Println(err) return "" } - // log.Println("http PUT body =", body) - // spew.Dump(body) + log.Spew("http PUT body =", body) log.Println("result =", string(body)) log.Println("curl() END") diff --git a/mainWindow.go b/mainWindow.go index 7d19e1c..c571893 100644 --- a/mainWindow.go +++ b/mainWindow.go @@ -16,6 +16,7 @@ func MakeCloudflareWindow(n *gui.Node) *gadgets.BasicWindow { log.Println("buttonWindow() START") CFdialog.mainWindow = gadgets.NewBasicWindow(n,"Cloudflare Config") + CFdialog.mainWindow.Vertical() // this tab has the master cloudflare API credentials makeConfigWindow(CFdialog.mainWindow.Box()) diff --git a/zonesBox.go b/zonesBox.go new file mode 100644 index 0000000..38ef78f --- /dev/null +++ b/zonesBox.go @@ -0,0 +1,40 @@ +// This is a simple example +package cloudflare + +import ( + "go.wit.com/log" + "go.wit.com/gui/gui" +) + +func drawZoneBox(box *gui.Node) { + g1 := box.NewGroup("zones") + + // make dropdown list of zones + CFdialog.zonedrop = g1.NewDropdown("zone") + CFdialog.zonedrop.AddText("example.org") + for d, _ := range Config { + CFdialog.zonedrop.AddText(d) + } + CFdialog.zonedrop.AddText("stablesid.org") + + CFdialog.zonedrop.Custom = func () { + domain := CFdialog.zonedrop.S + log.Println("custom dropdown() zone (domain name) =", CFdialog.zonedrop.Name, domain) + if (Config[domain] == nil) { + log.Println("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) + CFdialog.domainWidget.SetText(Config[domain].Domain) + CFdialog.zoneWidget.SetText(Config[domain].ZoneID) + CFdialog.authWidget.SetText(Config[domain].Auth) + CFdialog.emailWidget.SetText(Config[domain].Email) + } + } + + more := g1.NewGroup("data") + showCloudflareCredentials(more) +}