Source code for pyad.adbase

import sys
import datetime
import time
import types
import xml.dom.minidom as xml

# Since we're depending on ADSI, you have to be on windows...
if sys.platform != 'win32':
    raise Exception("Must be running Windows in order to use pyad.")

try:
    import win32api
    import pywintypes
    import win32com.client
except ImportError:
    raise Exception("pywin32 library required. Download from http://sourceforge.net/projects/pywin32/")

# Import constants and other common elements.
from pyadconstants import *
from pyadexceptions import *

# create connection to ADSI COM object
_adsi_provider = win32com.client.Dispatch('ADsNameSpaces')

# Discover default domain and forest information
__default_domain_obj = _adsi_provider.GetObject('', "LDAP://rootDSE")

# connecting to rootDSE will connect to the domain that the
# current logged-in user belongs to.. which is generally the
# domain under question and therefore becomes the default domain.
_default_detected_forest = __default_domain_obj.Get("rootDomainNamingContext")
_default_detected_domain = __default_domain_obj.Get("defaultNamingContext")


[docs]class ADBase(object): """Base class that is utilized by all objects within package to help store defaults. (search, query, all AD objects)""" DEFAULTS_OPTIONS_MAPPINGS = [ ("default_ldap_server", "server"), ("default_gc_server", "gc_server"), ("default_ldap_port", "port"), ("default_gc_port", "gc_port"), ("default_username", "username"), ("default_password", "password"), ("default_ldap_authentication_flag", "authentication_flag"), ("default_ssl", "ssl") ] default_ssl = False default_ldap_server = None default_gc_server = None default_ldap_port = None default_gc_port = None default_username = None default_password = None default_ldap_protocol = 'LDAP' default_ldap_authentication_flag = 0 # No credentials default_domain = _default_detected_domain default_forest = _default_detected_forest adsi_provider = _adsi_provider def _set_defaults(self, options): for (default, key) in ADBase.DEFAULTS_OPTIONS_MAPPINGS: if key in options: setattr(self, default, options[key]) def _make_options(self): options = dict() for (default, key) in ADBase.DEFAULTS_OPTIONS_MAPPINGS: val = getattr(self, default) if val: options[key] = val return options
def set_defaults(**kwargs): for k, v in kwargs.iteritems(): setattr(ADBase, '_'.join(('default', k)), v)