Revert PLT-7809 (#7793)
* Update webrtc_test.go * Update webrtc.go * Update config.go * Update webrtc.go
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
1af182c198
Коммит
4731057e50
@@ -23,9 +23,8 @@ func (a *App) GetWebrtcInfoForSession(sessionId string) (*model.WebrtcInfoRespon
|
|||||||
}
|
}
|
||||||
|
|
||||||
result := &model.WebrtcInfoResponse{
|
result := &model.WebrtcInfoResponse{
|
||||||
Token: token,
|
Token: token,
|
||||||
GatewayUrl: *a.Config().WebrtcSettings.GatewayWebsocketUrl,
|
GatewayUrl: *a.Config().WebrtcSettings.GatewayWebsocketUrl,
|
||||||
GatewayType: *a.Config().WebrtcSettings.GatewayType,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(*a.Config().WebrtcSettings.StunURI) > 0 {
|
if len(*a.Config().WebrtcSettings.StunURI) > 0 {
|
||||||
@@ -49,16 +48,6 @@ func (a *App) GetWebrtcToken(sessionId string) (string, *model.AppError) {
|
|||||||
return "", model.NewAppError("WebRTC.getWebrtcToken", "api.webrtc.disabled.app_error", nil, "", http.StatusNotImplemented)
|
return "", model.NewAppError("WebRTC.getWebrtcToken", "api.webrtc.disabled.app_error", nil, "", http.StatusNotImplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch strings.ToLower(*a.Config().WebrtcSettings.GatewayType) {
|
|
||||||
case "kopano-webmeetings":
|
|
||||||
return a.GetKopanoWebmeetingsWebrtcToken(sessionId)
|
|
||||||
default:
|
|
||||||
// Default to Janus.
|
|
||||||
return a.GetJanusWebrtcToken(sessionId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *App) GetJanusWebrtcToken(sessionId string) (string, *model.AppError) {
|
|
||||||
token := base64.StdEncoding.EncodeToString([]byte(sessionId))
|
token := base64.StdEncoding.EncodeToString([]byte(sessionId))
|
||||||
|
|
||||||
data := make(map[string]string)
|
data := make(map[string]string)
|
||||||
@@ -76,7 +65,7 @@ func (a *App) GetJanusWebrtcToken(sessionId string) (string, *model.AppError) {
|
|||||||
defer consumeAndClose(rp)
|
defer consumeAndClose(rp)
|
||||||
return "", model.AppErrorFromJson(rp.Body)
|
return "", model.AppErrorFromJson(rp.Body)
|
||||||
} else {
|
} else {
|
||||||
janusResponse := model.JanusGatewayResponseFromJson(rp.Body)
|
janusResponse := model.GatewayResponseFromJson(rp.Body)
|
||||||
if janusResponse.Status != "success" {
|
if janusResponse.Status != "success" {
|
||||||
return "", model.NewAppError("getWebrtcToken", "api.webrtc.register_token.app_error", nil, "", http.StatusInternalServerError)
|
return "", model.NewAppError("getWebrtcToken", "api.webrtc.register_token.app_error", nil, "", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
@@ -85,29 +74,6 @@ func (a *App) GetJanusWebrtcToken(sessionId string) (string, *model.AppError) {
|
|||||||
return token, nil
|
return token, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetKopanoWebmeetingsWebrtcToken(sessionId string) (string, *model.AppError) {
|
|
||||||
data := make(map[string]string)
|
|
||||||
data["type"] = "Token"
|
|
||||||
data["id"] = sessionId
|
|
||||||
|
|
||||||
rq, _ := http.NewRequest("POST", *a.Config().WebrtcSettings.GatewayAdminUrl+"/auth/tokens", strings.NewReader(model.MapToJson(data)))
|
|
||||||
rq.Header.Set("Content-Type", "application/json")
|
|
||||||
rq.Header.Set("Authorization", "Bearer "+*a.Config().WebrtcSettings.GatewayAdminSecret)
|
|
||||||
|
|
||||||
if rp, err := utils.HttpClient(true).Do(rq); err != nil {
|
|
||||||
return "", model.NewAppError("WebRTC.Token", "model.client.connecting.app_error", nil, err.Error(), http.StatusInternalServerError)
|
|
||||||
} else if rp.StatusCode >= 300 {
|
|
||||||
defer consumeAndClose(rp)
|
|
||||||
return "", model.AppErrorFromJson(rp.Body)
|
|
||||||
} else {
|
|
||||||
kwmResponse := model.KopanoWebmeetingsResponseFromJson(rp.Body)
|
|
||||||
if kwmResponse.Value == "" {
|
|
||||||
return "", model.NewAppError("getWebrtcToken", "api.webrtc.register_token.app_error", nil, "", http.StatusInternalServerError)
|
|
||||||
}
|
|
||||||
return kwmResponse.Value, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateTurnPassword(username string, secret string) string {
|
func GenerateTurnPassword(username string, secret string) string {
|
||||||
key := []byte(secret)
|
key := []byte(secret)
|
||||||
h := hmac.New(sha1.New, key)
|
h := hmac.New(sha1.New, key)
|
||||||
|
|||||||
@@ -474,7 +474,6 @@ type NativeAppSettings struct {
|
|||||||
|
|
||||||
type WebrtcSettings struct {
|
type WebrtcSettings struct {
|
||||||
Enable *bool
|
Enable *bool
|
||||||
GatewayType *string
|
|
||||||
GatewayWebsocketUrl *string
|
GatewayWebsocketUrl *string
|
||||||
GatewayAdminUrl *string
|
GatewayAdminUrl *string
|
||||||
GatewayAdminSecret *string
|
GatewayAdminSecret *string
|
||||||
|
|||||||
@@ -11,24 +11,19 @@ import (
|
|||||||
type WebrtcInfoResponse struct {
|
type WebrtcInfoResponse struct {
|
||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
GatewayUrl string `json:"gateway_url"`
|
GatewayUrl string `json:"gateway_url"`
|
||||||
GatewayType string `json:"gateway_type"`
|
|
||||||
StunUri string `json:"stun_uri,omitempty"`
|
StunUri string `json:"stun_uri,omitempty"`
|
||||||
TurnUri string `json:"turn_uri,omitempty"`
|
TurnUri string `json:"turn_uri,omitempty"`
|
||||||
TurnPassword string `json:"turn_password,omitempty"`
|
TurnPassword string `json:"turn_password,omitempty"`
|
||||||
TurnUsername string `json:"turn_username,omitempty"`
|
TurnUsername string `json:"turn_username,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type JanusGatewayResponse struct {
|
type GatewayResponse struct {
|
||||||
Status string `json:"janus"`
|
Status string `json:"janus"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type KopanoWebmeetingsResponse struct {
|
func GatewayResponseFromJson(data io.Reader) *GatewayResponse {
|
||||||
Value string `json:"value"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func JanusGatewayResponseFromJson(data io.Reader) *JanusGatewayResponse {
|
|
||||||
decoder := json.NewDecoder(data)
|
decoder := json.NewDecoder(data)
|
||||||
var o JanusGatewayResponse
|
var o GatewayResponse
|
||||||
err := decoder.Decode(&o)
|
err := decoder.Decode(&o)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return &o
|
return &o
|
||||||
@@ -56,13 +51,3 @@ func WebrtcInfoResponseFromJson(data io.Reader) *WebrtcInfoResponse {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func KopanoWebmeetingsResponseFromJson(data io.Reader) *KopanoWebmeetingsResponse {
|
|
||||||
decoder := json.NewDecoder(data)
|
|
||||||
var o KopanoWebmeetingsResponse
|
|
||||||
err := decoder.Decode(&o)
|
|
||||||
if err == nil {
|
|
||||||
return &o
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -27,20 +27,20 @@ func TestWebrtcInfoResponseToFromJson(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJanusGatewayResponseFromJson(t *testing.T) {
|
func TestGatewayResponseFromJson(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.SkipNow()
|
t.SkipNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid Gateway Response
|
// Valid Gateway Response
|
||||||
s1 := `{"janus": "something"}`
|
s1 := `{"janus": "something"}`
|
||||||
g1 := JanusGatewayResponseFromJson(strings.NewReader(s1))
|
g1 := GatewayResponseFromJson(strings.NewReader(s1))
|
||||||
|
|
||||||
CheckString(t, g1.Status, "something")
|
CheckString(t, g1.Status, "something")
|
||||||
|
|
||||||
// Malformed JSON
|
// Malformed JSON
|
||||||
s2 := `{"wat"`
|
s2 := `{"wat"`
|
||||||
g2 := JanusGatewayResponseFromJson(strings.NewReader(s2))
|
g2 := GatewayResponseFromJson(strings.NewReader(s2))
|
||||||
|
|
||||||
if g2 != nil {
|
if g2 != nil {
|
||||||
t.Fatal("expected nil")
|
t.Fatal("expected nil")
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user