mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-12 19:50:15 +08:00
Add support X-Forwarded-For
This commit is contained in:
@@ -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(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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()),
|
||||||
}
|
}
|
||||||
|
@@ -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
12
pkg/tcp/helpers.go
Normal 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
|
||||||
|
}
|
Reference in New Issue
Block a user