Add debug logging

This commit is contained in:
Neil Alexander 2021-11-09 09:36:32 +00:00
parent 031cc48f1a
commit 7d6f606d1c
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -190,16 +190,20 @@ func attemptMakeJoinForRestrictedMembership(
joinRules gomatrixserverlib.JoinRuleContent,
userID string,
) util.JSONResponse {
logger := util.GetLogger(httpReq.Context()).WithField("restricted_join", userID)
// As a last effort, see if any of the restricted join rules match.
// If so, we might be able to modify and sign the event so that it
// does pass auth.
var powerLevels gomatrixserverlib.PowerLevelContent
if powerLevelsEvent, err := provider.PowerLevels(); err != nil {
logger.WithError(err).Error("Failed to get power levels from auth events")
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.UnableToAuthoriseJoin("Room power levels do not exist"),
}
} else if err := json.Unmarshal(powerLevelsEvent.Content(), &powerLevels); err != nil {
logger.WithError(err).Error("Failed to unmarshal power levels")
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.UnableToAuthoriseJoin("Failed to unmarshal room power levels"),
@ -211,6 +215,7 @@ func attemptMakeJoinForRestrictedMembership(
for _, allowed := range joinRules.Allow {
// Skip types that we don't know about.
if allowed.Type != gomatrixserverlib.MRoomMembership {
logger.Infof("Skipping unknown join rule type %q", allowed.Type)
continue
}
@ -221,6 +226,7 @@ func attemptMakeJoinForRestrictedMembership(
}
queryRes := &api.QueryMembershipsForRoomResponse{}
if err := rsAPI.QueryMembershipsForRoom(httpReq.Context(), queryReq, queryRes); err != nil {
logger.WithError(err).Errorf("Failed to query membership for room %q", queryReq.RoomID)
continue
}
@ -239,6 +245,7 @@ func attemptMakeJoinForRestrictedMembership(
// The user doesn't seem to exist in this room, try the next one.
if !found {
logger.Infof("User %q is not in room %q", userID, queryReq.RoomID)
continue
}
@ -270,7 +277,7 @@ func attemptMakeJoinForRestrictedMembership(
"join_authorised_via_users_server": *member.StateKey,
})
if err != nil {
util.GetLogger(httpReq.Context()).WithError(err).Error("builder.SetContent failed")
logger.WithError(err).Error("builder.SetContent failed")
return jsonerror.InternalServerError()
}
@ -281,7 +288,7 @@ func attemptMakeJoinForRestrictedMembership(
}
event, err := eventutil.QueryAndBuildEvent(httpReq.Context(), builder, cfg.Matrix, time.Now(), rsAPI, &queryRes)
if err != nil {
util.GetLogger(httpReq.Context()).WithError(err).Error("builder.SetContent failed")
logger.WithError(err).Error("builder.SetContent failed")
return jsonerror.InternalServerError()
}
@ -294,6 +301,7 @@ func attemptMakeJoinForRestrictedMembership(
// Now, see if the join is valid with the new changes. If it isn't
// then something else is forbidding the join.
if err = gomatrixserverlib.Allowed(&signed, &provider); err != nil {
logger.WithError(err).Error("Join is not allowed")
return util.JSONResponse{
Code: http.StatusForbidden,
JSON: jsonerror.Forbidden(err.Error()),
@ -312,6 +320,7 @@ func attemptMakeJoinForRestrictedMembership(
}
}
logger.Error("No room matching join rule memberships found")
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.UnableToAuthoriseJoin("You are not joined to any allowed rooms"),