Skip to content

Commit afcb910

Browse files
committed
[TODO: REMOVE replace DIRECTIVE] Fix NewAuthEvents call-sites for GMSL update
1 parent c75cf8a commit afcb910

File tree

11 files changed

+50
-31
lines changed

11 files changed

+50
-31
lines changed

clientapi/routing/sendevent.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,14 @@ func generateSendEvent(
414414
for i := range queryRes.StateEvents {
415415
stateEvents[i] = queryRes.StateEvents[i].PDU
416416
}
417-
provider := gomatrixserverlib.NewAuthEvents(gomatrixserverlib.ToPDUs(stateEvents))
418-
if err = gomatrixserverlib.Allowed(e.PDU, &provider, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
417+
provider, err := gomatrixserverlib.NewAuthEvents(gomatrixserverlib.ToPDUs(stateEvents))
418+
if err != nil {
419+
return nil, &util.JSONResponse{
420+
Code: http.StatusForbidden,
421+
JSON: spec.Forbidden(err.Error()),
422+
}
423+
}
424+
if err = gomatrixserverlib.Allowed(e.PDU, provider, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
419425
return rsAPI.QueryUserIDForSender(ctx, *validRoomID, senderID)
420426
}); err != nil {
421427
return nil, &util.JSONResponse{

federationapi/routing/threepid.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ func buildMembershipEvent(
344344
protoEvent.Depth = queryRes.Depth
345345
protoEvent.PrevEvents = queryRes.LatestEvents
346346

347-
authEvents := gomatrixserverlib.NewAuthEvents(nil)
347+
authEvents, _ := gomatrixserverlib.NewAuthEvents(nil)
348348

349349
for i := range queryRes.StateEvents {
350350
err = authEvents.AddEvent(queryRes.StateEvents[i].PDU)
@@ -357,7 +357,7 @@ func buildMembershipEvent(
357357
return nil, err
358358
}
359359

360-
refs, err := eventsNeeded.AuthEventReferences(&authEvents)
360+
refs, err := eventsNeeded.AuthEventReferences(authEvents)
361361
if err != nil {
362362
return nil, err
363363
}
@@ -421,7 +421,7 @@ func sendToRemoteServer(
421421
// found. Returning an error isn't necessary in this case as the event will be
422422
// rejected by gomatrixserverlib.
423423
func fillDisplayName(
424-
builder *gomatrixserverlib.ProtoEvent, authEvents gomatrixserverlib.AuthEvents,
424+
builder *gomatrixserverlib.ProtoEvent, authEvents *gomatrixserverlib.AuthEvents,
425425
) error {
426426
var content gomatrixserverlib.MemberContent
427427
if err := json.Unmarshal(builder.Content, &content); err != nil {

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module github.com/element-hq/dendrite
22

3+
replace github.com/matrix-org/gomatrixserverlib => github.com/neilalexander/gomatrixserverlib v0.0.0-20241213120227-3d48766ed855
4+
35
require (
46
github.com/Arceliar/phony v0.0.0-20220903101357-530938a4b13d
57
github.com/DATA-DOG/go-sqlmock v1.5.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,6 @@ github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91 h1:s7fexw
237237
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91/go.mod h1:e+cg2q7C7yE5QnAXgzo512tgFh1RbQLC0+jozuegKgo=
238238
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530 h1:kHKxCOLcHH8r4Fzarl4+Y3K5hjothkVW5z7T1dUM11U=
239239
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
240-
github.com/matrix-org/gomatrixserverlib v0.0.0-20240910190622-2c764912ce93 h1:FbyZ/xkeBVYHi2xfwAVaNmDhP+4HNbt9e6ucOR+jvBk=
241-
github.com/matrix-org/gomatrixserverlib v0.0.0-20240910190622-2c764912ce93/go.mod h1:HZGsVJ3bUE+DkZtufkH9H0mlsvbhEGK5CpX0Zlavylg=
242240
github.com/matrix-org/pinecone v0.11.1-0.20230810010612-ea4c33717fd7 h1:6t8kJr8i1/1I5nNttw6nn1ryQJgzVlBmSGgPiiaTdw4=
243241
github.com/matrix-org/pinecone v0.11.1-0.20230810010612-ea4c33717fd7/go.mod h1:ReWMS/LoVnOiRAdq9sNUC2NZnd1mZkMNB52QhpTRWjg=
244242
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66 h1:6z4KxomXSIGWqhHcfzExgkH3Z3UkIXry4ibJS4Aqz2Y=
@@ -281,6 +279,8 @@ github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
281279
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
282280
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
283281
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
282+
github.com/neilalexander/gomatrixserverlib v0.0.0-20241213120227-3d48766ed855 h1:CEeYH/JKmR1twVV6DKOHspk2aEibg2CyHK+cPBXkUmI=
283+
github.com/neilalexander/gomatrixserverlib v0.0.0-20241213120227-3d48766ed855/go.mod h1:qil34SWn6VB6gO5312rzziCUcZtgROPjrLE+4ly/0os=
284284
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
285285
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
286286
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=

internal/eventutil/events.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,10 @@ func addPrevEventsToEvent(
123123

124124
builder.Depth = queryRes.Depth
125125

126-
authEvents := gomatrixserverlib.NewAuthEvents(nil)
126+
authEvents, err := gomatrixserverlib.NewAuthEvents(nil)
127+
if err != nil {
128+
return fmt.Errorf("gomatrixserverlib.NewAuthEvents: %w", err)
129+
}
127130

128131
for i := range queryRes.StateEvents {
129132
err := authEvents.AddEvent(queryRes.StateEvents[i].PDU)
@@ -132,7 +135,7 @@ func addPrevEventsToEvent(
132135
}
133136
}
134137

135-
refs, err := eventsNeeded.AuthEventReferences(&authEvents)
138+
refs, err := eventsNeeded.AuthEventReferences(authEvents)
136139
if err != nil {
137140
return fmt.Errorf("eventsNeeded.AuthEventReferences: %w", err)
138141
}

roomserver/internal/input/input_events.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,15 +285,15 @@ func (r *Inputer) processRoomEvent(
285285

286286
// Check that the auth events of the event are known.
287287
// If they aren't then we will ask the federation API for them.
288-
authEvents := gomatrixserverlib.NewAuthEvents(nil)
288+
authEvents, _ := gomatrixserverlib.NewAuthEvents(nil)
289289
knownEvents := map[string]*types.Event{}
290-
if err = r.fetchAuthEvents(ctx, logger, roomInfo, virtualHost, headered, &authEvents, knownEvents, serverRes.ServerNames); err != nil {
290+
if err = r.fetchAuthEvents(ctx, logger, roomInfo, virtualHost, headered, authEvents, knownEvents, serverRes.ServerNames); err != nil {
291291
return fmt.Errorf("r.fetchAuthEvents: %w", err)
292292
}
293293

294294
// Check if the event is allowed by its auth events. If it isn't then
295295
// we consider the event to be "rejected" — it will still be persisted.
296-
if err = gomatrixserverlib.Allowed(event, &authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
296+
if err = gomatrixserverlib.Allowed(event, authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
297297
return r.Queryer.QueryUserIDForSender(ctx, roomID, senderID)
298298
}); err != nil {
299299
isRejected = true
@@ -640,10 +640,14 @@ func (r *Inputer) processStateBefore(
640640
// At this point, stateBeforeEvent should be populated either by
641641
// the supplied state in the input request, or from the prev events.
642642
// Check whether the event is allowed or not.
643-
stateBeforeAuth := gomatrixserverlib.NewAuthEvents(
643+
stateBeforeAuth, err := gomatrixserverlib.NewAuthEvents(
644644
gomatrixserverlib.ToPDUs(stateBeforeEvent),
645645
)
646-
if rejectionErr = gomatrixserverlib.Allowed(event, &stateBeforeAuth, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
646+
if err != nil {
647+
rejectionErr = fmt.Errorf("NewAuthEvents failed: %w", err)
648+
return
649+
}
650+
if rejectionErr = gomatrixserverlib.Allowed(event, stateBeforeAuth, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
647651
return r.Queryer.QueryUserIDForSender(ctx, roomID, senderID)
648652
}); rejectionErr != nil {
649653
rejectionErr = fmt.Errorf("Allowed() failed for stateBeforeEvent: %w", rejectionErr)

roomserver/internal/input/input_events_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ func Test_EventAuth(t *testing.T) {
5050
}, test.WithStateKey(bob.ID), test.WithAuthIDs(authEventIDs))
5151

5252
// Add the auth events to the allower
53-
allower := gomatrixserverlib.NewAuthEvents(nil)
53+
allower, _ := gomatrixserverlib.NewAuthEvents(nil)
5454
for _, a := range authEvents {
5555
if err := allower.AddEvent(a); err != nil {
5656
t.Fatalf("allower.AddEvent failed: %v", err)
5757
}
5858
}
5959

6060
// Finally check that the event is NOT allowed
61-
if err := gomatrixserverlib.Allowed(ev.PDU, &allower, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
61+
if err := gomatrixserverlib.Allowed(ev.PDU, allower, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
6262
return spec.NewUserID(string(senderID), true)
6363
}); err == nil {
6464
t.Fatalf("event should not be allowed, but it was")

roomserver/internal/input/input_missing.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -961,14 +961,14 @@ serverLoop:
961961
}
962962

963963
func checkAllowedByState(e gomatrixserverlib.PDU, stateEvents []gomatrixserverlib.PDU, userIDForSender spec.UserIDForSender) error {
964-
authUsingState := gomatrixserverlib.NewAuthEvents(nil)
964+
authUsingState, _ := gomatrixserverlib.NewAuthEvents(nil)
965965
for i := range stateEvents {
966966
err := authUsingState.AddEvent(stateEvents[i])
967967
if err != nil {
968968
return err
969969
}
970970
}
971-
return gomatrixserverlib.Allowed(e, &authUsingState, userIDForSender)
971+
return gomatrixserverlib.Allowed(e, authUsingState, userIDForSender)
972972
}
973973

974974
func (t *missingStateReq) hadEvent(eventID string) {

roomserver/internal/perform/perform_create_room.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
343343
// TODO: 3pid invite events
344344

345345
var builtEvents []*types.HeaderedEvent
346-
authEvents := gomatrixserverlib.NewAuthEvents(nil)
346+
authEvents, _ := gomatrixserverlib.NewAuthEvents(nil)
347347
if err != nil {
348348
util.GetLogger(ctx).WithError(err).Error("rsapi.QuerySenderIDForUser failed")
349349
return "", &util.JSONResponse{
@@ -373,7 +373,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
373373
builder.PrevEvents = []string{builtEvents[i-1].EventID()}
374374
}
375375
var ev gomatrixserverlib.PDU
376-
if err = builder.AddAuthEvents(&authEvents); err != nil {
376+
if err = builder.AddAuthEvents(authEvents); err != nil {
377377
util.GetLogger(ctx).WithError(err).Error("AddAuthEvents failed")
378378
return "", &util.JSONResponse{
379379
Code: http.StatusInternalServerError,
@@ -389,7 +389,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
389389
}
390390
}
391391

392-
if err = gomatrixserverlib.Allowed(ev, &authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
392+
if err = gomatrixserverlib.Allowed(ev, authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
393393
return c.RSAPI.QueryUserIDForSender(ctx, roomID, senderID)
394394
}); err != nil {
395395
util.GetLogger(ctx).WithError(err).Error("gomatrixserverlib.Allowed failed")

roomserver/internal/perform/perform_upgrade.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ func (r *Upgrader) generateInitialEvents(ctx context.Context, oldRoom *api.Query
470470
func (r *Upgrader) sendInitialEvents(ctx context.Context, evTime time.Time, senderID spec.SenderID, userDomain spec.ServerName, newRoomID string, newVersion gomatrixserverlib.RoomVersion, eventsToMake []gomatrixserverlib.FledglingEvent) error {
471471
var err error
472472
var builtEvents []*types.HeaderedEvent
473-
authEvents := gomatrixserverlib.NewAuthEvents(nil)
473+
authEvents, _ := gomatrixserverlib.NewAuthEvents(nil)
474474
for i, e := range eventsToMake {
475475
depth := i + 1 // depth starts at 1
476476

@@ -495,7 +495,7 @@ func (r *Upgrader) sendInitialEvents(ctx context.Context, evTime time.Time, send
495495
return err
496496
}
497497
builder := verImpl.NewEventBuilderFromProtoEvent(&proto)
498-
if err = builder.AddAuthEvents(&authEvents); err != nil {
498+
if err = builder.AddAuthEvents(authEvents); err != nil {
499499
return err
500500
}
501501

@@ -506,7 +506,7 @@ func (r *Upgrader) sendInitialEvents(ctx context.Context, evTime time.Time, send
506506

507507
}
508508

509-
if err = gomatrixserverlib.Allowed(event, &authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
509+
if err = gomatrixserverlib.Allowed(event, authEvents, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
510510
return r.URSAPI.QueryUserIDForSender(ctx, roomID, senderID)
511511
}); err != nil {
512512
return fmt.Errorf("Failed to auth new %q event: %w", builder.Type, err)
@@ -586,8 +586,11 @@ func (r *Upgrader) makeHeaderedEvent(ctx context.Context, evTime time.Time, send
586586
for i := range queryRes.StateEvents {
587587
stateEvents[i] = queryRes.StateEvents[i].PDU
588588
}
589-
provider := gomatrixserverlib.NewAuthEvents(stateEvents)
590-
if err = gomatrixserverlib.Allowed(headeredEvent.PDU, &provider, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
589+
provider, err := gomatrixserverlib.NewAuthEvents(stateEvents)
590+
if err != nil {
591+
return nil, err
592+
}
593+
if err = gomatrixserverlib.Allowed(headeredEvent.PDU, provider, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
591594
return r.URSAPI.QueryUserIDForSender(ctx, roomID, senderID)
592595
}); err != nil {
593596
return nil, api.ErrNotAllowed{Err: fmt.Errorf("failed to auth new %q event: %w", proto.Type, err)} // TODO: Is this error string comprehensible to the client?

0 commit comments

Comments
 (0)