Index: fotos-ldap/trunk/fotostoldap/LICENSE
===================================================================
--- fotos-ldap/trunk/fotostoldap/LICENSE	(nonexistent)
+++ fotos-ldap/trunk/fotostoldap/LICENSE	(revision 30)
@@ -0,0 +1,12 @@
+License
+
+fotostoldap is free software; you can redistribute it and/or modify 
+it under the terms of the GNU General Public License as published 
+by the Free Software Foundation; either version 3, or (at your option) 
+any later version.
+
+fotostoldap is distributed in the hope that it will be useful, 
+but WITHOUT ANY WARRANTY; without even the implied warranty of 
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+
+See the GNU General Public License for more details. 
Index: fotos-ldap/trunk/fotostoldap/fotostoldap.list
===================================================================
--- fotos-ldap/trunk/fotostoldap/fotostoldap.list	(nonexistent)
+++ fotos-ldap/trunk/fotostoldap/fotostoldap.list	(revision 30)
@@ -0,0 +1,15 @@
+%product fotostoldap
+%copyright 2010 by Esteban M. Navas
+%vendor Esteban M. Navas
+%description Incorpora a cada usuario de ldap su foto, si se encuentra disponible.
+%version 0.3
+%readme README
+%license LICENSE
+%requires perl
+%requires libnet-ldap-perl
+%requires libarchive-zip-perl
+%requires perlmagick
+%replaces fotostoldap
+
+f 755 root root /usr/bin/fotostoldap fotostoldap
+
Index: fotos-ldap/trunk/fotostoldap/README
===================================================================
--- fotos-ldap/trunk/fotostoldap/README	(nonexistent)
+++ fotos-ldap/trunk/fotostoldap/README	(revision 30)
@@ -0,0 +1,48 @@
+WHAT IS FOTOSTOLDAP?
+
+fotostoldap es un script perl que comprueba qué usuarios no tienen foto 
+en ldap e inserta dicha foto desde el fichero de exportación de alumnos 
+obtenido de Rayuela, si se encuentra disponible.
+
+El atribujo jpegPhoto de ldap sirve para almacenar una o varias 
+imágenes de un usuario usando el formato JPEG File Interchange Format [JFIF].
+El tamaño límite de este atributo es de 250000 bytes. No obstante, se 
+debería guardar lo más pequeño que sea posible, puesto que el tamaño puede influir 
+en el rendimiento. Por este motivo, en la versión 0.3 incorporamos el 
+ajuste de tamaño.
+
+CHANGELOG
+
+* fotostoldap-0.2 -- Versión inicial.
+
+* fotostoldap-0.3 -- Esta versión convierte la foto del alumno a .jpg y 
+la redimensiona a 80x80 pixeles.
+
+
+REQUIREMENTS.
+
+Requiere tener instalados los siguientes paquetes:
+* perl.
+* libnet-ldap-perl.
+* libarchive-zip-perl.
+* perlmagick.
+
+HOW DO I USE FOTOSTOLDAP?
+
+Uso: fotostoldap <path archivo Exportacion Datos Alumnado>
+
+
+COPYRIGHT AND LICENSE INFO
+
+    fotostoldap is Copyright 2010 by Esteban M Navas Martín, All Rights Reserved.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+ 
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
Index: fotos-ldap/trunk/fotostoldap/fotostoldap
===================================================================
--- fotos-ldap/trunk/fotostoldap/fotostoldap	(nonexistent)
+++ fotos-ldap/trunk/fotostoldap/fotostoldap	(revision 30)
@@ -0,0 +1,123 @@
+#!/usr/bin/perl
+#
+# Programa perl para subir las fotos de los alumnos al servidor ldap del centro
+# Toma como parámetro el fichero de exportación de datos de alumnado.
+# Sube a ldap las fotos que se encuentran en el fichero de exportación de datos 
+# de aquellos alumnos que no tengan foto en ldap.
+#
+# Esteban M. Navas
+# IES Valle del Jerte
+# Fecha creación: 30/09/2010
+# Fecha última modificación: 05/11/2010
+
+# Requisito: Instalar los módulos de perl libnet-ldap-perl, 
+# libarchive-zip-perl y perlmagick
+
+use Archive::Extract;
+use Net::LDAP;
+use Image::Magick;
+
+# Declaramos las funciones
+sub trim($);
+
+my $ldapserver = "ldap";
+my $archivo;
+
+if ($#ARGV != 0) {
+   print "Uso: fotostoldap <Path Archivo Exportacion Datos Alumnado.zip>\n\n";
+   print "Ejemplo: fotostoldap ExportacionDatosAlumnado.zip\n";
+   exit;
+} 
+
+if ( -e $ARGV[0] ) {
+   $archivo = $ARGV[0];
+}
+else {
+   print "El archivo $ARGV[0] no existe\n";
+   exit;
+}
+
+print "Descomprimiendo $archivo...\n";
+
+my $ae = Archive::Extract->new(archive => $archivo);
+my $ok = $ae->extract( to => '/tmp' ) or die $ae->error;
+my $outdir  = $ae->extract_path;
+my $files  = $ae->files;
+
+print "$archivo descomprimido en $outdir\n\n";
+
+print "Introduce la contraseña del administrador de ldap: ";
+system "stty -echo"; # disable echo
+chomp (my $pass = <STDIN>);
+system "stty echo"; # enable echo 
+
+$ldap = Net::LDAP->new("$ldapserver") or die "$@";
+
+# Abrimos una conexión
+$ldap->bind("cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es", password=>$pass);
+
+# Obtenemos la lista de usuarios sin foto
+$mesg = $ldap->search(filter=>"(&(objectClass=inetOrgPerson)(!(jpegPhoto=*)))", base=>"ou=People,dc=instituto,dc=extremadura,dc=es");
+@entries = $mesg->entries;
+
+# Procesamos cada usuario sin foto
+foreach $entry (@entries) {
+   my $employeeNumber = $entry->get_value(employeeNumber);
+   my $cn = $entry->get_value(cn);
+
+   # Obtenemos el nombre del fichero
+   my $fichero = qx{ls $outdir | grep -iE '^$employeeNumber.[a-z]{3}'};
+
+   # Importante: Quitar los espacios que nos da la salida del qx{}
+   $fichero = trim($fichero);
+
+   # Si hay una foto para el alumno ...
+   if ( $fichero ) {
+      my $tmp; 
+      my $photo;
+
+      my $imagen = $outdir . "/" . $fichero;
+
+      # Cambiamos el tamaño y el formato de la imagen
+      my $nuevaimagen = Image::Magick->new;
+
+      $nuevaimagen->Read( filename => $imagen );
+      $nuevaimagen->Set( Gravity => 'Center' );
+      $nuevaimagen->Resize( geometry => '80x80' );
+      $nuevaimagen->Extent( geometry => '80x80' );
+
+      my $imagenretocada = $outdir . "/" . $employeeNumber . ".jpg";
+
+      $nuevaimagen->Write( "$imagenretocada" );
+
+      open(FILE, "$imagenretocada");
+      binmode(FILE);
+      $photo .= $tmp while (sysread FILE, $tmp, 1024); 
+      close(FILE);
+
+      $mesg = $ldap->modify($entry->dn(), add => {'jpegPhoto'=>$photo});
+
+      print "Foto $imagenretocada añadida a $cn\n";
+	  
+      # Borramos la image retocada
+      unlink $imagenretocada;
+   }
+}
+
+# Cerramos la conexión
+$ldap->unbind;
+
+# Borramos los archivos extraidos en el directorio $outdir
+foreach $file (@$files) {
+    unlink "$outdir/$file";
+}
+
+print "Proceso concluido.\n\n";
+
+sub trim($) 
+{
+   my $string = shift;
+   $string =~ s/^\s+//;
+   $string =~ s/\s+$//;
+   return $string;
+}

Property changes on: fotos-ldap/trunk/fotostoldap/fotostoldap
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: fotos-ldap/trunk/updatefotosldap/updatefotosldap.list
===================================================================
--- fotos-ldap/trunk/updatefotosldap/updatefotosldap.list	(nonexistent)
+++ fotos-ldap/trunk/updatefotosldap/updatefotosldap.list	(revision 30)
@@ -0,0 +1,15 @@
+%product updatefotosldap
+%copyright 2010 by Esteban M. Navas
+%vendor Esteban M. Navas
+%description Incorpora a cada usuario de ldap su foto desde el fichero ExportacionDatosAlumnado.zip, si se encuentra disponible.
+%version 0.1
+%readme README
+%license LICENSE
+%requires perl
+%requires libnet-ldap-perl
+%requires libarchive-zip-perl
+%requires perlmagick
+%replaces updatefotosldap
+
+f 755 root root /usr/bin/updatefotosldap updatefotosldap
+
Index: fotos-ldap/trunk/updatefotosldap/README
===================================================================
--- fotos-ldap/trunk/updatefotosldap/README	(nonexistent)
+++ fotos-ldap/trunk/updatefotosldap/README	(revision 30)
@@ -0,0 +1,46 @@
+WHAT IS UPDATEFOTOSLDAP?
+
+updatefotosldap es un script perl que cambia las fotos de los alumnos 
+en ldap por las que se encuentran en el fichero ExportacionDatosAlumnado.zip,
+ajustando su tamaño a 80x80 px y modificando el formato a .jpg
+
+El atribujo jpegPhoto de ldap sirve para almacenar una o varias 
+imágenes de un usuario usando el formato JPEG File Interchange Format [JFIF].
+El tamaño límite de este atributo es de 250000 bytes. No obstante, se 
+debería guardar lo más pequeño que sea posible, puesto que el tamaño puede influir 
+en el rendimiento. Por este motivo, en la versión 0.3 incorporamos el 
+ajuste de tamaño.
+
+CHANGELOG
+
+* updatefotosldap-0.1 -- Versión inicial. Convierte la foto del alumno a .jpg y 
+la redimensiona a 80x80 pixeles.
+
+
+REQUIREMENTS.
+
+Requiere tener instalados los siguientes paquetes:
+* perl.
+* libnet-ldap-perl.
+* libarchive-zip-perl.
+* perlmagick.
+
+HOW DO I USE UPDATEFOTOSLDAP?
+
+Uso: updatefotosldap <path archivo Exportacion Datos Alumnado>
+
+
+COPYRIGHT AND LICENSE INFO
+
+    updatefotosldap is Copyright 2010 by Esteban M Navas Martín, All Rights Reserved.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+ 
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
Index: fotos-ldap/trunk/updatefotosldap/updatefotosldap
===================================================================
--- fotos-ldap/trunk/updatefotosldap/updatefotosldap	(nonexistent)
+++ fotos-ldap/trunk/updatefotosldap/updatefotosldap	(revision 30)
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+#
+# Programa perl para subir y/o actualizar las fotos de los alumnos en servidor ldap del centro.
+# Toma como parámetro el fichero de exportación de datos de alumnado.
+# Actualiza las fotos de los alumnos en el servidor de ldap desde el fichero ExportacionDatosAlumnado.zip  
+# 
+#
+# Esteban M. Navas
+# IES Valle del Jerte
+# Fecha creación: 09/11/2010
+# Fecha última modificación: 12/11/2010
+
+# Requisito: Instalar los módulos de perl libnet-ldap-perl, 
+# libarchive-zip-perl y perlmagick
+
+use Archive::Extract;
+use Net::LDAP;
+use Image::Magick;
+
+# Declaramos las funciones
+sub trim($);
+
+my $ldapserver = "ldap";
+my $archivo;
+
+if ($#ARGV != 0) {
+   print "Uso: updatefotosldap <Path Archivo Exportacion Datos Alumnado.zip>\n\n";
+   print "Ejemplo: updatefotosldap ExportacionDatosAlumnado.zip\n";
+   exit;
+} 
+
+if ( -e $ARGV[0] ) {
+   $archivo = $ARGV[0];
+}
+else {
+   print "El archivo $ARGV[0] no existe\n";
+   exit;
+}
+
+print "Descomprimiendo $archivo...\n";
+
+my $ae = Archive::Extract->new(archive => $archivo);
+my $ok = $ae->extract( to => '/tmp' ) or die $ae->error;
+my $outdir  = $ae->extract_path;
+my $files  = $ae->files;
+
+print "$archivo descomprimido en $outdir\n\n";
+
+print "Introduce la contraseña del administrador de ldap: ";
+system "stty -echo"; # disable echo
+chomp (my $pass = <STDIN>);
+system "stty echo"; # enable echo 
+
+$ldap = Net::LDAP->new("$ldapserver") or die "$@";
+
+# Abrimos una conexión
+$ldap->bind("cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es", password=>$pass);
+
+# Obtenemos la lista de usuarios 
+$mesg = $ldap->search(filter=>"(&(objectClass=inetOrgPerson))", base=>"ou=People,dc=instituto,dc=extremadura,dc=es");
+@entries = $mesg->entries;
+
+# Procesamos cada usuario 
+foreach $entry (@entries) {
+   my $employeeNumber = $entry->get_value(employeeNumber);
+   my $cn = $entry->get_value(cn);
+
+   # Obtenemos el nombre del fichero
+   my $fichero = qx{ls $outdir | grep -iE '^$employeeNumber.[a-z]{3}'};
+
+   # Importante: Quitar los espacios que nos da la salida del qx{}
+   $fichero = trim($fichero);
+
+   # Si hay una foto para el alumno ...
+   if ( $fichero ) {
+      my $tmp; 
+      my $photo;
+
+      # Y si el alumno tiene foto en el servidor ldap...
+      if ( $entry->get_value( jpegPhoto ) ne '') {
+         # ...la borramos de allí
+         $mesg = $ldap->modify($entry->dn(), replace => {'jpegPhoto' => ''});
+      }
+
+      my $imagen = $outdir . "/" . $fichero;
+
+      # Cambiamos el tamaño y el formato de la imagen
+      my $nuevaimagen = Image::Magick->new;
+
+      $nuevaimagen->Read( filename => $imagen );
+      $nuevaimagen->Set( Gravity => 'Center' );
+      $nuevaimagen->Resize( geometry => '80x80' );
+      $nuevaimagen->Extent( geometry => '80x80' );
+
+      my $imagenretocada = $outdir . "/" . $employeeNumber . ".jpg";
+
+      $nuevaimagen->Write( "$imagenretocada" );
+
+      open(FILE, "$imagenretocada");
+      binmode(FILE);
+      $photo .= $tmp while (sysread FILE, $tmp, 1024); 
+      close(FILE);
+
+      $mesg = $ldap->modify($entry->dn(), replace => {'jpegPhoto'=>$photo});
+
+      print "Foto $imagenretocada de $cn actualizada.\n";
+	  
+      # Borramos la image retocada
+      unlink $imagenretocada;
+   }
+}
+
+# Cerramos la conexión
+$ldap->unbind;
+
+# Borramos los archivos extraidos en el directorio $outdir
+foreach $file (@$files) {
+    unlink "$outdir/$file";
+}
+
+print "Proceso concluido.\n\n";
+
+sub trim($) 
+{
+   my $string = shift;
+   $string =~ s/^\s+//;
+   $string =~ s/\s+$//;
+   return $string;
+}

Property changes on: fotos-ldap/trunk/updatefotosldap/updatefotosldap
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: fotos-ldap/trunk/updatefotosldap/LICENSE
===================================================================
--- fotos-ldap/trunk/updatefotosldap/LICENSE	(nonexistent)
+++ fotos-ldap/trunk/updatefotosldap/LICENSE	(revision 30)
@@ -0,0 +1,12 @@
+License
+
+updatefotosldap is free software; you can redistribute it and/or modify 
+it under the terms of the GNU General Public License as published 
+by the Free Software Foundation; either version 3, or (at your option) 
+any later version.
+
+updatefotosldap is distributed in the hope that it will be useful, 
+but WITHOUT ANY WARRANTY; without even the implied warranty of 
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+
+See the GNU General Public License for more details. 
