Adds network filter for webrtc

This commit is contained in:
Alexey Khit
2022-08-23 05:29:53 +03:00
parent 1f0a5fb880
commit 7923ec74a8
+20 -20
View File
@@ -1,6 +1,7 @@
package webrtc package webrtc
import ( import (
"github.com/pion/ice/v2"
"github.com/pion/interceptor" "github.com/pion/interceptor"
"github.com/pion/webrtc/v3" "github.com/pion/webrtc/v3"
"net" "net"
@@ -21,31 +22,30 @@ func NewAPI(address string) (*webrtc.API, error) {
return nil, err return nil, err
} }
if address == "" {
return webrtc.NewAPI(
webrtc.WithMediaEngine(m),
webrtc.WithInterceptorRegistry(i),
), nil
}
ln, err := net.Listen("tcp", address)
if err != nil {
return webrtc.NewAPI(
webrtc.WithMediaEngine(m),
webrtc.WithInterceptorRegistry(i),
), err
}
s := webrtc.SettingEngine{ s := webrtc.SettingEngine{
//LoggerFactory: customLoggerFactory{}, //LoggerFactory: customLoggerFactory{},
} }
s.SetNetworkTypes([]webrtc.NetworkType{
webrtc.NetworkTypeUDP4, webrtc.NetworkTypeUDP6, // disable listen on Hassio docker interfaces
webrtc.NetworkTypeTCP4, webrtc.NetworkTypeTCP6, s.SetInterfaceFilter(func(name string) bool {
return name != "hassio" && name != "docker0"
}) })
tcpMux := webrtc.NewICETCPMux(nil, ln, 8) // disable mDNS listener
s.SetICETCPMux(tcpMux) s.SetICEMulticastDNSMode(ice.MulticastDNSModeDisabled)
if address != "" {
ln, err := net.Listen("tcp", address)
if err == nil {
s.SetNetworkTypes([]webrtc.NetworkType{
webrtc.NetworkTypeUDP4, webrtc.NetworkTypeUDP6,
webrtc.NetworkTypeTCP4, webrtc.NetworkTypeTCP6,
})
tcpMux := webrtc.NewICETCPMux(nil, ln, 8)
s.SetICETCPMux(tcpMux)
}
}
return webrtc.NewAPI( return webrtc.NewAPI(
webrtc.WithMediaEngine(m), webrtc.WithMediaEngine(m),