mirror of
https://codeberg.org/cunicu/cunicu.git
synced 2025-10-05 08:47:03 +08:00
46 lines
954 B
Go
46 lines
954 B
Go
package proxy
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/pion/ice/v2"
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/stv0g/cunicu/pkg/log"
|
|
)
|
|
|
|
func CreateUDPMux() (ice.UDPMux, int, error) {
|
|
conn, err := net.ListenUDP("udp", nil)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
lAddr := conn.LocalAddr().(*net.UDPAddr)
|
|
|
|
mux := ice.NewUDPMuxDefault(ice.UDPMuxParams{
|
|
UDPConn: conn,
|
|
Logger: log.NewPionLoggerFactory(zap.L()).NewLogger("udpmux"),
|
|
})
|
|
|
|
return mux, lAddr.Port, nil
|
|
}
|
|
|
|
func CreateUniversalUDPMux() (ice.UniversalUDPMux, int, error) {
|
|
// We do not need a filtered connection here as we anyway need to redirect
|
|
// the non-STUN traffic via nftables
|
|
|
|
conn, err := net.ListenUDP("udp", nil)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
lAddr := conn.LocalAddr().(*net.UDPAddr)
|
|
|
|
mux := ice.NewUniversalUDPMuxDefault(ice.UniversalUDPMuxParams{
|
|
UDPConn: conn,
|
|
Logger: log.NewPionLoggerFactory(zap.L()).NewLogger("udpmux-universal"),
|
|
})
|
|
|
|
return mux, lAddr.Port, nil
|
|
}
|