diff --git a/pkg/config/config.go b/pkg/config/config.go index 88e3ff66e..bd7f4a67c 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -50,6 +50,7 @@ func NewConfig(confString string) (*Config, error) { Redis: RedisConfig{ Address: "localhost:6379", }, + Keys: map[string]string{}, } if confString != "" { yaml.Unmarshal([]byte(confString), conf) @@ -65,8 +66,7 @@ func (conf *Config) UpdateFromCLI(c *cli.Context) error { conf.KeyFile = c.String("key-file") } if c.IsSet("keys") { - keys := []byte(c.String("keys")) - if err := yaml.Unmarshal(keys, &conf.Keys); err != nil { + if err := conf.unmarshalKeys(c.String("keys")); err != nil { return err } } @@ -84,3 +84,19 @@ func (conf *Config) UpdateFromCLI(c *cli.Context) error { conf.KeyFile = file return nil } + +func (conf *Config) unmarshalKeys(keys string) error { + temp := make(map[string]interface{}) + if err := yaml.Unmarshal([]byte(keys), temp); err != nil { + return err + } + + conf.Keys = make(map[string]string, len(temp)) + + for key, val := range temp { + if secret, ok := val.(string); ok { + conf.Keys[key] = secret + } + } + return nil +} diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go new file mode 100644 index 000000000..637244e57 --- /dev/null +++ b/pkg/config/config_test.go @@ -0,0 +1,15 @@ +package config + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestConfig_UnmarshalKeys(t *testing.T) { + conf, err := NewConfig("") + assert.NoError(t, err) + + assert.NoError(t, conf.unmarshalKeys("key1: secret1")) + assert.Equal(t, "secret1", conf.Keys["key1"]) +} diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index 7c669e755..6c59565ae 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -127,7 +127,7 @@ func (t *MediaTrack) AddSubscriber(participant types.Participant) error { } outTrack.SetTransceiver(transceiver) - // TODO: when outtrack is bound, start loop to send reports + // when outtrack is bound, start loop to send reports outTrack.OnBind(func() { if rr := bufferFactory.GetOrNew(packetio.RTCPBufferPacket, outTrack.SSRC()).(*buffer.RTCPReader); rr != nil { rr.OnPacket(func(pkt []byte) { diff --git a/pkg/rtc/participant_internal_test.go b/pkg/rtc/participant_internal_test.go index b74d03a2f..102240d78 100644 --- a/pkg/rtc/participant_internal_test.go +++ b/pkg/rtc/participant_internal_test.go @@ -48,6 +48,7 @@ func TestIsReady(t *testing.T) { func TestTrackPublishing(t *testing.T) { t.Run("should send the correct events", func(t *testing.T) { p := newParticipantForTest("test") + p.state.Store(livekit.ParticipantInfo_ACTIVE) track := &typesfakes.FakePublishedTrack{} track.IDReturns("id") published := false