Exemplo n.º 1
0
	def login(self, context, username):
		print("User trying to log in:", username)
		
		user = get_user_by_name(username)
		if not user:
			raise common.RMCError("RendezVous::InvalidUsername")
			
		server = get_user_by_name(SECURE_SERVER)
		
		url = common.StationURL(
			address="127.0.0.1", port=1224,
			PID = server.pid, CID = 1, type = 2,
			sid = 1, stream = 10
		)
		
		conn_data = authentication.RVConnectionData()
		conn_data.main_station = url
		conn_data.special_protocols = []
		conn_data.special_station = common.StationURL()
		
		response = common.RMCResponse()
		response.result = common.Result(0x10001) #Success
		response.pid = user.pid
		response.ticket = self.generate_ticket(user, server)
		response.connection_data = conn_data
		response.server_name = "Example server"
		return response
Exemplo n.º 2
0
    def get_all_information(self, nna_info, presence, birthday):
        logger.info("FriendsClient.get_all_information()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.add(nna_info)
        stream.add(presence)
        stream.datetime(birthday)
        data = self.client.send_request(self.PROTOCOL_ID,
                                        self.METHOD_GET_ALL_INFORMATION,
                                        stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.principal_preference = stream.extract(PrincipalPreference)
        obj.comment = stream.extract(Comment)
        obj.friends = stream.list(FriendInfo)
        obj.sent_requests = stream.list(FriendRequest)
        obj.received_requests = stream.list(FriendRequest)
        obj.blacklist = stream.list(BlacklistedPrincipal)
        obj.unk1 = stream.bool()
        obj.notifications = stream.list(PersistentNotification)
        obj.unk2 = stream.bool()
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("FriendsClient.get_all_information -> done")
        return obj
Exemplo n.º 3
0
	def request_ticket(self, context, source, target):
		source = get_user_by_pid(source)
		target = get_user_by_pid(target)
		
		response = common.RMCResponse()
		response.result = common.Result(0x10001) #Success
		response.ticket = self.generate_ticket(source, target)
		return response
Exemplo n.º 4
0
	def register(self, context, urls):
		addr = context.client.remote_address()
		station = urls[0].copy()
		station["address"] = addr[0]
		station["port"] = addr[1]
		station["type"] = 3
		
		response = common.RMCResponse()
		response.result = common.Result(0x10001) #Success
		response.connection_id = next(self.connection_id)
		response.public_station = station
		return response
Exemplo n.º 5
0
	def get_public_data(self):
		logger.info("AccountClient.get_public_data()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_GET_PUBLIC_DATA)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.result = stream.bool()
		obj.data = stream.anydata()
		logger.info("AccountClient.get_public_data -> done")
		return obj
Exemplo n.º 6
0
	def get_account_data(self):
		logger.info("AccountClient.get_account_data()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_GET_ACCOUNT_DATA)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.result = stream.result()
		obj.data = stream.extract(AccountData)
		logger.info("AccountClient.get_account_data -> done")
		return obj
Exemplo n.º 7
0
	def get_metas_multiple_param(self, params):
		logger.info("DataStoreClient.get_metas_multiple_param()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_GET_METAS_MULTIPLE_PARAM)
		stream.list(params, stream.add)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.infos = stream.list(DataStoreMetaInfo)
		obj.results = stream.list(stream.result)
		logger.info("DataStoreClient.get_metas_multiple_param -> done")
		return obj
Exemplo n.º 8
0
	def retrieve_account(self):
		logger.info("AccountClient.retrieve_account()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_RETRIEVE_ACCOUNT)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.account_data = stream.extract(AccountData)
		obj.public_data = stream.anydata()
		obj.private_data = stream.anydata()
		logger.info("AccountClient.retrieve_account -> done")
		return obj
Exemplo n.º 9
0
	def get_last_connection_stats(self, pid):
		logger.info("AccountClient.get_last_connection_stats()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_GET_LAST_CONNECTION_STATS)
		stream.pid(pid)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.last_session_login = stream.datetime()
		obj.last_session_logout = stream.datetime()
		obj.current_session_login = stream.datetime()
		logger.info("AccountClient.get_last_connection_stats -> done")
		return obj
Exemplo n.º 10
0
	def request_urls(self, cid, pid):
		logger.info("SecureConnectionClient.request_urls()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_REQUEST_URLS)
		stream.u32(cid)
		stream.pid(pid)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.result = stream.bool()
		obj.urls = stream.list(stream.stationurl)
		logger.info("SecureConnectionClient.request_urls -> done")
		return obj
Exemplo n.º 11
0
	def request_connection_data(self, cid, pid):
		logger.info("SecureConnectionClient.request_connection_data()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_REQUEST_CONNECTION_DATA)
		stream.u32(cid)
		stream.pid(pid)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.result = stream.bool()
		obj.connection_data = stream.list(ConnectionData)
		logger.info("SecureConnectionClient.request_connection_data -> done")
		return obj
Exemplo n.º 12
0
	def register(self, urls):
		logger.info("SecureConnectionClient.register()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_REGISTER)
		stream.list(urls, stream.stationurl)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.result = stream.result()
		obj.connection_id = stream.u32()
		obj.public_station = stream.stationurl()
		logger.info("SecureConnectionClient.register -> done")
		return obj
Exemplo n.º 13
0
	def create_matchmake_session(self, gathering, description, participation_count):
		logger.info("MatchmakeExtensionClient.create_matchmake_session()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_CREATE_MATCHMAKE_SESSION)
		stream.anydata(gathering)
		stream.string(description)
		stream.u16(participation_count)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.gid = stream.u32()
		obj.session_key = stream.buffer()
		logger.info("MatchmakeExtensionClient.create_matchmake_session -> done")
		return obj
Exemplo n.º 14
0
    def request_ticket(self, source, target):
        logger.info("AuthenticationClient.request_ticket()")
        #--- request ---
        stream, call_id = self.client.init_request(self.PROTOCOL_ID,
                                                   self.METHOD_REQUEST_TICKET)
        stream.pid(source)
        stream.pid(target)
        self.client.send_message(stream)

        #--- response ---
        stream = self.client.get_response(call_id)
        obj = common.RMCResponse()
        obj.result = stream.result()
        obj.ticket = stream.buffer()
        logger.info("AuthenticationClient.request_ticket -> done")
        return obj
Exemplo n.º 15
0
	def nintendo_create_account(self, name, key, groups, email, auth_data):
		logger.info("AccountClient.nintendo_create_account()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_NINTENDO_CREATE_ACCOUNT)
		stream.string(name)
		stream.string(key)
		stream.u32(groups)
		stream.string(email)
		stream.anydata(auth_data)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.pid = stream.pid()
		obj.pid_hmac = stream.string()
		logger.info("AccountClient.nintendo_create_account -> done")
		return obj
Exemplo n.º 16
0
    def login(self, username):
        logger.info("AuthenticationClient.login()")
        #--- request ---
        stream, call_id = self.client.init_request(self.PROTOCOL_ID,
                                                   self.METHOD_LOGIN)
        stream.string(username)
        self.client.send_message(stream)

        #--- response ---
        stream = self.client.get_response(call_id)
        obj = common.RMCResponse()
        obj.result = stream.result()
        obj.pid = stream.pid()
        obj.ticket = stream.buffer()
        obj.connection_data = stream.extract(RVConnectionData)
        obj.server_name = stream.string()
        logger.info("AuthenticationClient.login -> done")
        return obj
Exemplo n.º 17
0
    def get_metas_multiple_param(self, params):
        logger.info("DataStoreClientSMM.get_metas_multiple_param()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.list(params, stream.add)
        data = self.client.send_request(self.PROTOCOL_ID,
                                        self.METHOD_GET_METAS_MULTIPLE_PARAM,
                                        stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.infos = stream.list(DataStoreMetaInfo)
        obj.results = stream.list(stream.result)
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("DataStoreClientSMM.get_metas_multiple_param -> done")
        return obj
Exemplo n.º 18
0
    def request_urls(self, cid, pid):
        logger.info("SecureConnectionClient.request_urls()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.u32(cid)
        stream.pid(pid)
        data = self.client.send_request(self.PROTOCOL_ID,
                                        self.METHOD_REQUEST_URLS, stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.result = stream.bool()
        obj.urls = stream.list(stream.stationurl)
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("SecureConnectionClient.request_urls -> done")
        return obj
Exemplo n.º 19
0
    def register(self, urls):
        logger.info("SecureConnectionClient.register()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.list(urls, stream.stationurl)
        data = self.client.send_request(self.PROTOCOL_ID, self.METHOD_REGISTER,
                                        stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.result = stream.result()
        obj.connection_id = stream.u32()
        obj.public_station = stream.stationurl()
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("SecureConnectionClient.register -> done")
        return obj
Exemplo n.º 20
0
    def request_ticket(self, source, target):
        logger.info("AuthenticationClient.request_ticket()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.pid(source)
        stream.pid(target)
        data = self.client.send_request(self.PROTOCOL_ID,
                                        self.METHOD_REQUEST_TICKET,
                                        stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.result = stream.result()
        obj.ticket = stream.buffer()
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("AuthenticationClient.request_ticket -> done")
        return obj
Exemplo n.º 21
0
    def login(self, username):
        logger.info("AuthenticationClient.login()")
        #--- request ---
        stream = streams.StreamOut(self.settings)
        stream.string(username)
        data = self.client.send_request(self.PROTOCOL_ID, self.METHOD_LOGIN,
                                        stream.get())

        #--- response ---
        stream = streams.StreamIn(data, self.settings)
        obj = common.RMCResponse()
        obj.result = stream.result()
        obj.pid = stream.pid()
        obj.ticket = stream.buffer()
        obj.connection_data = stream.extract(RVConnectionData)
        obj.server_name = stream.string()
        if not stream.eof():
            raise ValueError(
                "Response is bigger than expected (got %i bytes, but only %i were read)"
                % (stream.size(), stream.tell()))
        logger.info("AuthenticationClient.login -> done")
        return obj
Exemplo n.º 22
0
	def get_all_information(self, nna_info, presence, birthday):
		logger.info("FriendsClient.get_all_information()")
		#--- request ---
		stream, call_id = self.client.init_request(self.PROTOCOL_ID, self.METHOD_GET_ALL_INFORMATION)
		stream.add(nna_info)
		stream.add(presence)
		stream.datetime(birthday)
		self.client.send_message(stream)
		
		#--- response ---
		stream = self.client.get_response(call_id)
		obj = common.RMCResponse()
		obj.principal_preference = stream.extract(PrincipalPreference)
		obj.comment = stream.extract(Comment)
		obj.friends = stream.list(FriendInfo)
		obj.sent_requests = stream.list(FriendRequest)
		obj.received_requests = stream.list(FriendRequest)
		obj.blacklist = stream.list(BlacklistedPrincipal)
		obj.unk1 = stream.bool()
		obj.notifications = stream.list(PersistentNotification)
		obj.unk2 = stream.bool()
		logger.info("FriendsClient.get_all_information -> done")
		return obj