MM
Size: a a a
MM
M
ldap://ad.domain.ru:389 - cleartext - user: ad.domain.ru\admin - not lazy - unbound - closed - <no socket> - tls not started - not listening - SyncStrategy - internal decoder
MM
MM
G
MM
# -*- coding: utf-8 -*-
# ----------------------------------------------------------------------
# Check LDAP User info debugging utility
# ----------------------------------------------------------------------
# Copyright (C) 2007-2018 The NOC Project
# See LICENSE for details
# ----------------------------------------------------------------------
import ldap3
from ldap3 import SIMPLE, SYNC, ALL, SASL, SUBTREE, NTLM, BASE, ALL_ATTRIBUTES, Entry, Attribute
# NOC modules
from noc.main.models.authldapdomain import AuthLDAPDomain
from noc.core.management.base import BaseCommand
from noc.core.mongo.connection import connect
from noc.services.login.backends.loader import loader
from noc.services.login.backends.ldap import LdapBackend
from noc.core.comp import smart_text
connect()
def ad_search_by_user(connection, user, path_root):
user_info = {
"user_dn": user
}
adFltr = "(&(objectclass=user)(mail=" + user + "))"
#print(adFltr)
result = connection.search(search_base=path_root,
search_filter=adFltr,
search_scope=SUBTREE,
attributes=["*"],
size_limit=0)
if result:
print(connection.entries)
entry = connection.entries[0]
attrs = entry.entry_attributes_as_dict
for k, v in attrs.items():
if "whenChanged" in k:
continue
if "mDBUseDefaults" in k:
continue
if k in attrs:
value = attrs[k]
if isinstance(value, (list, tuple)):
value = smart_text(value)
user_info[k] = value
return user_info
else:
print(
"No user: %s", user
)
def handle(backend, user, path_root=None, sync=False, *args, **kwargs):
backend = loader[backend]
auth = backend()
ldap_domain = AuthLDAPDomain.get_default_domain()
print(ldap_domain.root)
server_pool = auth.get_server_pool(ldap_domain)
connect = ldap3.Connection(server_pool, user=ldap_domain.bind_user, password=ldap_domain.bind_password)
if not connect.bind():
print(
"Cannot bind as %s to search groups",
ldap_domain.bind_user
)
connect = None
if not path_root:
path_root = ldap_domain.root
result = ad_search_by_user(connect, user, ldap_domain.root)
print(result)
user = "usermail"
handle(backend="ldap", user=user)
MM
AA
MM
MM
M
MM
user = "usermail"
handle(backend="ldap", user=user
MM
M
M
MM
MM
MM
MM