Beispiel #1
0
 def new_http_connection(self, host, is_secure):
     if self.use_proxy:
         host = '%s:%d' % (self.proxy, int(self.proxy_port))
     if host is None:
         host = self.server_name()
     if is_secure:
         boto.log.debug('establishing HTTPS connection: host=%s, kwargs=%s',
                        host, self.http_connection_kwargs)
         if self.use_proxy:
             connection = self.proxy_ssl()
         elif self.https_connection_factory:
             connection = self.https_connection_factory(host)
         elif self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
             connection = https_connection.CertValidatingHTTPSConnection(
                 host,
                 ca_certs=self.ca_certificates_file,
                 **self.http_connection_kwargs)
         else:
             connection = httplib.HTTPSConnection(
                 host, **self.http_connection_kwargs)
     else:
         boto.log.debug('establishing HTTP connection: kwargs=%s' %
                        self.http_connection_kwargs)
         connection = httplib.HTTPConnection(host,
                                             **self.http_connection_kwargs)
     if self.debug > 1:
         connection.set_debuglevel(self.debug)
     # self.connection must be maintained for backwards-compatibility
     # however, it must be dynamically pulled from the connection pool
     # set a private variable which will enable that
     if host.split(':')[0] == self.host and is_secure == self.is_secure:
         self._connection = (host, is_secure)
     return connection
Beispiel #2
0
    def new_http_connection(self, host, port, is_secure):
        if host is None:
            host = self.server_name()

        # Make sure the host is really just the host, not including
        # the port number
        host = host.split(':', 1)[0]

        http_connection_kwargs = self.http_connection_kwargs.copy()

        # Connection factories below expect a port keyword argument
        http_connection_kwargs['port'] = port

        # Override host with proxy settings if needed
        if self.use_proxy and not is_secure and \
                not self.skip_proxy(host):
            host = self.proxy
            http_connection_kwargs['port'] = int(self.proxy_port)

        if is_secure:
            boto.log.debug(
                    'establishing HTTPS connection: host=%s, kwargs=%s',
                    host, http_connection_kwargs)
            if self.use_proxy and not self.skip_proxy(host):
                connection = self.proxy_ssl(host, is_secure and 443 or 80)
            elif self.https_connection_factory:
                connection = self.https_connection_factory(host)
            elif self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
                connection = https_connection.CertValidatingHTTPSConnection(
                        host, ca_certs=self.ca_certificates_file,
                        **http_connection_kwargs)
            else:
                connection = http_client.HTTPSConnection(host,
                        **http_connection_kwargs)
        else:
            boto.log.debug('establishing HTTP connection: kwargs=%s' %
                    http_connection_kwargs)
            if self.https_connection_factory:
                # even though the factory says https, this is too handy
                # to not be able to allow overriding for http also.
                connection = self.https_connection_factory(host,
                    **http_connection_kwargs)
            else:
                connection = http_client.HTTPConnection(host,
                    **http_connection_kwargs)
        if self.debug > 1:
            connection.set_debuglevel(self.debug)
        # self.connection must be maintained for backwards-compatibility
        # however, it must be dynamically pulled from the connection pool
        # set a private variable which will enable that
        if host.split(':')[0] == self.host and is_secure == self.is_secure:
            self._connection = (host, port, is_secure)
        # Set the response class of the http connection to use our custom
        # class.
        connection.response_class = HTTPResponse
        return connection
Beispiel #3
0
 def new_http_connection(self, host, is_secure):
     if self.use_proxy and not is_secure and \
             not self.skip_proxy(host):
         host = '%s:%d' % (self.proxy, int(self.proxy_port))
     if host is None:
         host = self.server_name()
     if is_secure:
         boto.log.debug('establishing HTTPS connection: host=%s, kwargs=%s',
                        host, self.http_connection_kwargs)
         if self.use_proxy and not self.skip_proxy(host):
             connection = self.proxy_ssl(host, is_secure and 443 or 80)
         elif self.https_connection_factory:
             connection = self.https_connection_factory(host)
         elif self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
             connection = https_connection.CertValidatingHTTPSConnection(
                 host,
                 ca_certs=self.ca_certificates_file,
                 **self.http_connection_kwargs)
         else:
             if "context" not in self.http_connection_kwargs and \
                hasattr(ssl, "_create_unverified_context"):
                 self.http_connection_kwargs[
                     "context"] = ssl._create_unverified_context()
             connection = httplib.HTTPSConnection(
                 host, **self.http_connection_kwargs)
     else:
         boto.log.debug('establishing HTTP connection: kwargs=%s' %
                        self.http_connection_kwargs)
         if self.https_connection_factory:
             # even though the factory says https, this is too handy
             # to not be able to allow overriding for http also.
             connection = self.https_connection_factory(
                 host, **self.http_connection_kwargs)
         else:
             connection = httplib.HTTPConnection(
                 host, **self.http_connection_kwargs)
     if self.debug > 1:
         connection.set_debuglevel(self.debug)
     # self.connection must be maintained for backwards-compatibility
     # however, it must be dynamically pulled from the connection pool
     # set a private variable which will enable that
     if host.split(':')[0] == self.host and is_secure == self.is_secure:
         self._connection = (host, is_secure)
     # Set the response class of the http connection to use our custom
     # class.
     connection.response_class = HTTPResponse
     return connection