Adds support nginx with wrong port
This commit is contained in:
@@ -34,6 +34,7 @@ func Init() {
|
|||||||
log = app.GetLogger("api")
|
log = app.GetLogger("api")
|
||||||
|
|
||||||
initStatic(cfg.Mod.StaticDir)
|
initStatic(cfg.Mod.StaticDir)
|
||||||
|
initWS()
|
||||||
|
|
||||||
HandleFunc("/api/frame.mp4", frameHandler)
|
HandleFunc("/api/frame.mp4", frameHandler)
|
||||||
HandleFunc("/api/frame.raw", frameHandler)
|
HandleFunc("/api/frame.raw", frameHandler)
|
||||||
|
|||||||
+30
-4
@@ -4,15 +4,41 @@ import (
|
|||||||
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WSHandler func(ctx *Context, msg *streamer.Message)
|
func initWS() {
|
||||||
|
wsUp = &websocket.Upgrader{
|
||||||
var apiWsUp = websocket.Upgrader{
|
|
||||||
ReadBufferSize: 1024,
|
ReadBufferSize: 1024,
|
||||||
WriteBufferSize: 512000,
|
WriteBufferSize: 512000,
|
||||||
}
|
}
|
||||||
|
wsUp.CheckOrigin = func(r *http.Request) bool {
|
||||||
|
origin := r.Header["Origin"]
|
||||||
|
if len(origin) == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
o, err := url.Parse(origin[0])
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if o.Host == r.Host {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
log.Trace().Msgf("[api.ws] origin: %s, host: %s", o.Host, r.Host)
|
||||||
|
// some users change Nginx external port using Docker port
|
||||||
|
// so origin will be with a port and host without
|
||||||
|
if i := strings.IndexByte(o.Host, ':'); i > 0 {
|
||||||
|
return o.Host[:i] == r.Host
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var wsUp *websocket.Upgrader
|
||||||
|
|
||||||
|
type WSHandler func(ctx *Context, msg *streamer.Message)
|
||||||
|
|
||||||
type Context struct {
|
type Context struct {
|
||||||
Conn *websocket.Conn
|
Conn *websocket.Conn
|
||||||
@@ -24,7 +50,7 @@ type Context struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *Context) Upgrade(w http.ResponseWriter, r *http.Request) (err error) {
|
func (ctx *Context) Upgrade(w http.ResponseWriter, r *http.Request) (err error) {
|
||||||
ctx.Conn, err = apiWsUp.Upgrade(w, r, nil)
|
ctx.Conn, err = wsUp.Upgrade(w, r, nil)
|
||||||
ctx.Request = r
|
ctx.Request = r
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user