Beispiel #1
0
    def _GetOpener(self):
        """Returns an OpenerDirector that supports cookies and ignores redirects.

    Returns:
      A urllib2.OpenerDirector object.
    """
        opener = urllib2.OpenerDirector()
        opener.add_handler(fancy_urllib.FancyProxyHandler())
        opener.add_handler(urllib2.UnknownHandler())
        opener.add_handler(urllib2.HTTPHandler())
        opener.add_handler(urllib2.HTTPDefaultErrorHandler())
        opener.add_handler(urllib2.HTTPSHandler())
        opener.add_handler(urllib2.HTTPErrorProcessor())
        opener.add_handler(ContentEncodingHandler())

        auth_domain = ''
        if 'AUTH_DOMAIN' in os.environ:
            auth_domain = os.environ['AUTH_DOMAIN'].lower()

        if self.save_cookies:
            if auth_domain == 'appscale':
                cookies_dir = os.path.expanduser(
                    HttpRpcServer.APPSCALE_COOKIE_DIR)
                if not os.path.exists(cookies_dir):
                    os.mkdir(cookies_dir)
            else:
                self.cookie_jar.filename = os.path.expanduser(
                    HttpRpcServer.DEFAULT_COOKIE_FILE_PATH)

                if os.path.exists(self.cookie_jar.filename):
                    try:
                        self.cookie_jar.load()
                        self.authenticated = True
                        logger.debug("Loaded authentication cookies from %s",
                                     self.cookie_jar.filename)
                    except (OSError, IOError, cookielib.LoadError), e:
                        logger.debug(
                            "Could not load authentication cookies; %s: %s",
                            e.__class__.__name__, e)
                        self.cookie_jar.filename = None
                    else:
                        try:
                            fd = os.open(self.cookie_jar.filename, os.O_CREAT,
                                         0600)
                            os.close(fd)
                        except (OSError, IOError), e:
                            logger.debug("Could not create authentication cookies file " + \
                                         "; %s: %s" % (e.__class__.__name__, e))
                            self.cookie_jar.filename = None
Beispiel #2
0
    def _GetOpener(self):
        """Returns an OpenerDirector that supports cookies and ignores redirects.

    Returns:
      A urllib2.OpenerDirector object.
    """
        opener = urllib.request.OpenerDirector()
        opener.add_handler(fancy_urllib.FancyProxyHandler())
        opener.add_handler(urllib.request.UnknownHandler())
        opener.add_handler(urllib.request.HTTPHandler())
        opener.add_handler(urllib.request.HTTPDefaultErrorHandler())
        opener.add_handler(fancy_urllib.FancyHTTPSHandler())
        opener.add_handler(urllib.request.HTTPErrorProcessor())
        opener.add_handler(ContentEncodingHandler())

        if self.save_cookies:
            self.cookie_jar.filename = os.path.expanduser(
                HttpRpcServer.DEFAULT_COOKIE_FILE_PATH)

            if os.path.exists(self.cookie_jar.filename):
                try:
                    self.cookie_jar.load()
                    self.authenticated = True
                    logger.debug("Loaded authentication cookies from %s",
                                 self.cookie_jar.filename)
                except (OSError, IOError, http.cookiejar.LoadError) as e:

                    logger.debug(
                        "Could not load authentication cookies; %s: %s",
                        e.__class__.__name__, e)
                    self.cookie_jar.filename = None
            else:

                try:
                    fd = os.open(self.cookie_jar.filename, os.O_CREAT, 0o600)
                    os.close(fd)
                except (OSError, IOError) as e:

                    logger.debug(
                        "Could not create authentication cookies file; %s: %s",
                        e.__class__.__name__, e)
                    self.cookie_jar.filename = None

        opener.add_handler(urllib.request.HTTPCookieProcessor(self.cookie_jar))
        return opener
Beispiel #3
0
    def _GetOpener(self):
        """Returns an OpenerDirector that supports cookies and ignores redirects.

    Returns:
      A urllib2.OpenerDirector object.
    """
        opener = urllib2.OpenerDirector()
        opener.add_handler(fancy_urllib.FancyProxyHandler())
        opener.add_handler(urllib2.UnknownHandler())
        opener.add_handler(urllib2.HTTPHandler())
        opener.add_handler(urllib2.HTTPDefaultErrorHandler())
        opener.add_handler(fancy_urllib.FancyHTTPSHandler())
        opener.add_handler(urllib2.HTTPErrorProcessor())
        opener.add_handler(ContentEncodingHandler())

        if self.save_cookies:
            self.cookie_jar.filename = os.path.expanduser(
                HttpRpcServer.DEFAULT_COOKIE_FILE_PATH)

            if os.path.exists(self.cookie_jar.filename):
                try:
                    self.cookie_jar.load()
                    self.authenticated = True
                    logger.debug("Loaded authentication cookies from %s",
                                 self.cookie_jar.filename)
                except (OSError, IOError, cookielib.LoadError), e:
                    # Failed to load cookies. The target file path is bad.
                    logger.debug(
                        "Could not load authentication cookies; %s: %s",
                        e.__class__.__name__, e)
                    self.cookie_jar.filename = None
            else:
                # Create an empty cookie file. This must be created with the file
                # permissions set upfront in order to be secure.
                try:
                    fd = os.open(self.cookie_jar.filename, os.O_CREAT, 0600)
                    os.close(fd)
                except (OSError, IOError), e:
                    # Failed to create cookie file. Don't try to save cookies.
                    logger.debug(
                        "Could not create authentication cookies file; %s: %s",
                        e.__class__.__name__, e)
                    self.cookie_jar.filename = None