Beispiel #1
0
def json_users(request, exclude=None):

    query = request.GET.get("q", None)

    json_user = {
        'identifier': 'id',
        'label': 'name',
        'items': [],
    }

    if exclude:
        exclude = exclude.split(',')
    else:
        exclude = []
    idx = 1
    curr_users = []
    for user in FreeNAS_Users(
        flags=FLAGS_DBINIT | FLAGS_CACHE_READ_USER | FLAGS_CACHE_WRITE_USER
    ):
        if idx > 50:
            break
        if (
            (query is None or user.pw_name.startswith(query.encode('utf8'))) and
            user.pw_name not in exclude and user.pw_name not in curr_users
        ):
            json_user['items'].append({
                'id': user.pw_name,
                'name': user.pw_name,
                'label': user.pw_name,
            })
            curr_users.append(user.pw_name)
            idx += 1

    # Show users for the directory service provided in the wizard
    wizard_ds = request.session.get('wizard_ds')
    if request.GET.get('wizard') == '1' and wizard_ds:
        if wizard_ds.get('ds_type') == 'ad':
            users = FreeNAS_ActiveDirectory_Users(
                domainname=wizard_ds.get('ds_ad_domainname'),
                bindname=wizard_ds.get('ds_ad_bindname'),
                bindpw=wizard_ds.get('ds_ad_bindpw'),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get('ds_type') == 'ldap':
            users = FreeNAS_LDAP_Users(
                host=wizard_ds.get('ds_ldap_hostname'),
                basedn=wizard_ds.get('ds_ldap_basedn'),
                binddn=wizard_ds.get('ds_ldap_binddn'),
                bindpw=wizard_ds.get('ds_ldap_bindpw'),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get('ds_type') == 'nis':
            users = FreeNAS_NIS_Users(
                domain=wizard_ds.get('ds_nis_domain'),
                servers=wizard_ds.get('ds_nis_servers'),
                secure_mode=wizard_ds.get('ds_nis_secure_mode'),
                manycast=wizard_ds.get('ds_nis_manycast'),
                flags=FLAGS_DBINIT,
            )
        else:
            users = None

        if users is not None:
            idx = 1
            # FIXME: code duplication withe the block above
            for user in users._get_uncached_usernames():
                if idx > 50:
                    break
                if (
                    (query is None or user.startswith(query.encode('utf8'))) and
                    user not in exclude
                ):
                    json_user['items'].append({
                        'id': '%s_%s' % (
                            wizard_ds.get('ds_type'),
                            user,
                        ),
                        'name': user,
                        'label': user,
                    })
                    idx += 1

            del users

    return HttpResponse(
        json.dumps(json_user, indent=3),
        content_type='application/json',
    )
Beispiel #2
0
def json_users(request, exclude=None):

    query = request.GET.get("q", None)

    json_user = {
        'identifier': 'id',
        'label': 'name',
        'items': [],
    }

    if exclude:
        exclude = exclude.split(',')
    else:
        exclude = []
    idx = 1
    for user in FreeNAS_Users(flags=FLAGS_DBINIT | FLAGS_CACHE_READ_USER
                              | FLAGS_CACHE_WRITE_USER):
        if idx > 50:
            break
        if ((query is None or user.pw_name.startswith(query))
                and user.pw_name not in exclude):
            json_user['items'].append({
                'id': user.pw_name,
                'name': user.pw_name,
                'label': user.pw_name,
            })
            idx += 1

    # Show users for the directory service provided in the wizard
    wizard_ds = request.session.get('wizard_ds')
    if request.GET.get('wizard') == '1' and wizard_ds:
        if wizard_ds.get('ds_type') == 'ad':
            users = FreeNAS_ActiveDirectory_Users(
                domainname=wizard_ds.get('ds_ad_domainname'),
                bindname=wizard_ds.get('ds_ad_bindname'),
                bindpw=wizard_ds.get('ds_ad_bindpw'),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get('ds_type') == 'ldap':
            users = FreeNAS_LDAP_Users(
                host=wizard_ds.get('ds_ldap_hostname'),
                basedn=wizard_ds.get('ds_ldap_basedn'),
                binddn=wizard_ds.get('ds_ldap_binddn'),
                bindpw=wizard_ds.get('ds_ldap_bindpw'),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get('ds_type') == 'nis':
            users = FreeNAS_NIS_Users(
                domain=wizard_ds.get('ds_nis_domain'),
                servers=wizard_ds.get('ds_nis_servers'),
                secure_mode=wizard_ds.get('ds_nis_secure_mode'),
                manycast=wizard_ds.get('ds_nis_manycast'),
                flags=FLAGS_DBINIT,
            )
        else:
            users = None

        if users is not None:
            idx = 1
            # FIXME: code duplication withe the block above
            for user in users._get_uncached_usernames():
                if idx > 50:
                    break
                if ((query is None or user.startswith(query))
                        and user not in exclude):
                    json_user['items'].append({
                        'id':
                        '%s_%s' % (
                            wizard_ds.get('ds_type'),
                            user,
                        ),
                        'name':
                        user,
                        'label':
                        user,
                    })
                    idx += 1

            del users

    return HttpResponse(
        json.dumps(json_user, indent=3),
        content_type='application/json',
    )
Beispiel #3
0
def json_users(request, exclude=None):

    query = request.GET.get("q", None)

    json_user = {"identifier": "id", "label": "name", "items": []}

    if exclude:
        exclude = exclude.split(",")
    else:
        exclude = []
    idx = 1
    for user in FreeNAS_Users(flags=FLAGS_DBINIT | FLAGS_CACHE_READ_USER | FLAGS_CACHE_WRITE_USER):
        if idx > 50:
            break
        if (query is None or user.pw_name.startswith(query)) and user.pw_name not in exclude:
            json_user["items"].append({"id": user.pw_name, "name": user.pw_name, "label": user.pw_name})
            idx += 1

    # Show users for the directory service provided in the wizard
    wizard_ds = request.session.get("wizard_ds")
    if request.GET.get("wizard") == "1" and wizard_ds:
        if wizard_ds.get("ds_type") == "ad":
            users = FreeNAS_ActiveDirectory_Users(
                domainname=wizard_ds.get("ds_ad_domainname"),
                bindname=wizard_ds.get("ds_ad_bindname"),
                bindpw=wizard_ds.get("ds_ad_bindpw"),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get("ds_type") == "ldap":
            users = FreeNAS_LDAP_Users(
                host=wizard_ds.get("ds_ldap_hostname"),
                basedn=wizard_ds.get("ds_ldap_basedn"),
                binddn=wizard_ds.get("ds_ldap_binddn"),
                bindpw=wizard_ds.get("ds_ldap_bindpw"),
                flags=FLAGS_DBINIT,
            )
        elif wizard_ds.get("ds_type") == "nis":
            users = FreeNAS_NIS_Users(
                domain=wizard_ds.get("ds_nis_domain"),
                servers=wizard_ds.get("ds_nis_servers"),
                secure_mode=wizard_ds.get("ds_nis_secure_mode"),
                manycast=wizard_ds.get("ds_nis_manycast"),
                flags=FLAGS_DBINIT,
            )
        else:
            users = None

        if users is not None:
            idx = 1
            # FIXME: code duplication withe the block above
            for user in users._get_uncached_usernames():
                if idx > 50:
                    break
                if (query is None or user.startswith(query)) and user not in exclude:
                    json_user["items"].append(
                        {"id": "%s_%s" % (wizard_ds.get("ds_type"), user), "name": user, "label": user}
                    )
                    idx += 1

            del users

    return HttpResponse(json.dumps(json_user, indent=3), content_type="application/json")