Ejemplo n.º 1
0
    def post(self, username):
        active_user = self.get_current_user()
        active_customer = (get_user_property(username,
                                             UserKeys.CurrentCustomer))
        uri = self.request.uri
        method = self.request.method
        results = None
        try:
            customer_context = (self.arguments.get(
                ApiArguments.CUSTOMER_CONTEXT, active_customer))
            action = self.arguments.get(ApiArguments.ACTION, ApiValues.ADD)

            ###Update Groups###
            group_ids = self.arguments.get(ApiArguments.GROUP_IDS, None)
            if group_ids and isinstance(group_ids, list):
                if action == ApiValues.ADD:
                    results = (add_user_to_groups(username, customer_context,
                                                  group_ids, username, uri,
                                                  method))
                if action == ApiValues.DELETE:
                    results = (remove_groups_from_user(username, group_ids,
                                                       username, uri, method))
            ###Update Customers###
            customer_names = self.arguments.get('customer_names')
            if customer_names and isinstance(customer_names, list):
                if action == 'add':
                    results = (add_user_to_customers(username, customer_names,
                                                     username, uri, method))

                elif action == 'delete':
                    results = (remove_customers_from_user(
                        username, customer_names, username, uri, method))

            if results:
                self.set_status(results['http_status'])
                self.set_header('Content-Type', 'application/json')
                self.write(json.dumps(results, indent=4))

            else:
                results = (GenericResults(active_user, uri,
                                          method).incorrect_arguments())

                self.set_status(results['http_status'])
                self.set_header('Content-Type', 'application/json')
                self.write(json.dumps(results, indent=4))

        except Exception as e:
            results = (GenericResults(active_user, uri,
                                      method).something_broke(
                                          active_user, 'User', e))
            logger.exception(e)
            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))
Ejemplo n.º 2
0
    def post(self, username):
        active_user = self.get_current_user()
        active_customer = (
            get_user_property(username, UserKeys.CurrentCustomer)
        )
        uri = self.request.uri
        method = self.request.method
        results = None
        try:
            customer_context = (
                self.arguments.get(ApiArguments.CUSTOMER_CONTEXT, active_customer)
            )
            action = self.arguments.get(ApiArguments.ACTION, ApiValues.ADD)

            ###Update Groups###
            group_ids = self.arguments.get(ApiArguments.GROUP_IDS, None)
            if group_ids and isinstance(group_ids, list):
                if action == ApiValues.ADD:
                    results = (
                        add_user_to_groups(
                            username, customer_context, group_ids,
                            username, uri, method
                        )
                    )
                if action == ApiValues.DELETE:
                    results = (
                        remove_groups_from_user(
                            username, group_ids,
                            username, uri, method
                        )
                    )
            ###Update Customers###
            customer_names = self.arguments.get('customer_names')
            if customer_names and isinstance(customer_names, list):
                if action == 'add':
                    results = (
                        add_user_to_customers(
                            username, customer_names,
                            username, uri, method
                        )
                    )

                elif action == 'delete':
                    results = (
                        remove_customers_from_user(
                            username, customer_names,
                            username, uri, method
                        )
                    )

            if results:
                self.set_status(results['http_status'])
                self.set_header('Content-Type', 'application/json')
                self.write(json.dumps(results, indent=4))

            else:
                results = (
                    GenericResults(
                        active_user, uri, method
                    ).incorrect_arguments()
                )

                self.set_status(results['http_status'])
                self.set_header('Content-Type', 'application/json')
                self.write(json.dumps(results, indent=4))

        except Exception as e:
            results = (
                GenericResults(
                    active_user, uri, method
                ).something_broke(active_user, 'User', e)
            )
            logger.exception(e)
            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))
Ejemplo n.º 3
0
def remove_user(username, user_name=None, uri=None, method=None):
    """Remove a user from vFense
    Args:
        username (str): The name of the user you are deleteing.

    Kwargs:
        user_name (str): The name of the user who called this function.
        uri (str): The uri that was used to call this function.
        method (str): The HTTP methos that was used to call this function.

    Return:
        Dictionary of the status of the operation.
    """

    user_exist = get_user(username)
    status = remove_user.func_name + ' - '
    usernames_not_to_delete = []
    usernames_to_delete = []
    try:
        if user_exist and username != DefaultUsers.ADMIN:
            remove_groups_from_user(username)
            remove_customers_from_user(username)
            usernames_to_delete.append(username)

            object_status, _, _, _ = (
                delete_user(username)
            )

            if object_status == DbCodes.Deleted:
                generic_status_code = GenericCodes.ObjectDeleted
                vfense_status_code = UserCodes.UserDeleted
                msg = 'User removed %s' % (username)

        elif username == DefaultUsers.ADMIN:
            msg = 'Can not delete the %s user' % (username)
            usernames_not_to_delete.append(username)
            object_status = DbCodes.Skipped
            generic_status_code = GenericCodes.CouldNotBeDeleted
            vfense_status_code = UserFailureCodes.AdminUserCanNotBeDeleted

        else:
            msg = 'User does not exist %s' % (username)
            usernames_not_to_delete.append(username)
            object_status = DbCodes.Skipped
            generic_status_code = GenericCodes.InvalidId
            vfense_status_code = UserFailureCodes.UserNameDoesNotExist

        results = {
            ApiResultKeys.DB_STATUS_CODE: object_status,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.UNCHANGED_IDS: usernames_not_to_delete,
            ApiResultKeys.DELETED_IDS: usernames_to_delete,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }


    except Exception as e:
        logger.exception(e)
        msg = 'Failed to remove user %s: %s' % (username, str(e))
        status_code = DbCodes.Errors
        generic_status_code = GenericFailureCodes.FailedToDeleteObject
        vfense_status_code = UserFailureCodes.FailedToRemoveUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: status_code,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.UNCHANGED_IDS: usernames_not_to_delete,
            ApiResultKeys.DELETED_IDS: usernames_to_delete,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    return(results)
Ejemplo n.º 4
0
def remove_users(usernames, user_name=None, uri=None, method=None):
    """Remove a user from vFense
    Args:
        usernames (list): List of usernames that will be deleted.

    Kwargs:
        user_name (str): The name of the user who called this function.
        uri (str): The uri that was used to call this function.
        method (str): The HTTP methos that was used to call this function.

    Return:
        Dictionary of the status of the operation.
    """

    status = change_password.func_name + ' - '
    usernames_not_to_delete = []
    usernames_to_delete = []
    generic_status_code = 0
    vfense_status_code = 0
    msg = ''
    try:
        if not isinstance(usernames, list):
            usernames = usernames.split(',')
        for username in usernames:
            user_exist = get_user(username)
            status = remove_users.func_name + ' - '
            if user_exist and username != DefaultUsers.ADMIN:
                remove_groups_from_user(username)
                remove_customers_from_user(username)
                usernames_to_delete.append(username)

            elif username == DefaultUsers.ADMIN:
                msg = 'Can not delete the %s user' % (username)
                usernames_not_to_delete.append(username)
                generic_status_code = GenericCodes.CouldNotBeDeleted
                vfense_status_code = UserFailureCodes.AdminUserCanNotBeDeleted
                object_status = DbCodes.Skipped

            else:
                msg = 'User does not exist %s' % (username)
                usernames_not_to_delete.append(username)
                generic_status_code = GenericCodes.InvalidId
                vfense_status_code = UserFailureCodes.UserNameDoesNotExist
                object_status = DbCodes.Skipped

        if len(usernames_to_delete) > 0:
            object_status, _, _, _ = (
                delete_users(usernames_to_delete)
            )

            if object_status == DbCodes.Deleted:
                generic_status_code = GenericCodes.ObjectDeleted
                vfense_status_code = UserCodes.UserDeleted
                msg = 'Users removed %s' % (' and '.join(usernames_to_delete))

            if object_status == DbCodes.DoesNotExist:
                generic_status_code = GenericCodes.DoesNotExist
                vfense_status_code = UserFailureCodes.UserNameDoesNotExist
                msg = 'Users  %s do not exist' % (' and '.join(usernames_to_delete))

        else:
            object_status = DbCodes.Unchanged
            generic_status_code = GenericFailureCodes.FailedToDeleteObject
            vfense_status_code = UserFailureCodes.FailedToRemoveUser
            msg = 'Users can not be removed %s' % (
                ' and '.join(usernames_not_to_delete))

        results = {
            ApiResultKeys.DB_STATUS_CODE: object_status,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.UNCHANGED_IDS: usernames_not_to_delete,
            ApiResultKeys.DELETED_IDS: usernames_to_delete,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }


    except Exception as e:
        logger.exception(e)
        msg = 'Failed to remove user %s: %s' % (username, str(e))
        generic_status_code = GenericFailureCodes.FailedToDeleteObject
        vfense_status_code = UserFailureCodes.FailedToRemoveUser

        results = {
            ApiResultKeys.DB_STATUS_CODE: DbCodes.Errors,
            ApiResultKeys.GENERIC_STATUS_CODE: generic_status_code,
            ApiResultKeys.VFENSE_STATUS_CODE: vfense_status_code,
            ApiResultKeys.MESSAGE: status + msg,
            ApiResultKeys.UNCHANGED_IDS: usernames_not_to_delete,
            ApiResultKeys.DELETED_IDS: usernames_to_delete,
            ApiResultKeys.DATA: [],
            ApiResultKeys.USERNAME: user_name,
            ApiResultKeys.URI: uri,
            ApiResultKeys.HTTP_METHOD: method
        }

    return(results)