Add support X-Forwarded-For

This commit is contained in:
Alexey Khit
2023-03-25 11:59:55 +03:00
parent a42c3e21c9
commit 8bf5c85b79
5 changed files with 24 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ import (
"github.com/AlexxIT/go2rtc/pkg/core" "github.com/AlexxIT/go2rtc/pkg/core"
"github.com/AlexxIT/go2rtc/pkg/mp4" "github.com/AlexxIT/go2rtc/pkg/mp4"
"github.com/AlexxIT/go2rtc/pkg/mpegts" "github.com/AlexxIT/go2rtc/pkg/mpegts"
"github.com/AlexxIT/go2rtc/pkg/tcp"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"net/http" "net/http"
"strconv" "strconv"
@@ -70,13 +71,13 @@ func handlerStream(w http.ResponseWriter, r *http.Request) {
medias := mp4.ParseQuery(r.URL.Query()) medias := mp4.ParseQuery(r.URL.Query())
if medias != nil { if medias != nil {
cons = &mp4.Consumer{ cons = &mp4.Consumer{
RemoteAddr: r.RemoteAddr, RemoteAddr: tcp.RemoteAddr(r),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
Medias: medias, Medias: medias,
} }
} else { } else {
cons = &mpegts.Consumer{ cons = &mpegts.Consumer{
RemoteAddr: r.RemoteAddr, RemoteAddr: tcp.RemoteAddr(r),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
} }
} }

View File

@@ -5,6 +5,7 @@ import (
"github.com/AlexxIT/go2rtc/cmd/api" "github.com/AlexxIT/go2rtc/cmd/api"
"github.com/AlexxIT/go2rtc/cmd/streams" "github.com/AlexxIT/go2rtc/cmd/streams"
"github.com/AlexxIT/go2rtc/pkg/mjpeg" "github.com/AlexxIT/go2rtc/pkg/mjpeg"
"github.com/AlexxIT/go2rtc/pkg/tcp"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"io" "io"
"net/http" "net/http"
@@ -29,7 +30,7 @@ func handlerKeyframe(w http.ResponseWriter, r *http.Request) {
exit := make(chan []byte) exit := make(chan []byte)
cons := &mjpeg.Consumer{ cons := &mjpeg.Consumer{
RemoteAddr: r.RemoteAddr, RemoteAddr: tcp.RemoteAddr(r),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
} }
cons.Listen(func(msg any) { cons.Listen(func(msg any) {
@@ -81,7 +82,7 @@ func outputMjpeg(w http.ResponseWriter, r *http.Request) {
flusher := w.(http.Flusher) flusher := w.(http.Flusher)
cons := &mjpeg.Consumer{ cons := &mjpeg.Consumer{
RemoteAddr: r.RemoteAddr, RemoteAddr: tcp.RemoteAddr(r),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
} }
cons.Listen(func(msg any) { cons.Listen(func(msg any) {
@@ -146,7 +147,7 @@ func handlerWS(tr *api.Transport, _ *api.Message) error {
} }
cons := &mjpeg.Consumer{ cons := &mjpeg.Consumer{
RemoteAddr: tr.Request.RemoteAddr, RemoteAddr: tcp.RemoteAddr(tr.Request),
UserAgent: tr.Request.UserAgent(), UserAgent: tr.Request.UserAgent(),
} }
cons.Listen(func(msg any) { cons.Listen(func(msg any) {

View File

@@ -6,6 +6,7 @@ import (
"github.com/AlexxIT/go2rtc/cmd/streams" "github.com/AlexxIT/go2rtc/cmd/streams"
"github.com/AlexxIT/go2rtc/pkg/core" "github.com/AlexxIT/go2rtc/pkg/core"
"github.com/AlexxIT/go2rtc/pkg/mp4" "github.com/AlexxIT/go2rtc/pkg/mp4"
"github.com/AlexxIT/go2rtc/pkg/tcp"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"net/http" "net/http"
"strconv" "strconv"
@@ -103,7 +104,7 @@ func handlerMP4(w http.ResponseWriter, r *http.Request) {
exit := make(chan error) exit := make(chan error)
cons := &mp4.Consumer{ cons := &mp4.Consumer{
RemoteAddr: r.RemoteAddr, RemoteAddr: tcp.RemoteAddr(r),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
Medias: core.ParseQuery(r.URL.Query()), Medias: core.ParseQuery(r.URL.Query()),
} }

View File

@@ -6,6 +6,7 @@ import (
"github.com/AlexxIT/go2rtc/cmd/streams" "github.com/AlexxIT/go2rtc/cmd/streams"
"github.com/AlexxIT/go2rtc/pkg/core" "github.com/AlexxIT/go2rtc/pkg/core"
"github.com/AlexxIT/go2rtc/pkg/mp4" "github.com/AlexxIT/go2rtc/pkg/mp4"
"github.com/AlexxIT/go2rtc/pkg/tcp"
"strings" "strings"
) )
@@ -17,7 +18,7 @@ func handlerWSMSE(tr *api.Transport, msg *api.Message) error {
} }
cons := &mp4.Consumer{ cons := &mp4.Consumer{
RemoteAddr: tr.Request.RemoteAddr, RemoteAddr: tcp.RemoteAddr(tr.Request),
UserAgent: tr.Request.UserAgent(), UserAgent: tr.Request.UserAgent(),
} }
@@ -64,7 +65,7 @@ func handlerWSMP4(tr *api.Transport, msg *api.Message) error {
} }
cons := &mp4.Segment{ cons := &mp4.Segment{
RemoteAddr: tr.Request.RemoteAddr, RemoteAddr: tcp.RemoteAddr(tr.Request),
UserAgent: tr.Request.UserAgent(), UserAgent: tr.Request.UserAgent(),
OnlyKeyframe: true, OnlyKeyframe: true,
} }

12
pkg/tcp/helpers.go Normal file
View File

@@ -0,0 +1,12 @@
package tcp
import (
"net/http"
)
func RemoteAddr(r *http.Request) string {
if remote := r.Header.Get("X-Forwarded-For"); remote != "" {
return remote + ", " + r.RemoteAddr
}
return r.RemoteAddr
}