From 4bc92ccddd52c0a7454247cb226ce085e62394e8 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 29 Jun 2025 21:15:29 -0500 Subject: initial start after split from gowebd --- http.go | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 http.go (limited to 'http.go') diff --git a/http.go b/http.go new file mode 100644 index 0000000..96a443a --- /dev/null +++ b/http.go @@ -0,0 +1,113 @@ +package main + +import ( + "fmt" + "io/ioutil" + "net/http" + "strings" + + "go.wit.com/log" +) + +// remove '?' part and trailing '/' +func cleanURL(url string) string { + url = "/" + strings.Trim(url, "/") + return url +} + +func okHandler(w http.ResponseWriter, r *http.Request) { + msg, err := ioutil.ReadAll(r.Body) // Read the body as []byte + if err != nil { + log.Info("ioutil.ReadAll() error =", err) + return + } + // fmt.Fprintln(w, "ioutil.ReadAll() msg =", len(msg)) + // dumpClient(accessf, clientf, r) + var route string + // tmp = r.URL.String() + route = cleanURL(r.URL.Path) + parts := strings.Split(route, "?") + log.Info("client sent url =", route, parts) + requrl := parts[0] + + log.Warn("forged REQUEST URL =", requrl, "msg =", len(msg)) + if route == "/" { + // indexHeader(w) + // indexBodyStart(w) + // indexBodyScanConfig(w) + // indexDivEnd(w) + return + } + if route == "/patchset" { + savePatchset(w, msg) + return + } + if route == "/GetPatchsets" { + doSendPatchsets(w) + return + } + + if route == "/patchsetlist" { + listPatchsets(w) + return + } + if route == "/patchsetget" { + filename := r.URL.Query().Get("filename") + getPatchset(w, filename) + return + } + + if route == "/goReference.svg" { + writeFile(w, "goReference.svg") + return + } + if route == "/skeleton.v2.css" { + writeFile(w, "skeleton.v2.css") + return + } + if route == "/favicon.ico" { + writeFile(w, "ipv6.png") + return + } + // used for uptime monitor checking + if route == "/uptime" { + writeFile(w, "uptime.html") + return + } + log.Warn("BAD URL =", requrl) + badurl(w, r.URL.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 + } + + var repohtml string + repohtml = string(pfile) + if filename == "goReference.svg" { + w.Header().Set("Content-Type", "image/svg+xml") + } + fmt.Fprintln(w, repohtml) + log.Println("writeFile() found internal file:", filename) +} + +func badurl(w http.ResponseWriter, badurl string) { + fmt.Fprintln(w, "") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " ") + fmt.Fprintln(w, " ") + fmt.Fprintln(w, " ") + fmt.Fprintln(w, " ") + fmt.Fprintln(w, " IPv4 IS NOT SUPPORTED
") + fmt.Fprintln(w, " MANY OF THESE REPOS REQUIRE IPv6.
") + fmt.Fprintln(w, "
") + fmt.Fprintln(w, " bad url", badurl, "redirecting") + fmt.Fprintln(w, " ") + fmt.Fprintln(w, "") +} -- cgit v1.2.3