better?
This commit is contained in:
		@@ -198,22 +198,6 @@ class HelloTLV(TLV):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if not self.is_long:
 | 
					        if not self.is_long:
 | 
				
			||||||
            user.send_packet(sender, Packet.construct(HelloTLV.construct(16, user, sender)))
 | 
					            user.send_packet(sender, Packet.construct(HelloTLV.construct(16, user, sender)))
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def handle_multicast(self, user: Any, sender: Any) -> None:
 | 
					 | 
				
			||||||
        if sender.id > 0 and sender.id != self.source_id:
 | 
					 | 
				
			||||||
            user.add_system_message(f"A client known as the id {sender.id} declared that it uses "
 | 
					 | 
				
			||||||
                                        f"the id {self.source_id}.")
 | 
					 | 
				
			||||||
            sender.id = self.source_id
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if self.source_id == user.id:
 | 
					 | 
				
			||||||
            sender.marked_as_banned = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not sender.active:
 | 
					 | 
				
			||||||
            sender.id = self.source_id  # The sender we are given misses an id
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Add entry to/actualize the active peers dictionnary
 | 
					 | 
				
			||||||
        user.update_peer_table(sender)
 | 
					 | 
				
			||||||
        user.add_system_message(f"{self.source_id} sent me a Hello on multicast")
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @property
 | 
					    @property
 | 
				
			||||||
    def is_long(self) -> bool:
 | 
					    def is_long(self) -> bool:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,6 +106,8 @@ class User(Peer):
 | 
				
			|||||||
        if self.squinnondation.multicast: 
 | 
					        if self.squinnondation.multicast: 
 | 
				
			||||||
            # Create multicast socket
 | 
					            # Create multicast socket
 | 
				
			||||||
            self.multicast_socket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
 | 
					            self.multicast_socket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
 | 
				
			||||||
 | 
					            # Allows address to be reused
 | 
				
			||||||
 | 
					            self.multicast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
 | 
				
			||||||
            self.multicast_socket.bind(('', 1212)) #listen on all interfaces?
 | 
					            self.multicast_socket.bind(('', 1212)) #listen on all interfaces?
 | 
				
			||||||
            # To join the group, we need to give setsockopt a binary packed representation of the multicast group's address and on what interfaces we will listen (here all)
 | 
					            # To join the group, we need to give setsockopt a binary packed representation of the multicast group's address and on what interfaces we will listen (here all)
 | 
				
			||||||
            mreq = struct.pack("16s15s", socket.inet_pton(socket.AF_INET6, "ff02::4242:4242"), bytes(socket.INADDR_ANY)) #The string "16s15s" corresponds to the packing options: here it packs the arguments into a 16-byte string and a 15-byte string. 
 | 
					            mreq = struct.pack("16s15s", socket.inet_pton(socket.AF_INET6, "ff02::4242:4242"), bytes(socket.INADDR_ANY)) #The string "16s15s" corresponds to the packing options: here it packs the arguments into a 16-byte string and a 15-byte string. 
 | 
				
			||||||
@@ -1061,6 +1063,7 @@ class Multicastlistener(Thread):
 | 
				
			|||||||
        self.user = user
 | 
					        self.user = user
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    def run(self) -> None:
 | 
					    def run(self) -> None:
 | 
				
			||||||
 | 
					        self.user.add_system_message("running")
 | 
				
			||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                pkt, peer = self.user.receive_hello_multicast()
 | 
					                pkt, peer = self.user.receive_hello_multicast()
 | 
				
			||||||
@@ -1074,8 +1077,9 @@ class Multicastlistener(Thread):
 | 
				
			|||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                for tlv in pkt.body:
 | 
					                for tlv in pkt.body:
 | 
				
			||||||
                    if tlv.type==2 and tlv.length==8: # Only short hello TLVs allowed
 | 
					                    # We are only supposed to receive HelloTlVs via this communication mean
 | 
				
			||||||
                        tlv.handle_multicast(self.user, peer)
 | 
					                    self.user.add_system_message("Via multicast :")
 | 
				
			||||||
 | 
					                    tlv.handle(self.user, peer)
 | 
				
			||||||
                self.user.refresh_history()
 | 
					                self.user.refresh_history()
 | 
				
			||||||
                self.user.refresh_input()
 | 
					                self.user.refresh_input()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user