initial commit

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-01 15:27:59 -06:00
commit 5e485f20d9
5 changed files with 158 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
control-panel-dns
/files/*
/*.deb
*.swp
/plugins/*
control-panel-cloudflare

27
Makefile Normal file
View File

@ -0,0 +1,27 @@
run: build
./control-panel-cloudflare
build-release:
go get -v -u -x .
go build
./control-panel-cloudflare
build:
GO111MODULE="off" go get -v -x .
GO111MODULE="off" go build
update:
GO111MODULE="off" go get -v -u -x .
log:
reset
tail -f /tmp/witgui.* /tmp/guilogfile
debug: build
./control-panel-cloudflare --gui-debug
gocui: build
./control-panel-cloudflare --gui gocui >/tmp/witgui.log.stderr 2>&1
quiet:
./control-panel-cloudflare >/tmp/witgui.log.stderr 2>&1

17
argv.go Normal file
View File

@ -0,0 +1,17 @@
package main
/*
this enables command line options from other packages like 'gui' and 'log'
*/
import (
arg "github.com/alexflint/go-arg"
"go.wit.com/gui/gui"
"go.wit.com/log"
)
func init() {
arg.MustParse()
log.Bool(true, "INIT() args.ArgDebug =", gui.ArgDebug())
}

72
config.go Normal file
View File

@ -0,0 +1,72 @@
package main
import (
"os"
"log"
"bufio"
"strings"
"go.wit.com/control-panel-dns/cloudflare"
)
var configfile string = ".config/wit/cloudflare"
func saveConfig() {
log.Println("TODO")
}
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 *cloudflare.ConfigT
newc = new(cloudflare.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]
cloudflare.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
}

35
main.go Normal file
View File

@ -0,0 +1,35 @@
package main
import (
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/cloudflare"
)
var title string = "Cloudflare DNS Control Panel"
var myGui *gui.Node
// var cloudflareURL string = "https://api.cloudflare.com/client/v4/zones/"
func main() {
// send all log() output to a file in /tmp
log.SetTmp()
// parse the config file
readConfig()
// initialize a new GO GUI instance
myGui = gui.New().Default()
// draw the cloudflare control panel window
win := cloudflare.MakeCloudflareWindow(myGui)
win.SetText(title)
// This is just a optional goroutine to watch that things are alive
gui.Watchdog()
gui.StandardExit()
// update the config file
saveConfig()
}