Exemplo n.º 1
0
def reload_all():
    """
    Reloads all users, groups, and permissions from file
    """
    global registered_users, registered_groups

    if config.users_config().reload() and config.groups_config().reload():
        registered_groups = []
        new_registered_users = []

        for group in config.groups_config().sections():
            group_permissions = config.parse_safe_csv(config.groups_config()[group]["permissions"])
            registered_groups.append(Group(group, [p for p in group_permissions if p != ""]))
        for user in config.users_config().sections():
            user_groups = config.parse_safe_csv(config.users_config()[user]["groups"])
            groups = []
            for group in user_groups:
                for group2 in registered_groups:
                    if group == group2.name:
                        groups.append(group2)
            user_permissions = config.parse_safe_csv(config.users_config()[user]["permissions"])
            user_address = config.users_config()[user]["socket_address"]
            new_user = User(user, user_address, groups, [p for p in user_permissions if p != ""])
            for existing in registered_users:
                if existing.name == new_user.name:
                    new_user._sockets = existing._sockets
            new_registered_users.append(new_user)
        registered_users = new_registered_users
    else:
        return False
Exemplo n.º 2
0
def remove_group(group_name):
    """
    Removes a group from the global groups file if the group exists
    """
    if config.groups_config().has_section(group_name):
        config.groups_config().remove_section(group_name)
        config.groups_config().save()
        return True
    return False
Exemplo n.º 3
0
def add_group(group_name):
    """
    Adds a new group to the global groups file if it does not exist
    """
    if not config.groups_config().has_section(group_name):
        config.groups_config().set_section(group_name, { "permissions": "" })
        config.groups_config().save()
        return True
    return False
Exemplo n.º 4
0
def add_user_to_group(user_name, group_name):
    """
    Adds a user to the specified group
    """
    if config.users_config().has_section(user_name):
        if config.groups_config().has_section(group_name):
            groups = config.parse_safe_csv(config.users_config()[user_name]["groups"])
            if group_name in groups:
                return -3
            config.users_config().set(user_name, "groups", config.append_csv(config.users_config()[user_name]["groups"], group_name))
            config.users_config().save()
            return True
        else:
            return -2
    else:
        return -1
Exemplo n.º 5
0
def add_group_permissions(group_name, perms):
    """
    Adds a permission string to a group
    """
    if config.groups_config().has_section(group_name):
        old_perms = config.parse_safe_csv(config.groups_config()[group_name]["permissions"])
        new_perms = config.parse_safe_csv(perms)
        if all([perm not in old_perms for perm in new_perms]):
            config.groups_config().set(group_name, "permissions", config.append_csv(config.groups_config()[group_name]["permissions"], perms))
            config.groups_config().save()
            return True
        else:
            return -2
    else:
        return -1
Exemplo n.º 6
0
def remove_user_from_group(user_name, group_name):
    """
    Removes a user from the specified group
    """
    if config.users_config().has_section(user_name):
        if config.groups_config().has_section(group_name):
            groups = config.parse_safe_csv(config.users_config()[user_name]["groups"])
            if group_name not in groups:
                return -3
            groups.remove(group_name)
            config.users_config().set(user_name, "groups", config.list_to_csv(groups))
            config.users_config().save()
            return True
        else:
            return -2
    else:
        return -1
Exemplo n.º 7
0
def remove_group_permissions(group_name, perms):
    """
    Adds a permission string to a group
    """
    if config.groups_config().has_section(group_name):
        old_perms = config.parse_safe_csv(config.groups_config()[group_name]["permissions"])
        rem_perms = config.parse_safe_csv(perms)
        if all([perm in old_perms for perm in rem_perms]):
            for perm in rem_perms:
                old_perms.remove(perm)
            config.groups_config().set(group_name, "permissions", config.list_to_csv(old_perms))
            config.groups_config().save()
            return True
        else:
            return -2
    else:
        return -1