64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package http
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
"strings"
|
|
"log"
|
|
)
|
|
|
|
const (
|
|
PARAM_JID = "jid"
|
|
METHOD_ACCESS = "method"
|
|
DOMAIN_ACCESS = "domain"
|
|
TRANSACTION_ID = "transaction_id"
|
|
|
|
RETURN_VALUE_OK = "OK"
|
|
RETURN_VALUE_NOK = "NOK"
|
|
)
|
|
|
|
var (
|
|
HttpPortBind = 9090
|
|
|
|
ChanRequest = make(chan interface{}, 5)
|
|
)
|
|
|
|
|
|
func indexHandler(w http.ResponseWriter, r *http.Request) {
|
|
// TODO
|
|
fmt.Fprintf(w, "Welcome to HTTP authentification over XMPP")
|
|
}
|
|
|
|
func authHandler(w http.ResponseWriter, r *http.Request) {
|
|
r.ParseForm()
|
|
chanAnswer := make(chan bool)
|
|
|
|
ChanRequest <- strings.Join(r.Form[PARAM_JID], "")
|
|
ChanRequest <- strings.Join(r.Form[METHOD_ACCESS], "")
|
|
ChanRequest <- strings.Join(r.Form[DOMAIN_ACCESS], "")
|
|
ChanRequest <- strings.Join(r.Form[TRANSACTION_ID], "")
|
|
ChanRequest <- chanAnswer
|
|
|
|
answer := <- chanAnswer
|
|
ret := RETURN_VALUE_NOK
|
|
if answer {
|
|
ret = RETURN_VALUE_OK
|
|
}
|
|
fmt.Fprintf(w, ret)
|
|
}
|
|
|
|
|
|
|
|
func Run() {
|
|
http.HandleFunc("/", indexHandler) // set router
|
|
http.HandleFunc("/toto", authHandler)
|
|
|
|
port := strconv.Itoa(HttpPortBind)
|
|
log.Println("Listenning on port "+port)
|
|
err := http.ListenAndServe(":"+port, nil) // set listen port
|
|
if err != nil {
|
|
log.Fatal("ListenAndServe: ", err)
|
|
}
|
|
}
|