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) –
dc_ping() → bool[source]

Checks that this domain controller host is available

Returns:True if this domain controller host is available
Return type:bool
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
get_dns_query_string() → str[source]

Creates a dns query string to discover Domain Controllers

Returns:dns query string
Return type:str
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