From 537bceb9d898595d6a5258c7a2ecb7ae50e9bba1 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Thu, 11 Jul 2024 16:15:38 +0200 Subject: [PATCH] audit: workaround unstable prototext string representation The prototext formater (used by '.String()') inserts spaces randomly (see: https://protobuf.dev/reference/go/faq/#unstable-text). --- services/audit/pkg/types/conversion.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/services/audit/pkg/types/conversion.go b/services/audit/pkg/types/conversion.go index 0794569274..1dd86f0ba9 100644 --- a/services/audit/pkg/types/conversion.go +++ b/services/audit/pkg/types/conversion.go @@ -2,6 +2,7 @@ package types import ( "fmt" + "strings" "time" "github.com/cs3org/reva/v2/pkg/events" @@ -81,7 +82,7 @@ func LinkCreated(ev events.LinkCreated) AuditEventShareCreated { ShareType: typ, ExpirationDate: formatTime(ev.Expiration), SharePass: ev.PasswordProtected, - Permissions: ev.Permissions.String(), + Permissions: normalizeString(ev.Permissions.GetPermissions().String()), ShareToken: ev.Token, // NOTE: those values are not in the event and can therefore not be filled at the moment @@ -99,7 +100,7 @@ func ShareUpdated(ev events.ShareUpdated) AuditEventShareUpdated { ShareOwner: uid, ShareWith: with, ShareType: typ, - Permissions: ev.Permissions.Permissions.String(), + Permissions: normalizeString(ev.Permissions.GetPermissions().String()), // NOTE: those values are not in the event and can therefore not be filled at the moment ItemType: "", @@ -119,7 +120,7 @@ func LinkUpdated(ev events.LinkUpdated) AuditEventShareUpdated { ShareOwner: uid, ShareWith: with, ShareType: typ, - Permissions: ev.Permissions.Permissions.String(), + Permissions: normalizeString(ev.Permissions.GetPermissions().String()), ExpirationDate: formatTime(ev.Expiration), SharePass: ev.PasswordProtected, ShareToken: ev.Token, @@ -555,3 +556,11 @@ func updateType(u string) string { return "" } } + +// normalizeString tries to create a somewhat stable string +// from a prototext string. The prototext strings are unstable +// on purpose an insert additional spaces randomly. +// See: https://protobuf.dev/reference/go/faq/#unstable-text +func normalizeString(str string) string { + return strings.Join(strings.Fields(str), " ") +}