<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/">
  <title>zylk.net</title>
  <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0" />
  <subtitle>zylk.net</subtitle>
  <entry>
    <title>Alfresco Share online edition addon in googlecode</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201738" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201738</id>
    <updated>2013-05-18T13:03:35Z</updated>
    <published>2013-05-18T13:03:21Z</published>
    <summary type="html">&lt;p&gt;
	Alfresco Share online edition addon now available for downloading in googlecode.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://code.google.com/p/alfresco-share-online-edition-addon/" target="_blank"&gt;http://code.google.com/p/alfresco-share-online-edition-addon/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	A video demo of the addon (it works with LibreOffice &amp;amp;&amp;amp; MS Office).&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/dd9mT5WbCyk" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-05-18T13:03:21Z</dc:date>
  </entry>
  <entry>
    <title>Como darle uso a tu viejo android</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201425" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201425</id>
    <updated>2013-05-13T09:24:29Z</updated>
    <published>2013-05-12T20:49:47Z</published>
    <summary type="html">&lt;p style="text-align: justify;"&gt;
	El caso es que conforme a que Android asegura su posici&amp;oacute;n dominante como sistema operativo de dispositivos moviles y tablets, es cada vez m&amp;aacute;s com&amp;uacute;n tener tirado por casa un m&amp;oacute;vil viejo de recambio que puede ser utilizado para m&amp;uacute;ltiples usos. Y es que con un dispositivo android tenemos un potencial servidor, y si no mirad la aplicaci&amp;oacute;n &lt;a href="https://play.google.com/store/apps/details?id=com.icecoldapps.serversultimate&amp;amp;hl=es" target="_blank"&gt;Servers Ultimate en Google Play.&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=3dfe1fc8-2835-419e-a0b9-b216e8af75a3&amp;amp;groupId=10102&amp;amp;t=1368392166764" style="width: 512px; height: 320px;" /&gt;&lt;br /&gt;
	&lt;br /&gt;
	El art&amp;iacute;culo de hoy se aleja un poco de los posts habituales sobre Liferay, Alfresco, Nuxeo, o Sinadura que tratamos en el blog de zylk, y trata de como utilizar un dispositivo android como un punto de control UPnP/DLNA para el equipo hifi de casa, en mi caso en una habitaci&amp;oacute;n diferente a la de mi ordenador personal.&lt;br /&gt;
	&lt;br /&gt;
	Para ello disponemos de un ordenador de sobremesa con ubuntu que har&amp;aacute; de servidor de medios, y en cuyo disco dispongo de mi m&amp;uacute;sica en formato digital. Lo primero que necesito es un servidor de DLNA, y en ubuntu tenemos una opci&amp;oacute;n muy sencilla con minidlna o mediatomb, que se pueden instalar y configurar via apt-get o aptitude.&lt;/p&gt;
&lt;ul&gt;
	&lt;li style="text-align: justify;"&gt;
		&lt;a href="http://sourceforge.net/projects/minidlna/" target="_blank"&gt;http://sourceforge.net/projects/minidlna/&lt;/a&gt;&lt;/li&gt;
	&lt;li style="text-align: justify;"&gt;
		&lt;a href="http://mediatomb.cc/" target="_blank"&gt;http://mediatomb.cc/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;
	Adem&amp;aacute;s es posible que tengas un DLNA server sin saberlo, por ejemplo, en tu router de Vodafone. El caso es que un servidor DLNA, es muy interesante como servidor de medios, puesto que podemos conectar nuestra Smart TV o nuestro reproductor multimedia en red y consumir videos o m&amp;uacute;sica desde all&amp;iacute;.&lt;br /&gt;
	&lt;br /&gt;
	Pero en caso de hoy, voy a hablar de como utilizar un programa para Android que permite consumir estos servidores UPnp/DLNA, y que se llama BubbleUPnP. Para utilizarlo necesitamos tambi&amp;eacute;n un &lt;a href="http://www.bubblesoftapps.com/bubbleupnpserver" target="_blank"&gt;BubbleUPnp Server&lt;/a&gt;, un servidor java que se instalara tambi&amp;eacute;n en el ordenador de sobremesa y que permitir&amp;aacute; envolver los diferentes or&amp;iacute;genes UPnP que tenemos en la red.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=9e358b54-5c19-4648-bd29-e394b4eac271&amp;amp;groupId=10102&amp;amp;t=1368392176748" style="width: 640px; height: 167px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=de2c3c43-8a25-4131-b7f1-613c050cf6c0&amp;amp;groupId=10102&amp;amp;t=1368392186356" style="width: 640px; height: 183px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	Lo bonito del tema, es que una vez conectado tu m&amp;oacute;vil viejo android con la aplicaci&amp;oacute;n BubbleUPnP, a tu equipo hifi, no s&amp;oacute;lo vas a poder hacer streaming de audio desde el m&amp;oacute;vil dedicado, sino que vas a poder programar, ejecutar y renderizar una lista de m&amp;uacute;sica desde tu m&amp;oacute;vil actual o desde una tablet, utilizando las diferentes librer&amp;iacute;as de los or&amp;iacute;genes DLNA configurados&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=d4e487b5-6019-418b-8a01-c991f9b72486&amp;amp;groupId=10102&amp;amp;t=1368392193843" style="width: 350px; height: 583px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	Edito un peque&amp;ntilde;o esquema:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=57fe4e6c-fb3f-4d4c-8920-68f24729f5dc&amp;amp;groupId=10102&amp;amp;t=1368437025447" style="width: 640px; height: 480px;" /&gt;&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-05-12T20:49:47Z</dc:date>
  </entry>
  <entry>
    <title>Crear un accceso directo a Sinadura Desktop en unity</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201372" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201372</id>
    <updated>2013-05-10T14:38:09Z</updated>
    <published>2013-05-10T14:10:33Z</published>
    <summary type="html">&lt;p&gt;
	Ya llevo un tiempo intentando usar &lt;a href="http://unity.ubuntu.com/" target="_blank"&gt;unity&lt;/a&gt; como gestor de ventanas de mi &lt;a href="http://releases.ubuntu.com/precise/" target="_blank"&gt;ubuntu 12.04&lt;/a&gt;, los problemas de rendimiento y de madurez de unity están ahí... pero creo que en un par de versiones se solucionarán y me acostumbraré a usar unity. Una cosa que me ha resultado interesante es poder añadir al buscador rápido de aplicaciones (tecla windows del teclado) las aplicaciones que se instalan sin ser paquetes de la distribución. Para ello basta con crear el siguiente fichero &lt;strong&gt;sinadura.desktop&lt;/strong&gt; en la siguiente localización &lt;strong&gt;/home/gus/.local/share/applications&lt;/strong&gt; con el siguiente contenido:&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	[Desktop Entry]&lt;br /&gt;
	Type=Application&lt;br /&gt;
	Name=Sinadura-Desktop&lt;br /&gt;
	Comment=Sign files with smartcard&lt;br /&gt;
	Icon=/home/gus/sinadura/resources/images/sinadura.ico&lt;br /&gt;
	Exec=/home/gus/sinadura/bin/sinadura.sh&lt;br /&gt;
	Terminal=false&lt;br /&gt;
	Categories=Development;Sign;Office&lt;/p&gt;
&lt;p&gt;
	Adaptando los paths a path de instalación. Una vez creado el fichero ya se puede buscar la aplicación escribiendo sindura en el lanzador de aplicaciones y se puede dejar fijo en el lanzador rápido. También.&lt;/p&gt;
&lt;p&gt;
	Una imagen de como queda la cosa ....&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.zylk.net/image/image_gallery?uuid=66b07e6e-4420-4d2e-8986-3c22370ea88e&amp;amp;groupId=10102&amp;amp;t=1368196576460"&gt;&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=66b07e6e-4420-4d2e-8986-3c22370ea88e&amp;amp;groupId=10102&amp;amp;t=1368196576460" style="width: 640px; height: 122px;" /&gt;&lt;/a&gt;&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-05-10T14:10:33Z</dc:date>
  </entry>
  <entry>
    <title>Digital signature actions for Alfresco Share</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201201" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=201201</id>
    <updated>2013-05-06T15:31:22Z</updated>
    <published>2013-05-06T15:23:19Z</published>
    <summary type="html">&lt;p&gt;
	I post here two demo videos of the digital signature components for Alfresco Share.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Digital signature action in Alfresco ECM via applet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/9l-3A2_cjkk" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Validate digital signatures in Alfresco ECM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/Q0EHIu8BM98" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	More information in &lt;a href="http://www.zylk.net/es/web/guest/alfresco-form" target="_blank"&gt;alfresco form.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Related links:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://www.zylk.net/es/web/guest/web-2-0/blog/-/blogs/alfresco-ecm-working-as-a-simple-digital-signing-service" target="_blank"&gt;http://www.zylk.net/es/web/guest/web-2-0/blog/-/blogs/alfresco-ecm-working-as-a-simple-digital-signing-service&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.zylk.net/es/web/guest/web-2-0/blog/-/blogs/sinadura-ecm-demo-videos" target="_blank"&gt;http://www.zylk.net/es/web/guest/web-2-0/blog/-/blogs/sinadura-ecm-demo-videos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-05-06T15:23:19Z</dc:date>
  </entry>
  <entry>
    <title>Sinadura ECM demo videos</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=200866" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=200866</id>
    <updated>2013-04-29T16:09:46Z</updated>
    <published>2013-04-29T11:25:48Z</published>
    <summary type="html">&lt;p&gt;
	Here there are some demo videos of &lt;strong&gt;sinadura ECM&lt;/strong&gt;, our &lt;a href="http://www.sinadura.net/es/products-and-services/sinadura-desktop-ee/" target="_blank"&gt;digital signature client for Alfresco ECM&lt;/a&gt;. Sinadura ECM is a java desktop application that provides a simple integration (browse Alfresco repository, download files from Alfresco repository, multiple upload to Alfresco repository, update and search PDFs...) with Alfresco ECM.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Sinadura ECM download, sign and update in Alfresco&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/mKURv157bv0" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Sinadura ECM multiple sign and upload in Alfresco&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/nCPswTVWg0Y" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Configuring Sinadura ECM connector for Alfresco:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/51ZB2r8TXtM" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Sinadura ECM search, view properties, download, sign and update in Alfresco :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/2x-uxnLl4lk" width="420"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	Do not hesitate to contact us via &lt;a href="http://www.sinadura.net/en/contact-us" target="_blank"&gt;the following form&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;More information (screenshots and videos):&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://addons.alfresco.com/addons/sinadura-pdf-digital-signature-client-alfresco-ecm" target="_blank"&gt;http://addons.alfresco.com/addons/sinadura-pdf-digital-signature-client-alfresco-ecm&lt;/a&gt;&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-04-29T11:25:48Z</dc:date>
  </entry>
  <entry>
    <title>Dashboards para cianoplan basados en pentaho BI server</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=199146" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=199146</id>
    <updated>2013-03-25T11:02:45Z</updated>
    <published>2013-03-25T11:02:18Z</published>
    <summary type="html">&lt;p&gt;
	Durante el mes de febrero un equipo mixto de &lt;a href="http://www.zylk.net/es/web/guest" target="_blank"&gt;Zylk.net&lt;/a&gt;. y la empresa &lt;a href="http://www.cianoplan.es/" target="_blank"&gt;Cianoplan&lt;/a&gt; ha estado desarrollando/implantando una soluci&amp;oacute;n BI basada en el proyecto &lt;a href="http://www.pentaho.com/" target="_blank"&gt;Pentaho&lt;/a&gt;.&lt;br /&gt;
	El equipo estaba compuesto por Pablo Perez y Esther Barriocanal de Cianoplan, y por Gustavo Fern&amp;aacute;ndez e Irune Prado de Zylk.net.&lt;br /&gt;
	&lt;br /&gt;
	El objetivo del proyecto era instalar la herramienta y dotar al equipo de Cianoplan de la autonom&amp;iacute;a suficiente para poder crear reports y modificar los desarrollos realizados.&lt;br /&gt;
	En este caso el proyecto se orienta en crear &lt;a href="http://www.youtube.com/watch?v=E91Ch7LDXWg" target="_blank"&gt;unos dashboards&lt;/a&gt; a modo de cuadro de mando, para representar visualmente las ventas por diferentes dimensiones, as&amp;iacute; como &lt;a href="http://reporting.pentaho.com/" target="_blank"&gt;unos reports&lt;/a&gt; y un &lt;a href="http://mondrian.pentaho.com/documentation/olap.php" target="_blank"&gt;cubo olap&lt;/a&gt; con la herramienta &lt;a href="http://analytical-labs.com/" target="_blank"&gt;siguiente&lt;/a&gt;.&lt;br /&gt;
	&lt;br /&gt;
	Para comenzar con todo esto, se desarroll&amp;oacute; un proceso de transformaci&amp;oacute;n de datos o &lt;a href="http://www.pentaho.com/explore/pentaho-data-integration/" target="_blank"&gt;ETL&lt;/a&gt; (extract, transform, load) como base para obtener la informaci&amp;oacute;n necesaria para los dem&amp;aacute;s componentes.&lt;br /&gt;
	&lt;br /&gt;
	Como en todos los proyectos de BI lo que se hizo fue:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Analizar los indicadores que se quer&amp;iacute;an obtener.&lt;/li&gt;
	&lt;li&gt;
		Analizar los distintos or&amp;iacute;genes de datos necesarios para poder realizar las mediadas.&lt;/li&gt;
	&lt;li&gt;
		Dise&amp;ntilde;ar e implementar el proceso de carga y transformaci&amp;oacute;n de datos.&lt;/li&gt;
	&lt;li&gt;
		Dise&amp;ntilde;ar e implementar el cubo OLAP.&lt;/li&gt;
	&lt;li&gt;
		Dise&amp;ntilde;ar e implementar los dashboards.&lt;/li&gt;
	&lt;li&gt;
		Dise&amp;ntilde;ar e implementar unos reports de ejemplo.&lt;/li&gt;
	&lt;li&gt;
		Formar a los usuarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;br /&gt;
	Las dos primeras partes, fueron en su mayor&amp;iacute;a trabajo de Cianoplan, ya que los conocedores del negocio y de los datos era, como en todos los proyectos de BI, ellos.&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	Una vez analizados los indicadores se procedi&amp;oacute; a la creaci&amp;oacute;n del proceso de ETL, consistiendo en la extracci&amp;oacute;n de las informaci&amp;oacute;n del ERP y el volcado de los mismos a la base de datos de conocimiento. Todo esto, mediante la herramienta &amp;#39;data-integration&amp;#39; de la suite Pentaho.&lt;br /&gt;
	&lt;br /&gt;
	El proceso adem&amp;aacute;s ten&amp;iacute;a cierto problema relacionado con el origen de datos y la arquitectura que se quer&amp;iacute;a montar. La base de datos del ERP est&amp;aacute; en una intranet y las base de datos de conocimientos en otro zona de red comunicada por internet.&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Una vez creada la base de datos de conocimiento se procedi&amp;oacute; al dise&amp;ntilde;o del cubo OLAP.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=5419f8d8-0962-4674-9348-19dda470c5f9&amp;amp;groupId=10102&amp;amp;t=1364209046821" style="width: 600px; height: 639px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Despu&amp;eacute;s se dise&amp;ntilde;&amp;oacute; el dashboard, agrupando diferentes necesidades (estudio promocional, objetos a analizar, desgloses, navegables, ...)&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=817cb338-5c5f-4192-9cf3-9b4e1b55034f&amp;amp;groupId=10102&amp;amp;t=1364209108813" style="width: 600px; height: 795px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	Como podemos ver en el detalle el dashboard contiene los siguientes ejes de catalogaci&amp;oacute;n&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Tipo de an&amp;aacute;lisis: General o Promocional&lt;/li&gt;
	&lt;li&gt;
		Importe de ventas por: Cliente, TPVs y Grupos de cliente&lt;/li&gt;
	&lt;li&gt;
		Posibilidad de an&amp;aacute;lisis por un &amp;uacute;nico cliente, TPV o grupo con un selector AJAX&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=4bc9cb51-aa0e-4231-98e4-54194f4f17d0&amp;amp;groupId=10102&amp;amp;t=1364209181439" style="width: 600px; height: 110px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	Adem&amp;aacute;s, se permiten visualizar los datos con una comparativa por a&amp;ntilde;os, meses o cuartos, y se realizan varias navegaciones, entre la que se destaca la navegaci&amp;oacute;n por familias / subfamilias / art&amp;iacute;culos.&lt;br /&gt;
	&lt;br /&gt;
	Para finalizar se crearon varios reports y se form&amp;oacute; al equipo de Cianoplan para que pudiera crearlos de manera aut&amp;oacute;noma.&lt;br /&gt;
	&lt;br /&gt;
	En este ejemplo, el report se filtra por actividad, mediante un selector m&amp;uacute;ltiple.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=a31f792c-6861-4676-898c-a62ffa58a467&amp;amp;groupId=10102&amp;amp;t=1364209253162" style="width: 600px; height: 390px;" /&gt;&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-03-25T11:02:18Z</dc:date>
  </entry>
  <entry>
    <title>Optimizaciones SEO para liferay portal</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198996" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198996</id>
    <updated>2013-05-07T10:11:28Z</updated>
    <published>2013-03-21T13:21:43Z</published>
    <summary type="html">&lt;p&gt;
	Llevamos una par de semanas trabajando con un &lt;strong&gt;cliente&lt;/strong&gt; (&lt;span class="Object" id="OBJ_PREFIX_DWT18848_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT18849_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT18875_com_zimbra_url"&gt;&lt;a href="http://www.visuresolutions.com" target="_blank"&gt;http://www.visuresolutions.com&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) para optimizar su web actual en base a las indicaciones de un &lt;strong&gt;experto&lt;/strong&gt; &lt;a href="http://es.wikipedia.org/wiki/Posicionamiento_en_buscadores" target="_blank"&gt;SEO&lt;/a&gt; (Daniel Pinillos, &lt;a href="http://www.danielpinillos.com/" target="_blank"&gt;http://www.danielpinillos.com/&lt;/a&gt; y &lt;a href="http://www.seovision.es/" target="_blank"&gt;http://www.seovision.es/&lt;/a&gt;). La web del cliente está basada en &lt;a href="http://www.liferay.com" target="_blank"&gt;liferay 5.2.3 CE&lt;/a&gt; y necesita ciertas mejoras en el ámbito del posicionamiento web que no proporciona el &lt;a href="https://www.liferay.com/es/community/wiki/-/wiki/Main/Search+Engine+Optimization" target="_blank"&gt;gestor de portales liferay para esa versión&lt;/a&gt;. El experto en SEO nos indicó que sería interesante conseguir las siguientes tres cosas en la web:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;* Poder tener dominios separados para identificar país&lt;br /&gt;
	&amp;nbsp;* Poder tener &lt;a href="http://googlewebmastercentral.blogspot.se/2010/03/working-with-multilingual-websites.html" target="_blank"&gt;dominios separados para identificar país e idioma&lt;/a&gt;&lt;br /&gt;
	&amp;nbsp;* Poder tener urls distintas por cada idioma&lt;br /&gt;
	&lt;br /&gt;
	Desde el punto de vista del liferay 5.2.3, poco ofrece el gestor de portales para afrontar estas necesidades. Pongamos un ejemplo. Imaginemos que tenemos la siguiente url &lt;strong&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;http://www.dominio.com/products/mesa-boogie&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; y nuestra empresa quiere abrir el mercado alemán y el latino empezando por Méjico. Desde un punto de vista SEO para la salida de las nuevas webs en los dos paises objetivo se necesitaría las siguientes urls &lt;strong&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;http://www.dominio.mx/productos/mesa-boogie&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT18852_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT18855_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT18878_com_zimbra_url"&gt;http://www.dominio.de/produckte/mesa-boogie&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;
	&lt;br /&gt;
	Desde el punto de vista de liferay lo que se nos plantea son varios problemas que dependiendo de la versión de liferay se pueden afrontar de una u otra manera. Si el portal se fuera a crear desde cero y se partiera de una versión 6.x lo ideal sería:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;a) crear los contenidos en el &lt;a href="http://www.liferay.com/es/web/juan.fernandez/blog/-/blogs/how-to-use-the-new-global-scope" target="_blank"&gt;scope global&lt;/a&gt;&lt;br /&gt;
	&amp;nbsp;b) crear dos sitios web y crear las estructura de páginas distinta para site con los contenidos del scope global&lt;br /&gt;
	&lt;br /&gt;
	Con esta estructura podríamos tener las urls requeridas pero tiene varios problemas&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;1) Hay que hacer una administración doble de las estructuras de los sites para poder mantener distintos dominios y urls distintas&lt;br /&gt;
	&amp;nbsp;2) El &lt;strong&gt;sistema de cambio de idioma de liferay implica una cookie y una redirección&lt;/strong&gt; por lo que para los indexadores tipo google no es algo especialmente amigable (esto en liferay 6.x se puede cambiar y que las urls tenga /en /es /de en el path. &lt;strong&gt;No es la solución ideal pero se podría&lt;/strong&gt; usar aunque no se puede asociar un idioma por defecto a un site&lt;br /&gt;
	&amp;nbsp;3) Al tener sitios separados los &lt;strong&gt;metas de lenguajes alternativos y urls canonicas no tienen sentido&lt;/strong&gt; y no se pueden aplicar de manera automática en los tres sites&lt;br /&gt;
	&lt;br /&gt;
	La parte positiva de esta orientación es que no requiere cambios en el producto y se puede implantar y gestionar desde la interfaz web del liferay.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	El caso es que con estos problemas señalados y sobre todo teniendo en cuenta que la &lt;strong&gt;versión de liferay existente es la 5.2.3&lt;/strong&gt; hemos pensado que un upgrade a la 6 no soluciona los problemas de SEO al 100% y por eso hemos pensado una alternativa que implica modificar el producto en tres aspectos&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;a) Permitir tener &lt;strong&gt;varios virtual hosts asociados a un site&lt;/strong&gt; (en 5.x comunidades u organizaciones)&lt;br /&gt;
	&amp;nbsp;b) Permitir que &lt;strong&gt;cada virtual host tenga un idioma asociado&lt;/strong&gt;&lt;br /&gt;
	&amp;nbsp;c) Permitir que &lt;strong&gt;la url de una página pueda traducirse&lt;/strong&gt;&lt;br /&gt;
	&amp;nbsp;d) Permitir que las &lt;strong&gt;urls de distintos idiomas no requieran cookies y redirecciones para fijar el idioma&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	A lo largo de los siguientes artículos iremos explicando los cambios realizados para conseguir el objetivo marcado. De momento hemos realizado las &lt;strong&gt;pruebas de concepto&lt;/strong&gt; para conseguir las tres urls siguientes que cumplen con lo especificado:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&lt;a href="http://test.visuresolutions.es/empresa"&gt;http://test.visuresolutions.es/empresa&lt;/a&gt;&lt;br /&gt;
	&amp;nbsp;&lt;a href="http://test.visuresolutions.us/company"&gt;http://test.visuresolutions.us/company&lt;/a&gt;&lt;br /&gt;
	&amp;nbsp;&lt;a href="http://test.visuresolutions.de/gesellschaft"&gt;http://test.visuresolutions.de/gesellschaft&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	Es decir representan la misma página (&lt;strong&gt;descripción de la empresa cliente&lt;/strong&gt;) en tres idiomas distintos asociado cada idioma a un dominio (en este caso subdominio).&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-03-21T13:21:43Z</dc:date>
  </entry>
  <entry>
    <title>Login por email en Alfresco Share</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198763" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198763</id>
    <updated>2013-03-18T08:58:18Z</updated>
    <published>2013-03-17T21:19:00Z</published>
    <summary type="html">&lt;p style="text-align: justify;"&gt;
	Recientemente, en el contexto de un proyecto, nos han solicitado la posibilidad de autenticarse en Alfresco a trav&amp;eacute;s del mail de usuario, y no del username, para un directorio de usuarios openLDAP. En este directorio de usuarios, se centralizarian los usuarios externos a la organizaci&amp;oacute;n, mientras que los usuarios internos estar&amp;iacute;an gestionados en un directorio de usuarios (Directorio Activo) independiente.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=65a3bd07-d444-42cd-bff3-abe28a7aa745&amp;amp;groupId=10102&amp;amp;t=1363555197976" style="width: 480px; height: 309px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	La soluci&amp;oacute;n t&amp;eacute;cnica de la autenticaci&amp;oacute;n requiere de dos peque&amp;ntilde;os desarrollos:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Por un lado, debemos/podemos modificar el subsistema de autenticaci&amp;oacute;n de usuarios por defecto de Alfresco para openLDAP de manera que desde java podamos hacer una b&amp;uacute;squeda en el openLDAP por mail, identificar el usuario y enviar correctamente sus credenciales (este tipo de modificaciones ya las hemos hecho aqu&amp;iacute; en otras ocasiones, con motivo del &lt;a href="http://addons.alfresco.com/addons/alfresco-cifs-authenticator-openldap-users" target="_blank"&gt;conector de CIFS para openLDAP&lt;/a&gt;). Por supuesto este mail debe ser &amp;uacute;nico en el directorio de usuarios externo.&lt;/li&gt;
	&lt;li&gt;
		Adem&amp;aacute;s de esto, es necesario controlar las variables de sesi&amp;oacute;n de Share.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;br /&gt;
	Este sistema permite hacer login tanto con el mail como con el nombre de usuario del openLDAP. Y una vez logueado con el email, el usuario visualizar&amp;aacute; la interfaz como si lo hubiese realizado con el usuario de LDAP.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;br /&gt;
	Por otro lado, hemos realizado una serie de modificaciones en las b&amp;uacute;squedas de usuarios de Alfresco Share para adaptarlo a estos usuarios con mail como login:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		En primer lugar, el buscador de personas tiene que ser capaz de buscar por mail.&lt;/li&gt;
	&lt;li&gt;
		La b&amp;uacute;squeda de miembros de un sitio tambi&amp;eacute;n se ha extendido para poder buscar por mail.&lt;/li&gt;
	&lt;li&gt;
		Las invitaciones de usuarios son ahora tambi&amp;eacute;n buscables por mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	El buscador de personas de Alfresco Share podr&amp;iacute;a hacer b&amp;uacute;squedas como esta:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=8146b954-4cfd-4b9a-abfd-a9ca1649031c&amp;amp;groupId=10102&amp;amp;t=1363555333916" style="width: 518px; height: 188px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	Y en proceso de invitaci&amp;oacute;n de personas en SItios podr&amp;iacute;amos buscar tambi&amp;eacute;n por email:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=0290cd2c-8682-463f-a8a5-ae0942bf39d6&amp;amp;groupId=10102&amp;amp;t=1363555391455" style="width: 593px; height: 212px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;br /&gt;
	Por &amp;uacute;ltimo, para gestionar invitaciones a los sitios de los usuarios externos (openLDAP), hemos desarrollado un peque&amp;ntilde;o m&amp;oacute;dulo que permite agregarles desde Alfresco, creando el usuario en openLDAP si es necesario. Este m&amp;oacute;dulo es similar al que proporciona Alfresco pero, utilizando un opeLDAP externo por un lado, y pudiendo asignar un rol definido, como en el caso de un usuario interno de Alfresco.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=1a1fa5e4-8ded-4cd7-98b4-66f449e7b022&amp;amp;groupId=10102&amp;amp;t=1363597089415" style="width: 584px; height: 252px;" /&gt;&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-03-17T21:19:00Z</dc:date>
  </entry>
  <entry>
    <title>Debug remoto de una instancia de liferay</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198682" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198682</id>
    <updated>2013-03-14T11:36:32Z</updated>
    <published>2013-03-14T08:58:05Z</published>
    <summary type="html">&lt;p&gt;
	Normalmente los desarrolladores est&amp;aacute;n acostumbrados a hacer debug en sus m&amp;aacute;quinas locales desde el eclipse lo cual es una buena pr&amp;aacute;ctica, pero suele requerir arrancar las aplicaciones desde el propio eclipse y que efecftivamente el servidor est&amp;eacute; en la m&amp;aacute;quina local. Existe otra posibilidad para hacer depuraci&amp;oacute;n en aplicaciones java que consiste en conectarse a un puerto remoto desde el eclipse. Para ello basta con seguir tres pasos muy simples.&lt;/p&gt;
&lt;p&gt;
	1) Activar el debug en el servidor remoto&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;-Xdebug -Xrunjdwp:transport=dt_socket,address=0.0.0.0:5050,server=y,suspend=n&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	2) Configurar el eclipse desde el panel Run -&amp;gt; Run configurations&lt;/p&gt;
&lt;p&gt;
	3) Comenzar el debug de la aplicaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;
	En nuestro caso lo hemos aplicado al debug de una instancia de liferay que se estaba comportando de manera un poco extra&amp;ntilde;a y no sab&amp;iacute;amos determinar la causa.&lt;/p&gt;
&lt;p&gt;
	Para la configuraci&amp;oacute;n seguimos &lt;a href="http://www.latascadexela.es/2008/09/depuracin-remota-en-tomcat-con-eclipse.html" target="_blank"&gt;este post&lt;/a&gt; que aporta informaci&amp;oacute;n m&amp;aacute;s detallada de como realizar la configuraci&amp;oacute;n.&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-03-14T08:58:05Z</dc:date>
  </entry>
  <entry>
    <title>Los sistemas de cuota en Alfresco ECM</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198577" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198577</id>
    <updated>2013-03-11T11:35:20Z</updated>
    <published>2013-03-11T11:23:32Z</published>
    <summary type="html">&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	Hoy vamos a hablar de las capacidades de cuota en Alfresco ECM. Es posible definir una cuota de datos para un usuario por defecto en el repositorio, que es una opci&amp;oacute;n que aparece en el formulario de creaci&amp;oacute;n de usuarios de Alfresco (ya sea Share o Explorer) desde hace ya muchas versiones.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=7a55e95a-5905-47e9-91ba-12bfc6b931a9&amp;amp;groupId=10102&amp;amp;t=1363001569808" style="width: 520px; height: 292px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;br /&gt;
	Tambi&amp;eacute;n es posible definir una cuota m&amp;aacute;xima para el tama&amp;ntilde;o m&amp;aacute;ximo de un archivo. Normalmente cuando tenemos un sistema de albergue de archivos en una aplicaci&amp;oacute;n web, suele haber limitaciones en el tama&amp;ntilde;o de esa subida, en cada una de las capas. Por ejemplo, el servidor apache o el contenedor de servlets Tomcat limitan la s&amp;uacute;bida m&amp;aacute;xima a trav&amp;eacute;s de un POST, y se ha de modificar en numerosas ocasiones, para permitir tama&amp;ntilde;os de archivo grandes. En el mundo java, adem&amp;aacute;s puede haber problemas de memoria heap al subir archivos muy grandes (&amp;gt; 100Mb por ejemplo) en algunos sistemas que no est&amp;eacute;n bien parametrizados.&lt;br /&gt;
	&lt;br /&gt;
	Alfresco, por defecto en la versi&amp;oacute;n 4 no presenta una cuota por archivo definida en su repositorio, es decir, que si hay alguna limitaci&amp;oacute;n ser&amp;aacute; m&amp;aacute;s bien una limitaci&amp;oacute;n de sus capas intermedias (proxys) o bien de los propios uploaders (flash o HTML5). Sin embargo, existen situaciones en donde se requiere gestionar un umbral de subida o creaci&amp;oacute;n de datos, por una pol&amp;iacute;tica dada de crecimiento de un repositorio, backups etc etc. De este modo, podemos evitar que un usuario no pueda subir una pel&amp;iacute;cula en alta definici&amp;oacute;n, las isos de su distribuci&amp;oacute;n de linux preferida o incluso m&amp;aacute;quinas virtuales completas con la variable (en bytes):&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;system.content.maximumFileSizeLimit=20971520&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	que pode&amp;iacute;s encontrar buceando en el archivo repository.properties de Alfresco.&lt;br /&gt;
	&lt;br /&gt;
	Tambi&amp;eacute;n existen otras problem&amp;aacute;ticas de repositorio que exigen imponer cuotas en un espacio o carpeta de documentos, o incluso en un sitio de Alfresco Share. Esta es una funcionalidad que no se encuentra por defecto en Alfresco, pero que ha sido implementada en este proyecto abanderado por la comunidad:&lt;/p&gt;
&lt;ul&gt;
	&lt;li style="text-align: justify;"&gt;
		&lt;a href="http://code.google.com/p/alfresco-folder-quota/" target="_blank"&gt;http://code.google.com/p/alfresco-folder-quota/&lt;/a&gt;&lt;/li&gt;
	&lt;li style="text-align: justify;"&gt;
		&lt;a href="http://nathanmcminn.com/node/7" target="_blank"&gt;http://nathanmcminn.com/node/7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;
	que permite definir los comportamientos y constraints para el repositorio que permitar limitar los datos por debajo de un espacio de Alfresco. Bas&amp;aacute;ndonos en este m&amp;oacute;dulo, es posible cambiar la interfaz de creaci&amp;oacute;n de Sites para un usuario Administrador de Alfresco, que permita redefinir una cuota de Sitio definida previamente.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=05fca504-0847-4eac-bf00-85bb1e06b5f0&amp;amp;groupId=10102&amp;amp;t=1363001620289" style="width: 520px; height: 299px;" /&gt;&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	Una de las bondades de este m&amp;oacute;dulo es que calcula los tama&amp;ntilde;os de cada folder sujeto a cuota de modo que podemos tener informes de uso de cada uno de los sites / folder con un poco de javascript API.&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-03-11T11:23:32Z</dc:date>
  </entry>
  <entry>
    <title>grafico de dependencias de sinadura desktop</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198532" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198532</id>
    <updated>2013-03-10T14:21:17Z</updated>
    <published>2013-03-10T14:06:16Z</published>
    <summary type="html">&lt;p&gt;
	La semana pasada estuvimos reorganizando el &lt;a href="http://www.sinadura.net/es/products-and-services/sinadura-desktop-ee/" target="_blank"&gt;proyecto de sinadura-desktop&lt;/a&gt; para automatizar la publicación de la versiones, tanto en el &lt;a href="https://services.zylk.net/nexus/content/groups/sinadura-group/" target="_blank"&gt;repo de maven&lt;/a&gt; como en el &lt;a href="https://services.zylk.net/sinadura-repo/" target="_blank"&gt;repo de svn&lt;/a&gt;. Como consecuencia de esta reorganización hemos modificado mínimamente los poms de todos los proyectos y las dependencias entre ellos. Todo esto para poder trabajar con el trunk de cada proyecto y que en la carpeta de tags estuvieran las versiones estables correspondientes. Todo automatizado &lt;a href="http://jenkins-ci.org/" target="_blank"&gt;con el jenkis&lt;/a&gt; y con el siguiente &lt;a href="http://maven.apache.org/maven-release/maven-release-plugin/" target="_blank"&gt;plugin de maven&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	Los proyectos que manejamos en sinadura-desktop son los siguientes&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Módulo de interfaces - EE&lt;/strong&gt; (interfaces a implementar con las funcionalidades Entreprise)&lt;br /&gt;
	&lt;strong&gt;Módulo de implementación - EE&lt;/strong&gt; (implementación de los módulos Entreprise)&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Módulo TSA&lt;/strong&gt;&lt;br /&gt;
	&lt;strong&gt;Módulo OCSP&lt;/strong&gt;&lt;br /&gt;
	&lt;strong&gt;Módulo XADES&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Módulo xmlsec&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Modulo de core&lt;/strong&gt;&lt;br /&gt;
	&lt;strong&gt;Módulo de Escritorio&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Módulo de VFS&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	A continuación dejo un gráfico de las relaciones entre ellos para la versión 3.3.4 del programa.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=47162f52-f90a-41cd-a747-cc7a292ee4a5&amp;amp;groupId=10102&amp;amp;t=1362924985414" style="width: 600px; height: 494px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	Espero que si alguien tiene que desarrollar algo con este programa el gráfico de dependencias pueda ayudarle a entender como y donde hacer cada modificación.&lt;/p&gt;
&lt;p&gt;
	En la wiki del proyecto existe un manual para desarrolladore (&lt;a href="http://www.sinadura.net/es/wik/-/wiki/sinadura/DevManual300" target="_blank"&gt;http://www.sinadura.net/es/wik/-/wiki/sinadura/DevManual300&lt;/a&gt;) donde se explica como montar el entorno de desarrollo.&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-03-10T14:06:16Z</dc:date>
  </entry>
  <entry>
    <title>Alfresco Share 4 y Single Sign On con CAS</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198313" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198313</id>
    <updated>2013-03-03T18:35:48Z</updated>
    <published>2013-03-03T18:24:35Z</published>
    <summary type="html">&lt;p&gt;
	Os dejo aqu&amp;iacute; unas notas sobre como casificar Alfresco Share, para la version 4.x de Alfresco. Por defecto, Alfresco Share no es una aplicaci&amp;oacute;n que esta casificada y que necesita algunos cambios &amp;quot;out of the box&amp;quot; para que se autentique contra un &lt;a href="http://www.jasig.org/cas" target="_blank"&gt;servidor centralizado de autenticaci&amp;oacute;n CAS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	La arquitectura planteada en este art&amp;iacute;culo ser&amp;iacute;a algo as&amp;iacute;:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=b3f79a12-9b1f-48b4-b69d-1a9141a63a88&amp;amp;groupId=10102&amp;amp;t=1362335733449" style="width: 640px; height: 400px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	En el repositorio, debemos definir una cadena de autenticaci&amp;oacute;n externa en el alfresco-global.properties&lt;br /&gt;
	&lt;br /&gt;
	authentication.chain=external1:external,alfrescoNtlm1:alfrescoNtlm&lt;br /&gt;
	# IMPORTANTE! Sin esta propiedad Alfresco Share no se autenticar&amp;aacute; correctamente&lt;br /&gt;
	external.authentication.proxyUserName=&lt;br /&gt;
	&lt;br /&gt;
	Estamos en la aproximaci&amp;oacute;n de que Alfresco Share y Alfresco Repository conforman dos capas (m&amp;aacute;quinas) separadas. &amp;nbsp;&lt;br /&gt;
	&lt;br /&gt;
	En Alfresco Share, debemos a&amp;ntilde;adir en primer lugar las algunas librer&amp;iacute;as en &lt;strong&gt;$TOMCAT_HOME/webapps/share/WEB-INF/lib&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		cas-client-core-3.1.12.jar&lt;/li&gt;
	&lt;li&gt;
		opensaml-1.0.1.jar&lt;/li&gt;
	&lt;li&gt;
		zk-cas-filter.jar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Adem&amp;aacute;s es necesario modificar el web.xml de share.war para configurar los filtros de CAS, as&amp;iacute; como compilar un filtro a medida (&lt;strong&gt;zk-cas-filter.jar&lt;/strong&gt;). El c&amp;oacute;digo java se puede obtener de este wiki, que es de donde he partido para la integraci&amp;oacute;n de Alfresco Share y CAS:&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT562_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT577_com_zimbra_url"&gt;&lt;a href="http://ifaq.wikispaces.com/CAS+-+CASificando+Alfresco+Share" target="_blank"&gt;http://ifaq.wikispaces.com/CAS+-+CASificando+Alfresco+Share&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	Los filtros en el web.xml son:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;filter&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Authentication Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-class&amp;gt;org.jasig.cas.client.authentication.AuthenticationFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-name&amp;gt;&lt;strong&gt;casServerLoginUrl&lt;/strong&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-value&amp;gt;&lt;span class="Object" id="OBJ_PREFIX_DWT563_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT564_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT578_com_zimbra_url"&gt;https://services.zylk.net/cas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-name&amp;gt;&lt;strong&gt;serverName&lt;/strong&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-value&amp;gt;&lt;span class="Object" id="OBJ_PREFIX_DWT565_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT566_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT579_com_zimbra_url"&gt;https://share.zylk.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Ticket Validation Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-class&amp;gt;org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-name&amp;gt;&lt;strong&gt;casServerUrlPrefix&lt;/strong&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-value&amp;gt;&lt;span class="Object" id="OBJ_PREFIX_DWT563_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT564_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT578_com_zimbra_url"&gt;https://services.zylk.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-name&amp;gt;&lt;strong&gt;serverName&lt;/strong&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;param-value&amp;gt;&lt;span class="Object" id="OBJ_PREFIX_DWT565_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT566_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT579_com_zimbra_url"&gt;https://share.zylk.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Alfresco Share Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-class&amp;gt;&lt;strong&gt;net.zylk.alfresco.cas.filter.AlfrescoShareFilter&lt;/strong&gt;&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Authentication Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/page/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Authentication Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/p/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Authentication Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/proxy/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Ticket Validation Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/page/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Ticket Validation Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/p/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Ticket Validation Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/proxy/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Alfresco Share Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/page/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Alfresco Share Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/p/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;filter-name&amp;gt;Alfresco Share Filter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url-pattern&amp;gt;/proxy/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Notad que las propiedades principales definidas en el web.xml atienden a la url del servicio de autenticaci&amp;oacute;n centralizado (CAS) por un lado, y por otro a la redirecci&amp;oacute;n que har&amp;aacute; este junto con el ticket de autenticaci&amp;oacute;n, al servidor donde est&amp;aacute; desplegado Alfresco Share.&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	Por &amp;uacute;ltimo, en el archivo de configuraci&amp;oacute;n principal de Alfresco Share &lt;strong&gt;share-config-custom.xml&lt;/strong&gt; definimos la secci&amp;oacute;n remote y el endpoint del repositorio, es decir la url del repositorio de Alfresco, poniendo a true el par&amp;aacute;metro external auth.&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;config evaluator=&amp;quot;string-compare&amp;quot; condition=&amp;quot;Remote&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;remote&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;keystore&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;path&amp;gt;alfresco/web-extension/alfresco-system.p12&amp;lt;/path&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;type&amp;gt;pkcs12&amp;lt;/type&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;password&amp;gt;alfresco-system&amp;lt;/password&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/keystore&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;connector&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;id&amp;gt;alfrescoCookie&amp;lt;/id&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;name&amp;gt;Alfresco Connector&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;description&amp;gt;Connects to an Alfresco instance using cookie-based authentication&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;class&amp;gt;org.springframework.extensions.webscripts.connector.AlfrescoConnector&amp;lt;/class&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/connector&amp;gt;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;endpoint&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;id&amp;gt;alfresco&amp;lt;/id&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;name&amp;gt;Alfresco - user access&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;description&amp;gt;Access to Alfresco Repository WebScripts that require user authentication&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;connector-id&amp;gt;alfrescoCookie&amp;lt;/connector-id&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;endpoint-url&amp;gt;&lt;span class="Object" id="OBJ_PREFIX_DWT571_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT572_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT582_com_zimbra_url"&gt;&lt;a href="http://alf.zylk.net:8080/alfresco/wcs" target="_blank"&gt;http://alf.zylk.net:8080/alfresco/wcs&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;/endpoint-url&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;identity&amp;gt;user&amp;lt;/identity&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;external-auth&amp;gt;true&amp;lt;/external-auth&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/endpoint&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/remote&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;/config&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	En el ejemplo de arriba no se ha securizado nada m&amp;aacute;s que la capa web de acceso a trav&amp;eacute;s del frontal Apache.&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Enlaces &amp;uacute;tiles:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://wiki.alfresco.com/wiki/Category:CAS" target="_blank"&gt;http://wiki.alfresco.com/wiki/Category:CAS&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems#What_are_the_Authentication_Subsystems.3F" target="_blank"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT573_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT583_com_zimbra_url"&gt;http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems#What_are_the_Authentication_Subsystems.3F&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://wiki.alfresco.com/wiki/Alfresco_With_mod_auth_cas" target="_blank"&gt;http://wiki.alfresco.com/wiki/Alfresco_With_mod_auth_cas&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://wiki.alfresco.com/wiki/Alfresco_cas_with_jasig_cas_client" target="_blank"&gt;http://wiki.alfresco.com/wiki/Alfresco_cas_with_jasig_cas_client&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-03-03T18:24:35Z</dc:date>
  </entry>
  <entry>
    <title>Snippets for CMIS content viewer portlet, a Liferay plugin to query and render CMIS objects from an Alfresco CMIS repository</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198234" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198234</id>
    <updated>2013-03-01T10:23:10Z</updated>
    <published>2013-03-01T09:52:20Z</published>
    <summary type="html">&lt;p&gt;
	Siguiendo con el artíclo que &lt;a href="http://www.zylk.net/es/web/guest/web-2-0/blog/-/blogs/cmis-content-viewer-portlet-a-liferay-plugin-to-query-and-render-cmis-objects-from-an-alfresco-cmis-repository" target="_blank"&gt;escribió cesar&lt;/a&gt; sobre el visualizador de contenidos CMIS usando groovy vamos a exponer dos ejemplos de uso que nos han parecido interesantes.&lt;br /&gt;
	&lt;br /&gt;
	El primero consiste en mostrar un listado de todos los pdfs de una carpeta del gestor documental. Una lista con su nombre descripción y un enlace para la descarga.&lt;br /&gt;
	&lt;br /&gt;
	Lo primero que habría que definir es la query CMIS que se va a utlizar&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;SELECT * FROM cmis:document WHERE cmis:contentStreamMimeType LIKE 'application/pdf'&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	y lo segundo el script de groovy que se va a encargar de la presentación de los objetos devueltos por la query CMIS&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;html.append("&amp;lt;table style=\"width: 640px;\"&amp;gt;");&lt;br /&gt;
	&amp;nbsp; html.append("&amp;lt;tr&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;th style=\"width:5%;\"&amp;gt;&amp;lt;/th&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;th style=\"width:25%;\"&amp;gt;Nombre&amp;lt;/th&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;th style=\"width:20%;\"&amp;gt;Creado por&amp;lt;/th&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;th style=\"width:20%;\"&amp;gt;Modificado por&amp;lt;/th&amp;gt;");&lt;br /&gt;
	&amp;nbsp; html.append("&amp;lt;/tr&amp;gt;");&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp; for (CMISObject doc : listaObjetos) {&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;tr&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;td&amp;gt;&amp;lt;img alt=\"PDF\" src=\"/html/themes/_unstyled/images/file_system/small/pdf.png\" &amp;gt;&amp;lt;/td&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;td&amp;gt;&amp;lt;a href=\"#\"&amp;gt;" + doc.getName() + "&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;td&amp;gt;" + doc.getCreatedBy() + "&amp;lt;/td&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;td&amp;gt;" + doc.getLastModifiedBy() + "&amp;lt;/td&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; //html.append("&amp;lt;td&amp;gt;" + doc.getType().getDescription() + "&amp;lt;/td&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; html.append("&amp;lt;/tr&amp;gt;");&lt;br /&gt;
	&amp;nbsp; };&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	html.append("&amp;lt;/table&amp;gt;");&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=bb85e432-8dde-4e20-988a-511e46a8438b&amp;amp;groupId=10102&amp;amp;t=1362131708524" style="width: 640px; height: 378px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=927f94a3-4772-4cb1-a077-70ec6b650448&amp;amp;groupId=10102&amp;amp;t=1362131742605" style="width: 640px; height: 377px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	El segundo ejemplo consiste en lista un conjunto de contenidos custom, es decir en el gestor de contenidos se define un modelo documental por ejemplo una noticia, que tiene una serie de propiedades personalizadas. La idea es presentar una lista de esas noticias mostrando los datos personalizados. Además en se va a usar el sistema variables para las querys de CMIS para ver como un dato de la sesión de liferay se puede usar para filtrar (en tiempo de ejecución) los datos que visualiza el usuario en el portal. En este caso solo se van a mostrar las noticias que el mismo ha creado.&lt;br /&gt;
	&lt;br /&gt;
	Lo primero que habría que definir es la query CMIS que se va a utlizar&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;SELECT * FROM zylk-new:noticia WHERE zylk-new:status LIKE 'Published' AND cmis:createdBy LIKE '[$SCREENNAME$]' &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	y lo segundo el script de groovy que se va a encargar de la presentación de los objetos devueltos por la query CMIS&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;for (CMISObject obj : listaObjetos) {&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;h2&amp;gt;" + obj.getProperty("zylk-new:title").getValueAsString() + "&amp;lt;/h2&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;br /&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append(obj.getProperty("zylk-new:description").getValueAsString());&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;br /&amp;gt;");&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;html.append("&amp;lt;hr /&amp;gt;");&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;};&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=7b302709-2bf6-45e4-8e04-6e05a6a5d54b&amp;amp;groupId=10102&amp;amp;t=1362133285416" style="width: 640px; height: 298px;" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=1c50f421-6141-4ba7-8344-1a2adc0e5111&amp;amp;groupId=10102&amp;amp;t=1362132294509" style="width: 640px; height: 432px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	para más información sobre el portlet &lt;a href="http://www.zylk.net/es/web/guest/contacto/formulario-de-contacto" target="_blank"&gt;contacta con nosotros&lt;/a&gt;&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-03-01T09:52:20Z</dc:date>
  </entry>
  <entry>
    <title>CMIS content viewer portlet, a Liferay plugin to query and render CMIS objects from an Alfresco CMIS repository</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198107" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=198107</id>
    <updated>2013-02-26T19:17:35Z</updated>
    <published>2013-02-26T17:02:08Z</published>
    <summary type="html">&lt;p style="text-align: justify;"&gt;
	A usual situation in many-content (web and media) systems is the combination of a portal (such as Liferay Portal) and a CMIS 1.0 container such as &lt;a href="http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture" target="_blank"&gt;Alfresco repository&lt;/a&gt;. That architectural aproximation consists on one hand, of a java portal as CMS presentation tier, and on the other, a ECM repository as its &lt;a href="http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services" target="_blank"&gt;CMIS&lt;/a&gt; backend. Our requirement is to render CMIS objects via &lt;a href="http://www.liferay.com/" target="_blank"&gt;Liferay portlet&lt;/a&gt; delegating the workflow publication and the definition of the corresponding types and metadata for blog, events, web documents and media assets in Alfresco repository. So the general purpose of this portlet, is to be a content viewer portlet of CMIS objects from an external repository.&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	We developed a portlet that can execute a configurable groovy script for rendering CMIS objects. &lt;a href="http://groovy.codehaus.org/" target="_blank"&gt;Groovy&lt;/a&gt; is a dynamic programming language (like &lt;a href="http://www.python.org/" target="_blank"&gt;python&lt;/a&gt;, &lt;a href="http://www.ruby-lang.org/es/" target="_blank"&gt;ruby&lt;/a&gt; or &lt;a href="http://www.perl.org/" target="_blank"&gt;perl&lt;/a&gt;) that is used as a scripting language within the &lt;a href="http://es.wikipedia.org/wiki/Plataforma_Java" target="_blank"&gt;java plattform&lt;/a&gt;.&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	The &lt;a href="http://www.liferay.com/es/community/wiki/-/wiki/Main/How+to+Add+Configuration+Page+to+a+Plugin+Portlet" target="_blank"&gt;configuration of the portlet&lt;/a&gt; allows to specify all required data:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;CMIS Repository&lt;/strong&gt;: Binding type(&amp;#39;AtomPub&amp;#39;, &amp;#39;Webservices&amp;#39;), Authentication mode (&amp;#39;None&amp;#39;, &amp;#39;Standard&amp;#39;), and url of the CMIS repository and the username and password (if needed)&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;CMIS data query&lt;/strong&gt;: a CMIS query, limit of the number of the results given for the defined query, and a root parent search folder for restricting the search by path in CMIS repository. The portlet also uses Liferay variables when the query will be executed: &amp;#39;[$COMPANYID$]&amp;#39;, &amp;#39;[$GROUPID$]&amp;#39;, &amp;#39;[$USERID$]&amp;#39;, &amp;#39;[$SCREENNAME$]&amp;#39;, &amp;#39;[$LOCALE$]&amp;#39;, &amp;#39;[$COUNTRY$]&amp;#39; and &amp;#39;[$LANGUAGE$]&amp;#39;&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Groovy script&lt;/strong&gt;: The groovy script allows to read, process and check the resulting list of &lt;a href="http://chemistry.apache.org/java/0.4.0/maven/apidocs/org/apache/chemistry/opencmis/client/api/CmisObject.html" target="_blank"&gt;CMIS objects&lt;/a&gt; (called &amp;#39;objects&amp;#39;) for specified query. A Liferay variable of the class &amp;#39;&lt;a href="http://docs.liferay.com/portal/6.0/javadocs/com/liferay/portal/theme/ThemeDisplay.html" target="_blank"&gt;ThemeDisplay&lt;/a&gt;&amp;#39; (called themeDisplay&amp;#39;) contains the information related to Liferay: the logged user in the portal, the current community, the current language etc. etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	The properties of CMIS repository are set in the configuration of the portlet:&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=9b07f806-4512-475b-8285-182ed35f06b8&amp;amp;groupId=10102&amp;amp;t=1361898733928" style="width: 519px; height: 257px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	with the corresponding CMIS query:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=38b9833c-1f23-444e-b73b-5440975265b1&amp;amp;groupId=10102&amp;amp;t=1361898690380" style="width: 511px; height: 331px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	and the groovy script to render:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=1f414915-82a7-43b5-bec3-6ab4fd1b2cf8&amp;amp;groupId=10102&amp;amp;t=1361899066228" style="width: 507px; height: 350px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	The groovy script can preview the final results, before publishing:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=1ebc1879-215e-41e0-afe8-45d839282430&amp;amp;groupId=10102&amp;amp;t=1361899358816" style="width: 509px; height: 450px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;br /&gt;
	And finally, in a Liferay page:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=f51d4511-082c-4cb8-b9c0-39dc8ff4f940&amp;amp;groupId=10102&amp;amp;t=1361899554682" style="width: 640px; height: 342px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;br /&gt;
	This portlet is tested in LF 6.0 EE SP1 &amp;amp; SP2, LF 6.1.x CE, and Alfresco 4.x EE and &lt;a href="http://www.nuxeo.com/en" target="_blank"&gt;Nuxeo&lt;/a&gt; 5.6 DM CMIS repositories.&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-02-26T17:02:08Z</dc:date>
  </entry>
  <entry>
    <title>Mis addons preferidos de Alfresco ECM</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=197071" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=197071</id>
    <updated>2013-01-28T16:38:31Z</updated>
    <published>2013-01-28T15:54:55Z</published>
    <summary type="html">&lt;p&gt;
	A nivel de core:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Thrascan cleaner:&lt;/strong&gt; Esencial en la gesti&amp;oacute;n del ciclo de vida de borrado de un documento.&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8245_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8246_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8292_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/trashcan-cleaner" target="_blank"&gt;http://addons.alfresco.com/addons/trashcan-cleaner&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8247_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8248_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8293_com_zimbra_url"&gt;&lt;a href="http://www.ixxus.com/blog/2011/09/alfresco-node-lifecycle/" target="_blank"&gt;http://www.ixxus.com/blog/2011/09/alfresco-node-lifecycle&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://alfrescoshare.wordpress.com/tag/trashcan-cleaner-module" target="_blank"&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8249_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8250_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8294_com_zimbra_url"&gt;http://alfrescoshare.wordpress.com/tag/trashcan-cleaner-module&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Bulk Filesystem Import:&lt;/strong&gt; Otro de los addons &amp;quot;must&amp;quot;, ya incluido en las &amp;uacute;ltimas versiones 4.x de Alfresco ECM.&lt;/p&gt;
&lt;p&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8251_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8252_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8295_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/bulk-filesystem-import-tool" target="_blank"&gt;http://addons.alfresco.com/addons/bulk-filesystem-import-tool&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://code.google.com/p/alfresco-bulk-filesystem-import/" target="_blank"&gt;&lt;br /&gt;
	&lt;/a&gt;&lt;a href="http://code.google.com/p/alfresco-bulk-filesystem-import/" target="_blank"&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;&lt;span class="Object"&gt;http://code.google.com/p/alfresco-bulk-filesystem-import/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=e023ad80-9c16-43cd-adce-b240edc04f9d&amp;amp;groupId=10102&amp;amp;t=1359390856014" style="width: 499px; height: 287px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Javascript Console:&lt;/strong&gt; Un plugin b&amp;aacute;sico para desarrolladores de webscripts.&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8255_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8256_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8297_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/javascript-console" target="_blank"&gt;http://addons.alfresco.com/addons/javascript-console&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8257_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8258_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8298_com_zimbra_url"&gt;&lt;a href="https://code.google.com/p/share-extras/wiki/JavascriptConsole" target="_blank"&gt;https://code.google.com/p/share-extras/wiki/JavascriptConsole&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=0fe272c5-1ea1-4e29-9666-53c637556ccd&amp;amp;groupId=10102&amp;amp;t=1359390893680" style="width: 664px; height: 436px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Alfresco Site Folder quota module:&lt;/strong&gt; Una funcionalidad de cuota por Sitio incluida en el roadmap pero que a&amp;uacute;n no forma parte de las funcionalidades por defecto.&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8259_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8260_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8299_com_zimbra_url"&gt;&lt;a href="http://nathanmcminn.com/node/7" target="_blank"&gt;http://nathanmcminn.com/node/7&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;CIFS for openLDAP&lt;/strong&gt;: Compatibilidad de uso de Alfresco a trav&amp;eacute;s de unidades compartidas CIFS con openLDAP.&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8261_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8262_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8300_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/alfresco-cifs-authenticator-openldap-users" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-cifs-authenticator-openldap-users&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;JDBC authenticator&lt;/strong&gt;: Gesti&amp;oacute;n de usuarios de Alfresco desde una base de usuarios externas. Esencial para una integraci&amp;oacute;n con una aplicaci&amp;oacute;n a medida.&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8263_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8264_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8301_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/alfresco-custom-jdbc-authenticator" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-custom-jdbc-authenticator&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	A nivel de interfaz y extensi&amp;oacute;n de funcionalidad para Share:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Alfresco PDF Toolkit&lt;/strong&gt;: Acciones extras para archivos PDF&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8265_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8266_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8302_com_zimbra_url"&gt;&lt;a href="https://addons.alfresco.com/addons/alfresco-pdf-toolkit" target="_blank"&gt;https://addons.alfresco.com/addons/alfresco-pdf-toolkit&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8267_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8268_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8303_com_zimbra_url"&gt;&lt;a href="http://code.google.com/p/alfresco-pdf-toolkit/" target="_blank"&gt;http://code.google.com/p/alfresco-pdf-toolkit/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Media viewers&lt;/strong&gt;: Los improvements relativos a los visualizadores basados en HTML5.&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8269_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8270_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8304_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/media-viewers" target="_blank"&gt;http://addons.alfresco.com/addons/media-viewers&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8271_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8272_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8305_com_zimbra_url"&gt;&lt;a href="http://code.google.com/p/share-extras/wiki/MediaViewers" target="_blank"&gt;http://code.google.com/p/share-extras/wiki/MediaViewers&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Zip archive&lt;/strong&gt;: Un descompresor de archivos zip en servidor. Muy &amp;uacute;til!&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8273_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8274_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8306_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/unzip-share-action-zip" target="_blank"&gt;http://addons.alfresco.com/addons/unzip-share-action-zip&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8275_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8276_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8307_com_zimbra_url"&gt;&lt;a href="http://labs.atolcd.com/projects/unzip-action" target="_blank"&gt;http://labs.atolcd.com/projects/unzip-action&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=e6da752f-d425-4107-8201-955254ba0467&amp;amp;groupId=10102&amp;amp;t=1359391101821" style="width: 640px; height: 212px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;ACP exporter/importer for share&lt;/strong&gt;: Un m&amp;oacute;dulo para la exportaci&amp;oacute;n e importaci&amp;oacute;n desde Share.&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8277_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8278_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8308_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/importexport-acpzip-share" target="_blank"&gt;http://addons.alfresco.com/addons/importexport-acpzip-share&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8279_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8280_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8309_com_zimbra_url"&gt;&lt;a href="http://labs.atolcd.com/projects/share-import-export" target="_blank"&gt;http://labs.atolcd.com/projects/share-import-export&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	A nivel de sistemas:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;Alfresco Shell Tools&lt;/strong&gt;: La navaja suiza para Alfresco 4.x&lt;br /&gt;
	&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8281_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8282_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8310_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/alfresco-shell-tools" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-shell-tools&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8283_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8284_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8311_com_zimbra_url"&gt;&lt;a href="http://code.google.com/p/alfresco-shell-tools/" target="_blank"&gt;http://code.google.com/p/alfresco-shell-tools/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	- &lt;strong&gt;Alfresco EE nagios module&lt;/strong&gt;: El m&amp;oacute;dulo de monitorizaci&amp;oacute;n para Alfresco ECM.&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8285_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8286_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8312_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/alfresco-nagios-icinga-plugin" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-nagios-icinga-plugin&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
	&lt;br /&gt;
	Y por ultimo, mencionar tambi&amp;eacute;n:&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;- &lt;strong&gt;sinadura ECM&lt;/strong&gt;: El conector de firma digital sinadura PDF para Alfresco ECM.&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&lt;span class="Object" id="OBJ_PREFIX_DWT8287_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8288_com_zimbra_url"&gt;&lt;span class="Object" id="OBJ_PREFIX_DWT8313_com_zimbra_url"&gt;&lt;a href="http://addons.alfresco.com/addons/sinadura-pdf-digital-signature-client-alfresco-ecm" target="_blank"&gt;http://addons.alfresco.com/addons/sinadura-pdf-digital-signature-client-alfresco-ecm&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2013-01-28T15:54:55Z</dc:date>
  </entry>
  <entry>
    <title>Gestion de certificados con openssl</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=197001" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=197001</id>
    <updated>2013-01-25T12:35:02Z</updated>
    <published>2013-01-25T12:34:39Z</published>
    <summary type="html">&lt;p&gt;
	En los proyectos, normalmente, en la fase de desarrollo se suelen usar certificados &lt;a href="http://en.wikipedia.org/wiki/Self-signed_certificate" target="_blank"&gt;auto-firmados&lt;/a&gt; para los temas relacionados con canales de comunicaci&amp;oacute;n seguros. A continuaci&amp;oacute;n vamos a mostrar una serie de comandos para crear llaves, solicitudes de certificados etc.. para no tener que usar certificados autofirmados. Si se hace esto y se instalan los certificados de la &lt;a href="http://www.openssl.org/docs/apps/ca.html" target="_blank"&gt;CA&lt;/a&gt; de desarrollo en los equipos no tendremos que preocuparnos durante el desarrollo de los temas relacionados con los certificados.&lt;br /&gt;
	&lt;br /&gt;
	lo primero que habr&amp;iacute;a que hacer es crear el par de llaves, &lt;a href="http://en.wikipedia.org/wiki/Public-key_infrastructure" target="_blank"&gt;publica y privada&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;openssl genrsa -out zylk-apache.key 2048&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	Una vez tenemos las llaves en el fichero zylk-apache.key, procedemos a crear la &lt;a href="http://en.wikipedia.org/wiki/Certificate_signing_request" target="_blank"&gt;solicitud de certificado&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;openssl req -config openssl.cnf -new -nodes -key zylk-apache.key -out zylk-apache.csr&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	es importante remarcar que el fichero openssl.cnf define los valores por defecto del certificado y que adem&amp;aacute;s el common name es el dato m&amp;aacute;s importante a la hora de crear un certificado ya que es el campo en el que se a&amp;ntilde;adir&amp;aacute; la url del servidor a securizar&lt;br /&gt;
	&lt;br /&gt;
	por &amp;uacute;ltimo si disponemos de una CA de pruebas para desarrollo firmar&amp;iacute;amos el csr&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;openssl ca -config openssl.cnf -in zylk-apache.csr -out zylk-apache.cert&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	Otro punto a tener en cuenta es que se pueden crear extensiones del certificado, por ejemplo para que sirva para m&amp;aacute;s de una URL. Para ello crear&amp;iacute;amos un fichero con el siguiente contenido&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;[ mydomain_http ]&lt;br /&gt;
	nsCertType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = server&lt;br /&gt;
	keyUsage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = digitalSignature,nonRepudiation,keyEncipherment&lt;br /&gt;
	extendedKeyUsage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = serverAuth&lt;br /&gt;
	subjectKeyIdentifier&amp;nbsp;&amp;nbsp;&amp;nbsp; = hash&lt;br /&gt;
	authorityKeyIdentifier&amp;nbsp; = keyid,issuer&lt;br /&gt;
	subjectAltName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = @mydomain_http_subject&lt;br /&gt;
	[ mydomain_http_subject ]&lt;br /&gt;
	DNS.1 = x-zylk.net&lt;br /&gt;
	DNS.2 = x-sinadura.net&lt;br /&gt;
	DNS.3 = x-app.kerozain.com&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	Y lo usariamos a la hora de firmar el csr a&amp;ntilde;adiendo al comando de firma de csr el siguiente par&amp;aacute;metro&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;-extfile /home/waffel/ssl/fichero.extension -extensions mydomain_http&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	Con estos tres comandos b&amp;aacute;sicos de openssl se pueden cubrir las necesidades de un proyecto durante la fase de desarrollo/test&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-01-25T12:34:39Z</dc:date>
  </entry>
  <entry>
    <title>tareas condicionales usando ant y jenkins</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=196914" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=196914</id>
    <updated>2013-01-23T18:02:37Z</updated>
    <published>2013-01-23T17:55:56Z</published>
    <summary type="html">&lt;p&gt;
	Ayer por la tarde actualizamos a la versi&amp;oacute;n 3 nuestro &lt;a href="http://hudson-ci.org/" target="_blank"&gt;hudson&lt;/a&gt; y se rompi&amp;oacute; entero... como llevaba un tiempo queriendo migrar el &lt;a href="http://stackoverflow.com/questions/11433083/hudson-vs-jenkins-in-2012" target="_blank"&gt;hudson&lt;/a&gt; a &lt;a href="http://jenkins-ci.org/" target="_blank"&gt;jenkins&lt;/a&gt; decidimos que era un buen momento para reorganizar todo el sistema de integraci&amp;oacute;n continua y usar un truco para poder realizar tareas con condiciones desde &lt;a href="http://ant.apache.org/" target="_blank"&gt;ant&lt;/a&gt;, manejando las condiciones desde las interfaz de hudson a partir de ahora jenkins. Explico a continuaci&amp;oacute;n el problema y la soluci&amp;oacute;n adoptada en zylk.net.&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	En zylk.net tenemos todos los proyectos automatizados con tareas de &lt;a href="http://stackoverflow.com/questions/745261/maven-vs-ant" target="_blank"&gt;ant o con tareas de maven&lt;/a&gt;. Personalmente nos gusta m&amp;aacute;s ant aunque usamos indistintamente cualquiera de las dos alternativa. Al tener las tareas automatizadas con ant tenemos un problema t&amp;iacute;pico que consiste en como gestionar las partes del proyecto que son dependientes del entorno de una manera c&amp;oacute;moda. Hasta aqu&amp;iacute; el problema. &amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	Las posibles soluciones que hemos ido trabajando son las siguientes&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Crear tareas diferentes para cada entorno, por ejemplo tener una tarea de compilado otra de empaquetado y otra de despliegue distinta para cada entorno&lt;/li&gt;
	&lt;li&gt;
		Ser capaces de parametrizar la ejecuci&amp;oacute;n de las tareas en base a ciertos valores que cambian&lt;/li&gt;
	&lt;li&gt;
		Disponer de tareas condicionales que se ejecutan o no en base a ciertos valores de ciertas variables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	En este caso hemos modificado las corrientas de ant para que tengan las siguiente estructura&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&lt;strong&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;property name=&amp;quot;deploy&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;target name=&amp;quot;deploy.check&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;condition property=&amp;quot;deploy-control&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;and&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;contains string=&amp;quot;${deploy}&amp;quot; substring=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/and&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/condition&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/target&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;target if=&amp;quot;${deploy-control}&amp;quot; name=&amp;quot;remote-deploy&amp;quot; &lt;/code&gt;&lt;/strong&gt;&lt;strong&gt;&lt;code&gt;depends=&amp;quot;deploy.check&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/target&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	en este snipet de ant vemos dos tareas&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		deploy.check&lt;/li&gt;
	&lt;li&gt;
		remote-deploy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&amp;nbsp;&lt;br /&gt;
	La primera es una tarea que lo que hace es comprobar el valor de una variable &lt;strong&gt;${deploy}&lt;/strong&gt; y en base a su valor, fija otra varible&lt;strong&gt; ${deploy-control}&lt;/strong&gt;&lt;br /&gt;
	La segunda que depende de la primera solo se ejecuta si la variable ${deploy-control} existe (&lt;strong&gt;if=&amp;quot;${deploy-control}&amp;quot;&lt;/strong&gt;)&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	El estado de la variable deploy se pude controlar desde tres puntos&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		build.xml o properties asociado &lt;strong&gt;&amp;lt;property name=&amp;quot;deploy&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;
		linea de comandos &lt;strong&gt;-Ddeploy = true&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;
		o desde la interfaz de jenkins como un par&amp;aacute;metro de entrada de la tarea de jenkins. Es decir desde la interfaz web del producto.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=019abafd-5665-431e-aa20-b04d67d222c1&amp;amp;groupId=10102&amp;amp;t=1358963671117" style="width: 640px; height: 333px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;br /&gt;
	Con este peque&amp;ntilde;o cambio en las tareas de ant podemos parametrizar las ejecuciones y en base a un check dentro del jenkins y realizar tareas especificas para un entorno concreto. Por ejemplo pone unos ficheros de configuraci&amp;oacute;n u otros dependiendo de valor de una variable&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;&lt;code&gt;&amp;lt;target name=&amp;quot;environment.prod.check&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;echo message=&amp;quot;Mege para produccion ${deploy.prod} ${environment.prod}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;condition property=&amp;quot;environment.prod&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp; &amp;lt;and&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;contains string=&amp;quot;${deploy.prod}&amp;quot; substring=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;nbsp; &amp;lt;/and&amp;gt;&lt;br /&gt;
	&amp;lt;/condition&amp;gt;&lt;br /&gt;
	&amp;lt;echo message=&amp;quot;Mege para produccion 2 ??? ${deploy.prod} ${environment.prod}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
	&amp;lt;target name=&amp;quot;merge-prod&amp;quot; if=&amp;quot;${environment.prod}&amp;quot; depends=&amp;quot;init,environment.prod.check&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;nbsp; &amp;lt;echo message=&amp;quot;se usara el context-prod.xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;copy file=&amp;quot;context-prod.xml&amp;quot; tofile=&amp;quot;META-INF/context.xml&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;lt;copy file=&amp;quot;WEB-INF/web-prod.xml&amp;quot; tofile=&amp;quot;WEB-INF/web.xml&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	En este caso si desde la interfaz de jenkins ponemos el valor true a la variable&lt;strong&gt; ${deploy.prod}&lt;/strong&gt;, conseguiremos que el empaquetado generado tenga el web.xml y el context.xml para el entorno productivo.&lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	Estas cosas se pueden hacer con tareas tipo if de ant pero no son est&amp;aacute;ndares 100%&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2013-01-23T17:55:56Z</dc:date>
  </entry>
  <entry>
    <title>Entorno de integracion continua para desarrollos en liferay portal basado en hudson</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=195170" />
    <author>
      <name>Gustavo Fernandez</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=195170</id>
    <updated>2012-12-20T18:33:58Z</updated>
    <published>2012-12-20T18:31:12Z</published>
    <summary type="html">&lt;p&gt;
	En el desarrollo de software, el ciclo de vida de los proyectos suele pasar por los siguientes estados:&lt;/p&gt;
&lt;p&gt;
	Desarrollo → Pruebas → Producción.&lt;/p&gt;
&lt;p&gt;
	En cada uno de estos estados se realizan unas tareas que pueden dar origen a pasar al siguiente estado o volver al estado anterior. Dependiendo del número de veces que se pase entre los estados en un desarrollo y de los hitos que se marquen, para poder pasar entre los distintos estados, se puede hablar de desarrollos más o menos orientados a &lt;a href="http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software" target="_blank"&gt;metodologías ágiles&lt;/a&gt; (siendo esto una simplificación grandísima y errónea si se interpreta al pie de la letra de lo que son metodologías ágiles).&lt;br /&gt;
	&lt;br /&gt;
	Para realizar estas tareas de manera automática, además de para otras cosas como la validación de la calidad de código, test unitarios etc... se suelen utilizar herramientas de &lt;a href="http://es.wikipedia.org/wiki/Integraci%C3%B3n_continua" target="_blank"&gt;integración continua&lt;/a&gt;.&lt;br /&gt;
	&lt;br /&gt;
	En zylk.net utilizamos &lt;a href="http://hudson-ci.org/" target="_blank"&gt;hudson&lt;/a&gt;/&lt;a href="http://jenkins-ci.org/" target="_blank"&gt;jenkins&lt;/a&gt; junto con tareas de &lt;a href="http://ant.apache.org/" target="_blank"&gt;ant&lt;/a&gt; y/o &lt;a href="http://maven.apache.org/" target="_blank"&gt;maven&lt;/a&gt; para el procedimiento y la gestión del ciclo de vida de los desarrollos. Un tipo de desarrollos que se realizan en &lt;a href="http://www.zylk.net" target="_blank"&gt;zylk&lt;/a&gt; son aquellos basados en &lt;a href="http://www.liferay.com" target="_blank"&gt;liferay&lt;/a&gt;, con el &lt;a href="http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+IDE+Getting+Started+Tutorial" target="_blank"&gt;sdk del producto&lt;/a&gt;. A continuación se muestra un gráfico que ilustra la gestión de proyectos de liferay y la visión que tenemos en zylk de como realizarlos desde el punto de vista del ciclo de vida de Desarrollo → Pruebas → Producción.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=0d1f6566-2209-4df3-86d1-f451402dc5fe&amp;amp;groupId=10102&amp;amp;t=1356028427106" style="width: 640px; height: 388px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	En el gráfico podemos ver las siguientes partes&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Entorno de desarrollo en PC&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://en.wikipedia.org/wiki/Quality_assurance" target="_blank"&gt;Entorno de QA&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		Entorno de Testing&lt;/li&gt;
	&lt;li&gt;
		Entorno productivo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Y un conjunto de herramientas que usamos en el desarrollo como son&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Gestor de versiones (&lt;a href="http://subversion.apache.org/" target="_blank"&gt;subversion&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;
		Gestor de incidencias (&lt;a href="http://www.mantisbt.org/" target="_blank"&gt;mantis&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;
		Gestor de envío de notificaciones (servidor de email, &lt;a href="http://www.zimbra.com/" target="_blank"&gt;zimbra&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;
		Gestor de ciclo de vida para paso entre entornos (&lt;a href="http://hudson-ci.org/" target="_blank"&gt;hudson&lt;/a&gt;/&lt;a href="http://jenkins-ci.org/" target="_blank"&gt;jenkins&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=aa7f869a-5f97-41e8-ba90-d3b1c8d266ea&amp;amp;groupId=10102&amp;amp;t=1356027563827" style="width: 640px; height: 321px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	Desde el punto de vista de zylk una de las partes más importante es el entorno de PC, pensado con una características principal, debe ser auto-consistente, es decir el proyecto que se esté desarrollando debe poder ejecutarse en el PC local del desarrollador.&lt;br /&gt;
	&lt;br /&gt;
	El entorno de QA es el encargado de descargar las versiones nuevas del sistema de gestión de versiones, compilar, hacer los test pertinentes y desplegar en los distintos entornos.&lt;br /&gt;
	&lt;br /&gt;
	Una vez explicado este tema, de manera general, la parte particular que nos ocupa en este artículo es describir los problemas y soluciones que hemos adoptado en zylk.net para adaptar los desarrollos de liferay a esta metodología, teniendo en cuenta que queríamos un alineamiento total con el producto y su SDK.&lt;br /&gt;
	&lt;br /&gt;
	Los problemas principales que nos encontramos fueron dos:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Poder especificar la versión del SDK con la que realizar las tareas en el entorno del SDK, de manera externa.&lt;/li&gt;
	&lt;li&gt;
		Poder ejecutar las tareas de compilación y despliegue que el propio SDK facilita pero desde fuera de las carpetas del propio SDK&lt;/li&gt;
	&lt;li&gt;
		Poder desplegar en maquinas remotas las compilaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&lt;br /&gt;
	Además se debería poder seguir usando el SDK de manera normal en el entorno del PC precisamente para que cualquier desarrollador pueda desarrollar siguiendo las buenas prácticas para recomendadas por el producto.&lt;br /&gt;
	&lt;br /&gt;
	Las soluciones fueron muy básicas y poco intrusivas y consisten en pequeñas variaciones del SDK de liferay que se usa en el &lt;a href="http://en.wikipedia.org/wiki/Quality_assurance" target="_blank"&gt;entorno de QA&lt;/a&gt; (en el entorno de PC se usa el SDK estándar precisamente para poder utilizar todo el know-how existente en internet relacionado con liferay) que permite hacer las tareas que hemos comentado.&lt;br /&gt;
	&lt;br /&gt;
	Con este modelo disponemos de un control del ciclo de vida de los desarrollos basados en liferay para poder gestionar de manera sencilla que se adecua a la forma de trabajo que se usa en zylk.net para el resto de desarrollos no basados en liferay.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	A continuación unas imágenes de la herramienta de integración que usamos en zylk.net&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=2d1b61f8-d57b-47b1-9698-6ab827949f8d&amp;amp;groupId=10102&amp;amp;t=1356027610051" style="width: 640px; height: 162px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	vista de los proyectos de un cliente&lt;/p&gt;
&lt;p&gt;
	 &lt;/p&gt;
&lt;p&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=1b6aa1f1-fda6-4bd8-ad50-610e9201b974&amp;amp;groupId=10102&amp;amp;t=1356027645972" style="width: 640px; height: 352px;" /&gt;&lt;/p&gt;
&lt;p&gt;
	vista del detalle del despliegue de un proyecto concreto en el entorno de test.&lt;/p&gt;</summary>
    <dc:creator>Gustavo Fernandez</dc:creator>
    <dc:date>2012-12-20T18:31:12Z</dc:date>
  </entry>
  <entry>
    <title>Alfresco CIFS authenticator for openLDAP users addon</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=191170" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=191170</id>
    <updated>2012-08-27T02:00:04Z</updated>
    <published>2012-08-26T05:53:05Z</published>
    <summary type="html">&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;strong&gt;What is Alfresco CIFS authenticator for openLDAP users addon ?&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	Actually, Alfresco provides some CIFS authenticators (passthru, ntlm...), but not for a LDAP subsystem. To solve this problem, we have implemented a component that allows you to use CIFS with openLDAP users.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=75b193bd-5764-4764-96bc-4c0b1d6b7c8b&amp;amp;groupId=10102&amp;amp;t=1346032770654" style="width: 517px; height: 515px;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;strong&gt;How to install it&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	The installation is tracked via an AMP package. First, stop Alfresco, copy the file in ${ALF_HOME}/amps and use ${ALF_HOME}/bin/apply_amps script to install de AMP. Then, copy configuration files to the extension directory to customize and configure the authentication parameters. Once they are configured, restart your Alfresco instance.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;strong&gt;How to configure it&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	In alfresco-global.properties, we can add the new subsystem in the autentication.chain of alfresco-global.properties file.&lt;br /&gt;
	&lt;br /&gt;
	&lt;em&gt;authentication.chain=alfrescoNtlm1:alfrescoNtlm,myldap:ldap,ldapSamba1:ldapSamba&lt;/em&gt;&lt;br /&gt;
	&lt;br /&gt;
	Then we can customize the auth&lt;em&gt;entication subsystem with the help of the files&lt;br /&gt;
	&lt;br /&gt;
	${EXT_ROOT}/subsystems/Authentication/ldapSamba/ldapSamba1/ldap-samba-authentication-context.xml&lt;br /&gt;
	${EXT_ROOT}/subsystems/Authentication/ldapSamba/ldapSamba1/ldap-samba-authentication.properties&lt;/em&gt;&lt;br /&gt;
	&lt;br /&gt;
	where ${EXT_ROOT} should be something similar to /opt/alfresco4/tomcat/shared/classes/alfresco/extension/&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Custom properties&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	An example of custom properties are:&lt;br /&gt;
	&lt;br /&gt;
	# LDAP Connection properties&lt;br /&gt;
	ldap.samba.authentication.java.naming.provider.url=ldap://ldap.example.com:389&lt;br /&gt;
	ldap.samba.authentication.base=dc=example,dc=com&lt;br /&gt;
	ldap.samba.authentication.userbase=ou=People&lt;br /&gt;
	&lt;br /&gt;
	# The user defined below must be able to execute user search querys in LDAP (administrator)&lt;br /&gt;
	ldap.samba.java.naming.security.principal=cn=admin,dc=example,dc=com&lt;br /&gt;
	ldap.samba.java.naming.security.credentials=secret&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Notes&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	Each LDAP user needs to store the password as an MD4 hash and we will solve this by adding a sambaSamAccount object class to the user profile. This object class and its attributes are defined in the samba.schema file, which is part of the samba-doc package. To install this new schema, have a look at the documentation for your Linux distribution in the sections talking about how to add an LDAP schema to OpenLDAP.&lt;br /&gt;
	&lt;br /&gt;
	It is important to note that the other CIFS-able subsystems must be deactivated (only one of the subsystems can use CIFS - in fact the first one in the chain). In alfresco-global.properties&lt;br /&gt;
	&lt;br /&gt;
	alfresco.authentication.authenticateCIFS=false&lt;br /&gt;
	passthru.authentication.authenticateCIFS=false&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Where to find more information&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	For more information about this addon, &lt;a href="http://www.zylk.net/web/guest/contacto/formulario-de-contacto" target="_blank"&gt;please fill zylk.net contact / order form&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://addons.alfresco.com/addons/alfresco-cifs-authenticator-openldap-users" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-cifs-authenticator-openldap-users&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/subsistemas-de-autenticacion-extendidos-en-alfresco-ldap-compatible-con-cifs" target="_blank"&gt;http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/subsistemas-de-autenticacion-extendidos-en-alfresco-ldap-compatible-con-cifs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2012-08-26T05:53:05Z</dc:date>
  </entry>
  <entry>
    <title>Alfresco custom JDBC authentication addon</title>
    <link rel="alternate" href="http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=191155" />
    <author>
      <name>Cesar Capillas</name>
    </author>
    <id>http://www.zylk.net/c/blogs/find_entry?p_l_id=0&amp;entryId=191155</id>
    <updated>2012-08-27T02:08:16Z</updated>
    <published>2012-08-26T05:23:26Z</published>
    <summary type="html">&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;What is Alfresco custom JDBC authenticator addon ?&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	Alfresco custom JDBC authenticator addon provides an out of the box authentication subsystem able to login against a custom table of users storaged in a relational table of a custom application.&lt;br /&gt;
	&lt;br /&gt;
	It is designed for users integration between an Alfresco repository and a custom application. You can use it with any type of database (mysql, postgresql, oracle....) with its corresponding jdbc driver and it is fully customizable through authentication properties. You can also use CIFS with this subsystem if your password field is stored in MD4.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;img alt="" src="http://www.zylk.net/image/image_gallery?uuid=9770bd2d-7342-43a8-8135-abd1b4fb32e0&amp;amp;groupId=10102&amp;amp;t=1346032760700" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
	&lt;strong&gt;How to install it&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	The installation is tracked via an AMP package. Stop Alfresco, copy the AMP file in ${ALF_HOME}/amps and use ${ALF_HOME}/bin/apply_amps script to install de AMP. Then, copy configuration files to the extension directory to customize and configure the authentication parameters. Once they are configured, restart your Alfresco instance.&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;How to configure it&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	In alfresco-global.properties, we can add the new subsystem in the authentication.chain of alfresco-global.properties file.&lt;br /&gt;
	&lt;br /&gt;
	&lt;em&gt;authentication.chain=alfrescoNtlm1:alfrescoNtlm,myldap:ldap,myjdbc:jdbc&lt;/em&gt;&lt;br /&gt;
	&lt;br /&gt;
	Then we can customize the authentication subsystem with the help of the files&lt;br /&gt;
	&lt;br /&gt;
	&lt;em&gt;${EXT_ROOT}/subsystems/Authentication/jdbc/myjdbc/jdbc-authentication-context.xml&lt;br /&gt;
	${EXT_ROOT}/subsystems/Authentication/jdbc/myjdbc/jdbc-authentication.properties&lt;/em&gt;&lt;br /&gt;
	&lt;br /&gt;
	where ${EXT_ROOT} should be something similar to /opt/alfresco4/tomcat/shared/classes/alfresco/extension/&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Custom JDBC properties&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	The custom properties of the addon are (for example).&lt;br /&gt;
	&lt;br /&gt;
	jdbc.driver=org.gjt.mm.mysql.Driver&lt;br /&gt;
	jdbc.username=root&lt;br /&gt;
	jdbc.password=secret&lt;br /&gt;
	jdbc.name=mydb&lt;br /&gt;
	jdbc.url=jdbc:mysql://localhost:3306/mydb&lt;br /&gt;
	jdbc.query=SELECT password FROM myusers WHERE id=&amp;#39;{1}&amp;#39;&lt;br /&gt;
	&lt;br /&gt;
	# Default administrators&lt;br /&gt;
	jdbc.authentication.defaultAdministratorUserNames=zylk,mysql&lt;br /&gt;
	&lt;br /&gt;
	# CIFS&lt;br /&gt;
	# If jdbc.authentication.cifs.active = true set jdbc.authentication.password.type = md4&lt;br /&gt;
	jdbc.authentication.cifs.active=true&lt;br /&gt;
	&lt;br /&gt;
	# Password encryption type in DB plain|md5|md4&lt;br /&gt;
	jdbc.authentication.password.type=md4&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Notes&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	It is important to note that the other CIFS-able subsystems must be deactivated (only one of the subsystems can use CIFS - in fact the first one in the chain). In alfresco-global.properties&lt;br /&gt;
	&lt;br /&gt;
	alfresco.authentication.authenticateCIFS=false&lt;br /&gt;
	passthru.authentication.authenticateCIFS=false&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Where to find more information&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	For more information about this addon, &lt;a href="http://www.zylk.net/web/guest/contacto/formulario-de-contacto"&gt;please fill zylk.net contact / order form&lt;/a&gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;a href="http://addons.alfresco.com/addons/alfresco-custom-jdbc-authenticator" target="_blank"&gt;http://addons.alfresco.com/addons/alfresco-custom-jdbc-authenticator&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;
		&lt;a href="http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/subsistemas-de-autenticacion-extendidos-en-alfresco-ldap-compatible-con-cifs" target="_blank"&gt;http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/subsistemas-de-autenticacion-extendidos-en-alfresco-ldap-compatible-con-cifs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    <dc:creator>Cesar Capillas</dc:creator>
    <dc:date>2012-08-26T05:23:26Z</dc:date>
  </entry>
</feed>

