Implement input prompts on external domains
This commit is contained in:
parent
fa95eaf041
commit
60109be26f
1 changed files with 19 additions and 7 deletions
26
main.go
26
main.go
|
@ -579,6 +579,19 @@ func main() {
|
||||||
}))
|
}))
|
||||||
|
|
||||||
http.Handle("/x/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
http.Handle("/x/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method == "POST" {
|
||||||
|
r.ParseForm()
|
||||||
|
if q, ok := r.Form["q"]; !ok {
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
w.Write([]byte("Bad request"))
|
||||||
|
} else {
|
||||||
|
w.Header().Add("Location", "?"+q[0])
|
||||||
|
w.WriteHeader(http.StatusFound)
|
||||||
|
w.Write([]byte("Redirecting"))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if r.Method != "GET" {
|
if r.Method != "GET" {
|
||||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||||
w.Write([]byte("404 Not found"))
|
w.Write([]byte("404 Not found"))
|
||||||
|
@ -590,14 +603,13 @@ func main() {
|
||||||
path = append(path, "")
|
path = append(path, "")
|
||||||
}
|
}
|
||||||
req := gemini.Request{}
|
req := gemini.Request{}
|
||||||
req.URL, err = url.Parse(fmt.Sprintf("gemini://%s/%s", path[2], path[3]))
|
req.URL = &url.URL{}
|
||||||
if err != nil {
|
req.URL.Scheme = "gemini"
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
req.URL.Host = path[2]
|
||||||
w.Write([]byte(fmt.Sprintf("Error: %v", err)))
|
req.URL.Path = "/" + path[3]
|
||||||
return
|
|
||||||
}
|
|
||||||
req.Host = path[2]
|
req.Host = path[2]
|
||||||
log.Printf("%s (external) %s%s", r.Method, path[2], path[3])
|
req.URL.RawQuery = r.URL.RawQuery
|
||||||
|
log.Printf("%s (external) %s%s", r.Method, r.URL.Host, r.URL.Path)
|
||||||
proxyGemini(req, true, root, w, r, css)
|
proxyGemini(req, true, root, w, r, css)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue