diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 165 |
1 files changed, 33 insertions, 132 deletions
@@ -4,10 +4,10 @@ import ( "embed" "fmt" "net/http" - "os" "strings" "time" + "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) @@ -24,135 +24,51 @@ var repoMap map[string]string var versionMap map[string]string var configfile []string var keysSorted []string +var forge *forgepb.Forge var HOSTNAME string = "go.wit.com" +var REPOMAP string = "/etc/gowebd/repomap" +var FOOTER string = "/etc/gowebd/footer.html" -// remove '?' part and trailing '/' -func cleanURL(url string) string { - url = "/" + strings.Trim(url, "/") - return url -} - -func okHandler(w http.ResponseWriter, r *http.Request) { - // dumpClient(accessf, clientf, r) - var tmp string - // tmp = r.URL.String() - tmp = cleanURL(r.URL.Path) - parts := strings.Split(tmp, "?") - log.Info("client sent url =", tmp) - log.Info("parts are:", parts) - requrl := parts[0] - - url, repourl := findkey(requrl) - log.Warn("gowebd URL =", url, "REPO URL =", repourl, "REQUEST URL =", requrl) - if repourl != "" { - repoHTML(w, url, repourl) - return - } - if tmp == "/" { - indexHeader(w) - indexBodyStart(w) - indexBodyScanConfig(w) - indexDivEnd(w) - pfile, err := os.ReadFile("/etc/gowebd/footer.html") - if err == nil { - fmt.Fprint(w, string(pfile)) - } else { - log.Warn(err, "no footer filee found in /etc/gowebd/footer.html") - log.Warn("falling back to the resources/footer.html") - writeFile(w, "footer.html") - } - indexBodyEnd(w) - return - } - if tmp == "/install.sh" { - writeFile(w, "install.sh") - return - } - if tmp == "/me" { - j, err := dumpJsonClient(r) - if err != nil { - fmt.Fprintln(w, "BAD ZOOT") - return - } - fmt.Fprintln(w, j) - return - } - if tmp == "/register" { - regfile, _ := os.OpenFile("/home/jcarr/regfile.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) - if registerClient(regfile, r) { - fmt.Fprintln(w, "OK") - } else { - fmt.Fprintln(w, "FAILED") - } - return - } - if tmp == "/goReference.svg" { - writeFile(w, "goReference.svg") - return - } - if tmp == "/skeleton.v2.css" { - writeFile(w, "skeleton.v2.css") - return - } - if tmp == "/favicon.ico" { - writeFile(w, "ipv6.png") - return +func main() { + if argv.RepoMap != "" { + REPOMAP = argv.RepoMap } - // used for uptime monitor checking - if tmp == "/uptime" { - writeFile(w, "uptime.html") - return + if argv.Hostname != "" { + HOSTNAME = argv.Hostname } - log.Warn("BAD URL =", url, "REPO URL =", repourl) - badurl(w, r.URL.String()) - // fmt.Fprintln(w, "BAD", tmp) -} + forge = forgepb.Init() + versionMap = make(map[string]string) -func writeFile(w http.ResponseWriter, filename string) { - // fmt.Fprintln(w, "GOT TEST?") - fullname := "resources/" + filename - pfile, err := resources.ReadFile(fullname) - if err != nil { - log.Println("ERROR:", err) - // w.Write(pfile) - return - } + all := forge.Repos.SortByGoPath() + for all.Scan() { + repo := all.Next() - var repohtml string - repohtml = string(pfile) - if filename == "goReference.svg" { - w.Header().Set("Content-Type", "image/svg+xml") + log.Info("forge protobuf has:", repo.GoPath) } - fmt.Fprintln(w, repohtml) - log.Println("writeFile() found internal file:", filename) - // w.Close() - /* - filename = "/tmp/" + name + ".so" - log.Error(err, "write out file here", name, filename, len(pfile)) - f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE, 0600) - f.Close() - */ -} -func main() { - // accessf, _ = os.OpenFile("/home/jcarr/accessclient.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) - // clientf, _ = os.OpenFile("/home/jcarr/httpclient.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) - readconfigfile() - readVersionFile() - - // make the instructions to install be: - // curl -sSL https://go.wit.com/install.sh | bash + // parse the repomap file + readRepomap() + // readVersionFile() - // build instruction: - // go install go.wit.com/apps/getgui@latest + var vtime string + var version string + for gopath, thing := range versionMap { + if tmp, ok := versionMap[gopath]; ok { + // log.Info("gopath", gopath, "tmp", tmp) + parts := strings.Fields(tmp) + if len(parts) == 2 { + // log.Info("GOT HERE gopath", gopath, "tmp", tmp) + version = parts[0] + vtime = parts[1] + } + } + log.Info("gopath", gopath, "info", thing, "dur", vtime, "version", version) + } - // for i, s := range versionMap { - // log.Println("found i =", i, "with", "s =", s) - // } log.Println("found log =", versionMap["go.wit.com/log"]) http.HandleFunc("/", okHandler) - // go https() + // go https() // use caddy instead p := fmt.Sprintf(":%d", argv.Port) log.Println("HOSTNAME set to:", HOSTNAME) log.Println("Running on port", p) @@ -162,21 +78,6 @@ func main() { } } -func badurl(w http.ResponseWriter, badurl string) { - fmt.Fprintln(w, "<!DOCTYPE html>") - fmt.Fprintln(w, "<html>") - fmt.Fprintln(w, " <head>") - fmt.Fprintln(w, " <meta http-equiv=\"refresh\" content=\"3; url=https://" + HOSTNAME + "/\">") - fmt.Fprintln(w, " </head>") - fmt.Fprintln(w, " <body>") - fmt.Fprintln(w, " IPv4 IS NOT SUPPORTED<br>") - fmt.Fprintln(w, " MANY OF THESE REPOS REQUIRE IPv6.<br>") - fmt.Fprintln(w, " <br>") - fmt.Fprintln(w, " bad url", badurl, "<a href=\"https://go.wit.com/\">redirecting</a>") - fmt.Fprintln(w, " </body>") - fmt.Fprintln(w, "</html>") -} - func formatDuration(d time.Duration) string { seconds := int(d.Seconds()) % 60 minutes := int(d.Minutes()) % 60 |
