Example #1
0
  def SetupAuth(interactive=False):
    """Sets up requestors with authentication tokens

    Args:
      interactive: boolean, when set to true can prompt user, otherwise returns False if authentication fails
      
    Returns:
      requestor, storage: Authenticated requestors and an instance of storage
    """
    modifiedconfig = False
    
    # parse config file and extract useragents, which we use for account names
    userids = []
    if os.path.exists( Auth.config ):
      content_file = open(Auth.config, 'r')
      content = content_file.read()
      data = json.loads(content)
      for user in data['data']:
        userids.append(str(user['credential']['user_agent']))
    
    if len(userids) == 0:
      userids = [ None ]
    
    requestors = []
    for userid in userids:
      storage = multistore_file.get_credential_storage(
	    Auth.config,
	    Auth.clientid,
	    userid,
	    ['https://www.googleapis.com/auth/cloudprint'])
      credentials = storage.get()

      if not credentials and interactive: # pragma: no cover
	credentials = Auth.AddAccount(storage, userid)
	modifiedconfig = True
	if userid == None:
	  userid = credentials.user_agent
      elif not interactive and not credentials:
	return False
	
      # renew if expired
      requestor = cloudprintrequestor()
      if credentials.access_token_expired: # pragma: no cover 
	credentials.refresh(requestor)
      
      requestor = credentials.authorize(requestor)
      requestor.setAccount(userid)
      requestors.append(requestor)
    
    # fix permissions
    if modifiedconfig: # pragma: no cover 
      try:
        os.chmod(Auth.config, 0640)
        os.chown(Auth.config, 0, Auth.GetLPID())
      except:
        sys.stderr.write("DEBUG: Cannot alter file permissions\n")
        pass

    return requestors, storage
Example #2
0
  def SetupAuth(interactive=False):
    """Sets up requestors with authentication tokens

    Args:
      interactive: boolean, when set to true can prompt user, otherwise returns False if authentication fails
      
    Returns:
      requestor, storage: Authenticated requestors and an instance of storage
    """
    modifiedconfig = False
    
    # parse config file and extract useragents, which we use for account names
    userids = []
    if os.path.exists( Auth.config ):
      content_file = open(Auth.config, 'r')
      content = content_file.read()
      data = json.loads(content)
      for user in data['data']:
        userids.append(str(user['credential']['user_agent']))
    
    if len(userids) == 0:
      userids = [ None ]
    
    requestors = []
    for userid in userids:
      storage = multistore_file.get_credential_storage(
	    Auth.config,
	    Auth.clientid,
	    userid,
	    ['https://www.googleapis.com/auth/cloudprint'])
      credentials = storage.get()

      if not credentials and interactive: # pragma: no cover
	credentials = Auth.AddAccount(storage, userid)
	modifiedconfig = True
	if userid == None:
	  userid = credentials.user_agent
      elif not interactive and not credentials:
	return False
	
      # renew if expired
      requestor = cloudprintrequestor()
      if credentials.access_token_expired: # pragma: no cover 
	credentials.refresh(requestor)
      
      requestor = credentials.authorize(requestor)
      requestor.setAccount(userid)
      requestors.append(requestor)
    
    # fix permissions
    if modifiedconfig: # pragma: no cover 
      try:
        os.chmod(Auth.config, 0640)
        os.chown(Auth.config, 0, Auth.GetLPID())
      except:
        sys.stderr.write("DEBUG: Cannot alter file permissions\n")
        pass

    return requestors, storage
Example #3
0
    def SetupAuth(interactive=False,
                  permissions=['https://www.googleapis.com/auth/cloudprint']):
        """Sets up requestors with authentication tokens

        Args:
          interactive: boolean, when set to true can prompt user, otherwise returns False if authentication fails

        Returns:
          requestor, storage: Authenticated requestors and an instance of storage
        """
        modifiedconfig = False

        # parse config file and extract useragents, which we use for account names
        userids = []
        if os.path.exists(Auth.config):
            content_file = open(Auth.config, 'r')
            content = content_file.read()
            data = json.loads(content)
            for user in data['data']:
                userids.append(str(user['credential']['user_agent']))
        else:
            modifiedconfig = True

        if len(userids) == 0:
            userids = [None]

        requestors = []
        for userid in userids:
            storage = multistore_file.get_credential_storage(
                Auth.config, Auth.clientid, userid, permissions)
            credentials = storage.get()

            if not credentials and interactive:
                credentials = Auth.AddAccount(storage, userid)
                modifiedconfig = True
                if userid == None:
                    userid = credentials.user_agent

            if credentials:
                # renew if expired
                requestor = cloudprintrequestor()
                if credentials.access_token_expired:
                    from oauth2client.client import AccessTokenRefreshError
                    try:
                        credentials.refresh(requestor)
                    except AccessTokenRefreshError as e:
                        sys.stderr.write(
                            "Failed to renew token (error: " + str(e) +
                            "), if you have revoked access to CUPS Cloud Print in your Google Account, please delete /etc/cloudprint.conf and re-run /usr/share/cloudprint-cups/setupcloudprint.py\n"
                        )
                        sys.exit(1)

                requestor = credentials.authorize(requestor)
                requestor.setAccount(userid)
                requestors.append(requestor)

        # fix permissions
        if modifiedconfig:
            Utils.FixFilePermissions(Auth.config)

        if not credentials:
            return False, False
        else:
            return requestors, storage
def setup_function(function):
    global requestor
    requestor = cloudprintrequestor()
Example #5
0
    def SetupAuth(interactive=False, permissions=['https://www.googleapis.com/auth/cloudprint']):
        """Sets up requestors with authentication tokens

        Args:
          interactive: boolean, when set to true can prompt user, otherwise returns False if authentication fails

        Returns:
          requestor, storage: Authenticated requestors and an instance of storage
        """
        modifiedconfig = False

        # parse config file and extract useragents, which we use for account names
        userids = []
        if os.path.exists( Auth.config ):
            content_file = open(Auth.config, 'r')
            content = content_file.read()
            data = json.loads(content)
            for user in data['data']:
                userids.append(str(user['credential']['user_agent']))
        else:
            modifiedconfig = True

        if len(userids) == 0:
            userids = [ None ]

        requestors = []
        for userid in userids:
            storage = multistore_file.get_credential_storage(
                  Auth.config,
                  Auth.clientid,
                  userid,
                  permissions)
            credentials = storage.get()

            if not credentials and interactive:
                credentials = Auth.AddAccount(storage, userid)
                modifiedconfig = True
                if userid == None:
                    userid = credentials.user_agent

            if credentials:
                # renew if expired
                requestor = cloudprintrequestor()
                if credentials.access_token_expired:
                    from oauth2client.client import AccessTokenRefreshError
                    try:
                        credentials.refresh(requestor)
                    except AccessTokenRefreshError as e:
                        sys.stderr.write("Failed to renew token (error: "+ str(e)  +"), if you have revoked access to CUPS Cloud Print in your Google Account, please delete /etc/cloudprint.conf and re-run /usr/share/cloudprint-cups/setupcloudprint.py\n")
                        sys.exit(1)

                requestor = credentials.authorize(requestor)
                requestor.setAccount(userid)
                requestors.append(requestor)

        # fix permissions
        if modifiedconfig:
            Utils.FixFilePermissions(Auth.config)

        if not credentials:
            return False, False
        else:
            return requestors, storage
def setup_function(function):
    global requestor
    requestor = cloudprintrequestor()