X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FLDAPConnector.py;fp=sql-edition%2Fservers%2FLDAPConnector.py;h=0000000000000000000000000000000000000000;hp=8699fd2ba6f536d39efd434ca534c685bdad87e7;hb=6c130dc942392ccc8b7ffa0ec2ede5f9327f99e6;hpb=e423f11f190d685156cb557319b169d2b79b752f diff --git a/sql-edition/servers/LDAPConnector.py b/sql-edition/servers/LDAPConnector.py deleted file mode 100644 index 8699fd2..0000000 --- a/sql-edition/servers/LDAPConnector.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python2.4 - -import ldap -import ldap.filter - -LDAP_TIMEOUT = 10 - -def get_ldap_connection(): - ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, '/etc/ssl/UCC-CA.crt') - ldap.set_option(ldap.OPT_X_TLS,1) - ldap.set_option(ldap.OPT_X_TLS_ALLOW,1) - #ldap.set_option(ldap.OPT_DEBUG_LEVEL,255) - conn = ldap.initialize('ldaps://mussel.ucc.gu.uwa.edu.au/') - - binddn = 'cn=mifareagent,ou=profile,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au' - passfile = open('/etc/dispense2/ldap.passwd') - password = passfile.readline().strip() - passfile.close() - - conn.simple_bind_s(binddn, password) - return conn - -def get_uid(card_id): - ldapconn = get_ldap_connection() - - basedn = 'ou=People,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au' - filter = ldap.filter.filter_format('(uccDispenseMIFARE=%s)', (card_id, )) - attrs = ('uidNumber',) - - results = ldapconn.search_st(basedn, ldap.SCOPE_SUBTREE, filter, attrs, timeout=LDAP_TIMEOUT) - - ldapconn.unbind() - - if len(results) != 1: - raise ValueError, "no UID found for card ID" - - return results[0][1]['uidNumber'][0] - -def get_uname(uid): - ldapconn = get_ldap_connection() - - basedn = 'ou=People,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au' - filter = ldap.filter.filter_format('(uidNumber=%s)', (uid, )) - attrs = ('uid',) - - results = ldapconn.search_st(basedn, ldap.SCOPE_SUBTREE, filter, attrs, timeout=LDAP_TIMEOUT) - - ldapconn.unbind() - - if len(results) != 1: - raise ValueError, "no username found for user id" - - return results[0][1]['uid'][0] - -def set_card_id(uidNumber, card_id): - ldapconn = get_ldap_connection() - - # fix uidNumber for three/four digit uids - uidNumber = str(int(uidNumber)) - basedn = 'ou=People,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au' - filter = ldap.filter.filter_format('(uidNumber=%s)', (uidNumber, )) - attrs = ('objectClass', ) - - results = ldapconn.search_st(basedn, ldap.SCOPE_SUBTREE, filter, attrs, timeout=LDAP_TIMEOUT) - - if len(results) != 1: - raise "ValueError", 'error in uidNumber' - - user_dn = results[0][0] - - mod_attrs = [] - - # Does it have the correct object class? - if 'uccDispenseAccount' not in results[0][1]['objectClass']: - # Add uccDispenseAccount objectclass - mod_attrs.append((ldap.MOD_ADD, 'objectClass', 'uccDispenseAccount')) - - # Add MIFARE Card ID - mod_attrs.append((ldap.MOD_ADD, 'uccDispenseMIFARE', card_id)) - - # Use a double-try here to work around something that's fixed in Python 2.5 - try: - try: - ldapconn.modify_s(user_dn, mod_attrs) - except ldap.TYPE_OR_VALUE_EXISTS, e: - pass - finally: - ldapconn.unbind() - -if __name__ == '__main__': - set_card_id('11126', '\x01\x02\x03\x04\x05\x06') - print get_uid('\x01\x02\x03\x04\x05\x06')