Partially working pseudo IDs

This commit is contained in:
Till Faelligen 2023-06-15 13:23:07 +02:00
parent b655017b07
commit 8f967e5f52
No known key found for this signature in database
GPG key ID: ACCDC9606D472758
6 changed files with 19 additions and 17 deletions

View file

@ -176,7 +176,7 @@ func (r *FederationInternalAPI) performJoinUsingServer(
return "", keyErr return "", keyErr
} }
return spec.SenderID(spec.Base64Bytes(key).Encode()), nil return spec.SenderIDFromPseudoIDKey(key), nil
}, },
} }
response, joinErr := gomatrixserverlib.PerformJoin(ctx, r, joinInput) response, joinErr := gomatrixserverlib.PerformJoin(ctx, r, joinInput)

View file

@ -65,6 +65,16 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
} }
} }
} }
_, err = c.DB.AssignRoomNID(ctx, roomID, createRequest.RoomVersion)
if err != nil {
util.GetLogger(ctx).WithError(err).Error("failed to assign roomNID")
return "", &util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{},
}
}
var senderID spec.SenderID var senderID spec.SenderID
if createRequest.RoomVersion == gomatrixserverlib.RoomVersionPseudoIDs { if createRequest.RoomVersion == gomatrixserverlib.RoomVersionPseudoIDs {
// create user room key if needed // create user room key if needed
@ -76,7 +86,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
JSON: spec.InternalServerError{}, JSON: spec.InternalServerError{},
} }
} }
senderID = spec.SenderID(spec.Base64Bytes(key).Encode()) senderID = spec.SenderIDFromPseudoIDKey(key)
} else { } else {
senderID = spec.SenderID(userID.String()) senderID = spec.SenderID(userID.String())
} }
@ -102,15 +112,6 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
} }
} }
_, err = c.DB.AssignRoomNID(ctx, roomID, createRequest.RoomVersion)
if err != nil {
util.GetLogger(ctx).WithError(err).Error("failed to assign roomNID")
return "", &util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{},
}
}
var guestsCanJoin bool var guestsCanJoin bool
switch createRequest.StatePreset { switch createRequest.StatePreset {
case spec.PresetPrivateChat: case spec.PresetPrivateChat:
@ -179,7 +180,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
} }
mapping := &gomatrixserverlib.MXIDMapping{ mapping := &gomatrixserverlib.MXIDMapping{
UserRoomKey: spec.UserRoomKey(pseudoIDKey), UserRoomKey: spec.SenderIDFromPseudoIDKey(pseudoIDKey),
UserID: userID.String(), UserID: userID.String(),
} }

View file

@ -211,7 +211,7 @@ func (r *Joiner) performJoinRoomByID(
util.GetLogger(ctx).WithError(keyErr).Error("GetOrCreateUserRoomPrivateKey failed") util.GetLogger(ctx).WithError(keyErr).Error("GetOrCreateUserRoomPrivateKey failed")
return "", "", fmt.Errorf("GetOrCreateUserRoomPrivateKey failed: %w", keyErr) return "", "", fmt.Errorf("GetOrCreateUserRoomPrivateKey failed: %w", keyErr)
} }
senderID = spec.SenderID(spec.Base64Bytes(key).Encode()) senderID = spec.SenderIDFromPseudoIDKey(key)
} }
default: default:
checkInvitePending = true checkInvitePending = true
@ -300,7 +300,7 @@ func (r *Joiner) performJoinRoomByID(
} }
mapping := &gomatrixserverlib.MXIDMapping{ mapping := &gomatrixserverlib.MXIDMapping{
UserRoomKey: spec.UserRoomKey(pseudoIDKey), UserRoomKey: spec.SenderIDFromPseudoIDKey(pseudoIDKey),
UserID: userID.String(), UserID: userID.String(),
} }

View file

@ -1029,7 +1029,7 @@ func (r *Queryer) QueryUserIDForSender(ctx context.Context, roomID spec.RoomID,
} }
if userKeys, ok := result[roomID]; ok { if userKeys, ok := result[roomID]; ok {
if userID, ok := userKeys[string(senderID)]; ok { if userID, ok := userKeys[string(bytes)]; ok {
return spec.NewUserID(userID, true) return spec.NewUserID(userID, true)
} }
} }

View file

@ -570,7 +570,8 @@ func (s *OutputRoomEventConsumer) updateStateEvent(event *rstypes.HeaderedEvent)
if event.StateKey() != nil { if event.StateKey() != nil {
if *event.StateKey() != "" { if *event.StateKey() != "" {
sku, err := s.rsAPI.QueryUserIDForSender(s.ctx, *validRoomID, spec.SenderID(stateKey)) var sku *spec.UserID
sku, err = s.rsAPI.QueryUserIDForSender(s.ctx, *validRoomID, spec.SenderID(stateKey))
if err == nil && sku != nil { if err == nil && sku != nil {
sKey := sku.String() sKey := sku.String()
event.StateKeyResolved = &sKey event.StateKeyResolved = &sKey

View file

@ -231,7 +231,7 @@ func TestSearch(t *testing.T) {
stateEventIDs = append(stateEventIDs, x.EventID()) stateEventIDs = append(stateEventIDs, x.EventID())
} }
sp, err = db.WriteEvent(processCtx.Context(), x, spec.UserID{}, stateEvents, stateEventIDs, nil, nil, false, gomatrixserverlib.HistoryVisibilityShared) sp, err = db.WriteEvent(processCtx.Context(), x, stateEvents, stateEventIDs, nil, nil, false, gomatrixserverlib.HistoryVisibilityShared)
assert.NoError(t, err) assert.NoError(t, err)
if x.Type() != "m.room.message" { if x.Type() != "m.room.message" {
continue continue