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)
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)
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()
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)
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()
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)
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)
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)
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()))
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)