Example #1
0
File: peers.py Project: mirgee/lbry
    async def _send_peers_subscribe(self, session, peer):
        message = 'server.peers.subscribe'
        raw_peers = await session.send_request(message)
        assert_good(message, raw_peers, list)

        # Check the peers list we got from a remote peer.
        # Each is expected to be of the form:
        #    [ip_addr, hostname, ['v1.0', 't51001', 's51002']]
        # Call add_peer if the remote doesn't appear to know about us.
        try:
            real_names = [' '.join([u[1]] + u[2]) for u in raw_peers]
            peers = [
                Peer.from_real_name(real_name, str(peer))
                for real_name in real_names
            ]
        except Exception:
            raise BadPeerError('bad server.peers.subscribe response')

        await self._note_peers(peers)
        features = self._features_to_register(peer, peers)
        if not features:
            return
        self.logger.info(f'registering ourself with {peer}')
        # We only care to wait for the response
        await session.send_request('server.add_peer', [features])
Example #2
0
 async def _import_peers(self):
     '''Import hard-coded peers from a file or the coin defaults.'''
     imported_peers = self.myselves.copy()
     # Add the hard-coded ones unless only reporting ourself
     if self.env.peer_discovery != self.env.PD_SELF:
         imported_peers.extend(Peer.from_real_name(real_name, 'coins.py')
                               for real_name in self.env.coin.PEERS)
     await self._note_peers(imported_peers, limit=None)
Example #3
0
File: peers.py Project: mirgee/lbry
 async def add_localRPC_peer(self, real_name):
     """Add a peer passed by the admin over LocalRPC."""
     await self._note_peers([Peer.from_real_name(real_name, 'RPC')])