def handle_HELLO(self, hello): try: hello = messages.read_message(hello) self.remote_nodeid = hello['nodeid'] self.remote_node_protocol_version = hello["protocol"] if self.remote_nodeid == self.nodeid: logg("[!] Found myself at %s" % self.host_ip) self.transport.loseConnection() else: if self.state == "GETHELLO": my_hello = messages.create_hello(self.nodeid, self.VERSION, self.ProtocolVersion) self.transport.write(my_hello + "\n") self.add_peer() self.state = "READY" self.print_peers() #self.write(messages.create_ping(self.nodeid)) if self.kind == "LISTENER": # The listener pings it's audience logg("[ ] Starting pinger to %s" % self.remote_ip) self.lc_ping.start(PING_INTERVAL, now=False) # Tell new audience about my peers self.send_ADDR() self.lc_sync.start(SYNC_INTERVAL, now=True) except messages.InvalidSignatureError: _print(" [!] ERROR: Invalid hello sign ", self.remote_ip) self.transport.loseConnection()
def handle_HELLO(self, hello): try: print("Получил HELLO") hello = messages.read_message(hello) self.remote_nodeid = hello[ 'nodeid'] #nodeid того,кто прислал письмо if self.remote_nodeid == self.nodeid: #если я сам себе прислал print(" [!] Found myself at", self.host_ip) self.transport.loseConnection() else: #если я не сам себе прислал if self.state == "GETHELLO": #если я в состоянии GETHELLO my_hello = messages.create_hello( self.nodeid, self.VERSION) #собираю свое Hello- сообщение self.sendLine(my_hello + "\n") #отправляю self.add_peer() # добавить данный пир в List self.state = "READY" #ставлю себе состояние READY if self.kind == "LISTENER": #если я СЛУШАЮ, то начинаю пинговать Пира print(" [ ] Starting pinger to " + self.remote_nodeid) self.lc_ping.start(PING_INTERVAL, now=False) # Рассказываю данному ноду о моих пирах. self.send_ADDR() except messages.InvalidSignatureError: #если в ходе передачи были искажены данные print(" [!] ERROR: Invalid hello sign ", self.remoteip) self.transport.loseConnection()
def send_HELLO(self): hello = messages.create_hello(self.nodeid, self.VERSION) self.sendLine(hello + "\n") self.state = "SENTHELLO" #состояние SENTHELLO print("SEND_HELLO:", self.nodeid, "to", self.remote_ip)
def send_HELLO(self): hello = messages.create_hello(self.nodeid, self.VERSION) #_print(" [ ] SEND_HELLO:", self.nodeid, "to", self.remote_ip) self.transport.write(hello + "\n") self.state = "SENTHELLO"
def test_hello(self): hello = messages.create_hello(self.nodeid, 0) # check that InvalidSignatureError is not raised return messages.read_message(hello)
def send_HELLO(self): hello = messages.create_hello(self.nodeid, self.VERSION, self.protoversion) self.transport.write(hello + "\n") self.state = "SENTHELLO"