Beispiel #1
0
    async def addPeer(self, uri: str) -> None:
        validate_enode_uri(uri, require_ip=True)

        await self.event_bus.broadcast(
            ConnectToNodeCommand(Node.from_uri(uri)),
            TO_NETWORKING_BROADCAST_CONFIG
        )
Beispiel #2
0
def test_validate_enode_require_ip(uri, should_fail):
    if should_fail:
        message = "A concrete IP address must be specified"
        with pytest.raises(ValidationError, match=message):
            validate_enode_uri(uri, require_ip=True)
    else:
        validate_enode_uri(uri, require_ip=True)
Beispiel #3
0
    async def addPeer(self, node: str) -> None:
        validate_enode_uri(node, require_ip=True)

        self.event_bus.broadcast(
            ConnectToNodeCommand(node),
            TO_NETWORKING_BROADCAST_CONFIG
        )
Beispiel #4
0
    async def removePeer(self, uri: str) -> bool:
        validate_enode_uri(uri, require_ip=True)
        peer_to_remove = Node.from_uri(uri)

        response = await self.event_bus.request(GetConnectedPeersRequest())
        for connected_peer_info in response.peers:
            if peer_to_remove == connected_peer_info.session.remote:
                await self.event_bus.broadcast(
                    DisconnectFromPeerCommand(
                        connected_peer_info,
                        DisconnectReason.DISCONNECT_REQUESTED,
                    ), )
                return True
        return False
Beispiel #5
0
    def __call__(self,
                 parser: argparse.ArgumentParser,
                 namespace: argparse.Namespace,
                 value: Any,
                 option_string: str = None) -> None:
        if value is None:
            return

        validate_enode_uri(value)

        enode = Node.from_uri(value)

        if getattr(namespace, self.dest) is None:
            setattr(namespace, self.dest, [])
        enode_list = getattr(namespace, self.dest)
        enode_list.append(enode)
Beispiel #6
0
def test_validate_enode_success(uri):
    validate_enode_uri(uri)
Beispiel #7
0
def test_validate_enode_failures(uri, message):
    with pytest.raises(ValidationError, match=message):
        validate_enode_uri(uri)
Beispiel #8
0
 def from_uri(cls, uri: str) -> 'Node':
     validate_enode_uri(uri)  # Be no more permissive than the validation
     parsed = urlparse.urlparse(uri)
     pubkey = keys.PublicKey(decode_hex(parsed.username))
     return cls(pubkey, Address(parsed.hostname, parsed.port))
Beispiel #9
0
 def from_enode_uri(cls: Type[TNode], uri: str) -> TNode:
     validate_enode_uri(uri)  # Be no more permissive than the validation
     parsed = urlparse.urlparse(uri)
     pubkey = keys.PublicKey(decode_hex(parsed.username))
     return cls.from_pubkey_and_addr(
         pubkey, Address(parsed.hostname, parsed.port, parsed.port))