API + Data changes to support split up of stream keys and admin passwords

This commit is contained in:
Gabe Kangas
2022-11-22 22:08:25 -08:00
parent 1645451faa
commit c9e3ccad45
11 changed files with 116 additions and 37 deletions

View File

@ -15,15 +15,17 @@ import (
"github.com/owncast/owncast/models"
)
var _hasInboundRTMPConnection = false
var (
_hasInboundRTMPConnection = false
_pipe *io.PipeWriter
_rtmpConnection net.Conn
)
var _pipe *io.PipeWriter
var _rtmpConnection net.Conn
var _setStreamAsConnected func(*io.PipeReader)
var _setBroadcaster func(models.Broadcaster)
var (
_setStreamAsConnected func(*io.PipeReader)
_setBroadcaster func(models.Broadcaster)
)
// Start starts the rtmp service, listening on specified RTMP port.
func Start(setStreamAsConnected func(*io.PipeReader), setBroadcaster func(models.Broadcaster)) {
@ -75,12 +77,28 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) {
return
}
if !secretMatch(data.GetStreamKey(), c.URL.Path) {
accessGranted := false
validStreamingKeys := data.GetStreamKeys()
for _, key := range validStreamingKeys {
if secretMatch(key, c.URL.Path) {
accessGranted = true
break
}
}
if !accessGranted {
log.Errorln("invalid streaming key; rejecting incoming stream")
_ = nc.Close()
return
}
// if !secretMatch(data.GetAdminPassword(), c.URL.Path) {
// log.Errorln("invalid streaming key; rejecting incoming stream")
// _ = nc.Close()
// return
// }
rtmpOut, rtmpIn := io.Pipe()
_pipe = rtmpIn
log.Infoln("Inbound stream connected.")