diff --git a/.changeset/sharp-dolphins-help.md b/.changeset/sharp-dolphins-help.md new file mode 100644 index 000000000..593487fe3 --- /dev/null +++ b/.changeset/sharp-dolphins-help.md @@ -0,0 +1,5 @@ +--- +"@livekit/protocol": patch +--- + +add option to redact protobuf fields diff --git a/livekit/logger/options.pb.go b/livekit/logger/options.pb.go new file mode 100644 index 000000000..6376f910d --- /dev/null +++ b/livekit/logger/options.pb.go @@ -0,0 +1,82 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.10 +// protoc v4.23.4 +// source: logger/options.proto + +package logger + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var file_logger_options_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 50001, + Name: "logger.redact", + Tag: "varint,50001,opt,name=redact", + Filename: "logger/options.proto", + }, +} + +// Extension fields to descriptorpb.FieldOptions. +var ( + // optional bool redact = 50001; + E_Redact = &file_logger_options_proto_extTypes[0] +) + +var File_logger_options_proto protoreflect.FileDescriptor + +const file_logger_options_proto_rawDesc = "" + + "\n" + + "\x14logger/options.proto\x12\x06logger\x1a google/protobuf/descriptor.proto:7\n" + + "\x06redact\x12\x1d.google.protobuf.FieldOptions\x18ц\x03 \x01(\bR\x06redactB$Z\"github.com/livekit/protocol/loggerb\x06proto3" + +var file_logger_options_proto_goTypes = []any{ + (*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions +} +var file_logger_options_proto_depIdxs = []int32{ + 0, // 0: logger.redact:extendee -> google.protobuf.FieldOptions + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 0, // [0:1] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_logger_options_proto_init() } +func file_logger_options_proto_init() { + if File_logger_options_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_logger_options_proto_rawDesc), len(file_logger_options_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 1, + NumServices: 0, + }, + GoTypes: file_logger_options_proto_goTypes, + DependencyIndexes: file_logger_options_proto_depIdxs, + ExtensionInfos: file_logger_options_proto_extTypes, + }.Build() + File_logger_options_proto = out.File + file_logger_options_proto_goTypes = nil + file_logger_options_proto_depIdxs = nil +} diff --git a/logger/proto.go b/logger/proto.go index 83b00a644..6ff2f7c68 100644 --- a/logger/proto.go +++ b/logger/proto.go @@ -22,6 +22,8 @@ import ( "go.uber.org/zap/zapcore" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + + "github.com/livekit/protocol/livekit/logger" ) func Proto(val proto.Message) zapcore.ObjectMarshaler { @@ -46,6 +48,11 @@ func (p protoMarshaller) MarshalLogObject(e zapcore.ObjectEncoder) error { k := f.JSONName() v := p.m.Get(f) + if proto.HasExtension(f.Options(), logger.E_Redact) { + e.AddString(k, "") + continue + } + if f.IsMap() { if m := v.Map(); m.IsValid() { e.AddObject(k, protoMapMarshaller{f, m}) diff --git a/magefile.go b/magefile.go index 37f8051dd..8679a9d6d 100644 --- a/magefile.go +++ b/magefile.go @@ -68,6 +68,7 @@ func Proto() error { "livekit_webhook.proto", "livekit_metrics.proto", "livekit_token_source.proto", + "logger/options.proto", } grpcProtoFiles := []string{ "infra/link.proto", diff --git a/protobufs/logger/options.proto b/protobufs/logger/options.proto new file mode 100644 index 000000000..8ca017f5a --- /dev/null +++ b/protobufs/logger/options.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; +package logger; + +option go_package = "github.com/livekit/protocol/logger"; + +import "google/protobuf/descriptor.proto"; + +extend google.protobuf.FieldOptions { + bool redact = 50001; +}