in asfpy/ldapadmin.py [0:0]
def __init__(self, user, password, host=LDAP_SANDBOX):
# Verify correct user ID syntax, construct DN
if not re.match(r"^[-_a-z0-9]+$", user):
raise ConnectionException("Invalid characters in User ID. Must be alphanumerical or dashes only.")
# Init LDAP connection
lc = ldap.initialize(host)
lc.set_option(ldap.OPT_REFERRALS, 0)
lc.set_option(ldap.OPT_TIMEOUT, 5)
# Attempt to bind with user and pass provided
try:
lc.simple_bind_s(LDAP_DN % user, password)
except ldap.INVALID_CREDENTIALS:
raise ConnectionException("Invalid username or password supplied!")
except ldap.TIMEOUT:
raise ConnectionException(BACKEND_TIMEOUT)
# So far so good, set uid
self.uid = user
self.dn = LDAP_DN % user
self.lc = lc
# Get full name etc
try:
res = lc.search_s(LDAP_DN % user, ldap.SCOPE_BASE)
assert(len(res) == 1)
assert(len(res[0]) == 2)
fn = res[0][1].get('cn')
assert(type(fn) is list and len(fn) == 1)
self.fullname = str(fn[0], 'utf-8')
self.email = '%s@apache.org' % user
except ldap.TIMEOUT:
raise ConnectionException(BACKEND_TIMEOUT)
except AssertionError:
raise ConnectionException(ASSERTION_FAILED)
# Get apldap status
try:
res = lc.search_s(LDAP_APLDAP_BASE, ldap.SCOPE_BASE)
assert(len(res) == 1)
assert(len(res[0]) == 2)
members = res[0][1].get('member')
assert(type(members) is list and len(members) > 0)
self.isAdmin = bytes(LDAP_DN % user, 'utf-8') in members
except ldap.TIMEOUT:
raise ConnectionException(BACKEND_TIMEOUT)
except AssertionError:
raise ConnectionException(ASSERTION_FAILED)