Ejemplo n.º 1
0
 def connect_peers(self):
     logger.info('<<<Reconnecting to peer list: %s',
                 self.known_peer_addresses)
     for peer_address in self.known_peer_addresses:
         if self.is_banned(IPMetadata.from_full_address(peer_address)):
             continue
         self._p2pfactory.connect_peer(peer_address)
Ejemplo n.º 2
0
    def monitor_connections(self):
        reactor.callLater(config.user.monitor_connections_interval,
                          self.monitor_connections)

        if len(self._peer_connections) == 0:
            logger.warning('No Connected Peer Found')
            known_peers = self._qrl_node.peer_manager.load_known_peers()
            self._peer_q.extend(known_peers)

        connected_peers_set = set()
        for conn_protocol in self._peer_connections:
            connected_peers_set.add(conn_protocol.peer.full_address)

        for peer_item in config.user.peer_list:
            peer_metadata = IPMetadata.from_full_address(peer_item)
            if peer_metadata.full_address in self._peer_q:
                self._peer_q.remove(peer_metadata.full_address)
            if peer_metadata.full_address not in connected_peers_set:
                self.connect_peer([peer_metadata.full_address])

        if len(self._peer_connections) >= config.user.max_peers_limit:
            return

        if len(self._peer_q) == 0:
            return

        peer_address_list = []
        max_length = min(10, config.user.max_peers_limit)
        while len(self._peer_q) > 0 and len(peer_address_list) != max_length:
            peer_address_list.append(self._peer_q.pop(0))

        self.connect_peer(peer_address_list)
Ejemplo n.º 3
0
    def connect_peer(self, full_address):
        try:
            addr = IPMetadata.from_full_address(full_address)

            connected_peers = self.get_connected_peer_addrs()
            should_connect = addr.full_address not in connected_peers

            if should_connect:
                reactor.connectTCP(addr.ip, addr.port, self)

        except Exception as e:
            logger.warning("Could not connect to %s - %s", full_address,
                           str(e))
Ejemplo n.º 4
0
    def monitor_connections(self):
        reactor.callLater(config.user.monitor_connections_interval,
                          self.monitor_connections)

        if len(self._peer_connections) == 0:
            logger.warning('No Connected Peer Found')
            reactor.callLater(10, self._qrl_node.peer_manager.connect_peers)
            return

        connected_peers_set = set()
        for conn_protocol in self._peer_connections:
            connected_peers_set.add(conn_protocol.peer.full_address)

        for peer_item in config.user.peer_list:
            peer_metadata = IPMetadata.from_full_address(peer_item)
            if peer_metadata.full_address not in connected_peers_set:
                self.connect_peer(peer_metadata.full_address)
Ejemplo n.º 5
0
 def test_global_2(self):
     addr = IPMetadata.from_full_address('123.123.123.1:9000',
                                         check_global=True)
     self.assertEquals('123.123.123.1', addr.ip)
     self.assertEquals(9000, addr.port)
Ejemplo n.º 6
0
 def test_global_1(self):
     with self.assertRaisesRegexp(ValueError,
                                  'Local Peer IP Found 192.168.0.1:9000'):
         IPMetadata.from_full_address('192.168.0.1:9000', check_global=True)
Ejemplo n.º 7
0
 def test_wrong_port_3(self):
     with self.assertRaisesRegexp(ValueError,
                                  'Invalid Peer Port 192.168.0.1:-1'):
         IPMetadata.from_full_address('192.168.0.1:-1')
Ejemplo n.º 8
0
 def test_invalid_2(self):
     with self.assertRaisesRegexp(AddressValueError,
                                  'Expected 4 octets in \'abc\''):
         IPMetadata.from_full_address('abc')
Ejemplo n.º 9
0
 def test_invalid_1(self):
     with self.assertRaisesRegexp(AddressValueError,
                                  'Address cannot be empty'):
         IPMetadata.from_full_address('')
Ejemplo n.º 10
0
 def test_basic_3(self):
     addr = IPMetadata.from_full_address('192.168.0.1')
     self.assertEquals('192.168.0.1', addr.ip)
     self.assertEquals(config.user.p2p_local_port, addr.port)
Ejemplo n.º 11
0
 def test_basic_2(self):
     addr = IPMetadata.from_full_address('192.168.0.1:1234')
     self.assertEquals('192.168.0.1', addr.ip)
     self.assertEquals(1234, addr.port)