def __init__(self, conn): """ Create new session :param Protocol conn: connection protocol implementation that this session should enhance :return None: """ BasicSafeSession.__init__(self, conn) self.p2p_service = self.conn.server # Information about peer self.degree = 0 self.node_name = "" self.node_info = None self.client_ver = None self.listen_port = None self.conn_id = None self.metadata = None # Verification by challenge not a random value self.solve_challenge = False self.challenge = None self.difficulty = 0 self.can_be_unverified.extend([ message.base.Hello, message.base.RandVal, message.base.ChallengeSolution, ]) self.can_be_not_encrypted.append(message.base.Hello) self.__set_msg_interpretations()
def interpret(self, msg): """React to specific message. Disconnect, if message type is unknown for that session. Inform p2p service about last message. :param Message msg: Message to interpret and react to. :return None: """ self.p2p_service.set_last_message("<-", self.key_id, time.localtime(), msg, self.address, self.port) BasicSafeSession.interpret(self, msg)
def send(self, msg, send_unverified=False): """Send given message if connection was verified or send_unverified option is set to True. :param Message message: message to be sent. :param boolean send_unverified: should message be sent even if the connection hasn't been verified yet? """ BasicSafeSession.send(self, msg, send_unverified) self.p2p_service.set_last_message("->", self.key_id, time.localtime(), msg, self.address, self.port)
def send(self, msg, send_unverified=False): """Send given message if connection was verified or send_unverified option is set to True. Collect other message in the list (they should be send after verification). :param Message msg: message to be sent. :param boolean send_unverified: should message be sent even if the connection hasn't been verified yet? """ if not self.verified and not send_unverified: self.msgs_to_send.append(msg) return BasicSafeSession.send(self, msg, send_unverified=send_unverified)
def __init__(self, conn): """ Create new session :param FilesProtocol conn: connection protocol implementation that this session should enhance :return None: """ BasicSafeSession.__init__(self, conn) self.resource_server = self.conn.server self.file_name = None # file to send right now # should it send confirmation after receiving current file? self.confirmation = False # how many copies of current file should be pushed into network self.copies = 0 # messages waiting to be send (because connection hasn't been # verified yet) self.msgs_to_send = [] self.conn_id = None # set_msg_interpretations self._interpretation.update({ message.MessagePushResource.TYPE: self._react_to_push_resource, message.MessageHasResource.TYPE: self._react_to_has_resource, message.MessageWantsResource.TYPE: self._react_to_wants_resource, message.MessagePullResource.TYPE: self._react_to_pull_resource, message.MessagePullAnswer.TYPE: self._react_to_pull_answer, message.MessageHello.TYPE: self._react_to_hello, message.MessageRandVal.TYPE: self._react_to_rand_val }) self.can_be_not_encrypted.append(message.MessageHello.TYPE) self.can_be_unsigned.append(message.MessageHello.TYPE) self.can_be_unverified.extend( [ message.MessageHello.TYPE, message.MessageRandVal.TYPE ] )
def dropped(self): """ Close connection and inform p2p service about disconnection """ BasicSafeSession.dropped(self) self.p2p_service.remove_peer(self)
def dropped(self): """ Close connection """ BasicSafeSession.dropped(self) self.resource_server.remove_session(self)