package main import ( "embed" "fmt" "net/http" "strings" "go.wit.com/lib/env" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) //go:embed resources/* var resources embed.FS var repoMap map[string]string var gitMap map[string]*gitpb.Repo var configfile []string var keysSorted []string var HOSTNAME string = "go.wit.com" var REPOMAP string = "/etc/gowebd/repomap" var FOOTER string = "/etc/gowebd/footer.html" var LIBDIR string = "/var/lib/gowebd/" func main() { me = new(mainType) me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args if argv.RepoMap != "" { REPOMAP = argv.RepoMap } if argv.Hostname != "" { HOSTNAME = argv.Hostname } gitMap = make(map[string]*gitpb.Repo) repoMap = make(map[string]string) me.forge, _ = forgepb.Init() // parse the repomap file readRepomap() if argv.Test != nil { if s, err := newMakeRepomap(); err != nil { me.argv.BadExit(s, err) } else { me.argv.GoodExit(s) } } http.HandleFunc("/", okHandler) // go https() // use caddy instead p := fmt.Sprintf(":%d", argv.Port) log.Println("HOSTNAME set to:", HOSTNAME) log.Println("Running on port", p) err := http.ListenAndServe(p, nil) if err != nil { log.Println("Error starting server:", err) } } func newMakeRepomap() (string, error) { submit := gitpb.NewRepos() for key, val := range repoMap { if !strings.HasPrefix(key, "go.wit.com") { // only handling go.wit.com here continue } log.Info(key) r := new(gitpb.Repo) r.Namespace = key r.State = val submit.Append(r) } server := env.Get("ForgeURL") updatepb, regPB, err := submit.HttpPost(server, "check") if err != nil { log.Info("ReposPB HttpPost() failed", err) return "HttpPost() failed", err } if regPB == nil { log.Info("regPB==nil") return "HttpPost() internally returned nil http PB", err } if updatepb == nil { log.Info("server sent nil back nil PB") return "HttpPost() internally returned nil http PB", err } for repo := range updatepb.IterByNamespace() { log.Info(repo.Namespace, repo.URL) } footer := updatepb.PrintGowebdTable() log.Info(footer) return "new dynamic repomap!", nil }