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 == "/" { w.Header().Set("Content-Type", "text") fmt.Fprintf(w, "go.wit.com/apps/utils/forged Version: %s\n", argv.Version()) fmt.Fprintf(w, "\n") listPatchsets(w) return } if route == "/patchset" { savePatchset(w, msg) return } if route == "/lookup" { log.Info("doing lookup len(msg) =", len(msg)) found, err := lookupRepos(msg) if err != nil { return } /* for repo := range repos.IterAll() { repo.Namespace += "good" log.Infof("repo:%s,%s\n", repo.Namespace, repo.FullPath) } */ found.SendPB(w) return } if route == "/update" { log.Info("doing update len(msg) =", len(msg)) found, err := updateRepos(msg) if err != nil { return } found.SendPB(w) 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" { w.Header().Set("Content-Type", "image/svg+xml") 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) 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