diff options
Diffstat (limited to 'examples/cloudflare/main.go')
| -rw-r--r-- | examples/cloudflare/main.go | 236 |
1 files changed, 0 insertions, 236 deletions
diff --git a/examples/cloudflare/main.go b/examples/cloudflare/main.go deleted file mode 100644 index 64dabc5..0000000 --- a/examples/cloudflare/main.go +++ /dev/null @@ -1,236 +0,0 @@ -// This is a simple example -package main - -import ( - "os" - "fmt" - "log" - "bufio" - "strings" - - "go.wit.com/gui" - "go.wit.com/control-panel-dns/cloudflare" -) - -var title string = "Cloudflare DNS Control Panel" -var outfile string = "/tmp/guilogfile" -var configfile string = ".config/wit/cloudflare" -var myGui *gui.Node - -var buttonCounter int = 5 -var gridW int = 5 -var gridH int = 3 - -var mainWindow, more, more2 *gui.Node - -func main() { - config = make(map[string]*configT) - readConfig() - myGui = gui.New().Default() - makeCloudflareWindow() - - // This is just a optional goroutine to watch that things are alive - gui.Watchdog() - gui.StandardExit() -} - -// This creates a window -func makeCloudflareWindow() { - var t *gui.Node - - log.Println("buttonWindow() START") - - mainWindow = myGui.NewWindow(title).SetText(title) - - // this tab has the master cloudflare API credentials - makeConfigTab(mainWindow) - - t = mainWindow.NewTab("Zones") - vb := t.NewBox("vBox", false) - g1 := vb.NewGroup("zones") - - // make dropdown list of zones - zonedrop = g1.NewDropdown("zone") - zonedrop.AddText("example.org") - for d, _ := range config { - zonedrop.AddText(d) - } - zonedrop.AddText("stablesid.org") - - zonedrop.Custom = func () { - domain := zonedrop.S - log.Println("custom dropdown() zone (domain name) =", zonedrop.Name, domain) - if (config[domain] == nil) { - log.Println("custom dropdown() config[domain] = nil for domain =", domain) - domainWidget.SetText(domain) - zoneWidget.SetText("") - authWidget.SetText("") - emailWidget.SetText("") - } else { - log.Println("custom dropdown() a =", domain, config[domain].zoneID, config[domain].auth, config[domain].email) - domainWidget.SetText(config[domain].domain) - zoneWidget.SetText(config[domain].zoneID) - authWidget.SetText(config[domain].auth) - emailWidget.SetText(config[domain].email) - } - } - - more = g1.NewGroup("data") - showCloudflareCredentials(more) - - makeDebugTab(mainWindow) -} - -func makeConfigTab(window *gui.Node) { - t := window.NewTab("Get Zones") - vb := t.NewBox("vBox", false) - g1 := vb.NewGroup("Cloudflare API Config") - - g1.NewLabel("If you have an API key with access to list all of /n your zone files, enter it here. \n \n Alternatively, you can set the enviroment variables: \n env $CF_API_KEY \n env $CF_API_EMAIL\n") - - // make grid to display credentials - grid := g1.NewGrid("credsGrid", 2, 4) // width = 2 - - grid.NewLabel("Auth Key") - aw := grid.NewEntryLine("CF_API_KEY") - aw.SetText(os.Getenv("CF_API_KEY")) - - grid.NewLabel("Email") - ew := grid.NewEntryLine("CF_API_EMAIL") - ew.SetText(os.Getenv("CF_API_EMAIL")) - - var url string = "https://api.cloudflare.com/client/v4/zones/" - grid.NewLabel("Cloudflare API") - grid.NewLabel(url) - - grid.Pad() - - vb.NewButton("getZones()", func () { - log.Println("getZones()") - getZones(aw.S, ew.S) - }) - - vb.NewButton("cloudflare wit.com", func () { - cloudflare.CreateRR(myGui, "wit.com", "3777302ac4a78cd7fa4f6d3f72086d06") - }) - - t.Pad() - t.Margin() - vb.Pad() - vb.Margin() - g1.Pad() - g1.Margin() -} - -func makeDebugTab(window *gui.Node) { - t2 := window.NewTab("debug") - g := t2.NewGroup("debug") - g.NewButton("Load 'gocui'", func () { - // this set the xterm and mate-terminal window title. maybe works generally? - fmt.Println("\033]0;" + title + "blah \007") - myGui.LoadToolkit("gocui") - }) - - g.NewButton("Load 'andlabs'", func () { - myGui.LoadToolkit("andlabs") - }) - - g.NewButton("gui.DebugWindow()", func () { - gui.DebugWindow() - }) - - g.NewButton("List all Widgets", func () { - myGui.ListChildren(true) - }) - g.NewButton("Dump all Widgets", func () { - myGui.Dump() - }) -} - -func showCloudflareCredentials(box *gui.Node) { - // make grid to display credentials - grid := box.NewGrid("credsGrid", 2, 4) // width = 2 - - grid.NewLabel("Domain") - domainWidget = grid.NewEntryLine("CF_API_DOMAIN") - - grid.NewLabel("Zone ID") - zoneWidget = grid.NewEntryLine("CF_API_ZONEID") - - grid.NewLabel("Auth Key") - authWidget = grid.NewEntryLine("CF_API_KEY") - - grid.NewLabel("Email") - emailWidget = grid.NewEntryLine("CF_API_EMAIL") - - var url string = "https://api.cloudflare.com/client/v4/zones/" - grid.NewLabel("Cloudflare API") - grid.NewLabel(url) - - grid.Pad() - - loadButton = box.NewButton("Load Cloudflare DNS zonefile", func () { - var domain configT - domain.domain = domainWidget.S - domain.zoneID = zoneWidget.S - domain.auth = authWidget.S - domain.email = emailWidget.S - loadDNS(&domain) - }) -} - -func readConfig() { - homeDir, err := os.UserHomeDir() - if err != nil { - log.Println("searchPaths() error. exiting here?") - } - filename := homeDir + "/" + configfile - log.Println("filename =", filename) - - readFileLineByLine(filename) - // os.Exit(0) -} - -// readFileLineByLine opens a file and reads through each line. -func readFileLineByLine(filename string) error { - // Open the file. - file, err := os.Open(filename) - if err != nil { - return err - } - defer file.Close() - - log.Println("readFileLineByLine() =", filename) - - // Create a new Scanner for the file. - scanner := bufio.NewScanner(file) - - // Read through each line using scanner. - for scanner.Scan() { - var newc *configT - newc = new(configT) - - line := scanner.Text() - parts := strings.Fields(line) - - if (len(parts) < 4) { - log.Println("readFileLineByLine() SKIP =", parts) - continue - } - - newc.domain = parts[0] - newc.zoneID = parts[1] - newc.auth = parts[2] - newc.email = parts[3] - - config[parts[0]] = newc - log.Println("readFileLineByLine() =", newc.domain, newc.zoneID, newc.auth, newc.email) - } - - // Check for errors during Scan. - if err := scanner.Err(); err != nil { - return err - } - - return nil -} |
