cloud-control-panel/main.go

108 lines
2.4 KiB
Go

package main
import "log"
import "os"
import "time"
import "net"
import "fmt"
import "bufio"
import "github.com/gookit/config"
// import "github.com/davecgh/go-spew/spew"
// reminder to use this for JSON
// https://github.com/tidwall/gjson
// value := gjson.Get(json, "name.last")
// println(value.String())
// value := gjson.Get(json, friends.#[last=="Murphy"].first)
// use mergo to merge structs
// import "github.com/imdario/mergo"
// mergo.Merge(&dest, src)
// always sorted slice (new project)
// https://github.com/yaa110/sslice
const (
CONN_HOST = "v000185.testing.com.customers.wprod.wit.com"
CONN_PORT = "3333"
CONN_PROTO = "tcp"
)
func socketToWIT() {
// connect to this socket
conn, err := net.Dial(CONN_PROTO, CONN_HOST+":"+CONN_PORT)
if err != nil {
log.Println(CONN_HOST, CONN_PORT, CONN_PROTO)
log.Println(err)
log.Println("socket connect failed. Not sure what to do here. os.Exit() ?")
return
}
// read in input from stdin
reader := bufio.NewReader(os.Stdin)
fmt.Fprintf(conn,"librem15.lab.wit.com\n")
for {
fmt.Print("Text to send: ")
text, _ := reader.ReadString('\n')
// send to socket
fmt.Fprintf(conn, text + "\n")
// listen for reply
message, _ := bufio.NewReader(conn).ReadString('\n')
fmt.Print("Message from server: "+message)
}
}
func main() {
parseConfig()
go doGUI()
log.Println("Sleep for 2 seconds, then try to add new tabs")
time.Sleep(2 * 1000 * 1000 * 1000)
rows := 4
for account, _ := range config.StringMap("cloud") {
port := config.String("cloud." + account + ".port")
proto := config.String("cloud." + account + ".proto")
hostname := config.String("cloud." + account + ".hostname")
fmt.Println(hostname, port, proto)
addTableTab(account, rows, hostname)
rows += 4
log.Println("Sleep for 10 seconds, then add next table")
time.Sleep(10 * 1000 * 1000 * 1000)
}
for {
log.Println("Sleep for 10 seconds, then try to establish connection to WIT")
time.Sleep(10 * 1000 * 1000 * 1000)
// for now, loop until I figure out what to actually do
socketToWIT()
}
}
// Exit and write out the config
// (in yaml and json I guess.)
// switch to json once it can be made human readable
func onExit() {
log.Println("Sleep for 1 second")
time.Sleep(1 * 1000 * 1000 * 1000)
f, err := os.Create("/tmp/cloud-control-panel.yaml")
if err == nil {
config.DumpTo(f, "yaml")
}
f, err = os.Create("/tmp/cloud-control-panel.json")
if err == nil {
config.DumpTo(f, "json")
}
os.Exit(0)
}