def add(self): maxID = str(LdapUtils.getMaxID(self.ldap)) passwd = '{SSHA}' + Utils.encrypt(self.password) name = self.name+" "+self.surname attr = [ ('objectclass', ['top','posixAccount','shadowAccount','person','inetOrgPerson']), ('uid', [self.user]), ('cn', [name.strip()] ), ('employeenumber', [self.nif] ), ('givenName', [self.name] ), ('sn', [self.surname] ), ('uidnumber', [maxID] ), ('gidnumber', [maxID] ), ('loginshell', ['/bin/bash'] ), ('homeDirectory', [LdapUtils.whatHome(self.type) + self.user] ), #('jpegPhoto', ['jpegPhoto'] ), ('userpassword', [passwd]) ] if self.foto is not None: attr.append(('jpegPhoto',[self.foto])) self.ldap.add("uid="+self.user+",ou=People", attr) # Add private group attr = [ ('objectclass', ['top','posixGroup','lisGroup']), ('grouptype', ['private']), ('gidnumber', [maxID] ), ('cn', [self.user] ), ('description', [self.name+' personal group'] ) ] self.ldap.add("cn="+self.user+",ou=Group", attr) # Add selected groups attr = [ (ldap.MOD_ADD, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ), (ldap.MOD_ADD, 'memberUid', [self.user] ) ] if self.departments != ['']: for n in self.departments: self.ldap.modify('cn='+ n +',ou=Group', attr) if self.classrooms != ['']: for n in self.classrooms: self.ldap.modify('cn='+ n +',ou=Group', attr) if self.type=='teacher': self.ldap.modify('cn=teachers,ou=Group', attr) elif self.type=='student': self.ldap.modify('cn=students,ou=Group', attr) elif self.type=='staff': self.ldap.modify('cn=staff,ou=Group', attr) return "OK"
def add(self): maxID = str(LdapUtils.getMaxID(self.ldap)) passwd = '{SSHA}' + Utils.encrypt(self.password) name = self.name + " " + self.surname attr = [ ('objectclass', [ 'top', 'posixAccount', 'shadowAccount', 'person', 'inetOrgPerson' ]), ('uid', [self.user]), ('cn', [name.strip()]), ('employeenumber', [self.nif]), ('givenName', [self.name]), ('sn', [self.surname]), ('uidnumber', [maxID]), ('gidnumber', [maxID]), ('loginshell', ['/bin/bash']), ('homeDirectory', [LdapUtils.whatHome(self.type) + self.user]), #('jpegPhoto', ['jpegPhoto'] ), ('userpassword', [passwd]) ] if self.foto is not None: attr.append(('jpegPhoto', [self.foto])) self.ldap.add("uid=" + self.user + ",ou=People", attr) # Add private group attr = [('objectclass', ['top', 'posixGroup', 'lisGroup']), ('grouptype', ['private']), ('gidnumber', [maxID]), ('cn', [self.user]), ('description', [self.name + ' personal group'])] self.ldap.add("cn=" + self.user + ",ou=Group", attr) # Add selected groups attr = [(ldap.MOD_ADD, 'member', [ 'uid=' + self.user + ',ou=People,dc=instituto,dc=extremadura,dc=es' ]), (ldap.MOD_ADD, 'memberUid', [self.user])] if self.departments != ['']: for n in self.departments: self.ldap.modify('cn=' + n + ',ou=Group', attr) if self.classrooms != ['']: for n in self.classrooms: self.ldap.modify('cn=' + n + ',ou=Group', attr) if self.type == 'teacher': self.ldap.modify('cn=teachers,ou=Group', attr) elif self.type == 'student': self.ldap.modify('cn=students,ou=Group', attr) elif self.type == 'staff': self.ldap.modify('cn=staff,ou=Group', attr) return "OK"
def add(self): maxID = str(LdapUtils.getMaxID(self.ldap)) passwd = "{SSHA}" + Utils.encrypt(self.password) name = self.name + " " + self.surname attr = [ ("objectclass", ["top", "posixAccount", "shadowAccount", "person", "inetOrgPerson"]), ("uid", [self.user]), ("cn", [name.strip()]), ("employeenumber", [self.nif]), ("sn", [name.strip()]), ("uidnumber", [maxID]), ("gidnumber", [maxID]), ("loginshell", ["/bin/bash"]), ("homeDirectory", [LdapUtils.whatHome(self.type) + self.user]), # ('jpegPhoto', ['jpegPhoto'] ), ("userpassword", [passwd]), ] if self.foto is not None: attr.append(("jpegPhoto", [self.foto])) self.ldap.add("uid=" + self.user + ",ou=People", attr) # Add private group attr = [ ("objectclass", ["top", "posixGroup", "lisGroup"]), ("grouptype", ["private"]), ("gidnumber", [maxID]), ("cn", [self.user]), ("description", [self.name + " personal group"]), ] self.ldap.add("cn=" + self.user + ",ou=Group", attr) # Add selected groups attr = [ (ldap.MOD_ADD, "member", ["uid=" + self.user + ",ou=People,dc=instituto,dc=extremadura,dc=es"]), (ldap.MOD_ADD, "memberUid", [self.user]), ] if self.departments != [""]: for n in self.departments: self.ldap.modify("cn=" + n + ",ou=Group", attr) if self.classrooms != [""]: for n in self.classrooms: self.ldap.modify("cn=" + n + ",ou=Group", attr) if self.type == "teacher": self.ldap.modify("cn=teachers,ou=Group", attr) elif self.type == "student": self.ldap.modify("cn=students,ou=Group", attr) return "OK"
def add(self): if self.exists_group_name(): return "OK" if self.name == "staff": maxID = "3100" else: maxID = str(LdapUtils.getMaxID(self.ldap)) if len(self.users) > 0: members = [] for m in self.users.split(','): members.append("uid=" + m + ",ou=People,dc=instituto,dc=extremadura,dc=es") memberuids = self.users.split(',') else: members = [''] memberuids = [''] attr = [ ('objectclass', ['top', 'posixGroup', 'lisGroup', 'lisAclGroup']), ('grouptype', [self.type]), ('gidnumber', [maxID]), ('cn', [self.name]), ('description', [self.name + ' group']), ('memberuid', memberuids), ('member', members), ('agegroup', ['']), ('userpassword', ['']), ] self.ldap.add("cn=" + self.name + ",ou=Group", attr) return "OK"
def add(self): if self.exists_group_name(): return "OK" maxID = str(LdapUtils.getMaxID(self.ldap)) if len(self.users)>0: members = [] for m in self.users.split(','): members.append("uid=" + m + ",ou=People,dc=instituto,dc=extremadura,dc=es") memberuids=self.users.split(',') else: members=[''] memberuids=[''] attr = [ ('objectclass', ['top','posixGroup','lisGroup','lisAclGroup']), ('grouptype', [self.type] ), ('gidnumber', [maxID] ), ('cn', [self.name] ), ('description', [self.name+' department group']), ('memberuid', memberuids), ('member', members) ] self.ldap.add("cn="+self.name+",ou=Group", attr) return "OK"
def gestiona_archivo(self): """Función principal que a partir del archivo hace todo en ldap""" aulas = {} dptos = {} self.esAlumnos = (self.archivo[-4:].lower() == ".zip") if self.esAlumnos: intento = self.unzip_alumnos(self.archivo) if intento != "": print "PROBLEMAS", intento else: usuarios_antiguos = self.lista_antiguos("alumnos") self.parsea_archivo("/tmp/rayuela-ldap/Alumnos.xml", "alumno") aulas = self.lista_grupos(self.usuarios, "grupo") else: usuarios_antiguos = self.lista_antiguos("profesor") self.parsea_archivo(self.archivo, "profesor") dptos = self.lista_grupos(self.usuarios, "departamento", "SIN_DPTO") self.crea_grupos(aulas) self.crea_grupos(dptos) total = self.crea_usuarios() if self.esAlumnos: if self.borrando: LdapUtils.clean_students(self.ldap_con) self.rellena_students() self.usuarios_grupos(aulas) else: if self.borrando: LdapUtils.clean_teachers(self.ldap_con) self.rellena_teachers() self.usuarios_grupos(dptos) if self.borrando: self.borra_antiguos(usuarios_antiguos) return total
def gestiona_archivo(self): """Función principal que a partir del archivo hace todo en ldap""" aulas={} dptos={} self.esAlumnos=(self.archivo[-4:].lower()==".zip") if self.esAlumnos: intento=self.unzip_alumnos(self.archivo) if intento!="": print "PROBLEMAS",intento else: usuarios_antiguos=self.lista_antiguos("alumnos") self.parsea_archivo("/tmp/rayuela-ldap/Alumnos.xml","alumno") aulas=self.lista_grupos(self.usuarios,"grupo") else: usuarios_antiguos=self.lista_antiguos("profesor") self.parsea_archivo(self.archivo,"profesor") dptos=self.lista_grupos(self.usuarios,"departamento","SIN_DPTO") self.crea_grupos(aulas) self.crea_grupos(dptos) total=self.crea_usuarios() if self.esAlumnos: if self.borrando: LdapUtils.clean_students(self.ldap_con ) self.rellena_students() self.usuarios_grupos(aulas) else: if self.borrando: LdapUtils.clean_teachers(self.ldap_con ) self.rellena_teachers() self.usuarios_grupos(dptos) if self.borrando: self.borra_antiguos(usuarios_antiguos) return total
self.borra_antiguos(usuarios_antiguos) return total if __name__ == '__main__': #El código siguiente es sólo para depuración y desarrollo #No tiene sentido fuera de ese contexto import LdapConnection session = Storage() session.server = "ldap" session.username = "******" session.password = "******" ldap_con = LdapConnection.LdapConnection(session) ldap_con.process() try: os.mkdir("/tmp/rayuela-ldap") except: pass #problema de permisos o directorio ya creado archivo = "/opt/instituto/santaeulalia/ExportacionDatosAlumnado.zip" archivo = "/tmp/ExportacionDatosAlumnado.zip" rayuela = Rayuela(ldap_con, archivo, True) todos = rayuela.gestiona_archivo() LdapUtils.sanea_grupos(ldap_con) print todos
if __name__ == '__main__': #El código siguiente es sólo para depuración y desarrollo #No tiene sentido fuera de ese contexto import LdapConnection session=Storage() session.server="ldap" session.username="******" session.password="******" ldap_con = LdapConnection.LdapConnection(session) ldap_con.process() try: os.mkdir( "/tmp/rayuela-ldap") except: pass #problema de permisos o directorio ya creado archivo="/opt/instituto/santaeulalia/ExportacionDatosAlumnado.zip" archivo="/tmp/ExportacionDatosAlumnado.zip" rayuela=Rayuela(ldap_con,archivo,True) todos=rayuela.gestiona_archivo() LdapUtils.sanea_grupos(ldap_con) print todos