diff --git a/go.mod b/go.mod index fb84c0a7..5a166ee1 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/gorilla/websocket v1.5.0 github.com/livekit/livekit-server v1.4.4-0.20230612120056-afa773374840 github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 - github.com/livekit/protocol v1.5.9 + github.com/livekit/protocol v1.5.10-0.20230711003953-193f7bd19180 github.com/livekit/psrpc v0.3.1 github.com/livekit/server-sdk-go v1.0.14-0.20230710162205-84a425768a90 github.com/pion/rtp v1.7.13 @@ -33,7 +33,7 @@ require ( go.uber.org/atomic v1.11.0 go.uber.org/zap v1.24.0 google.golang.org/api v0.130.0 - google.golang.org/grpc v1.56.1 + google.golang.org/grpc v1.56.2 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index cd8aff04..9bca400f 100644 --- a/go.sum +++ b/go.sum @@ -177,8 +177,8 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ= github.com/livekit/mediatransportutil v0.0.0-20230612070454-d5299b956135 h1:lWYbsondvqG69czxoACDwaJ/BoyD57BahCo70ZH+m4U= github.com/livekit/mediatransportutil v0.0.0-20230612070454-d5299b956135/go.mod h1:MRc0zSOSzXuFt0X218SgabzlaKevkvCckPgBEoHYc34= -github.com/livekit/protocol v1.5.9 h1:fqPOLgKkWmkmUMnpfj2KDZlidHgAazAPU2T3FewyLew= -github.com/livekit/protocol v1.5.9/go.mod h1:GMTlFbc0JypUGo+PMilDrL45AX+yUBiQ1Cl/FGZibDY= +github.com/livekit/protocol v1.5.10-0.20230711003953-193f7bd19180 h1:gexr11azmmaop/D3oMCcqqibuekDq2udxhrZaRdWfqQ= +github.com/livekit/protocol v1.5.10-0.20230711003953-193f7bd19180/go.mod h1:zqhhOl9Cw8R6lVR58DsYryjP1WqA/iPWItamJnnYy8M= github.com/livekit/psrpc v0.3.1 h1:KfylgJHvoLQcc22t/oflwMOeSnx0c14G7cWsS+9MYS4= github.com/livekit/psrpc v0.3.1/go.mod h1:n6JntEg+zT6Ji8InoyTpV7wusPNwGqqtxmHlkNhDN0U= github.com/livekit/server-sdk-go v1.0.14-0.20230710162205-84a425768a90 h1:r+EpbPmVWvGmOs70xkdztx+vvC3Y53UxNcpY78FAJTQ= @@ -471,8 +471,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/pkg/config/output.go b/pkg/config/output.go index 0d3eda6a..59145e7c 100644 --- a/pkg/config/output.go +++ b/pkg/config/output.go @@ -3,8 +3,8 @@ package config import ( "github.com/livekit/egress/pkg/errors" "github.com/livekit/egress/pkg/types" - "github.com/livekit/egress/pkg/util" "github.com/livekit/protocol/livekit" + "github.com/livekit/protocol/utils" ) type OutputConfig interface { @@ -191,7 +191,7 @@ func redactEncodedOutputs(out EncodedOutput) { func redactStreamKeys(stream *livekit.StreamOutput) { for i, url := range stream.Urls { - if redacted, ok := util.RedactStreamKey(url); ok { + if redacted, ok := utils.RedactStreamKey(url); ok { stream.Urls[i] = redacted } } diff --git a/pkg/config/pipeline.go b/pkg/config/pipeline.go index 8cbddee7..c4f88f5c 100644 --- a/pkg/config/pipeline.go +++ b/pkg/config/pipeline.go @@ -14,11 +14,11 @@ import ( "github.com/livekit/egress/pkg/errors" "github.com/livekit/egress/pkg/types" - "github.com/livekit/egress/pkg/util" "github.com/livekit/protocol/egress" "github.com/livekit/protocol/livekit" "github.com/livekit/protocol/rpc" "github.com/livekit/protocol/tracer" + "github.com/livekit/protocol/utils" ) const ( @@ -526,7 +526,7 @@ func (p *PipelineConfig) ValidateUrl(rawUrl string, outputType types.OutputType) rawUrl = fmt.Sprintf("rtmps://global-live.mux.com:443/app/%s", parsed.Host) } - redacted, ok := util.RedactStreamKey(rawUrl) + redacted, ok := utils.RedactStreamKey(rawUrl) if !ok { return "", "", errors.ErrInvalidUrl(rawUrl, "rtmp urls must be of format rtmp(s)://{host}(/{path})/{app}/{stream_key}( live=1)") } diff --git a/pkg/config/uploads.go b/pkg/config/uploads.go index b7e0b47b..3e5988f4 100644 --- a/pkg/config/uploads.go +++ b/pkg/config/uploads.go @@ -1,8 +1,8 @@ package config import ( - "github.com/livekit/egress/pkg/util" "github.com/livekit/protocol/livekit" + "github.com/livekit/protocol/utils" ) type UploadConfig interface{} @@ -69,25 +69,25 @@ func (c StorageConfig) ToUploadConfig() UploadConfig { func redactUpload(req uploadRequest) { if s3 := req.GetS3(); s3 != nil { - s3.AccessKey = util.Redact(s3.AccessKey, "{access_key}") - s3.Secret = util.Redact(s3.Secret, "{secret}") + s3.AccessKey = utils.Redact(s3.AccessKey, "{access_key}") + s3.Secret = utils.Redact(s3.Secret, "{secret}") return } if gcp := req.GetGcp(); gcp != nil { - gcp.Credentials = util.Redact(gcp.Credentials, "{credentials}") + gcp.Credentials = utils.Redact(gcp.Credentials, "{credentials}") return } if azure := req.GetAzure(); azure != nil { - azure.AccountName = util.Redact(azure.AccountName, "{account_name}") - azure.AccountKey = util.Redact(azure.AccountKey, "{account_key}") + azure.AccountName = utils.Redact(azure.AccountName, "{account_name}") + azure.AccountKey = utils.Redact(azure.AccountKey, "{account_key}") return } if aliOSS := req.GetAliOSS(); aliOSS != nil { - aliOSS.AccessKey = util.Redact(aliOSS.AccessKey, "{access_key}") - aliOSS.Secret = util.Redact(aliOSS.Secret, "{secret}") + aliOSS.AccessKey = utils.Redact(aliOSS.AccessKey, "{access_key}") + aliOSS.Secret = utils.Redact(aliOSS.Secret, "{secret}") return } } diff --git a/pkg/pipeline/pipeline.go b/pkg/pipeline/pipeline.go index 4faecd20..ec2175f6 100644 --- a/pkg/pipeline/pipeline.go +++ b/pkg/pipeline/pipeline.go @@ -18,10 +18,10 @@ import ( "github.com/livekit/egress/pkg/pipeline/sink" "github.com/livekit/egress/pkg/pipeline/source" "github.com/livekit/egress/pkg/types" - "github.com/livekit/egress/pkg/util" "github.com/livekit/protocol/livekit" "github.com/livekit/protocol/logger" "github.com/livekit/protocol/tracer" + "github.com/livekit/protocol/utils" ) const ( @@ -350,7 +350,7 @@ func (p *Pipeline) removeSink(ctx context.Context, url string, streamErr error) p.mu.Unlock() // log removal - redacted, _ := util.RedactStreamKey(url) + redacted, _ := utils.RedactStreamKey(url) logger.Infow("removing stream sink", "url", redacted, "status", streamInfo.Status, diff --git a/pkg/util/redact.go b/pkg/util/redact.go deleted file mode 100644 index 79f00666..00000000 --- a/pkg/util/redact.go +++ /dev/null @@ -1,40 +0,0 @@ -package util - -import ( - "fmt" - "regexp" - "strings" -) - -// rtmp urls must be of format rtmp(s)://{host}(/{path})/{app}/{stream_key}( live=1) -var rtmpRegexp = regexp.MustCompile("^(rtmps?:\\/\\/)(.*\\/)(.*\\/)(\\S*)( live=1)?$") - -func RedactStreamKey(url string) (string, bool) { - match := rtmpRegexp.FindStringSubmatch(url) - if len(match) != 6 { - return url, false - } - - match[4] = redactStreamKey(match[4]) - return strings.Join(match[1:], ""), true -} - -func redactStreamKey(key string) string { - var prefix, suffix string - for i := 3; i > 0; i-- { - if len(key) >= i*3 { - prefix = key[:i] - suffix = key[len(key)-i:] - break - } - } - - return fmt.Sprintf("{%s...%s}", prefix, suffix) -} - -func Redact(s, name string) string { - if s != "" { - return name - } - return "" -}