Demo: Alfresco para prevenir fugas de información mediante metadatos

Al hilo de mi artículo anterior sobre crónica y materiales de la Alfresco DevCon 2012. He pensado que igual es buena idea volver a grabar la demo que hice pero esta vez en español, así poder llegar a más gente. Pues bien, aquí está la demo donde muestro la problemática existente cuando no se tiene control de los metadatos en los contenidos he se hacen públicos y como resolver el problema con Alfresco y el modulo de limpieza de metadatos.

También está disponible en inglés junto al resto de conferencias en el canal de Alfresco en Youtube, lista de videos de San José.

Aprovecho para recordar que creé un proyecto en Google Code para recoger todas las soluciones existentes en torno a Alfresco y Seguridad, puedes verlo aquí http://code.google.com/p/alfresco-security-toolkit/ y si quieres colaborar no dudes en contactar conmigo.

Crónica y materiales de la Alfresco DevCon 2012

Si estáis relacionados de alguna forma con Alfresco sabréis que hace unas semanas celebramos la conferencia anual de desarrolladores en Berlín y en San José (EEUU). Este año he tenido la suerte de poder participar en ambas sesiones como voluntario y como ponente. En Berlín hice la charla sobre “Alfresco Security Best Practices” con demo incluida y en San José repetí la de seguridad y también una breve charla de 5 minutos sobre “Monitoring Alfresco with Nagios/Icinga”. Esta última era una charla novedosa para mi ya que se trataba de hablar de un tema durante 5 minutos con 15 segundos por slide con un máximo de 24 slides, una experiencia interesante sin duda, además permitía a mucha gente participar y dar a conocer algo relacionado con Alfresco de forma breve y concisa. Hubo dos sessiones de estas “mini-charlas” llamadas lightning talks en cada DevCon y merecieron mucho la pena.

Durante las conferencias, principalmente técnicas, se mostraron tanto novedades del producto como desarrollos, módulos, personalizaciones y usos novedosos de Alfresco. Fue un éxito de asistencia, contamos con casi 800 asistentes entre ambos eventos.

En la conferencia de cierre tanto en Berlín como en San José, Jeff Potts, nuestro Chief Community Officer, anunció que el año que viene no habrá DevCon tal como la veníamos celebrando en los últimos años, sino que será una conferencia más abierta tanto a usuarios finales como de negocio además de técnicos, de esta forma conseguiremos un evento más plural y que llegará a más gente de diferentes perfiles.

Al haber en algunas ocasiones 3 conferencias a la vez, ere difícil elegir, ya que la calidad de las mismas era bastante elevada. Me gustaría destacar las conferencias en las que estuve y que me gustaron,

Teniendo en cuenta que mi perfil es más de sistemas, no fui a las que eran puramente de desarrollo y personalización pero oí muy buenas críticas de las siguientes:

No dejes pasar la oportunidad, puedes descargar los materiales, presentaciones e incluso código de ejemplo en la web, sección sesiones, entrando a cada una de ellas.

Espero veros el próximo año en el congreso de Alfresco 2013!

Aquí os dejo las presentaciones de mis dos charlas:

Por cierto, en la hackathon que hicimos en la DevCon de San José (dia previo para hacer desarrollos) actualicé la nueva versión del plugin de Nagios para Alfresco, puedes descargarlo aquí.

Video del webinar “Alfresco One, sincronización y mucho más”

En este video mostramos en que consiste esta nueva oferta llamada Alfresco One, las nuevas características de Alfresco y capacidades de sincronización. La demo comienza a partir del minuto 21 (Sincronización con la nube, Alfresco Mobile y Alfresco Desktop Sync). En definitiva, las nuevas tecnologías están cambiando la forma en que las organizaciones trabajan con los contenidos, cómo los comparten, como se realizan los procesos de negocio y como se organizan. Desde la nube a instalaciones de Alfresco en local y la necesidad de acceso a los contenidos desde dispositivos móviles. Aprende como Alfresco resuelve estos problemas para usuarios, departamentos de IT y organizaciones en general.

Alfresco One, sincronización y mucho más from Alfresco Spain Portugal on Vimeo.

[GTranslate]

Instalación de Alfresco con MySQL en Linux desde la linea de comandos

En este artículo os voy a mostrar el procedimiento para instalar Alfresco Enterprise 4.1.1 o Community en un servidor Linux 64bits usando el instalador (bundle) desde la linea de comandos (si no tenemos interfaz gráfica instalada en nuestro servidor), y como hacerlo con MySQL 5.1 en lugar de Postgresql (que viene por defecto en el instalador). Usaré Alfresco Enterprise 4.1.1 pero todos los comandos son igualmente válidos para Community;

Descargar el instalador de Alfresco (Enterprise o Community):

Enterprise de este enlace: http://www.alfresco.com/products/enterprise/trial

Community de este otro: alfresco-community-4.2.b-installer-linux-x64.bin

También descargamos el driver de conexión JDBC con MySQL de este enlace: http://dev.mysql.com/downloads/connector/j/

Creamos un usuario con el que correrá el servidor de aplicaciones (Tomcat), por ejemplo, un usuario llamado “alfresco”:

[bash]
# useradd alfresco
[/bash]

Asignamos una contraseña al usuario alfresco:

[bash]
# passwd alfresco
Changing password for user alfresco.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[/bash]

Antes de seguir, comprueba que tienes correctamente configurado el fichero de hosts del servidor (/etc/hosts), algo así:

[bash]
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.22 servidor.dominio.com servidor
[/bash]

Creamos el directorio donde vas a instalar Alfresco y damos permisos al usuario que acabamos de crear (ponle el nombre y versión si quieres), por ejemplo yo usaré:

[bash]
# mkdir /opt/alfresco-enterprise-4.1.1
# chown alfresco.alfresco /opt/alfresco-enterprise-4.1.1
[/bash]

Accedemos con ese usuario o vamos desde root:

[bash]
# su – alfresco
[/bash]

Tras tener el paquete y el conector con mysql descargados, vamos a empezar la instalación:

Si el paquete no estuviese ejecutable puedes hacerlo con el siguiente comando:

[bash]
$ chmod +x alfresco-*-installer-linux-x64.bin
[/bash]

Ejecutamos el instalador y seguimos los pasos como se indica a continuación, fíjate bien en las opciones que elijo, cambia el nombre de base de datos, usuario y contraseña en tu caso, también ojo a los cambios al usar MySQL:

[bash]
$ ./alfresco-enterprise-4.1.1-installer-linux-x64.bin
Language Selection

Please select the installation language
[1] English – English
[2] French – Français
[3] Spanish – Español
[4] Italian – Italiano
[5] German – Deutsch
[6] Japanese – 日本語
[7] Dutch – Nederlands
[8] Russian – Русский
[9] Simplified Chinese – 简体中文
Please choose an option [1] : 3
—————————————————————————-
Bienvenido a la instalación de Alfresco Enterprise.

—————————————————————————-
Tipo de instalación

[1] Fácil: instala los servidores con la configuración por defecto
[2] Avanzada: Configura las propiedades de servicio y los puertos de servidor.: También puede elegir componentes opcionales para instalar.
Por favor seleccione una opción [1] : 2

—————————————————————————-
Seleccione los componentes que desea instalar; desmarque aquellos que no desea.

Java [Y/n] :Y

PostgreSQL [Y/n] :n

Alfresco : Y (Cannot be edited)

SharePoint [Y/n] :Y

Web Quick Start [y/N] : N

OpenOffice [Y/n] :Y

¿Es correcta la selección que se muestra aqui arriba? [Y/n]: Y

—————————————————————————-
Carpeta de instalación

Por favor, elija una carpeta para instalar Alfresco Enterprise

Seleccionar una carpeta [/home/alfresco/alfresco-4.1.1]: /opt/alfresco-enterprise-4.1.1

—————————————————————————-
Configuración de la base de datos

URL de JDBC: [jdbc:postgresql://localhost/alfresco]: jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8

Controlador JDBC: [org.postgresql.Driver]: org.gjt.mm.mysql.Driver

Nombre de la base de datos: [alfresco]: alfresco

Nombre de usuario: []: alfresco

Contraseña: :
Verificar: :
—————————————————————————-
Configuración de puerto Tomcat

Por favor, introduzca los parámetros de configuración de Tomcat que desea
utilizar.

Dominio de Servidor Web: [127.0.0.1]:

Puerto del servidor Tomcat: [8080]:

Puerto de cierre de Tomcat: [8005]:

Puerto SSL de Tomcat [8443]:

Puerto AJP de Tomcat: [8009]:

—————————————————————————-
Puerto FTP de Alfresco

Por favor, elija un número de puerto para usar para el servidor FTP integrado de
Alfresco.

Puerto: [2121]:

—————————————————————————-
Puerto RMI de Alfresco

Por favor, elija un número de puerto que utilizará Alfresco para ejecutar
comandos remotos.

Puerto: [50500]:

—————————————————————————-
Contraseña de admin

Por favor, especifique una contraseña a utilizar para la cuenta de administrador
de Alfresco.

Contraseña de admin: :
Repita la contraseña: :
—————————————————————————-
Puerto de SharePoint en Alfresco

Por favor, elija un número de puerto para el protocolo SharePoint.

Puerto: [7070]:

—————————————————————————-
Puerto de servidor OpenOffice

Por favor, introduzca el puerto en el que el Servidor de OpenOffice va a
escuchar por defecto.

Puerto de servidor OpenOffice [8100]:

—————————————————————————-
El programa está listo para iniciar la instalación de Alfresco Enterprise en su
ordenador.

¿Desea continuar? [Y/n]: Y

—————————————————————————-
Por favor espere mientras se instala Alfresco Enterprise en su ordenador.

Instalando
0% ______________ 50% ______________ 100%
#########################################

—————————————————————————-
El programa terminó la instalación de Alfresco Enterprise en su ordenador.

Ver el archivo Léeme [Y/n]: n

Lanzar Alfresco Enterprise Share [Y/n]: n
[/bash]

Como ves en el asistente, no arrancamos ya que nos quedan algunas tareas por acometer todavía.

Fijate sobre todo en las líneas:
PostgreSQL [Y/n] :n
URL de JDBC: [jdbc:postgresql://localhost/alfresco]: jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8
Controlador JDBC: [org.postgresql.Driver]: org.gjt.mm.mysql.Driver
Nombre de la base de datos: [alfresco]: alfresco
Nombre de usuario: []: alfresco

Cambia mysql://localhost/alfresco por la IP o nombre del servidor MySQL y alfresco por el nombre de la base de datos.

Copia el jar con el conector JDBC de MySQL al siguiente directorio:

[bash]
$ cp mysql-connector-java-5.1.18-bin.jar /opt/alfresco-enterprise-4.1.1/tomcat/lib/
[/bash]

Antes de arrancar el servidor de aplicaciones, en el servidor MySQL, que ya debería estar instalado y levantado, ya sea en local o en un servidor separado hay que crear la base de datos y dar los permisos:

[bash]
# mysql -u root -p
Enter password:

mysql> create database alfresco;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on alfresco.* to alfresco@localhost identified by ‘alfresco’;
Query OK, 0 rows affected (0.00 sec)
[/bash]

Hecho lo anterior podrías proceder a hacer algunos cambios en la configuración, pero también puedes hacerlo una vez levantado el servidor (e ir reiniciando con cada cambio si usas Community o sin necesidad de reiniciar si usas Enterprise y la consola de administración).

Arrancamos el servidor:

[bash]
$ cd /opt/alfresco-enterprise-4.1.1/
$ ./alfresco.sh start
Using CATALINA_BASE: /opt/alfresco-enterprise-4.1.1/tomcat
Using CATALINA_HOME: /opt/alfresco-enterprise-4.1.1/tomcat
Using CATALINA_TMPDIR: /opt/alfresco-enterprise-4.1.1/tomcat/temp
Using JRE_HOME: /opt/alfresco-enterprise-4.1.1/java
Using CLASSPATH: /opt/alfresco-enterprise-4.1.1/tomcat/bin/bootstrap.jar
Using CATALINA_PID: /opt/alfresco-enterprise-4.1.1/tomcat/temp/catalina.pid
/opt/alfresco-enterprise-4.1.1/tomcat/scripts/ctl.sh : tomcat started
[/bash]

Podemos ver los logs con el siguiente comando:

[bash]
$ tail -f tomcat/logs/catalina.out
[/bash]

Deberíamos ver lineas que nos indican que se va poblando la base de datos, también que se crean los índices de SORL.
Recuerda que verás el siguiente error en el log:

[bash]
ERROR [org.alfresco.fileserver] [CIFS Server] [SMB] Server error
[/bash]

Al iniciar con un usuario no root, Alfresco no puede levantar el subsistema CIFS ya que no puede usar un puerto por debajo del 1024. Para resolverlo (aunque deberás redireccionar los puertos http://docs.alfresco.com/4.0/topic/com.alfresco.enterprise.doc/tasks/fileserv-CIFS-useracc.html) puedes cambiar la configuración de los puertos de CIFS añadiendo los siguientes parámetros en en el fichero de configuración: tomcat/shared/classes/alfresco-global.properties

[bash]
cifs.tcpipSMB.port=1445
cifs.netBIOSSMB.sessionPort=1139
cifs.netBIOSSMB.namePort=1137
cifs.netBIOSSMB.datagramPort=1138
[/bash]

Cuando en el log veas la línea:

[bash]
INFO: Server startup in 104835 ms
[/bash]

Significa que está arrancado y ya puedes acceder a Alfresco Share mediante http://localhost:8080/share o el nombre de servidor que tengas y a Alfresco Explorer con http://localhost:8080/alfresco. Por FTP, recuerda que se usa el puerto 2121 por defecto (si no haces redirección con IPTables). Por Webdav sería con la URL: http://localhost:8080/alfresco/webdav.

Diferencias entre Alfresco Enterprise y Community

He grabado este video comentando las diferencias entre las versiones Enterprise y Community de Alfresco. Sin entrar en detalles muy específicos se puede ver de forma clara y en solo 5 minutos qué podemos encontrar en la versión Enterprise de Alfresco.

ACTUALIZACION – Junio 2014Presentación más actualizada aquí.

Diferencias entre Alfresco Enterprise y Community from Alfresco Spain Portugal on Vimeo.

Screencast sobre Alfresco One, sincronización, movilidad y colaboración.

En este screencast de cinco minutos se puede ver un ejemplo práctico del uso de Alfresco en local, Alfresco Cloud y Alfresco Mobile, como sincronizar contenidos y colaborar con ellos para hacer un trabajo efectivo y rápido. Recuerda que Alfresco One es una oferta, un paquete que contiene varias opciones de Alfresco, pero todas estas funcionalidades y muchas más están disponibles para los clientes de Alfresco gracias a las novedades de Alfresco 4.1.

Para saber más podéis registraros en el webinar que haremos el próximo día 24 de Octubre a las 16h (hora de España peninsular): http://www.alfresco.com/es/eventos/webinars/alfresco-one-sincronizacion-y-mucho-mas

Screencast sobre AlfrescoOne, sincronización, movilidad y colaboración. from Alfresco Spain Portugal on Vimeo.

Video y presentación del webinar “Nuevo Alfresco Records Management 2.0″

Coma ya anuncié en un artículo anterior, hemos hecho un webinar donde presentamos las nuevas aportaciones del módulo de Record Management de Alfresco y como podemos gestionar de una manera fácil y fiable los registros de una organización. Aquí está el video y la presentación utilizados.

Nuevo Alfresco Records Management 2.0 from Alfresco Spain Portugal on Vimeo.

La presentación en Slideshare:

Migrar a Alfresco, estrategia y soluciones

En este mundillo de los ECM y la gestión de contenidos o de la tecnología en general, continuamente nos encontramos con la necesidad de migrar de una plataforma a otra, en el caso de Alfresco es una constante ya que muchas organizaciones quieren reducir costes de licencias desde sistemas antiguos y propietarios por un sistema abierto, moderno y escalable como es Alfresco.

Las preguntas que nos hacen muy a menudo al respecto son: ¿cual es la mejor forma de migrar a Alfresco? ¿qué estrategia debo seguir? ¿qué soluciones hay en el mercado que me aporten garantías? Y sobre todo, ¿que retos tengo que afrontar realmente en una migración y cambio de ECM?

Bien, vamos por partes.

No hay una mejor forma de migrar Alfresco que sirva para todos los casos, hay la mejor forma para tu caso concreto y para identificarla debes saber realmente qué necesitas mantener del repositorio actual en el nuevo, por ejemplo, no es lo mismo migrar solo los contenidos de un repositorio cualquiera a Alfresco que migrar contenidos más ACL, más modelo de datos. Por lo tanto deberemos tener en cuenta:

  • Modelo de datos (tipos, propiedades, relaciones y jerarquías)
  • Categorías y etiquetas
  • Permisos, roles, herencia de permisos, ¿aplicados a carpetas o a contenidos, ambos?
  • Usuarios y grupos, ¿en local, conectados a un LDAP, AD, etc? ¿Se necesita sincronización?
  • Sistemas de autenticación, al hilo del punto anterior pero importante saber si se usa un sistema de SSO externo.
  • APIs utilizadas por aplicaciones que usan el ECM
  • Transformaciones y reglas de contenido actuales (por ejemplo transformación de AFP a PDF si estamos hablando de IBM)
  • Tipos de búsquedas, sintaxis, opciones (rango de fechas, etc.) y estándar usado para las búsquedas.
  • Necesidades de indexación, nombre fichero, metadatos, contenido, necesitarán Full Text Search? (búsqueda en el contenido de los ficheros)
  • Versiones de los documentos, política de versionado, etc.
  • Workflows actuales o sistema utilizado.
  • ¿Existe inyección de contenidos desde scanners? ¿Como se realiza y que nivel de carga/concurrencia tiene?

Dicho lo anterior, nos encontraremos casos sencillos y casos más complejos, por lo que debemos definir una estrategia de migración basada en:

  • Saber que necesitamos migrar y conocer la estructura de datos origen.
  • Definir la estructura de los datos a migrar, modelos, directorios/espacios y seguridad.
  • Conocer necesidades de la interfaz de usuario si se necesita, como campos necesarios o parámetros de búsqueda.

En la estrategia de migración es necesario conocer la obligatoriedad de coexistencia de ambos ECM durante un tiempo determinado. Si se trata de millones de contenidos no podremos migrar en unas pocas jornadas de trabajo por lo que necesitaremos semanas o meses para migrar y será necesario disponer de ambos entornos a la vez para las aplicaciones o usuarios que lo requieran puedan acceder de forma transparente a los contenidos independientemente de donde estén almacenados.

En cuanto a los retos que tendremos que acomenter durante la migración:

  • Mantener las reglas de negocio específicas que implicarán a los datos migrados. Es capital conocer en profundidad el caso o casos de uso del cliente, de sus diferentes usuarios.
  • Planificación y consolidación de los datos a migrar. Deberemos conocer cuando tiempo nos llevará mover los datos de una plataforma a otra, concurrencia, mejores técnicas a utilizar para maximizar el rendimiento y, como decía anteriormente, si deben coexistir ambas a la vez.
  • No solo debemos preocuparnos por migrar los datos y todo lo relacionado con ellos, también deberemos cambiar como se conectan e interactúan las aplicaciones con el ECM.
  • Es recomendable utilizar una herramienta que nos reduzca la complejidad de la migración, que nos permita añadir orígenes de datos de diferentes ECM y volcarlos a Alfresco, evita tareas manuales, seguro que a lo que te enfrentas ya lo ha hecho alguien. Veremos más adelante que opciones hay.
  • En migraciones de grandes cantidades de datos (millones), medio segundo en una tarea repetitiva puede suponer mucho tiempo, minimiza el tiempo y el esfuerzo al máximo, así obtendrás el mejor rendimiento y reducir los tiempos de migración.
  • Monitoriza toda acción que se realice durante la migración, controla los tiempos continuamente y audita en profundidad que todo se está migrando correctamente.
  • Mantén una infraestructura paralela o la original siempre disponible, piensa que una migración puede fallar, pero los contenidos deben estar disponibles. Minimiza el riesgo y el tiempo de respuesta en caso de marcha atrás. Define correctamente las ventanas de intervención basado en pruebas reales.

Soluciones para migrar a Alfresco:
A continuación vemos diferentes aplicaciones de terceros que nos ayudarán en una migración de otros ECM a Alfresco.

¿Y de todas esas soluciones u otras que puedo encontrar en el mercado cual es la mejor?
De las anteriores hay algunas más completas que otras y también con casos de éxito en cuentas importantes que siempre nos aportarán confianza. El nivel de compromiso de la empresa con los fabricantes, partnership, certificado de la herramienta de migración, etc. también es importante. Conocer los data sources soportados soportados, es decir, ECMs e interfaces que soporta cada solución, si aportan soluciones para permitir la coexistencia de los dos ECMs durante la migración, si el coste de la solución es por proyecto o por número de contenidos, si migran sólo contenidos o son capaces de migrar más información como metadatos, versiones, permisos, etc. Como ves, la elección de una solución u otra también será en función de los requisitos del proyecto.

Como opinión personal, la solución que mejor conozco es Entropysoft ya que la campaña “Switch to Alfresco” que se hizo en 2010 fue con su solución e hice un curso con ellos. Incluso grabé un pequeño video que podéis ver más abajo. También conozco casos reales de migración de IBM FileNet a Alfresco usando el Migration Center, OpenMigrate también es muy usado. Si tienes experiencias con estas u otras soluciones no dudes en decirlo en los comentarios.

En algunos casos, cuando un cliente tiene documentos en filesystem y su propia base de datos de metadatos en hojas de cálculo, lo más común es usar la solución embebida en Alfresco llamada Bulk Import Tool. No dudes en echarle un vistazo, seguro que te puede servir en algún caso, además, permite opciones muy interesantes para no tener que mover (cargar) los archivos en Alfresco si se trata de gran cantidad de información, además es muy rápido.

Por último aquí se puede ver un video de ejemplo de migración que hice durante el curso de Entropysoft; es sin audio, pero se puede ver como mapear datos de Sharepoint a Alfresco al hacer la migración:


Migración de datos de MS SharePoint Server a Alfresco con Entropysoft (video resumen sin audio) from Alfresco Spain Portugal on Vimeo.

Algunas ideas usadas en el artículo tomadas de aquí.

Nuevo módulo Alfresco Records Management 2.0

Recientemente se ha anunciado la disponibilidad de Alfresco Records Management 2.0, disponible por ahora para clientes Enterprise. Este módulo es una ampliación de las características de Alfresco para facilitar la gestión de registros, en este caso se ha reescrito el módulo para crear esta nueva implementación que funciona en la versión 4.0 de Alfresco.

RM 2.0 incluye todas las funcionalidades de Alfresco RM 1.0 pero con algunos cambios importantes y mejoras para soportar implementaciones reales de gestión de registros en todo el mundo (no solo válidas para DOD 5015.2). De forma resumida, estas son algunas de las mejoras:

  • Soporte de planes de archivo multi-nivel (multi-level file plans), ya no está limitado a tres niveles como el anterior.
  • Interfaz de usuario mejorada, adaptada a la versión 4 de Alfresco.
  • Posibilidad de guardar búsquedas.
  • Extensibilidad y personalización, ahora es más fácil personalizar el módulo y adaptarlo, igual que se hace con la nueva versión de Alfresco Share 4.
  • Soporte IMAP para añadir registros más fácilmente.

Alfresco RM 2.0 funciona a partir de la versión 4.0.2. Y necesitamos tener Lucene como motor de indexación para poder utilizarlo.

¿Cuando va a soportar SOLR? Desde Alfresco se está trabajando para que la próxima revisión de RM (2.0.1) soporte SOLR, por lo que no será dentro de mucho tiempo.

¿Está disponible para la versión Community? Actualmente no hay disponibilidad del módulo para la versión Community pero el código se publicará con la próxima release de la Community, posiblemente en octubre de este año, así que toca esperar unos meses.

¿Está disponible en español? La versión actual está solamente en inglés pero estamos preparando la traducción al español, esperamos tenerla disponible en unas semanas.

¿Quieres conocer más sobre gestión de registros con Alfresco? ¿Quieres conocer mejor el producto y saber como te puede resolver tus necesidades? Regístrate al próximo webinar que hacemos el 5 de septiembre donde lo contaremos todo:
http://www.alfresco.com/es/about/events/2012/09/rm/

Puedes descargar y probar el RM para Enterprise 4.0.2 desde aquí http://www.alfresco.com/products/enterprise/trial

Interactúa con Alfresco desde la línea de comandos (con curl)

Si eres de los que te sientes más cómodo usando una shell de Linux o Unix que el ratón, creo que este artículo te va a gustar.

Algunas veces necesitamos chequear algún dato concreto o realizar alguna tarea específica en Alfresco. La posibilidad de interactuar con Alfresco desde la línea de comandos (desde una shell) nos permite automatizar algunas tareas mediante scripts o sacarle mucho más partido a la aplicación para hacer diferentes tipos de tareas.

Vamos a ver qué podemos hacer con el comando “curl”. Recuerda que en los siguientes ejemplos donde aparece “localhost” deberás poner la IP o nombre del servidor así como usuario y contraseña, algunos comandos solo funcionan si el usuario tiene permisos de administrador en el repositorio:

Extraer el identificador del repositorio, muy útil para desarrollos o configurar la replicación:

[bash]
curl -u usuario:contraseña "http://localhost:8080/alfresco/s/cmis" | grep repositoryId|perl -pi -e "s/.*>(.*)<.*/\1/"
[/bash]

Subir ficheros usando diferentes protocolos, en estos ejemplos el fichero.doc está en el mismo directorio local desde donde lanzamos el comando:

FTP a un sitio concreto (versión 4.0 que no hay que indicar sites en la URL ya que mapea directamente a sites cualquier acceso FTP):

[bash]
curl -u usuario:contraseña -T fichero.doc "ftp://localhost/Alfresco/nombre-corto-del-sitio/documentLibrary/"
[/bash]

Webdav (HTTP) a un sitio concreto (versión 4.0 que no hay que indicar sites en la URL ya que mapea directamente a sites cualquier acceso webdav):

[bash]
curl -u usuario:contraseña -T fichero.doc "http://localhost:8080/alfresco/webdav/nombre-corto-del-sitio/documentLibrary/"
[/bash]

Subir un fichero atacando a la API (HTTP):

[bash]
curl -v -X POST -F [email protected] -F siteid=nombre-corto-del-sitio -F containerid=documentLibrary -F uploaddirectory=/directorio-dentro-del-sitio http://usuario:contraseña@localhost:8080/alfresco/service/api/upload
[/bash]

Por ejemplo, si queremos crear (subir) unos cuantos contenidos podríamos usar este pequeño script lanzado desde la shell de linux directamente:

[bash]
for i in `seq 1 300`
> do
> echo "uploading file $i"
> touch file$i.txt
> curl -u usuario:contraseña -T file$i.txt "http://localhost:8080/alfresco/webdav/ficheros-personales/documentLibrary/"> done
[/bash]

El script/comando anterior creará en local 300 ficheros txt vacíos con el nombre file1.txt hasta file300.txt y los irá subiendo a Alfresco mediante webdav. También podemos hacerlo mediante la API, por FTP, etc.

En el blog de Cesar Capillas podemos ver otros scripts invocando estos comandos para hacer subidas.

Otra forma de hacer llamadas a Alfresco es mediante los webscripts, incluyendo los webscripts CMIS, podemos ver un listado de todos los disponibles por grupos aquí http://localhost:8080/alfresco/service/index o incluso un listado completo aquí http://localhost:8080/alfresco/service/index/uri/

Para obtener un ticket de sesión podríamos usar el siguiente comando:

[bash]
curl "http://localhost:8080/alfresco/service/api/login?u=usuario&pw=contraseña"|grep ticket|perl -pi -e "s/.*>(.*)<.*/\1/"
[/bash]

Ver el estado de las auditorías (activadas o desactivadas):

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/audit/control"
[/bash]

Ver (si están activadas las auditorías) los logins fallidos:

[bash]
curl -u usuario:contraseña "http://localhost:8080/alfresco/service/api/audit/query/AuditExampleLogin1/auditexamplelogin1/login/error/user?verbose=true"
[/bash]

Ver algunos datos concretos del repositorio:

[bash]
curl -X POST "http://usuario:contraseña@localhost:8080/alfresco/service/api/admin/usage"
{
"lastUpdate" : 1342542164417,
"users" : 6,
"documents" : 545,
"licenseMode" : "ENTERPRISE",
"readOnly" : false,
"updated" : true,
"licenseValidUntil" : null,
"level" : 0,
"warnings": [],
"errors": []
}
[/bash]

Sacar un listado de los sites:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/sites"
[/bash]

Consultar la versión de Alfresco:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/server"
[/bash]

Exportar un sitio con info de miembros, grupos y contenidos (fichero ZIP con varios ACP en su interior):

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/sites/nombre-corto-del-sitio/export" > sitio.zip
[/bash]

Ver todos los tipos mime y transformaciones soportadas por Alfresco:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/mimetypes?mimetype={mimetype?}"
[/bash]

Crear un sitio:

[bash]
curl -u usuario:contraseña -H ‘Content-Type: application/json’ -d "{‘title’:’site$i’,’visibility’:’PUBLIC’,’description’:”,’sitePreset’:’site-dashboard’,’shortName’:’site$i’}" "http://localhost:8080/alfresco/s/api/sites"
[/bash]

Si conoces otros usos útiles con curl no dudes en ponerlos en los comentarios.