mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-06 13:43:09 -06:00
Merge branch 'main' into neilalexander/restrictedmakesendjoin
This commit is contained in:
commit
174f44f274
|
|
@ -83,29 +83,38 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msg *nats.Msg)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if output.Type != api.OutputTypeNewRoomEvent || output.NewRoomEvent == nil {
|
log.WithFields(log.Fields{
|
||||||
return true
|
"type": output.Type,
|
||||||
}
|
}).Debug("Got a message in OutputRoomEventConsumer")
|
||||||
|
|
||||||
newEventID := output.NewRoomEvent.Event.EventID()
|
events := []*gomatrixserverlib.HeaderedEvent{}
|
||||||
events := make([]*gomatrixserverlib.HeaderedEvent, 0, len(output.NewRoomEvent.AddsStateEventIDs))
|
if output.Type == api.OutputTypeNewRoomEvent && output.NewRoomEvent != nil {
|
||||||
events = append(events, output.NewRoomEvent.Event)
|
newEventID := output.NewRoomEvent.Event.EventID()
|
||||||
if len(output.NewRoomEvent.AddsStateEventIDs) > 0 {
|
events = append(events, output.NewRoomEvent.Event)
|
||||||
eventsReq := &api.QueryEventsByIDRequest{
|
if len(output.NewRoomEvent.AddsStateEventIDs) > 0 {
|
||||||
EventIDs: make([]string, 0, len(output.NewRoomEvent.AddsStateEventIDs)),
|
eventsReq := &api.QueryEventsByIDRequest{
|
||||||
}
|
EventIDs: make([]string, 0, len(output.NewRoomEvent.AddsStateEventIDs)),
|
||||||
eventsRes := &api.QueryEventsByIDResponse{}
|
}
|
||||||
for _, eventID := range output.NewRoomEvent.AddsStateEventIDs {
|
eventsRes := &api.QueryEventsByIDResponse{}
|
||||||
if eventID != newEventID {
|
for _, eventID := range output.NewRoomEvent.AddsStateEventIDs {
|
||||||
eventsReq.EventIDs = append(eventsReq.EventIDs, eventID)
|
if eventID != newEventID {
|
||||||
|
eventsReq.EventIDs = append(eventsReq.EventIDs, eventID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(eventsReq.EventIDs) > 0 {
|
||||||
|
if err := s.rsAPI.QueryEventsByID(s.ctx, eventsReq, eventsRes); err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
events = append(events, eventsRes.Events...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(eventsReq.EventIDs) > 0 {
|
} else if output.Type == api.OutputTypeNewInviteEvent && output.NewInviteEvent != nil {
|
||||||
if err := s.rsAPI.QueryEventsByID(s.ctx, eventsReq, eventsRes); err != nil {
|
events = append(events, output.NewInviteEvent.Event)
|
||||||
return false
|
} else {
|
||||||
}
|
log.WithFields(log.Fields{
|
||||||
events = append(events, eventsRes.Events...)
|
"type": output.Type,
|
||||||
}
|
}).Debug("appservice OutputRoomEventConsumer ignoring event", string(msg.Data))
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send event to any relevant application services
|
// Send event to any relevant application services
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,9 @@ func createRoom(
|
||||||
case presetTrustedPrivateChat:
|
case presetTrustedPrivateChat:
|
||||||
joinRuleContent.JoinRule = gomatrixserverlib.Invite
|
joinRuleContent.JoinRule = gomatrixserverlib.Invite
|
||||||
historyVisibilityContent.HistoryVisibility = historyVisibilityShared
|
historyVisibilityContent.HistoryVisibility = historyVisibilityShared
|
||||||
// TODO If trusted_private_chat, all invitees are given the same power level as the room creator.
|
for _, invitee := range r.Invite {
|
||||||
|
powerLevelContent.Users[invitee] = 100
|
||||||
|
}
|
||||||
case presetPublicChat:
|
case presetPublicChat:
|
||||||
joinRuleContent.JoinRule = gomatrixserverlib.Public
|
joinRuleContent.JoinRule = gomatrixserverlib.Public
|
||||||
historyVisibilityContent.HistoryVisibility = historyVisibilityShared
|
historyVisibilityContent.HistoryVisibility = historyVisibilityShared
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,13 @@ func SendEvent(
|
||||||
return *resErr
|
return *resErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we're sending a membership update, make sure to strip the authorised
|
||||||
|
// via key if it is present, otherwise other servers won't be able to auth
|
||||||
|
// the event if the room is set to the "restricted" join rule.
|
||||||
|
if eventType == gomatrixserverlib.MRoomMember {
|
||||||
|
delete(r, "join_authorised_by_users_server")
|
||||||
|
}
|
||||||
|
|
||||||
evTime, err := httputil.ParseTSParam(req)
|
evTime, err := httputil.ParseTSParam(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue