mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-07 23:13:11 -06:00
PseudoID fixes for complement tests
This commit is contained in:
parent
db83789654
commit
06f353d4b1
|
|
@ -263,7 +263,11 @@ func SendEvent(
|
||||||
}
|
}
|
||||||
|
|
||||||
func updatePowerLevels(req *http.Request, r map[string]interface{}, roomID string, rsAPI api.ClientRoomserverAPI) error {
|
func updatePowerLevels(req *http.Request, r map[string]interface{}, roomID string, rsAPI api.ClientRoomserverAPI) error {
|
||||||
userMap := r["users"].(map[string]interface{})
|
users, ok := r["users"]
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
userMap := users.(map[string]interface{})
|
||||||
validRoomID, err := spec.NewRoomID(roomID)
|
validRoomID, err := spec.NewRoomID(roomID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -277,7 +281,8 @@ func updatePowerLevels(req *http.Request, r map[string]interface{}, roomID strin
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if senderID == nil {
|
} else if senderID == nil {
|
||||||
return fmt.Errorf("sender ID not found for %s in %s", uID, *validRoomID)
|
util.GetLogger(req.Context()).Warnf("sender ID not found for %s in %s", uID, *validRoomID)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
userMap[string(*senderID)] = level
|
userMap[string(*senderID)] = level
|
||||||
delete(userMap, user)
|
delete(userMap, user)
|
||||||
|
|
|
||||||
|
|
@ -93,11 +93,21 @@ func (r *Leaver) performLeaveRoomByID(
|
||||||
isInvitePending, senderUser, eventID, _, err := helpers.IsInvitePending(ctx, r.DB, req.RoomID, *leaver)
|
isInvitePending, senderUser, eventID, _, err := helpers.IsInvitePending(ctx, r.DB, req.RoomID, *leaver)
|
||||||
if err == nil && isInvitePending {
|
if err == nil && isInvitePending {
|
||||||
sender, serr := r.RSAPI.QueryUserIDForSender(ctx, *roomID, senderUser)
|
sender, serr := r.RSAPI.QueryUserIDForSender(ctx, *roomID, senderUser)
|
||||||
if serr != nil || sender == nil {
|
if serr != nil {
|
||||||
return nil, fmt.Errorf("sender %q has no matching userID", senderUser)
|
return nil, fmt.Errorf("failed looking up userID for sender %q: %w", senderUser, serr)
|
||||||
}
|
}
|
||||||
if !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) {
|
|
||||||
return r.performFederatedRejectInvite(ctx, req, res, *sender, eventID, *leaver)
|
var domain spec.ServerName
|
||||||
|
if sender == nil {
|
||||||
|
// TODO: Currently a federated invite has no way of knowing the mxid_mapping of the inviter.
|
||||||
|
// Should we add the inviter's m.room.member event (with mxid_mapping) to invite_room_state to allow
|
||||||
|
// the invited user to leave via the inviter's server?
|
||||||
|
domain = roomID.Domain()
|
||||||
|
} else {
|
||||||
|
domain = sender.Domain()
|
||||||
|
}
|
||||||
|
if !r.Cfg.Matrix.IsLocalServerName(domain) {
|
||||||
|
return r.performFederatedRejectInvite(ctx, req, res, domain, eventID, *leaver)
|
||||||
}
|
}
|
||||||
// check that this is not a "server notice room"
|
// check that this is not a "server notice room"
|
||||||
accData := &userapi.QueryAccountDataResponse{}
|
accData := &userapi.QueryAccountDataResponse{}
|
||||||
|
|
@ -219,14 +229,14 @@ func (r *Leaver) performFederatedRejectInvite(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
req *api.PerformLeaveRequest,
|
req *api.PerformLeaveRequest,
|
||||||
res *api.PerformLeaveResponse, // nolint:unparam
|
res *api.PerformLeaveResponse, // nolint:unparam
|
||||||
inviteSender spec.UserID, eventID string,
|
inviteDomain spec.ServerName, eventID string,
|
||||||
leaver spec.SenderID,
|
leaver spec.SenderID,
|
||||||
) ([]api.OutputEvent, error) {
|
) ([]api.OutputEvent, error) {
|
||||||
// Ask the federation sender to perform a federated leave for us.
|
// Ask the federation sender to perform a federated leave for us.
|
||||||
leaveReq := fsAPI.PerformLeaveRequest{
|
leaveReq := fsAPI.PerformLeaveRequest{
|
||||||
RoomID: req.RoomID,
|
RoomID: req.RoomID,
|
||||||
UserID: req.Leaver.String(),
|
UserID: req.Leaver.String(),
|
||||||
ServerNames: []spec.ServerName{inviteSender.Domain()},
|
ServerNames: []spec.ServerName{inviteDomain},
|
||||||
}
|
}
|
||||||
leaveRes := fsAPI.PerformLeaveResponse{}
|
leaveRes := fsAPI.PerformLeaveResponse{}
|
||||||
if err := r.FSAPI.PerformLeave(ctx, &leaveReq, &leaveRes); err != nil {
|
if err := r.FSAPI.PerformLeave(ctx, &leaveReq, &leaveRes); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ type RoomServer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RoomServer) Defaults(opts DefaultOpts) {
|
func (c *RoomServer) Defaults(opts DefaultOpts) {
|
||||||
c.DefaultRoomVersion = gomatrixserverlib.RoomVersionV10
|
//c.DefaultRoomVersion = gomatrixserverlib.RoomVersionV10
|
||||||
|
c.DefaultRoomVersion = gomatrixserverlib.RoomVersionPseudoIDs
|
||||||
if opts.Generate {
|
if opts.Generate {
|
||||||
if !opts.SingleDatabase {
|
if !opts.SingleDatabase {
|
||||||
c.Database.ConnectionString = "file:roomserver.db"
|
c.Database.ConnectionString = "file:roomserver.db"
|
||||||
|
|
|
||||||
|
|
@ -363,14 +363,17 @@ func updatePowerLevelEvent(userIDForSender spec.UserIDForSender, se gomatrixserv
|
||||||
}
|
}
|
||||||
newPls[user] = level
|
newPls[user] = level
|
||||||
}
|
}
|
||||||
var newPlBytes, newEv []byte
|
var newPlBytes []byte
|
||||||
newPlBytes, err = json.Marshal(newPls)
|
newEv := se.JSON()
|
||||||
if err != nil {
|
if len(pls.Users) > 0 {
|
||||||
return nil, err
|
newPlBytes, err = json.Marshal(newPls)
|
||||||
}
|
if err != nil {
|
||||||
newEv, err = sjson.SetRawBytes(se.JSON(), "content.users", newPlBytes)
|
return nil, err
|
||||||
if err != nil {
|
}
|
||||||
return nil, err
|
newEv, err = sjson.SetRawBytes(se.JSON(), "content.users", newPlBytes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// do the same for prev content
|
// do the same for prev content
|
||||||
|
|
@ -401,13 +404,15 @@ func updatePowerLevelEvent(userIDForSender spec.UserIDForSender, se gomatrixserv
|
||||||
}
|
}
|
||||||
newPls[user] = level
|
newPls[user] = level
|
||||||
}
|
}
|
||||||
newPlBytes, err = json.Marshal(newPls)
|
if len(pls.Users) > 0 {
|
||||||
if err != nil {
|
newPlBytes, err = json.Marshal(newPls)
|
||||||
return nil, err
|
if err != nil {
|
||||||
}
|
return nil, err
|
||||||
newEv, err = sjson.SetRawBytes(newEv, "unsigned.prev_content.users", newPlBytes)
|
}
|
||||||
if err != nil {
|
newEv, err = sjson.SetRawBytes(newEv, "unsigned.prev_content.users", newPlBytes)
|
||||||
return nil, err
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var evNew gomatrixserverlib.PDU
|
var evNew gomatrixserverlib.PDU
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue