Пример #1
0
    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"
Пример #2
0
    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"
Пример #3
0
    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"
Пример #4
0
    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"
Пример #5
0
    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"
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
            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
Пример #9
0
    
    
    
    
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