API¶
django_adtools/discover_dc.py
This script discovers for domain controllers in domain
- REQUIREMENTS:
- pip install dnspython
- class
django_adtools.discover_dc.DCHostname(dc_hostname: str, dc_priority: int, dc_port: int, dns_resolver: dns.resolver.Resolver)[source]¶Hostname of the Domain Controller
Parameters:
- dc_hostname (str) – a hostname or an ip address of the Domain Controller
- dc_priority (int) –
- dc_port (int) –
- dns_resolver (dns.resolver.Resolver, optional) –
- class
django_adtools.discover_dc.DCList(domain: str, role: str = 'dc', record_type: str = 'SRV', nameservers: List[str] = None, port: int = 53)[source]¶List of domain controllers
Parameters:
- domain (str) – A name of a domain to discover, e.g. example.com
- role (str) – A role of server to discover, defaults to dc
- record_type (str) – A type of DNS record to discover, defaults to SRV
- nameservers (list of str) – A list of nameservers, defaults to None (Warning: None does not work in Windows)
- port (int) – A port number used in DNS requests, defaults to 53
get_available_dc_ip() → str[source]¶Returns a hostname of an available domain controller or empty string
Returns: a hostname of an available domain controller or empty string Return type: str
get_dc_list() → List[django_adtools.discover_dc.DCHostname][source]¶Returns a list of domain controllers sorted by priority
Note: this function does not check either a domain controller is available or not
Returns: a list of domain controllers’ host names from DNS request sorted by priority Return type: list of DCHostname
django_adtools.discover_dc.logger= <Logger django_adtools (WARNING)>¶this __package__ logger
django_adtools.discover_dc.re_ip= re.compile('^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$')¶Pattern to match IPv4 addresses
django_adtools/ad_tools.py
Some tools to use
- REQUIREMENTS:
- pip install python-ldap # on linux # on Windows download compiled package for your system from https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap
django_adtools.ad_tools.ad_clear_username(username: str) → str[source]¶Removes domain suffix and prefix from the username
Parameters: username (str) – active directory username Returns: cleared username without domain suffix and prefix Return type: str
django_adtools.ad_tools.ad_login(dc: str, username: str, password: str, domain: str, group: str) → bool[source]¶Returns true if the user can log in and is included in the desired group
Parameters:
- dc (str) – hostname or ip address of a domain controller
- username (str) –
- password (str) –
- domain (str) – a name of domain, e.g. example.com
- group (str) – a name of valid domain group, if an user is in this group, then it can log in
Returns: true if the user can log in and is included in the desired group
Return type: bool
django_adtools.ad_tools.dn_groups(conn: <sphinx.ext.autodoc.importer._MockObject object at 0x7f176e279160>, dn: str, domain: str) → List[str][source]¶Request group names from active directory by user DN
Parameters:
- conn (ldap.ldapobject.SimpleLDAPObject) – established connection to domain controller
- dn (str) – an active directory user DN
- domain (str) – full name of active directory domain
Returns: list of group names whose user with DN is member of (SUCCESS), empty list otherwise
Return type: List[str]
django_adtools.ad_tools.domain_prefix_pattern= re.compile('^[^\\\\]*\\\\')¶patter for domain prefix
django_adtools.ad_tools.domain_suffix_pattern= re.compile('@.*$')¶pattern for domain suffix
django_adtools.ad_tools.ldap_connect(dc: str, username: str, password: str) → LDAP_CONNECTION[source]¶Inits ldap connection, binds to ldap using username and password, returns ldap connection if binding was ok
Parameters:
- dc (str) – an ip address of domain controller
- username (str) – an active directory username
- password (str) – an active directory user password
Returns: ldap connection if binding was ok, None otherwise
Return type: ldap.ldapobject.SimpleLDAPObject
django_adtools.ad_tools.logger= <Logger django_adtools (WARNING)>¶logger for this __package__
django_adtools.ad_tools.user_dn(conn: <sphinx.ext.autodoc.importer._MockObject object at 0x7f176e279128>, username: str, domain: str) → str[source]¶Requests user DN from active directory by username
Parameters:
- conn (ldap.ldapobject.SimpleLDAPObject) – established connection to domain controller
- username (str) – an active directory username
- domain (str) – full name of active directory domain
Returns: distinguished name for username if success, empty string otherwise
Return type: str