Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[full-ci] Sharing SSEs #8860

Merged
merged 5 commits into from
Apr 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions changelog/unreleased/sharing-sse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Sharing SSEs

Added server side events for item moved, share created/updated/removed, space membership created/removed.

https://github.com/owncloud/ocis/pull/8854
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ require (
github.com/cenkalti/backoff v2.2.1+incompatible
github.com/coreos/go-oidc/v3 v3.10.0
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7
github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
github.com/disintegration/imaging v1.6.2
github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1022,8 +1022,8 @@ github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c=
github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e h1:RAmS/42ZYRrkhvVLWgvJhwjna9zSAqa2DJ8xS7R3Rx0=
github.com/cs3org/reva/v2 v2.19.2-0.20240405190914-ef59ba20ef0e/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7 h1:7oBqhyPUyWSRNMKG5wLYDm9TSc0gfKj+LeVaUhjm+hQ=
github.com/cs3org/reva/v2 v2.19.2-0.20240415154646-5c2c9831a2b7/go.mod h1:GRUrOp5HbFVwZTgR9bVrMZ/MvVy+Jhxw1PdMmhhKP9E=
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
Expand Down
6 changes: 6 additions & 0 deletions services/clientlog/pkg/command/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ var _registeredEvents = []events.Unmarshaller{
events.FileLocked{},
events.FileUnlocked{},
events.FileTouched{},
events.SpaceShared{},
events.SpaceShareUpdated{},
events.SpaceUnshared{},
events.ShareCreated{},
events.ShareRemoved{},
events.ShareUpdated{},
}

// Server is the entrypoint for the server command.
Expand Down
44 changes: 35 additions & 9 deletions services/clientlog/pkg/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"reflect"

gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
group "github.com/cs3org/go-cs3apis/cs3/identity/group/v1beta1"
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"go.opentelemetry.io/otel/trace"
Expand Down Expand Up @@ -90,11 +92,6 @@ func (cl *ClientlogService) processEvent(event events.Event) {
return
}

gwc, err = cl.gatewaySelector.Next()
if err != nil {
cl.log.Error().Err(err).Interface("event", event).Msg("error getting gateway client")
return
}
var (
users []string
evType string
Expand Down Expand Up @@ -148,17 +145,37 @@ func (cl *ClientlogService) processEvent(event events.Event) {
case events.ContainerCreated:
p("folder-created", e.Ref)
case events.ItemMoved:
// we are only interested in the rename case
if !utils.ResourceIDEqual(e.OldReference.GetResourceId(), e.Ref.GetResourceId()) || e.Ref.GetPath() == e.OldReference.GetPath() {
return
// we send a dedicated event in case the item was only renamed
if utils.ResourceIDEqual(e.OldReference.GetResourceId(), e.Ref.GetResourceId()) || e.Ref.GetPath() == e.OldReference.GetPath() {
p("item-renamed", e.Ref)
} else {
p("item-moved", e.Ref)
}
p("item-renamed", e.Ref)
case events.FileLocked:
p("file-locked", e.Ref)
case events.FileUnlocked:
p("file-unlocked", e.Ref)
case events.FileTouched:
p("file-touched", e.Ref)
case events.SpaceShared:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-member-added", &r)
case events.SpaceShareUpdated:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-share-updated", &r)
case events.SpaceUnshared:
r, _ := storagespace.ParseReference(e.ID.GetOpaqueId())
p("space-member-removed", &r)
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
case events.ShareCreated:
p("share-created", &provider.Reference{ResourceId: e.ItemID})
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
case events.ShareUpdated:
p("share-updated", &provider.Reference{ResourceId: e.ItemID})
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
case events.ShareRemoved:
p("share-removed", &provider.Reference{ResourceId: e.ItemID})
users, err = addSharees(ctx, users, gwc, e.GranteeUserID, e.GranteeGroupID)
}

if err != nil {
Expand Down Expand Up @@ -203,3 +220,12 @@ func processFileEvent(ctx context.Context, ref *provider.Reference, gwc gateway.
users, err := utils.GetSpaceMembers(ctx, info.GetSpace().GetId().GetOpaqueId(), gwc, utils.ViewerRole)
return users, data, err
}

// adds userid to users slice or gets members of groupid and adds them to users slice
func addSharees(ctx context.Context, users []string, gwc gateway.GatewayAPIClient, uid *user.UserId, gid *group.GroupId) ([]string, error) {
if uid != nil {
return append(users, uid.GetOpaqueId()), nil
}
us, err := utils.GetGroupMembers(ctx, gid.GetOpaqueId(), gwc)
return append(users, us...), err
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions vendor/github.com/cs3org/reva/v2/pkg/events/spaces.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading