1eb3c39f9e
Signed-off-by: Odyssey346 <odyssey346@disroot.org>
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"html/template"
|
|
"io"
|
|
"log"
|
|
|
|
"github.com/kataras/hcaptcha"
|
|
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
siteKey = os.Getenv("HCAPTCHA_SITE_KEY")
|
|
secretKey = os.Getenv("HCAPTCHA_SECRET_KEY")
|
|
)
|
|
|
|
var (
|
|
client = hcaptcha.New(secretKey) /* See `Client.FailureHandler` too. */
|
|
testForm = template.Must(template.ParseFiles("./static/testform.html"))
|
|
)
|
|
|
|
func Form() {
|
|
http.HandleFunc("/api/form", func(w http.ResponseWriter, r *http.Request) {
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
io.WriteString(w, "I got your ")
|
|
io.WriteString(w, "\n" + r.RemoteAddr)
|
|
case http.MethodPost:
|
|
io.WriteString(w, "You have no mail to POST!")
|
|
default:
|
|
http.Error(w, "Method isn't allowed!\nYou may only GET or POST here, not " + r.Method, http.StatusMethodNotAllowed)
|
|
}
|
|
log.Println("[HTTP] " + r.RemoteAddr + " accessed /api/form with method " + r.Method)
|
|
})
|
|
|
|
http.HandleFunc("/form", renderTestForm)
|
|
|
|
}
|
|
|
|
func renderTestForm(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
|
testForm.Execute(w, map[string]string{
|
|
"SiteKey": siteKey,
|
|
})
|
|
}
|
|
|
|
// testForm is only used in development. I will remove it when I've added it to the website
|
|
// Oh also, you need to add the following to your hosts file:
|
|
// 127.0.0.1 epicwebsite.com
|
|
// and visit epicwebsite.com:(yourport)/form. hCaptcha doesn't work in localhost unfortunately :(
|