mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-11 16:13:10 -06:00
Fix sytest failures by using only SenderID everywhere for now
This commit is contained in:
parent
56448c1c74
commit
b479b062c5
|
|
@ -233,17 +233,10 @@ func (s *appserviceState) backoffAndPause(err error) error {
|
|||
//
|
||||
// TODO: This should be cached, see https://github.com/matrix-org/dendrite/issues/1682
|
||||
func (s *OutputRoomEventConsumer) appserviceIsInterestedInEvent(ctx context.Context, event *types.HeaderedEvent, appservice *config.ApplicationService) bool {
|
||||
userID, err := event.UserID()
|
||||
if err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"appservice": appservice.ID,
|
||||
"room_id": event.RoomID(),
|
||||
}).WithError(err).Errorf("invalid userID")
|
||||
}
|
||||
switch {
|
||||
case appservice.URL == "":
|
||||
return false
|
||||
case appservice.IsInterestedInUserID(userID.String()):
|
||||
case appservice.IsInterestedInUserID(event.SenderID()):
|
||||
return true
|
||||
case appservice.IsInterestedInRoomID(event.RoomID()):
|
||||
return true
|
||||
|
|
|
|||
|
|
@ -76,14 +76,7 @@ func SendRedaction(
|
|||
// "Users may redact their own events, and any user with a power level greater than or equal
|
||||
// to the redact power level of the room may redact events there"
|
||||
// https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-rooms-roomid-redact-eventid-txnid
|
||||
userID, err := ev.UserID()
|
||||
if err != nil {
|
||||
return util.JSONResponse{
|
||||
Code: 400,
|
||||
JSON: spec.BadJSON("invalid userID"),
|
||||
}
|
||||
}
|
||||
allowedToRedact := userID.String() == device.UserID
|
||||
allowedToRedact := ev.SenderID() == device.UserID
|
||||
if !allowedToRedact {
|
||||
plEvent := roomserverAPI.GetStateEvent(req.Context(), rsAPI, roomID, gomatrixserverlib.StateKeyTuple{
|
||||
EventType: spec.MRoomPowerLevels,
|
||||
|
|
@ -126,7 +119,7 @@ func SendRedaction(
|
|||
Type: spec.MRoomRedaction,
|
||||
Redacts: eventID,
|
||||
}
|
||||
err = proto.SetContent(r)
|
||||
err := proto.SetContent(r)
|
||||
if err != nil {
|
||||
util.GetLogger(req.Context()).WithError(err).Error("proto.SetContent failed")
|
||||
return util.JSONResponse{
|
||||
|
|
|
|||
|
|
@ -509,7 +509,7 @@ func (r *FederationInternalAPI) SendInvite(
|
|||
event gomatrixserverlib.PDU,
|
||||
strippedState []gomatrixserverlib.InviteStrippedState,
|
||||
) (gomatrixserverlib.PDU, error) {
|
||||
originUser, err := event.UserID()
|
||||
_, origin, err := r.cfg.Matrix.SplitLocalID('@', event.SenderID())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -542,7 +542,7 @@ func (r *FederationInternalAPI) SendInvite(
|
|||
return nil, fmt.Errorf("gomatrixserverlib.NewInviteV2Request: %w", err)
|
||||
}
|
||||
|
||||
inviteRes, err := r.federation.SendInviteV2(ctx, originUser.Domain(), destination, inviteReq)
|
||||
inviteRes, err := r.federation.SendInviteV2(ctx, origin, destination, inviteReq)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("r.federation.SendInviteV2: failed to send invite: %w", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -224,14 +224,12 @@ func SendLeave(
|
|||
// the request. By this point we've already asserted that the sender
|
||||
// and the state key are equal so we don't need to check both.
|
||||
var serverName spec.ServerName
|
||||
userID, err := event.UserID()
|
||||
if err != nil {
|
||||
if _, serverName, err = gomatrixserverlib.SplitID('@', event.SenderID()); err != nil {
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusBadRequest,
|
||||
Code: http.StatusForbidden,
|
||||
JSON: spec.Forbidden("The sender of the join is invalid"),
|
||||
}
|
||||
}
|
||||
if userID.Domain() != request.Origin() {
|
||||
} else if serverName != request.Origin() {
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusForbidden,
|
||||
JSON: spec.Forbidden("The sender does not match the server that originated the request"),
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -22,7 +22,7 @@ require (
|
|||
github.com/matrix-org/dugong v0.0.0-20210921133753-66e6b1c67e2e
|
||||
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91
|
||||
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230601235030-c4138953b254
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230602163838-69e05dbabdad
|
||||
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a
|
||||
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66
|
||||
github.com/mattn/go-sqlite3 v1.14.16
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -323,8 +323,8 @@ github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91 h1:s7fexw
|
|||
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91/go.mod h1:e+cg2q7C7yE5QnAXgzo512tgFh1RbQLC0+jozuegKgo=
|
||||
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530 h1:kHKxCOLcHH8r4Fzarl4+Y3K5hjothkVW5z7T1dUM11U=
|
||||
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230601235030-c4138953b254 h1:javi7tINJfP86mdYeVg7IzDmeRLeaLA0kRzIbEZlK/I=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230601235030-c4138953b254/go.mod h1:H9V9N3Uqn1bBJqYJNGK1noqtgJTaCEhtTdcH/mp50uU=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230602163838-69e05dbabdad h1:l+mNyh4S3v0z320VOFuTIGZLjCAeTenVjYBiUNTZm/o=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20230602163838-69e05dbabdad/go.mod h1:H9V9N3Uqn1bBJqYJNGK1noqtgJTaCEhtTdcH/mp50uU=
|
||||
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a h1:awrPDf9LEFySxTLKYBMCiObelNx/cBuv/wzllvCCH3A=
|
||||
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a/go.mod h1:HchJX9oKMXaT2xYFs0Ha/6Zs06mxLU8k6F1ODnrGkeQ=
|
||||
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66 h1:6z4KxomXSIGWqhHcfzExgkH3Z3UkIXry4ibJS4Aqz2Y=
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ func (r *RoomserverInternalAPI) RemoveRoomAlias(
|
|||
}
|
||||
|
||||
sender := request.UserID
|
||||
if sender != ev.SenderID() {
|
||||
if request.UserID != ev.SenderID() {
|
||||
sender = ev.SenderID()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ func (r *Inputer) processRoomEvent(
|
|||
if roomInfo == nil && !isCreateEvent {
|
||||
return fmt.Errorf("room %s does not exist for event %s", event.RoomID(), event.EventID())
|
||||
}
|
||||
sender, err := event.UserID()
|
||||
_, senderDomain, err := gomatrixserverlib.SplitID('@', event.SenderID())
|
||||
if err != nil {
|
||||
return fmt.Errorf("event has invalid sender %q", event.SenderID())
|
||||
}
|
||||
|
|
@ -193,9 +193,9 @@ func (r *Inputer) processRoomEvent(
|
|||
serverRes.ServerNames = append(serverRes.ServerNames, input.Origin)
|
||||
delete(servers, input.Origin)
|
||||
}
|
||||
if sender.Domain() != input.Origin && sender.Domain() != r.Cfg.Matrix.ServerName {
|
||||
serverRes.ServerNames = append(serverRes.ServerNames, sender.Domain())
|
||||
delete(servers, sender.Domain())
|
||||
if senderDomain != input.Origin && senderDomain != r.Cfg.Matrix.ServerName {
|
||||
serverRes.ServerNames = append(serverRes.ServerNames, senderDomain)
|
||||
delete(servers, senderDomain)
|
||||
}
|
||||
for server := range servers {
|
||||
serverRes.ServerNames = append(serverRes.ServerNames, server)
|
||||
|
|
@ -451,7 +451,7 @@ func (r *Inputer) processRoomEvent(
|
|||
}
|
||||
|
||||
// Handle remote room upgrades, e.g. remove published room
|
||||
if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) {
|
||||
if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(senderDomain) {
|
||||
if err = r.handleRemoteRoomUpgrade(ctx, event); err != nil {
|
||||
return fmt.Errorf("failed to handle remote room upgrade: %w", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -484,11 +484,9 @@ FindSuccessor:
|
|||
// Store the server names in a temporary map to avoid duplicates.
|
||||
serverSet := make(map[spec.ServerName]bool)
|
||||
for _, event := range memberEvents {
|
||||
sender, err := event.UserID()
|
||||
if err != nil {
|
||||
continue
|
||||
if _, senderDomain, err := gomatrixserverlib.SplitID('@', event.SenderID()); err == nil {
|
||||
serverSet[senderDomain] = true
|
||||
}
|
||||
serverSet[sender.Domain()] = true
|
||||
}
|
||||
var servers []spec.ServerName
|
||||
for server := range serverSet {
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ func (r *Inviter) PerformInvite(
|
|||
) error {
|
||||
event := req.Event
|
||||
|
||||
sender, err := event.UserID()
|
||||
sender, err := spec.NewUserID(event.SenderID(), true)
|
||||
if err != nil {
|
||||
return spec.InvalidParam("The user ID is invalid")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -988,14 +988,8 @@ func (d *EventDatabase) MaybeRedactEvent(
|
|||
return nil
|
||||
}
|
||||
|
||||
sender1, err := redactedEvent.UserID()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sender2, err := redactionEvent.UserID()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, sender1, _ := gomatrixserverlib.SplitID('@', redactedEvent.SenderID())
|
||||
_, sender2, _ := gomatrixserverlib.SplitID('@', redactionEvent.SenderID())
|
||||
var powerlevels *gomatrixserverlib.PowerLevelContent
|
||||
powerlevels, err = plResolver.Resolve(ctx, redactionEvent.EventID())
|
||||
if err != nil {
|
||||
|
|
@ -1005,7 +999,7 @@ func (d *EventDatabase) MaybeRedactEvent(
|
|||
switch {
|
||||
case powerlevels.UserLevel(redactionEvent.SenderID()) >= powerlevels.Redact:
|
||||
// 1. The power level of the redaction event’s sender is greater than or equal to the redact level.
|
||||
case sender1.Domain() == sender2.Domain():
|
||||
case sender1 == sender2:
|
||||
// 2. The domain of the redaction event’s sender matches that of the original event’s sender.
|
||||
default:
|
||||
ignoreRedaction = true
|
||||
|
|
|
|||
|
|
@ -195,14 +195,7 @@ func (d *Database) StreamEventsToEvents(device *userapi.Device, in []types.Strea
|
|||
for i := 0; i < len(in); i++ {
|
||||
out[i] = in[i].HeaderedEvent
|
||||
if device != nil && in[i].TransactionID != nil {
|
||||
userID, err := in[i].UserID()
|
||||
if err != nil {
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"event_id": out[i].EventID(),
|
||||
}).WithError(err).Warnf("Event has invalid userID")
|
||||
continue
|
||||
}
|
||||
if device.UserID == userID.String() && device.SessionID == in[i].TransactionID.SessionID {
|
||||
if device.UserID == in[i].SenderID() && device.SessionID == in[i].TransactionID.SessionID {
|
||||
err := out[i].SetUnsignedField(
|
||||
"transaction_id", in[i].TransactionID.TransactionID,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -63,11 +63,7 @@ func (p *InviteStreamProvider) IncrementalSync(
|
|||
|
||||
for roomID, inviteEvent := range invites {
|
||||
// skip ignored user events
|
||||
userID, err := inviteEvent.UserID()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if _, ok := req.IgnoredUsers.List[userID.String()]; ok {
|
||||
if _, ok := req.IgnoredUsers.List[inviteEvent.SenderID()]; ok {
|
||||
continue
|
||||
}
|
||||
ir := types.NewInviteResponse(inviteEvent)
|
||||
|
|
|
|||
|
|
@ -57,13 +57,9 @@ func ToClientEvents(serverEvs []gomatrixserverlib.PDU, format ClientEventFormat)
|
|||
|
||||
// ToClientEvent converts a single server event to a client event.
|
||||
func ToClientEvent(se gomatrixserverlib.PDU, format ClientEventFormat) ClientEvent {
|
||||
sender, err := se.UserID()
|
||||
if err != nil {
|
||||
panic("uh oh! userID does not exist...")
|
||||
}
|
||||
ce := ClientEvent{
|
||||
Content: spec.RawJSON(se.Content()),
|
||||
Sender: sender.String(),
|
||||
Sender: se.SenderID(),
|
||||
Type: se.Type(),
|
||||
StateKey: se.StateKey(),
|
||||
Unsigned: spec.RawJSON(se.Unsigned()),
|
||||
|
|
|
|||
|
|
@ -615,11 +615,7 @@ func (s *OutputRoomEventConsumer) notifyLocal(ctx context.Context, event *rstype
|
|||
// evaluatePushRules fetches and evaluates the push rules of a local
|
||||
// user. Returns actions (including dont_notify).
|
||||
func (s *OutputRoomEventConsumer) evaluatePushRules(ctx context.Context, event *rstypes.HeaderedEvent, mem *localMembership, roomSize int) ([]*pushrules.Action, error) {
|
||||
userID, err := event.UserID()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if userID.String() == mem.UserID {
|
||||
if event.SenderID() == mem.UserID {
|
||||
// SPEC: Homeservers MUST NOT notify the Push Gateway for
|
||||
// events that the user has sent themselves.
|
||||
return nil, nil
|
||||
|
|
|
|||
Loading…
Reference in a new issue