Return 404 for WS handler when session doesnt exist

This commit is contained in:
Marcos Lilljedahl
2017-07-31 18:20:27 -03:00
parent fa3b56ecfe
commit 7a49c557e0
4 changed files with 20 additions and 8 deletions

4
api.go
View File

@@ -41,8 +41,6 @@ func main() {
} }
}() }()
server := handlers.Broadcast.GetHandler()
r := mux.NewRouter() r := mux.NewRouter()
corsRouter := mux.NewRouter() corsRouter := mux.NewRouter()
@@ -77,7 +75,7 @@ func main() {
http.ServeFile(rw, r, "www/sdk.js") http.ServeFile(rw, r, "www/sdk.js")
}) })
corsRouter.Handle("/sessions/{sessionId}/ws/", server) corsRouter.HandleFunc("/sessions/{sessionId}/ws/", handlers.WebSocket)
r.Handle("/metrics", promhttp.Handler()) r.Handle("/metrics", promhttp.Handler())
// Generic routes // Generic routes

View File

@@ -12,7 +12,7 @@ import (
) )
var core pwd.PWDApi var core pwd.PWDApi
var Broadcast pwd.BroadcastApi var broadcast pwd.BroadcastApi
func Bootstrap() { func Bootstrap() {
c, err := client.NewEnvClient() c, err := client.NewEnvClient()
@@ -22,18 +22,18 @@ func Bootstrap() {
d := docker.NewDocker(c) d := docker.NewDocker(c)
Broadcast, err = pwd.NewBroadcast(WS, WSError) broadcast, err = pwd.NewBroadcast(WS, WSError)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
t := pwd.NewScheduler(Broadcast, d) t := pwd.NewScheduler(broadcast, d)
s, err := storage.NewFileStorage(config.SessionsFile) s, err := storage.NewFileStorage(config.SessionsFile)
if err != nil && !os.IsNotExist(err) { if err != nil && !os.IsNotExist(err) {
log.Fatal("Error decoding sessions from disk ", err) log.Fatal("Error decoding sessions from disk ", err)
} }
core = pwd.NewPWD(d, t, Broadcast, s) core = pwd.NewPWD(d, t, broadcast, s)
} }

View File

@@ -21,7 +21,7 @@ func Ping(rw http.ResponseWriter, req *http.Request) {
return return
} }
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Microsecond) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() defer cancel()
if _, err := c.Info(ctx); err != nil && err == context.DeadlineExceeded { if _, err := c.Info(ctx); err != nil && err == context.DeadlineExceeded {

View File

@@ -3,6 +3,7 @@ package handlers
import ( import (
"fmt" "fmt"
"log" "log"
"net/http"
"github.com/googollee/go-socket.io" "github.com/googollee/go-socket.io"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@@ -52,3 +53,16 @@ func WS(so socketio.Socket) {
func WSError(so socketio.Socket) { func WSError(so socketio.Socket) {
log.Println("error ws") log.Println("error ws")
} }
func WebSocket(rw http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
sessionId := vars["sessionId"]
session := core.SessionGet(sessionId)
if session == nil {
rw.WriteHeader(http.StatusNotFound)
return
}
broadcast.GetHandler().ServeHTTP(rw, req)
}