Hi Philip, Thanks for your help. But after patching httplib_ssl, I fall into now another error:
AttributeError: LibcloudHTTPSConnection instance has no attribute '_set_hostport' Cedric -----Original Message----- From: [email protected] [mailto:[email protected]] Sent: mardi 8 juillet 2014 09:56 To: [email protected] Subject: Re: [dev] Libcloud behind ISA Proxy Hi Cedric, I ran into the same issue and patched libcloud.httplib_ssl. I've included the code snippets below. The proxy I use doesn't require authentication but hopefully you can adapt to make it do what you need. I tested with Python 2.7 - may need tweaking for Python 3. Cheers, Phil I modified the LibcloudHTTPSConnection.__init__ to pick up the proxy settings from the environment: class LibcloudHTTPSConnection(httplib.HTTPSConnection): """ LibcloudHTTPSConnection Subclass of HTTPSConnection which verifies certificate names if and only if CA certificates are available. """ verify = True # verify by default ca_cert = None # no default CA Certificate def __init__(self, *args, **kwargs): """ Constructor """ self._setup_verify() httplib.HTTPSConnection.__init__(self, *args, **kwargs) # Support for HTTPS Proxy if 'https_proxy' in os.environ: from urlparse import urlparse self.set_tunnel(self.host, port=self.port) proxy_host = urlparse(os.environ['https_proxy']).netloc self._set_hostport(proxy_host, None) . . . And then modified the connect call to use the tunnel: def connect(self): """ Connect Checks if verification is toggled; if not, just call httplib.HTTPSConnection's connect """ if not self.verify: return httplib.HTTPSConnection.connect(self) # otherwise, create a connection and verify the hostname # use socket.create_connection (in 2.6+) if possible if getattr(socket, 'create_connection', None): sock = socket.create_connection((self.host, self.port), self.timeout) else: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((self.host, self.port)) # Support for HTTPS Proxy if self._tunnel_host: self.sock = sock self._tunnel() self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, cert_reqs=ssl.CERT_REQUIRED, ca_certs=self.ca_cert, ssl_version=ssl.PROTOCOL_TLSv1) cert = self.sock.getpeercert() if not self._verify_hostname(self.host, cert): raise ssl.SSLError('Failed to verify hostname') On 8 Jul 2014, at 07:23, Cedric Lebrun <[email protected]> wrote: > Hi All, > > I try to use Libcloud to connect to EC2. > My environments (CentOS 6.5 and Ubuntu 14.04) are behind a proxy server that > requires authentication (MS ISA Proxy Server). > I tried with defining environment variables HTTP_PROXY and HTTPS_PROXY, but > still doesn't work. > Is there a way to set a proxy and proxy credentials directly using Libcloud ? > Or should I have to patch the http_lib to implement UrlLib2 ProxyHandler ? > > Thanks for your help, > CL -- Scanned by iCritical.
