Ошибка при попытке использовать pyad для запроса учетных записей в другом домене - PullRequest
0 голосов
/ 28 августа 2018

Я использую pyad 0.5.20 для выполнения многих операций с активными каталогами, которые пользователь может указать, например, свои данные подключения:

 pyad.set_defaults(ldap_server="my.server", username=myusername, password=xxx,ssl=False,ldap_port=123)

И тогда я могу, например, получить группу по ее имени:

group = pyad.adgroup.ADGroup.from_cn(groupname)

моя проблема с pyad.adquery.ADQuery (), когда я пытаюсь использовать его после указания деталей соединения, я получил ошибку

AttributeError: 'module' object has no attribute 'set_defaults'

А вот полный код:

import pythoncom
pythoncom.CoInitialize()
import pyad.adquery
ad = Auth_Type_Config.query.filter_by(auth_type_id=2).first()
if ad:
    pyad.set_defaults(ldap_server=ad.host, username=ad.username,
                      password=ad.password, ssl=ad.is_ssl,
                      ldap_port=ad.port)
else:
    return jsonify({'msg': 'You must configure the authentication method for LDAP.'
                   , 'status': 'error'})

q = pyad.adquery.ADQuery()
where_clause = "SamAccountName = '{}'"
for (index, item) in enumerate(usernames, start=1):
    if index == 1:
        continue
    where_clause += " or SamAccountName = '{}'"

q.execute_query(attributes=['distinguishedName', 'mail', 'name',
                'SamAccountName'],
                where_clause=where_clause.format(*usernames),
                base_dn='CN=Users,DC=dsp,DC=local')

rows = []
for row in q.get_results():
    rows.append(row)
user = (rows[0] if len(rows) > 0 else None)
return rows
...