Project

General

Profile

Download (1.63 KB) Statistics
| Branch: | Tag: | Revision:
764ef897 Serghei MIHAI
import os
09d398ce Serghei MIHAI
import logging
764ef897 Serghei MIHAI
import json
09d398ce Serghei MIHAI
try:
import ldap
import ldap.modlist
except ImportError:
ldap = None

from django.conf import settings

logger = logging.getLogger(__name__)

764ef897 Serghei MIHAI
def get_idp_list():
318ca21b Serghei MIHAI
idp_list_file = os.path.join(settings.METADATAS_DIR, 'idps.json')
764ef897 Serghei MIHAI
return json.load(file(idp_list_file))

def is_organization_idp(entity_id, organization):
idps = get_idp_list()
for idp in idps:
if entity_id == idp['ENTITY_ID']:
return True
return False

def get_ldap_connection(conf=settings.LDAP_CONF):
09d398ce Serghei MIHAI
conn = ldap.initialize(conf['url'])
for key, value in conf['options']:
conn.set_option(key, value)
764ef897 Serghei MIHAI
try:
conn.whoami_s()
except ldap.SERVER_DOWN:
logger.error('LDAP server down')
return
try:
if 'credentials' in conf:
conn.bind_s(*conf['credentials'])
elif 'bind_dn' in conf:
conn.bind_s(conf['bind_dn'], conf['bind_passwd'])
except ldap.INVALID_CREDENTIALS:
logger.warning('Invalid LDAP credentials')
return
return conn
09d398ce Serghei MIHAI
def create_radius_user(username, password, **kwargs):
764ef897 Serghei MIHAI
connection = get_ldap_connection()
09d398ce Serghei MIHAI
if connection:
008a36de Serghei MIHAI
attrs = {'objectClass': ['radiusprofile', 'radiusObjectProfile'],
09d398ce Serghei MIHAI
'uid': username,
'userPassword': password,
'cn': username}
attrs.update(kwargs)
ldif = ldap.modlist.addModlist(attrs)
dn = 'uid=%s,%s' % (username, settings.LDAP_CONF['dn'])
764ef897 Serghei MIHAI
logger.debug('creating new radius user: %s' % dn)
09d398ce Serghei MIHAI
connection.add_s(dn, ldif)
6a622bf4 Serghei MIHAI
return True
else:
return False