From a1be9002f7798384a43a97c9f14d09dad4baeda7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Mon, 15 Mar 2021 16:34:13 +0100 Subject: [PATCH] ICE servers as URIs with auth. --- internal/webrtc/manager.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/internal/webrtc/manager.go b/internal/webrtc/manager.go index 10a66706..49a597e8 100644 --- a/internal/webrtc/manager.go +++ b/internal/webrtc/manager.go @@ -3,6 +3,7 @@ package webrtc import ( "fmt" "io" + "net/url" "strings" "sync" "time" @@ -423,6 +424,35 @@ func (manager *WebRTCManagerCtx) apiConfiguration() *webrtc.Configuration { } } + ICEServers := []webrtc.ICEServer{} + for _, server := range manager.config.ICEServers { + u, err := url.Parse(server) + + // if it is not valid URL, just pass it down + if err != nil { + ICEServers = append(ICEServers, webrtc.ICEServer{ + URLs: []string{server}, + }) + continue + } + + var pwdInt interface{} + pwd, ok := u.User.Password() + if ok { + pwdInt = pwd + } else { + pwdInt = false + } + + ICEServers = append(ICEServers, webrtc.ICEServer{ + URLs: []string{ + u.Scheme + ":" + u.Host + u.Path + "?" + u.RawQuery, + }, + Username: u.User.Username(), + Credential: pwdInt, + }) + } + return &webrtc.Configuration{ ICEServers: []webrtc.ICEServer{ {