Add timeout configuration in HTTP request
This commit is contained in:
parent
e6cd478d81
commit
f04b3321fa
|
|
@ -36,10 +36,11 @@ To ask authorization, just send an HTTP request to the path ``/auth`` with param
|
|||
* domain : Domain you want to access
|
||||
* method : Method you access the domain
|
||||
* transaction_id : Transaction identifier
|
||||
* timeout : Timeout of the request in second (default : 60, max : 300)
|
||||
|
||||
Example:
|
||||
```
|
||||
GET /auth?jid=user@host/resource&domain=example.org&method=POST&transaction_id=WhatEverYouWant HTTP/1.1
|
||||
GET /auth?jid=user@host/resource&domain=example.org&method=POST&transaction_id=WhatEverYouWant&timeout=120 HTTP/1.1
|
||||
```
|
||||
|
||||
This will send a request to the given JID. If the user accept, the server will return HTTP code 200, otherwise it will return HTTP code 401.
|
||||
|
|
|
|||
15
http/http.go
15
http/http.go
|
|
@ -20,6 +20,7 @@ const (
|
|||
METHOD_ACCESS = "method"
|
||||
DOMAIN_ACCESS = "domain"
|
||||
TRANSACTION_ID = "transaction_id"
|
||||
TIMEOUTE = "timeout"
|
||||
|
||||
ROUTE_ROOT = "/"
|
||||
ROUTE_AUTH = "/auth"
|
||||
|
|
@ -32,7 +33,8 @@ var (
|
|||
HttpPortBind = 9090
|
||||
|
||||
ChanRequest = make(chan interface{}, 5)
|
||||
TimeoutSec = 60
|
||||
TimeoutSec = 60 // 1 min
|
||||
MaxTimeout = 300 // 5 min
|
||||
)
|
||||
|
||||
func indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
|
@ -46,8 +48,17 @@ func authHandler(w http.ResponseWriter, r *http.Request) {
|
|||
method := strings.Join(r.Form[METHOD_ACCESS], "")
|
||||
domain := strings.Join(r.Form[DOMAIN_ACCESS], "")
|
||||
transaction := strings.Join(r.Form[TRANSACTION_ID], "")
|
||||
timeoutStr := strings.Join(r.Form[TIMEOUTE], "")
|
||||
log.Printf("%sAuth %s", LogDebug, jid)
|
||||
|
||||
timeout, err := strconv.Atoi(timeoutStr)
|
||||
if err != nil {
|
||||
timeout = TimeoutSec
|
||||
}
|
||||
if timeout > MaxTimeout {
|
||||
timeout = MaxTimeout
|
||||
}
|
||||
|
||||
chanAnswer := make(chan bool)
|
||||
|
||||
ChanRequest <- jid
|
||||
|
|
@ -63,7 +74,7 @@ func authHandler(w http.ResponseWriter, r *http.Request) {
|
|||
} else {
|
||||
w.WriteHeader(http.StatusUnauthorized)
|
||||
}
|
||||
case <-time.After(time.Duration(TimeoutSec) * time.Second):
|
||||
case <-time.After(time.Duration(timeout) * time.Second):
|
||||
w.WriteHeader(http.StatusUnauthorized)
|
||||
delete(xmpp.WaitMessageAnswers, transaction)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue