]> git.feebdaed.xyz Git - gomehub.git/commitdiff
use turn
authorseantywork <seantywork@gmail.com>
Thu, 20 Jun 2024 02:24:09 +0000 (11:24 +0900)
committerseantywork <seantywork@gmail.com>
Thu, 20 Jun 2024 02:24:09 +0000 (11:24 +0900)
ctl/config.go
ctl/ctl.go
pkg/stream/stream.go
pkg/stream/stream_cctv.go
pkg/stream/stream_cctv_local.go
public/js/cctv.js

index e1037093c05fb9ad56c4078d18a9a62750659e05..37e6521feb9ef73dd9ef3db80bb75933ff79dd93 100644 (file)
@@ -13,7 +13,11 @@ type SOLIAGAIN_CONFIG struct {
        ServePort   int    `yaml:"servePort"`
        MaxFileSize int64  `yaml:"maxFileSize"`
        Stream      struct {
-               TurnServerAddr         string   `yaml:"turnServerAddr"`
+               TurnServerAddr []struct {
+                       Addr string `yaml:"addr"`
+                       Id   string `yaml:"id"`
+                       Pw   string `yaml:"pw"`
+               } `yaml:"turnServerAddr"`
                RtcpPLIInterval        int      `yaml:"rtcpPLIInterval"`
                UploadDest             string   `yaml:"uploadDest"`
                ExtAllowList           []string `yaml:"extAllowList"`
index 2480b963fd245cfd5bc2f1e042810fa6b216d8d2..97401d4a5f1302ae88e36fdc9519ab09db533656 100644 (file)
@@ -35,7 +35,21 @@ func ConfigureRuntime(e *gin.Engine) {
 
        pkgstream.EXTERNAL_URL = CONF.ExternalUrl
 
-       pkgstream.TURN_SERVER_ADDR = CONF.Stream.TurnServerAddr
+       for i := 0; i < len(CONF.Stream.TurnServerAddr); i++ {
+
+               tmp := struct {
+                       Addr string `json:"addr"`
+                       Id   string `json:"id"`
+                       Pw   string `json:"pw"`
+               }{
+                       Addr: CONF.Stream.TurnServerAddr[i].Addr,
+                       Id:   CONF.Stream.TurnServerAddr[i].Id,
+                       Pw:   CONF.Stream.TurnServerAddr[i].Pw,
+               }
+
+               pkgstream.TURN_SERVER_ADDR = append(pkgstream.TURN_SERVER_ADDR, tmp)
+       }
+
        pkgstream.RTCP_PLI_INTERVAL = time.Second * time.Duration(CONF.Stream.RtcpPLIInterval)
        pkgstream.UPLOAD_DEST = CONF.Stream.UploadDest
        pkgstream.EXTENSION_ALLOWLIST = CONF.Stream.ExtAllowList
index ff4c7f46986d7c8849198e89881837c6a5994366..add0ddfab0677833d0c97972ccfb2b2541d8942d 100644 (file)
@@ -23,7 +23,11 @@ var EXTERNAL_URL string
 
 var RTCP_PLI_INTERVAL time.Duration
 
-var TURN_SERVER_ADDR string
+var TURN_SERVER_ADDR []struct {
+       Addr string `json:"addr"`
+       Id   string `json:"id"`
+       Pw   string `json:"pw"`
+}
 
 func recieveTrack(peerConnection *webrtc.PeerConnection,
        peerConnectionMap map[string]*webrtc.TrackLocalStaticRTP,
index 9109a13586e4292bfa4f3005bfd55e3a875df978..24e36ba253e8b551d1767c52e006fc9931cbabea 100644 (file)
@@ -53,7 +53,14 @@ func GetCCTVIndex(c *gin.Context) {
 
 func GetCCTVTurnServeAddr(c *gin.Context) {
 
-       c.JSON(http.StatusOK, SERVER_RE{Status: "success", Reply: TURN_SERVER_ADDR})
+       data_b, err := json.Marshal(TURN_SERVER_ADDR)
+
+       if err != nil {
+
+               c.JSON(http.StatusOK, SERVER_RE{Status: "failed", Reply: "error"})
+       }
+
+       c.JSON(http.StatusOK, SERVER_RE{Status: "success", Reply: string(data_b)})
 
 }
 
index e79fbb8aa79e793038b6a43c6b0dedf3f8f57cfd..e2994eba30cf83afb71b59149e3b73e3fbffcf6b 100644 (file)
@@ -60,7 +60,7 @@ func startCCTVReceiver(offer_in string, offer_out chan string) {
        peerConnection, err := webrtcv4.NewPeerConnection(webrtcv4.Configuration{
                ICEServers: []webrtcv4.ICEServer{
                        {
-                               URLs: []string{TURN_SERVER_ADDR},
+                               URLs: []string{TURN_SERVER_ADDR[0].Addr},
                        },
                },
        })
index e070d17d1793021b6cdaa4950bf68b60206ef20b..fc1ea9c1c5f00c3e90bfd9eefbee9db828da7038 100644 (file)
@@ -20,12 +20,16 @@ async function initCCTV(){
         return
     }
 
-    TURN_SERVER_ADDRESS = result.data.reply
+    let addrs = JSON.parse(result.data.reply) 
+
+    TURN_SERVER_ADDRESS = addrs[0].addr
 
     pc = new RTCPeerConnection({
         iceServers: [
             {
-                urls: TURN_SERVER_ADDRESS
+                urls: TURN_SERVER_ADDRESS,
+                username: addrs[0].id,
+                credential: addrs[0].pw
             }
         ]
     })