Esempio n. 1
0
 def connect(self, service=VoidService, config={}):
     """Same as :func:`~rpyc.utils.factory.connect`, but with the ``host`` and ``port``
     parameters fixed"""
     return rpyc.utils.factory.connect_stream(SocketStream(
         self._connect_sock()),
                                              service=service,
                                              config=config)
Esempio n. 2
0
def ssl_connect(host,
                port,
                keyfile=None,
                certfile=None,
                ca_certs=None,
                cert_reqs=None,
                ssl_version=None,
                ciphers=None,
                service=VoidService,
                config={},
                ipv6=False,
                keepalive=False):
    """
    creates an SSL-wrapped connection to the given host (encrypted and
    authenticated).

    :param host: the hostname to connect to
    :param port: the TCP port to use
    :param service: the local service to expose (defaults to Void)
    :param config: configuration dict
    :param ipv6: whether to create an IPv6 socket or an IPv4 one

    The following arguments are passed directly to
    `ssl.wrap_socket <http://docs.python.org/dev/library/ssl.html#ssl.wrap_socket>`_:

    :param keyfile: see ``ssl.wrap_socket``. May be ``None``
    :param certfile: see ``ssl.wrap_socket``. May be ``None``
    :param ca_certs: see ``ssl.wrap_socket``. May be ``None``
    :param cert_reqs: see ``ssl.wrap_socket``. By default, if ``ca_cert`` is specified,
                      the requirement is set to ``CERT_REQUIRED``; otherwise it is
                      set to ``CERT_NONE``
    :param ssl_version: see ``ssl.wrap_socket``. The default is ``PROTOCOL_TLSv1``
    :param ciphers: see ``ssl.wrap_socket``. May be ``None``. New in Python 2.7/3.2

    :returns: an RPyC connection
    """
    ssl_kwargs = {"server_side": False}
    if keyfile is not None:
        ssl_kwargs["keyfile"] = keyfile
    if certfile is not None:
        ssl_kwargs["certfile"] = certfile
    if ca_certs is not None:
        ssl_kwargs["ca_certs"] = ca_certs
        ssl_kwargs["cert_reqs"] = ssl.CERT_REQUIRED
    if cert_reqs is not None:
        ssl_kwargs["cert_reqs"] = cert_reqs
    if ssl_version is None:
        ssl_kwargs["ssl_version"] = ssl.PROTOCOL_TLSv1
    else:
        ssl_kwargs["ssl_version"] = ssl_version
    if ciphers is not None:
        ssl_kwargs["ciphers"] = ciphers
    s = SocketStream.ssl_connect(host,
                                 port,
                                 ssl_kwargs,
                                 ipv6=ipv6,
                                 keepalive=keepalive)
    return connect_stream(s, service, config)
Esempio n. 3
0
 def server(listener=listener):
     with closing(listener):
         client = listener.accept()[0]
     conn = connect_stream(SocketStream(client), service=remote_service,
                           config=remote_config)
     try:
         conn.serve_all()
     except KeyboardInterrupt:
         interrupt_main()
Esempio n. 4
0
 def classic_connect(self):
     """Same as :func:`classic.connect <rpyc.utils.classic.connect>`, but with the ``host`` and
     ``port`` parameters fixed"""
     if self.local_port is None:
         # ParamikoMachine
         stream = SocketStream(
             self.remote_machine.connect_sock(self.remote_port))
         return rpyc.classic.connect_stream(stream)
     else:
         return rpyc.classic.connect("localhost", self.local_port)
Esempio n. 5
0
 def server(listener=listener, args=args):
     with closing(listener):
         client = listener.accept()[0]
     conn = connect_stream(SocketStream(client), service=remote_service, config=remote_config)
     try:
         for k in args:
             conn._local_root.exposed_namespace[k] = args[k]
         conn.serve_all()
     except KeyboardInterrupt:
         interrupt_main()
Esempio n. 6
0
def unix_connect(path, service=VoidService, config={}):
    """
    creates a socket-connection to the given host and port

    :param path: the path to the unix domain socket
    :param service: the local service to expose (defaults to Void)
    :param config: configuration dict

    :returns: an RPyC connection
    """
    s = SocketStream.unix_connect(path)
    return connect_stream(s, service, config)
Esempio n. 7
0
 def connect(self, service=VoidService, config={}):
     """Same as :func:`connect <rpyc.utils.factory.connect>`, but with the ``host`` and ``port``
     parameters fixed"""
     if self.local_port is None:
         # ParamikoMachine
         stream = SocketStream(
             self.remote_machine.connect_sock(self.remote_port))
         return rpyc.connect_stream(stream, service=service, config=config)
     else:
         return rpyc.connect("localhost",
                             self.local_port,
                             service=service,
                             config=config)
Esempio n. 8
0
def connect(host, port, service=VoidService, config={}, ipv6=False, keepalive=False):
    """
    creates a socket-connection to the given host and port

    :param host: the hostname to connect to
    :param port: the TCP port to use
    :param service: the local service to expose (defaults to Void)
    :param config: configuration dict
    :param ipv6: whether to create an IPv6 socket (defaults to ``False``)
    :param keepalive: whether to set TCP keepalive on the socket (defaults to ``False``)

    :returns: an RPyC connection
    """
    s = SocketStream.connect(host, port, ipv6=ipv6, keepalive=keepalive)
    return connect_stream(s, service, config)
Esempio n. 9
0
 def classic_connect(self):
     """Same as :func:`classic.connect <rpyc.utils.classic.connect>`, but with the ``host`` and
     ``port`` parameters fixed"""
     return rpyc.utils.classic.connect_stream(
         SocketStream(self._connect_sock()))
Esempio n. 10
0
 def _connect_sock(self):
     if self.local_port is None:
         # ParamikoMachine
         return self.remote_machine.connect_sock(self.remote_port)
     else:
         return SocketStream._connect("localhost", self.local_port)