Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions synapse/handlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from .room import (
RoomCreationHandler, RoomContextHandler,
)
from .room_member import RoomMemberHandler
from .message import MessageHandler
from .federation import FederationHandler
from .directory import DirectoryHandler
Expand Down Expand Up @@ -49,7 +48,6 @@ def __init__(self, hs):
self.registration_handler = RegistrationHandler(hs)
self.message_handler = MessageHandler(hs)
self.room_creation_handler = RoomCreationHandler(hs)
self.room_member_handler = RoomMemberHandler(hs)
self.federation_handler = FederationHandler(hs)
self.directory_handler = DirectoryHandler(hs)
self.admin_handler = AdminHandler(hs)
Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def kick_guest_users(self, current_state):
# homeserver.
requester = synapse.types.create_requester(
target_user, is_guest=True)
handler = self.hs.get_handlers().room_member_handler
handler = self.hs.get_room_member_handler()
yield handler.update_membership(
requester,
target_user,
Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2153,7 +2153,7 @@ def exchange_third_party_invite(
raise e

yield self._check_signature(event, context)
member_handler = self.hs.get_handlers().room_member_handler
member_handler = self.hs.get_room_member_handler()
yield member_handler.send_membership_event(None, event, context)
else:
destinations = set(x.split(":", 1)[-1] for x in (sender_user_id, room_id))
Expand Down Expand Up @@ -2197,7 +2197,7 @@ def on_exchange_third_party_invite_request(self, origin, room_id, event_dict):
# TODO: Make sure the signatures actually are correct.
event.signatures.update(returned_invite.signatures)

member_handler = self.hs.get_handlers().room_member_handler
member_handler = self.hs.get_room_member_handler()
yield member_handler.send_membership_event(None, event, context)

@defer.inlineCallbacks
Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ def _update_join_states(self, requester, target_user):
)

for room_id in room_ids:
handler = self.hs.get_handlers().room_member_handler
handler = self.hs.get_room_member_handler()
try:
# Assume the target_user isn't a guest,
# because we don't let guests set profile or avatar data.
Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ def create_room(self, requester, config, ratelimit=True):

creation_content = config.get("creation_content", {})

room_member_handler = self.hs.get_handlers().room_member_handler
room_member_handler = self.hs.get_room_member_handler()

yield self._send_events_for_new_room(
requester,
Expand Down Expand Up @@ -224,7 +224,7 @@ def create_room(self, requester, config, ratelimit=True):
id_server = invite_3pid["id_server"]
address = invite_3pid["address"]
medium = invite_3pid["medium"]
yield self.hs.get_handlers().room_member_handler.do_3pid_invite(
yield self.hs.get_room_member_handler().do_3pid_invite(
room_id,
requester.user,
medium,
Expand Down
54 changes: 31 additions & 23 deletions synapse/handlers/room_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,24 +30,33 @@
from synapse.types import UserID, RoomID
from synapse.util.async import Linearizer
from synapse.util.distributor import user_left_room, user_joined_room
from ._base import BaseHandler

logger = logging.getLogger(__name__)

id_server_scheme = "https://"


class RoomMemberHandler(BaseHandler):
class RoomMemberHandler(object):
# TODO(paul): This handler currently contains a messy conflation of
# low-level API that works on UserID objects and so on, and REST-level
# API that takes ID strings and returns pagination chunks. These concerns
# ought to be separated out a lot better.

def __init__(self, hs):
super(RoomMemberHandler, self).__init__(hs)

self.store = hs.get_datastore()
self.auth = hs.get_auth()
self.state_handler = hs.get_state_handler()
self.config = hs.config
self.is_mine = hs.is_mine
self.is_mine_id = hs.is_mine_id
self.simple_http_client = hs.get_simple_http_client()

self.federation_handler = hs.get_handlers().federation_handler
self.directory_handler = hs.get_handlers().directory_handler
self.registration_handler = hs.get_handlers().registration_handler
self.profile_handler = hs.get_profile_handler()
self.event_creation_hander = hs.get_event_creation_handler()
self.replication_layer = hs.get_replication_layer()

self.member_linearizer = Linearizer(name="member")

Expand Down Expand Up @@ -138,7 +147,7 @@ def remote_join(self, remote_room_hosts, room_id, user, content):
# join dance for now, since we're kinda implicitly checking
# that we are allowed to join when we decide whether or not we
# need to do the invite/join dance.
yield self.hs.get_handlers().federation_handler.do_invite_join(
yield self.federation_handler.do_invite_join(
remote_room_hosts,
room_id,
user.to_string(),
Expand Down Expand Up @@ -204,8 +213,7 @@ def _update_membership(
# if this is a join with a 3pid signature, we may need to turn a 3pid
# invite into a normal invite before we can handle the join.
if third_party_signed is not None:
replication = self.hs.get_replication_layer()
yield replication.exchange_third_party_invite(
yield self.replication_layer.exchange_third_party_invite(
third_party_signed["sender"],
target.to_string(),
room_id,
Expand All @@ -226,7 +234,7 @@ def _update_membership(
requester.user,
)
if not is_requester_admin:
if self.hs.config.block_non_admin_invites:
if self.config.block_non_admin_invites:
logger.info(
"Blocking invite: user is not admin and non-admin "
"invites disabled"
Expand Down Expand Up @@ -286,7 +294,7 @@ def _update_membership(

if not is_host_in_room:
inviter = yield self.get_inviter(target.to_string(), room_id)
if inviter and not self.hs.is_mine(inviter):
if inviter and not self.is_mine(inviter):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a reason to change this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH I was mostly using it so that I could track down all the various places we were doing annoying hs.get_*() calls. Am happy to put them back

remote_room_hosts.append(inviter.domain)

content["membership"] = Membership.JOIN
Expand All @@ -311,7 +319,7 @@ def _update_membership(
if not inviter:
raise SynapseError(404, "Not a known room")

if self.hs.is_mine(inviter):
if self.is_mine(inviter):
# the inviter was on our server, but has now left. Carry on
# with the normal rejection codepath.
#
Expand All @@ -321,7 +329,7 @@ def _update_membership(
else:
# send the rejection to the inviter's HS.
remote_room_hosts = remote_room_hosts + [inviter.domain]
fed_handler = self.hs.get_handlers().federation_handler
fed_handler = self.federation_handler
try:
ret = yield fed_handler.do_remotely_reject_invite(
remote_room_hosts,
Expand Down Expand Up @@ -393,7 +401,7 @@ def send_membership_event(
"Sender (%s) must be same as requester (%s)" %
(sender, requester.user)
)
assert self.hs.is_mine(sender), "Sender must be our own: %s" % (sender,)
assert self.is_mine(sender), "Sender must be our own: %s" % (sender,)
else:
requester = synapse.types.create_requester(target_user)

Expand Down Expand Up @@ -477,7 +485,7 @@ def lookup_room_alias(self, room_alias):
Raises:
SynapseError if room alias could not be found.
"""
directory_handler = self.hs.get_handlers().directory_handler
directory_handler = self.directory_handler
mapping = yield directory_handler.get_association(room_alias)

if not mapping:
Expand Down Expand Up @@ -508,7 +516,7 @@ def do_3pid_invite(
requester,
txn_id
):
if self.hs.config.block_non_admin_invites:
if self.config.block_non_admin_invites:
is_requester_admin = yield self.auth.is_server_admin(
requester.user,
)
Expand Down Expand Up @@ -555,7 +563,7 @@ def _lookup_3pid(self, id_server, medium, address):
str: the matrix ID of the 3pid, or None if it is not recognized.
"""
try:
data = yield self.hs.get_simple_http_client().get_json(
data = yield self.simple_http_client.get_json(
"%s%s/_matrix/identity/api/v1/lookup" % (id_server_scheme, id_server,),
{
"medium": medium,
Expand All @@ -578,7 +586,7 @@ def verify_any_signature(self, data, server_hostname):
if server_hostname not in data["signatures"]:
raise AuthError(401, "No signature from server %s" % (server_hostname,))
for key_name, signature in data["signatures"][server_hostname].items():
key_data = yield self.hs.get_simple_http_client().get_json(
key_data = yield self.simple_http_client.get_json(
"%s%s/_matrix/identity/api/v1/pubkey/%s" %
(id_server_scheme, server_hostname, key_name,),
)
Expand All @@ -603,7 +611,7 @@ def _make_and_store_3pid_invite(
user,
txn_id
):
room_state = yield self.hs.get_state_handler().get_current_state(room_id)
room_state = yield self.state_handler.get_current_state(room_id)

inviter_display_name = ""
inviter_avatar_url = ""
Expand Down Expand Up @@ -727,15 +735,15 @@ def _ask_id_server_for_third_party_invite(
"sender_avatar_url": inviter_avatar_url,
}

if self.hs.config.invite_3pid_guest:
registration_handler = self.hs.get_handlers().registration_handler
if self.config.invite_3pid_guest:
registration_handler = self.registration_handler
guest_access_token = yield registration_handler.guest_access_token_for(
medium=medium,
address=address,
inviter_user_id=inviter_user_id,
)

guest_user_info = yield self.hs.get_auth().get_user_by_access_token(
guest_user_info = yield self.auth.get_user_by_access_token(
guest_access_token
)

Expand All @@ -744,7 +752,7 @@ def _ask_id_server_for_third_party_invite(
"guest_user_id": guest_user_info["user"].to_string(),
})

data = yield self.hs.get_simple_http_client().post_urlencoded_get_json(
data = yield self.simple_http_client.post_urlencoded_get_json(
is_url,
invite_config
)
Expand Down Expand Up @@ -793,10 +801,10 @@ def _is_host_in_room(self, current_state_ids):
# first member event?
create_event_id = current_state_ids.get(("m.room.create", ""))
if len(current_state_ids) == 1 and create_event_id:
defer.returnValue(self.hs.is_mine_id(create_event_id))
defer.returnValue(self.is_mine_id(create_event_id))

for etype, state_key in current_state_ids:
if etype != EventTypes.Member or not self.hs.is_mine_id(state_key):
if etype != EventTypes.Member or not self.is_mine_id(state_key):
continue

event_id = current_state_ids[(etype, state_key)]
Expand Down
7 changes: 4 additions & 3 deletions synapse/rest/client/v1/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ def __init__(self, hs):
self.handlers = hs.get_handlers()
self.state = hs.get_state_handler()
self.event_creation_handler = hs.get_event_creation_handler()
self.room_member_handler = hs.get_room_member_handler()

@defer.inlineCallbacks
def on_POST(self, request, room_id):
Expand Down Expand Up @@ -238,7 +239,7 @@ def on_POST(self, request, room_id):
logger.info("Kicking %r from %r...", user_id, room_id)

target_requester = create_requester(user_id)
yield self.handlers.room_member_handler.update_membership(
yield self.room_member_handler.update_membership(
requester=target_requester,
target=target_requester.user,
room_id=room_id,
Expand All @@ -247,9 +248,9 @@ def on_POST(self, request, room_id):
ratelimit=False
)

yield self.handlers.room_member_handler.forget(target_requester.user, room_id)
yield self.room_member_handler.forget(target_requester.user, room_id)

yield self.handlers.room_member_handler.update_membership(
yield self.room_member_handler.update_membership(
requester=target_requester,
target=target_requester.user,
room_id=new_room_id,
Expand Down
19 changes: 10 additions & 9 deletions synapse/rest/client/v1/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ def __init__(self, hs):
super(RoomStateEventRestServlet, self).__init__(hs)
self.handlers = hs.get_handlers()
self.event_creation_hander = hs.get_event_creation_handler()
self.room_member_handler = hs.get_room_member_handler()

def register(self, http_server):
# /room/$roomid/state/$eventtype
Expand Down Expand Up @@ -156,7 +157,7 @@ def on_PUT(self, request, room_id, event_type, state_key, txn_id=None):

if event_type == EventTypes.Member:
membership = content.get("membership", None)
event = yield self.handlers.room_member_handler.update_membership(
event = yield self.room_member_handler.update_membership(
requester,
target=UserID.from_string(state_key),
room_id=room_id,
Expand Down Expand Up @@ -229,7 +230,7 @@ def on_PUT(self, request, room_id, event_type, txn_id):
class JoinRoomAliasServlet(ClientV1RestServlet):
def __init__(self, hs):
super(JoinRoomAliasServlet, self).__init__(hs)
self.handlers = hs.get_handlers()
self.room_member_handler = hs.get_room_member_handler()

def register(self, http_server):
# /join/$room_identifier[/$txn_id]
Expand Down Expand Up @@ -257,7 +258,7 @@ def on_POST(self, request, room_identifier, txn_id=None):
except Exception:
remote_room_hosts = None
elif RoomAlias.is_valid(room_identifier):
handler = self.handlers.room_member_handler
handler = self.room_member_handler
room_alias = RoomAlias.from_string(room_identifier)
room_id, remote_room_hosts = yield handler.lookup_room_alias(room_alias)
room_id = room_id.to_string()
Expand All @@ -266,7 +267,7 @@ def on_POST(self, request, room_identifier, txn_id=None):
room_identifier,
))

yield self.handlers.room_member_handler.update_membership(
yield self.room_member_handler.update_membership(
requester=requester,
target=requester.user,
room_id=room_id,
Expand Down Expand Up @@ -562,7 +563,7 @@ def on_GET(self, request, room_id, event_id):
class RoomForgetRestServlet(ClientV1RestServlet):
def __init__(self, hs):
super(RoomForgetRestServlet, self).__init__(hs)
self.handlers = hs.get_handlers()
self.room_member_handler = hs.get_room_member_handler()

def register(self, http_server):
PATTERNS = ("/rooms/(?P<room_id>[^/]*)/forget")
Expand All @@ -575,7 +576,7 @@ def on_POST(self, request, room_id, txn_id=None):
allow_guest=False,
)

yield self.handlers.room_member_handler.forget(
yield self.room_member_handler.forget(
user=requester.user,
room_id=room_id,
)
Expand All @@ -593,7 +594,7 @@ class RoomMembershipRestServlet(ClientV1RestServlet):

def __init__(self, hs):
super(RoomMembershipRestServlet, self).__init__(hs)
self.handlers = hs.get_handlers()
self.room_member_handler = hs.get_room_member_handler()

def register(self, http_server):
# /rooms/$roomid/[invite|join|leave]
Expand Down Expand Up @@ -622,7 +623,7 @@ def on_POST(self, request, room_id, membership_action, txn_id=None):
content = {}

if membership_action == "invite" and self._has_3pid_invite_keys(content):
yield self.handlers.room_member_handler.do_3pid_invite(
yield self.room_member_handler.do_3pid_invite(
room_id,
requester.user,
content["medium"],
Expand All @@ -644,7 +645,7 @@ def on_POST(self, request, room_id, membership_action, txn_id=None):
if 'reason' in content and membership_action in ['kick', 'ban']:
event_content = {'reason': content['reason']}

yield self.handlers.room_member_handler.update_membership(
yield self.room_member_handler.update_membership(
requester=requester,
target=target,
room_id=room_id,
Expand Down
2 changes: 1 addition & 1 deletion synapse/rest/client/v2_alpha/register.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ def __init__(self, hs):
self.auth_handler = hs.get_auth_handler()
self.registration_handler = hs.get_handlers().registration_handler
self.identity_handler = hs.get_handlers().identity_handler
self.room_member_handler = hs.get_handlers().room_member_handler
self.room_member_handler = hs.get_room_member_handler()
self.device_handler = hs.get_device_handler()
self.macaroon_gen = hs.get_macaroon_generator()

Expand Down
Loading