<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.3" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Julián J. Menéndez</title>
	<link>http://www.julianmenendez.es</link>
	<description>Blog personal sobre asterisk, linux y todo lo demás</description>
	<pubDate>Thu, 20 Nov 2008 11:59:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/julianjm" /><feedburner:info uri="julianjm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Probando IPv6 Parte 2</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/yH6VGB8A9_Y/</link>
		<comments>http://www.julianmenendez.es/ipv6-openwrt-parte2/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 11:50:05 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[ipv6]]></category>

		<category><![CDATA[openwrt]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/ipv6-openwrt-parte2/</guid>
		<description><![CDATA[Continuamos con el howto para &#8220;engancharnos&#8221; a internet mediante IPv6.
Si hemos seguido el post anterior, ya deberíamos tener conectividadad IPv6 en nuestro router, aunque solo para el router (solo una IP). Después de una semana sin probemas, ya tenemos créditos (ISKs) suficientes para solicitar una subreda a sixxs.
Vamos a suponer que nos han asignado la [...]]]></description>
			<content:encoded><![CDATA[<p>Continuamos con el howto para &#8220;engancharnos&#8221; a internet mediante IPv6.</p>
<p>Si hemos seguido el post anterior, ya deberíamos tener conectividadad IPv6 en nuestro router, aunque solo para el router (solo una IP). Después de una semana sin probemas, ya tenemos créditos (ISKs) suficientes para solicitar una subreda a sixxs.</p>
<p>Vamos a suponer que nos han asignado la subred 2001:b18:baba::/48. Una red local tiene una dirección de red de 64 bits (/64), quedando el resto de la dirección (los otros 64) para el direccionamente en la red local. Esto quiere decir que nos han asignado una subred con soporte para 65536 subredes locales. Más que sufiente, creo yo <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <a href="http://www.julianmenendez.es/ipv6-openwrt-parte2/#more-89" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/yH6VGB8A9_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/ipv6-openwrt-parte2/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/ipv6-openwrt-parte2/</feedburner:origLink></item>
		<item>
		<title>Probando IPv6 Parte 1</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/TTJ53s6ZMm8/</link>
		<comments>http://www.julianmenendez.es/ipv6-openwrt-parte1/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 13:58:15 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[ipv6]]></category>

		<category><![CDATA[openwrt]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/ipv6-openwrt-parte1/</guid>
		<description><![CDATA[Llevamos tiempo oyendo sobre IPv6, de cómo se está agotando el espacio de direcciones de IPv4, y que el cambio será inevitable en los próximos años.
En la actualidad hay pocos ISP que den conectividad IPv6 de forma nativa (Telefónica, are you there?), así que la alternativa que tenemos es usar un tunel 6to4 con un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.julianmenendez.es/wp-content/uploads/2008/07/ipv6-logo.png" alt="IPv6" align="right" />Llevamos tiempo oyendo sobre IPv6, de cómo se está agotando el espacio de direcciones de IPv4, y que el cambio será inevitable en los próximos años.</p>
<p>En la actualidad hay pocos ISP que den conectividad IPv6 de forma nativa (Telefónica, are you there?), así que la alternativa que tenemos es usar un tunel 6to4 con un ISP. En el caso que voy a comentar, utilicé <a href="http://www.sixxs.net">SixXs</a>.</p>
<p>Antes de embarcarse en esta cruzada, recomiendo encarecidamente leer el artículo sobre IPv6 de la wikipedia, para entender bien los tipos de direcciones, cómo se forman y cómo se enrutan los paquetes:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Ipv6">http://en.wikipedia.org/wiki/Ipv6</a></li>
<li><a href="http://es.wikipedia.org/wiki/Ipv6">http://es.wikipedia.org/wiki/Ipv6</a></li>
</ul>
<h2>Escenario</h2>
<ul>
<li>Router flasheado con OpenWRT White Russian (Con Kamikaze también sirve)</li>
<li>Tunel IPv6 con un broker (www.sixxs.net)</li>
<li>Asignación de subred IPv6 para la LAN</li>
</ul>
<p>Cualquier otra distribución de linux nos servirá&#8230; Los pasos a seguir variarán, pero el fondo es el mismo <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p> <a href="http://www.julianmenendez.es/ipv6-openwrt-parte1/#more-87" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/TTJ53s6ZMm8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/ipv6-openwrt-parte1/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/ipv6-openwrt-parte1/</feedburner:origLink></item>
		<item>
		<title>Configurar OpenWRT para QoS con Asterisk</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/x7H9vJI9Bhw/</link>
		<comments>http://www.julianmenendez.es/configurar_openwrt_qos_asterisk/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 21:05:01 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[firewall]]></category>

		<category><![CDATA[openwrt]]></category>

		<category><![CDATA[qos]]></category>

		<category><![CDATA[router]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/configurar_openwrt_qos_asterisk/</guid>
		<description><![CDATA[En una centralita IP, sobre todo si usas proveedores IP, es fundamental tener un sistema de QoS (Calidad del Servicio, en inglés), que regule el tráfico de/hacia Internet, y priorice el tráfico importante del que no lo es tanto.
De nada sirve (aunque ayuda) tener una conexión de 20 &#8220;megas&#8221; si, cuando un usuario de la [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/wrt54g.jpg" alt="WRT54G" align="right" />En una centralita IP, sobre todo si usas proveedores IP, es fundamental tener un sistema de QoS (Calidad del Servicio, en inglés), que regule el tráfico de/hacia Internet, y priorice el tráfico importante del que no lo es tanto.</p>
<p>De nada sirve (aunque ayuda) tener una conexión de 20 &#8220;megas&#8221; si, cuando un usuario de la red enchufa el bittorrent, tu interlocutor se convierte en <em>Robocop</em>. Por ello, la principal función del router será discriminar los paquetes que salen (y llegan) de Internet, en distintas clases, de forma que los pertenecientes a las clases con alta prioridad salgan los primeros, y los menos importantes salgan cuando puedan o, directamente, no salgan. Que un email tarde 20 segundos más en enviarse es un problema menor. Que no te escuchen, o te escuchen mal, es inaceptable.</p>
<p>En el mercado hay multitud de dispositivos que permiten hacer QoS. Routers Cisco, HP, Dell, y un largo etcétera. En la mayoría de casos, caros, muy caros. Si he de ser sincero, debo decir que no tengo experiencia con ningún Router &#8220;con mayúscula&#8221;. Amigos, la pela es la pela.</p>
<p>Sigue leyendo&#8230; <a href="http://www.julianmenendez.es/configurar_openwrt_qos_asterisk/#more-84" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/x7H9vJI9Bhw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/configurar_openwrt_qos_asterisk/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/configurar_openwrt_qos_asterisk/</feedburner:origLink></item>
		<item>
		<title>Linksys/Sipura SPA9xx Provisioning</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/Jr7lGMrBofs/</link>
		<comments>http://www.julianmenendez.es/linksys_sipura_spa9xx_provisioning_script/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 12:43:25 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Provisioning]]></category>

		<category><![CDATA[Linksys]]></category>

		<category><![CDATA[script]]></category>

		<category><![CDATA[spa9xx]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/linksys_sipura_spa9xx_provisioning_script/</guid>
		<description><![CDATA[Para una instalación que tenemos que hacer, todo con teléfonos SPA922,SPA942 y SPA962, hemos actualizado el sistema de provisionamiento de los PAP2 que publiqué hace tiempo.
Está hecho con la simplicidad como objetivo, y tratando de facilitar futuras instalaciones. Para esto utilizamos un sistema de plantillas en cascada, es decir, empezamos con una plantilla general, y [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/spa962.jpg" alt="SPA962" align="right" />Para una instalación que tenemos que hacer, todo con teléfonos SPA922,SPA942 y SPA962, hemos actualizado el sistema de provisionamiento de los PAP2 que publiqué hace tiempo.</p>
<p>Está hecho con la simplicidad como objetivo, y tratando de facilitar futuras instalaciones. Para esto utilizamos un sistema de plantillas en cascada, es decir, empezamos con una plantilla general, y vamos añadiendo personalizaciones, hasta llegar a la última, en la que prácticamente sólo hay que especificar el número de extensión (usuario) y la contraseña.</p>
<ol>
<li>{modelo}-default.cfg: Esta plantilla contiene los ajustes por defecto del modelo de teléfono. {modelo} se reemplaza por 922, 942, 962, etc. Más adelante os comento cómo generar este fichero.</li>
<li>global.cfg: Aquí indicamos, como instaladores, las modificaciones a los ajustes por defecto. Por ejemplo, la regionalización, diccionarios de idiomas, etc. Así evitamos tocar la plantilla anterior, que puede variar con cada actualización del firmware.</li>
<li>site.cfg: Ajustes para una instalación concreta, es decir, la IP del proxy, servidor NTP, Syslog, Zona horaria, etc.</li>
<li>{modelo}-site.cfg: Ajustes más específicos para una instalación y modelo. Por ejemplo, para las actualizaciones de firmware, usando el Upgrade_Rule.</li>
<li>{modelo}-{mac}.cfg: Finalmente la configuración de cada teléfono. Si el resto se ha hecho bien, solo queda indicar la extensión y contraseña.</li>
</ol>
<p>El fichero de ajustes por defecto se genera a partir del xml que proporciona el teléfono en <a href="http://x.x.x.x/admin/spacfg.xml">http://x.x.x.x/admin/spacfg.xml</a>. Hay un script (xml2cfg) que &#8220;parsea&#8221; el xml, y lo convierte en pares de clave:valor.</p>
<h2>Paso 1. Servidor DHCP</h2>
<p>Los SPA9xx, cuando arrancan por primera vez (o después de un &#8220;factory reset&#8221;), buscan un servidor DHCP que les asigne una dirección IP. A continuación, intentan descargar desde el servidor, mediante TFTP, un fichero de configuración: spa922.cfg, spa942.cfg, etc, según el modelo.</p>
<p>En esta primera instancia, lo que haremos será redirigir el teléfono (mediante el parámetro Profile_Rule), a un script en PHP que genere la configuración definitiva. Además, forzaremos al teléfono a que descargue esta configuración lo antes posible (10 segundos, en lugar de 1 hora).</p>
<p>El fichero /tftpboot/spa922.cfg, por ejemplo, quedaría así:</p>
<p><code>&lt;flat-profile&gt;<br />
&lt;GPP_A ua="na"&gt;x.x.x.x&lt;/GPP_A&gt;<br />
&lt;Profile_Rule ua="na"&gt;http://$A/provisioning/config.php?model=$PSN&amp;mac=$MA&lt;/Profile_Rule&gt;<br />
&lt;Resync_Periodic ua="na"&gt;10&lt;/Resync_Periodic&gt;<br />
&lt;Resync_Error_Retry_Delay ua="na"&gt;10&lt;/Resync_Error_Retry_Delay&gt;<br />
&lt;Resync_Fails_On_FNF ua="na"&gt;Yes&lt;/Resync_Fails_On_FNF&gt;<br />
&lt;/flat-profile&gt;</code></p>
<p>Vemos que se dirige a un script (config.php), y que se le pasa como parámetro tanto el modelo como la MAC del teléfono.</p>
<h2>Paso 2. El servidor Web</h2>
<p>Todo el meollo está en el script config.php. Lo dejamos en /var/www/html/provisioning/, o donde más os guste. Al recibir una petición para un modelo y MAC concretas, leerá las plantillas de ajustes que correspondan, y generará una configuración completa para el teléfono.</p>
<h2>Paso 3. Las plantillas de ajustes</h2>
<p>Como las plantillas se leen en un orden concreto, y cada plantilla va sobreescribiendo los ajustes de la anterior, bastará con tener una configuración base, la que trae de fábrica el teléfono, y luego sobre esta, ir haciendo las modificaciones que precisemos.</p>
<p>Para generar esta plantilla base, podemos usar un pequeño script que incluyo:</p>
<p><code>$ cd /etc/provisioning/<br />
$ wget http://ip.del.sp.a/admin/spacfg.xml<br />
$ xml2cfg spa.cfg &gt; 922-default.cfg<br />
$ rm spacfg.xml</code></p>
<p>El resto de ficheros siguen el mismo formato, Clave:Valor. En el fichero global.cfg, por ejemplo, nosotros incluimos los ajustes de regionalización (frecuencia y cadencia de los tonos de línea, ocupado, etc), y otros ajustes comunes a todas las instalaciones que haremos.</p>
<p>Ejemplo de global.cfg: (Ajustes sacados de <a href="http://www.voipnovatos.es/item/2008/01/call-progress-tones-linksys-spa">http://www.voipnovatos.es/item/2008/01/call-progress-tones-linksys-spa</a>)</p>
<p><code>Dial_Tone:425@-10;10(*/0/1);<br />
Outside_Dial_Tone: "425@-10;10(*/0/1);<br />
Busy_Tone:425@-20;10(.2/.2/1);<br />
Reorder_Tone:425@-10;10(0.2/0.2/1,0.2/0.2/1,0.2/0.6/1);<br />
Off_Hook_Warning_Tone:425@-10;10(.25/.25/1);<br />
Ring_Back_Tone:425@-10;10(1/4/1);<br />
Call_Waiting_Tone:425@-20;10(0.175/0.175/1,0.0175/3.5/1);<br />
Confirm_Tone:;<br />
SIT1_Tone:950@-10,1400@-10,1800@-10;10(.33/0/1,.33/0/2,0.33/1/3);<br />
SIT2_Tone:;<br />
SIT3_Tone:;<br />
SIT4_Tone:;<br />
MWI_Dial_Tone:425@-10;10(1/0.1/1)" ;<br />
Cfwd_Dial_Tone:425@-10;10(0.5/0.05/1)" ;<br />
Holding_Tone:1400@-20;10(0.4/5/1)" ;<br />
Conference_Tone:;<br />
Secure_Call_Indication_Tone:;<br />
Page_Tone:;</code></p>
<p>Ejemplo de site.cfg</p>
<p><code>Proxy_1_:x.x.x.y</code></p>
<p>Ejemplo de 922-AABBCCDDEE.cfg</p>
<p><code>Display_Name_1_:Julian<br />
User_ID_1_:201<br />
Password_1_:esunsecreto</code></p>
<h2>Descargar el código</h2>
<p>He montado un servidor SVN para éste y futuros proyectos, y para facilitar las mejoras (en forma de parches) que me enviéis ;). Se distribuye bajo licencia GPL:</p>
<p><code>$ svn co http://svn.julianmenendez.es/spa-provisioning/trunk spa-provisioning</code></p>
<h2>Conclusión</h2>
<p>Sé que hay muchas mejoras posibles, pero esto funciona, y al estar basado en plantillas de ajustes, realizar una instalación nueva solo requiere copiar los ficheros, ajustar el fichero site.cfg, y crear los diferentes ficheros de cada teléfono.</p>
<p>Como mejoras que me gustaría implementar, destacan:</p>
<ul>
<li>Generación estática de los ficheros de configuración. Después de hacer un &#8220;make&#8221;, por ejemplo, el script generaría los ficheros directamente en /tftboot/{model}-{mac}.cfg, de forma que sólo se requeriría un servidor TFTP.</li>
<li>Interfaz web para gestionar las configuraciones</li>
<li>Autoprovisioning. Detectar los nuevos teléfonos, y desde la interfaz web, poder rápidamente asignarles usuario/contraseña. Plug&amp;Talk <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>Julián J. M.</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/Jr7lGMrBofs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/linksys_sipura_spa9xx_provisioning_script/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/linksys_sipura_spa9xx_provisioning_script/</feedburner:origLink></item>
		<item>
		<title>Probando las Tarjetas OpenVox</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/tYlowViSYhU/</link>
		<comments>http://www.julianmenendez.es/probando-tarjetas-openvox-a400p-b200p/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 11:48:47 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[hardware]]></category>

		<category><![CDATA[misdn]]></category>

		<category><![CDATA[openvox]]></category>

		<category><![CDATA[RDSI]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/probando-tarjetas-openvox-a400p-b200p/</guid>
		<description><![CDATA[Juan Carlos Valero, de Capatres, nos ha prestado un par de tarjetas de OpenVox, para poder probarlas, y de paso hacer un pequeño review. Las tarjetas son la B200P, para 2 puertos RDSI, y la A400P para hasta 4 puertos FXS/FXO.
 
 
Las Tarjetas
La A400P es clavadita a la TDM400P. Lleva el chip TigerJet 320, [...]]]></description>
			<content:encoded><![CDATA[<p>Juan Carlos Valero, de <a href="http://www.capatres.com/">Capatres</a>, nos ha prestado un par de tarjetas de <a href="http://www.openvox.com.cn/">OpenVox</a>, para poder probarlas, y de paso hacer un pequeño review. Las tarjetas son la <a href="http://www.capatres.com/noticias/ultimas-noticias/b200p.html">B200P</a>, para 2 puertos RDSI, y la <a href="http://www.capatres.com/noticias/ultimas-noticias/a400p.html">A400P</a> para hasta 4 puertos FXS/FXO.</p>
<p align="center"><a href="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-b200p.jpg" title="OpenVox B200P"><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-b200p.thumbnail.jpg" alt="OpenVox B200P" /></a> <a href="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-a400p.jpg" title="OpenVox A400P"><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-a400p.thumbnail.jpg" alt="OpenVox A400P" /></a></p>
<p align="center"><a href="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-b200p-jumpers.jpg" title="Jumpers de la OpenVox B200P"><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-b200p-jumpers.thumbnail.jpg" alt="Jumpers de la OpenVox B200P" /></a> <a href="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-a400p-con-modulos.jpg" title="OpenVox A400P con módulos"><img src="http://www.julianmenendez.es/wp-content/uploads/2008/04/openvox-a400p-con-modulos.thumbnail.jpg" alt="OpenVox A400P con módulos" /></a></p>
<h2>Las Tarjetas</h2>
<p>La A400P es clavadita a la TDM400P. Lleva el chip TigerJet 320, admite hasta 4 módulos FXS y FXO. Para los primeros es necesario proporcionar alimentación adicional a la tarjeta, mediante un conector molex. Los módulos son compatibles con los de Digium. De hecho, en la foto de arriba, los del 1 y 4 son OpenVox, y los 3 y 4 Digium.</p>
<p>La B200P lleva el chip HFC-4S, que puede gestionar hasta 4 puertos. De hecho, si os fijáis, la diferencia es que no tiene soldados los componente de dos de los puertos. Alguien con tiempo libre, y sin miedo a perder la garantía, podría intentar habilitar estos dos puertos extra ;).</p>
<p>Lo bueno de la tarjeta, comparándola con la Billion HFC de un solo puerto, es que dispone de jumpers para seleccionar el modo de operación: TE, para conectarlo a un TR del operador, o NT para conectar un teléfono RDSI. Además, para este último caso, dispone de un conector molex, para poder proporcionar el voltaje necesario a la línea, y que los teléfonos tomen de ahi la energía.</p>
<h2>Instalación y configuración</h2>
<p>Una vez pinchadas en sendos slots PCI, así es como las detecta el sistema operativo:<br />
<code>$ lspci<br />
[...]<br />
03:08.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface<br />
03:09.0 ISDN controller: Cologne Chip Designs GmbH ISDN network Controller [HFC-4S] (rev 01)<br />
[...]</code></p>
<p align="left">La primera de ellas es la  A400P, y la segunda la B200P.</p>
<h2>A400P</h2>
<p align="left">La configuración de la A400P es exactamente igual a la TDM400P de Digium. Es decir, definimos en /etc/zaptel.conf los módulos instalados, en nuestro caso un FXS en el puerto 1 y un FXO en el 4:</p>
<p><code>loadzone = es<br />
defaultzone=es<br />
fxoks=1 ; La señalización es justo al contrario<br />
fxsks=4</code></p>
<p>En /etc/asterisk/zapata.conf :</p>
<p><code>[channels]<br />
language=es<br />
signalling=fxo_ks<br />
context=from-internal<br />
callerid=Extension Zap &lt;201&gt;<br />
channel=&gt;1<br />
;<br />
signalling=fxs_ks<br />
context=from-pstn<br />
answeronpolarityswitch=yes<br />
hanguponpolarityswitch=yes<br />
polarityonanswerdelay=1<br />
channel=&gt;4</code></p>
<p>Comprobamos en asterisk que los puertos estén disponibles:</p>
<p><code>tamaja*CLI&gt; zap show channels<br />
Chan Extension  Context         Language   MOH Interpret<br />
pseudo            from-pstn       es         default<br />
1            from-internal   es         default<br />
4            from-pstn       es         default</code></p>
<p>Las llamadas desde la extensión se dejan en el contexto from-internal. Las llamadas desde la red telefónica entran por from-pstn.En /etc/asterisk/extensions.conf:</p>
<p><code>; Dialplan minimalista<br />
[from-internal]<br />
exten =&gt; _[6789]XXXXXXXX,1,Dial(Zap/4/${EXTEN})<br />
;<br />
[from-pstn]<br />
exten =&gt; s,1,Dial(Zap/1)<br />
exten =&gt; s,n,Hangup</code></p>
<h2>B200P</h2>
<p>Seguimos con la B200P. Podemos usar tanto el parche Bristuff, como tirar de chan_misdn. Yo prefiero la segunda opción.</p>
<p>Descargamos e instalamos mISDN (modulos del kernel) y mISDNUser (aplicaciones) desde <a href="http://www.misdn.org">http://www.misdn.org</a>. El script misdn-init, que se instala en /etc/init.d/ nos permite detectar las tarjetas compatibles y generar el fichero de configuración. Además, usado en el arranque y parada del servidor, carga y descarga los módulos.</p>
<p><code>$ /etc/init.d/misdn-init scan<br />
[OK] found the following devices:<br />
card=1,0x4<br />
[ii] run "/usr/sbin/misdn-init config" to store this information to /etc/misdn-init.conf<br />
.<br />
$ /etc/init.d/misdn-init config<br />
[OK] /etc/misdn-init.conf created. It's now safe to run "/usr/sbin/misdn-init start"<br />
[ii] make your ports (1-4) available in asterisk by editing "/etc/asterisk/misdn.conf"</code></p>
<p>Editamos el fichero de configuración /etc/misdn-init.conf. En primer lugar, desactivamos los puertos 3 y 4, ya que esta tarjeta no los tiene. Además, dado que las dos RDSI están configuradas en grupo, en modo PTP, tendremos que modificar ese parámetro:</p>
<p><code>card=1,0x4<br />
te_ptp=1,2 ; solo dos puertos, yen modo PTP<br />
poll=128<br />
dsp_poll=128<br />
dsp_options=0<br />
dtmfthreshold=100<br />
debug=0</code></p>
<p>Arrancamos el servicio, para que se carguen los módulos:</p>
<p><code>$ /etc/init.d/misdn-init start<br />
-----------------------------------------<br />
Loading module(s) for your misdn-cards:<br />
-----------------------------------------<br />
/sbin/modprobe --ignore-install hfcmulti type=0x4 protocol=0x22,0x22,0x2,0x2 layermask=0xf,0xf,0xf,0xf poll=128 debug=0<br />
/sbin/modprobe mISDN_dsp debug=0x0 options=0 poll=128 dtmfthreshold=100<br />
[i] creating device node: /dev/mISDN</code></p>
<p>Copiamos ahora el fichero de configuración de misdn que viene con asterisk, y lo adaptamos. Básicamente, añadimos esta sección al final:</p>
<p><code>[telefonica]<br />
ports=1,2<br />
msns=*<br />
context=from-pstn<br />
echocancel=yes</code></p>
<p>Hemos definido un grupo (telefonica), que utilizará los puertos 1 y 2 de la tarjeta. Aceptará todos los MSN (o DID&#8217;s), y entrarán las llamadas al contexto from-pstn.</p>
<p><code>tamaja*CLI&gt; misdn show stacks<br />
BEGIN STACK_LIST:<br />
* Port 1 Type TE Prot. PTP L2Link DOWN L1Link:DOWN Blocked:0  Debug:0<br />
* Port 2 Type TE Prot. PTP L2Link DOWN L1Link:DOWN Blocked:0  Debug:0</code></p>
<p>Aún no hemos conectado las líneas, por eso aparecen DOWN.</p>
<p>Así quedaría nuestro dialplan de ejemplo, en /etc/asterisk/extensions.conf:</p>
<p><code>; Dialplan minimalista<br />
[from-pstn]<br />
exten =&gt; 928000000,1,Dial(Zap/1)<br />
exten =&gt; 928000000,2,Hangup<br />
[from-internal]<br />
exten =&gt; _[6789]XXXXXXXX,1,Set(CALLERID(num)=928000000)<br />
exten =&gt; _[6789]XXXXXXXX,n,Dial(mISDN/g:telefonica/${EXTEN})</code></p>
<p>Estamos usando el grupo que definimos antes para realizar las llamadas. También podríamos utilizar un puerto específico (mISDN/1/${EXTEN} o mISDN/2/${EXTEN}).</p>
<h2>Conclusión</h2>
<p>Las tarjetas funcionan, el aspecto y fabricación son buenos. Queda eso sí, probarla durante un tiempo en una centralita en producción, pero tengo la sensación de que no darán problemas. Si los hubiese, seríais los primeros en saberlo <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>En definitiva, si todo sigue como hasta ahora, y teniendo una empresa en España que distribuya las tarjetas y gestione las garantías (en lugar de reclamar directamente a los chinos de OpenVox), son una opción igual de válida, pero más económica, que las originales.</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/tYlowViSYhU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/probando-tarjetas-openvox-a400p-b200p/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/probando-tarjetas-openvox-a400p-b200p/</feedburner:origLink></item>
		<item>
		<title>Usando la red DUNDi en Asterisk</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/4ZyEN_Tgzoo/</link>
		<comments>http://www.julianmenendez.es/usando-dundi-asterisk/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 17:12:43 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[dundi]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/usando-dundi-asterisk/</guid>
		<description><![CDATA[Este mes toca darle un repaso a DUNDI, un protocolo de localización de servicios telefónicos.
Básicamente, DUNDI nos permite crear una red P2P de centralitas, donde cada una &#8220;publica&#8221; números de teléfono para los que es responsable, como sus extensiones locales, números para la que es la ruta de menor coste, etc.
Dos ejemplos
El ejemplo típico es [...]]]></description>
			<content:encoded><![CDATA[<p>Este mes toca darle un repaso a <a href="http://www.voip-info.org/wiki-DUNDi">DUNDI</a>, un protocolo de localización de servicios telefónicos.</p>
<p>Básicamente, DUNDI nos permite crear una red P2P de centralitas, donde cada una &#8220;publica&#8221; números de teléfono para los que es responsable, como sus extensiones locales, números para la que es la ruta de menor coste, etc.</p>
<h2>Dos ejemplos</h2>
<p>El ejemplo típico es el de la empresa multisede. Cada sede publica sus extensiones propias, de forma que el resto pueda localizarlas. ¿Quién tiene la extension 329? Esta consulta se enviaría, directa o indirectamente, a todos los equipos (peers) de la red DUNDI. La centralita que sirva esa extensión responderá algo como &#8220;IAX2/usuario:clave@1.2.3.4/329&#8243;, que es la forma de llamar a dicha extensión. La centralita que hizo la consulta utilizará esa información para llamar efectivamente a la extensión 329.</p>
<p>Aún en el caso de que cada sede tenga asignado un rango de extensiones, DUNDI nos resultará útil, porque evitaremos llamar a la centralita remota si la extensión buscada no está creada aún, aunque esté en su rango. Podremos gestionar el error localmente.</p>
<p>En otro ejemplo de uso, las diferentes centralitas publican los números de teléfonos locales. Tenemos la sede A en Asturias, la B en Barcelona y la C en Canarias.</p>
<p>Pongamos que un usuario de la sede C llama a Asturias, al 985123123. Estamos hablando de llamada nacional, que si no tenemos tarifa plana, no es barata. La centralita, antes de marcar usando las líneas propias, hará una consulta DUNDI, para ver si alguien puede terminarnos la llamada. La centralita A nos responderá con IAX2/usuario:clave@sedea.empresa.es/985123123.</p>
<h2>Cuestiones a tener en cuenta</h2>
<p>El protocolo DUNDi utilizar por defecto el puerto 4520/UDP. Habrá que abrirlos en los firewalls. Es independiente de IAX, es decir, la cadena de conexión devuelta en una consulta puede hacer referencia a cualquier tipo de canal (IAX2, SIP, H323, etc), aunque normalmente se usa el IAX2.</p>
<h2>Manos a la obra</h2>
<p> <a href="http://www.julianmenendez.es/usando-dundi-asterisk/#more-75" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/4ZyEN_Tgzoo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/usando-dundi-asterisk/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/usando-dundi-asterisk/</feedburner:origLink></item>
		<item>
		<title>Llamadas a bajo coste desde el móvil</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/Ca9g2B82zpM/</link>
		<comments>http://www.julianmenendez.es/llamadas-bajo-coste-asterisk-movil/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 12:27:45 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[disa]]></category>

		<category><![CDATA[movil]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/llamadas-bajo-coste-asterisk-movil/</guid>
		<description><![CDATA[Hoy en día, todo el que tenga una ADSL tiene además una tarifa plana para llamadas a fijos nacionales. Con determinadas operadoras incluso incluyen las llamadas a móviles. Si queremos hacer llamadas internacionales, usamos un operador de telefonía IP.
La idea, como se comentaba en la lista de correo asterisk-es, es poder utilizar estos servicios desde [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy en día, todo el que tenga una ADSL tiene además una tarifa plana para llamadas a fijos nacionales. Con determinadas operadoras incluso incluyen las llamadas a móviles. Si queremos hacer llamadas internacionales, usamos un operador de telefonía IP.</p>
<p>La idea, como se comentaba en la lista de correo asterisk-es, es poder utilizar estos servicios desde cualquier lugar, y de forma sencilla, usando nuestro teléfono móvil.</p>
<p>Casi todos los operadores nacionales permiten contratar &#8220;tarifas planas&#8221;, o tarifas reducidas para llamadas a uno o varios números de teléfono (normalmente fijos). Este punto depende de si somos particulares, autónomos, empresas, ya que las tarifas y promociones cambian.</p>
<p>Nuestro objetivo sera conseguir llamada <em>gratuita</em>s (o casi) en llamadas desde el móvil a nuestra centralita. Una vez conectados, las llamadas que realicemos se originarán en ésta última, y saldrán por la ruta de menor coste que tengamos configurada.</p>
<h2>Escenario</h2>
<p>Conseguimos una tarifa plana a un número fijo geográfico. No queremos usar el  de nuestra línea fija, porque entonces las llamadas a fijo tendrían que salir por otro operador, y seguramente no entraría en la tarifa plana nacional.</p>
<p>Contrataremos, pues, un número DID en cualquiera de los proveedores IP que dan este servicio (telsome, azulcom, peoplecall, voxbone, etc). Como las llamadas entrarán vía internet, tendremos la línea convencional libre para sacar las llamadas a fijos nacionales.</p>
<h2>La &#8220;tecla&#8221; P</h2>
<p>En los teléfonos móviles, pulsando 4 veces la tecla asterisco *, nos aparece la letra P. Indica al teléfono móvil que llame al número de teléfono que la precede, espere a que contesten, y acto seguido enviar mediante tonos DTMF todo lo que sigue. Por ejemplo, 928999999P900502010. Si nuestra centralita está configurada correctamente, debería descolgar, y escuchar los tonos que se le envíen, para luego iniciar la llamada.</p>
<h2>Configuración básica</h2>
<p>Nuestro nuevo DID será el 928999999. Cuando nos llamen a este número, la llamada entrará al contexto from-pstn. El número de nuestro móvil es el 653000000. Las llamadas desde este número se envían al contexto directdial. Contestará la llamada y esperará los tonos DTMF del verdadero destino. La llamada se efectuará como si estuviésemos marcando desde una extensión.</p>
<p>extensions.conf</p>
<p><code>[from-pstn]<br />
exten =&gt; 928999999/653000000,1,Goto(directdial,s,1)<br />
... (resto del contexto de entrada)...<br />
;<br />
[directdial]<br />
exten =&gt; s,1,Answer<br />
exten =&gt; s,n,Set(TIMEOUT(response)=5)<br />
exten =&gt; s,n,Background(silence/1&amp;beep)<br />
exten =&gt; s,n,Disa(no-password|from-internal)</code></p>
<p>Como véis no tiene mucha complicación. Ahora para los paranóicos de la seguridad, cualquiera que sepa vuestro número DID, y pueda falsificar su callerid (y hacerse pasar por vuestro móvil), podría efecturar llamadas a vuestra costa. Creo que es una situación bastante poco probable. Aún así, vamos a ver una posible solución.</p>
<p>Alguno estará tentado de cambiar ese &#8220;no-password&#8221;, por una clave numérica. Si bien es posible, cada vez que queramos cambiar la clave, tendríamos que modificar toda nuestra agenda de teléfonos para hacerlo constar. Esta clave se pide <em>antes</em> de que leamos los tonos.</p>
<p>extensions.conf</p>
<p><code>[directdial]<br />
exten =&gt; s,1,Answer<br />
exten =&gt; s,n,Set(TIMEOUT(response)=5)<br />
exten =&gt; s,n,Background(silence/1&amp;beep)<br />
exten =&gt; s,n,Disa(no-password|from-internal-authenticate)<br />
;<br />
[from-internal-authenticate]<br />
exten =&gt; _[X*].,1,Authenticate(1234)<br />
exten =&gt; _[X*].,2,Goto(from-internal,${EXTEN},1)</code></p>
<p>De esta forma, la clave nos la pedirá justo antes de efectuar la llamada.</p>
<h2>Conclusión</h2>
<p>Sé que no es cosa del otro mundo, pero seguro que más de uno puede ahorrarse unos euros. En cualquier caso, documentado queda.</p>
<p>Ah, y no se os olvide leer bien la letra pequeña de las diferentes tarifas de móviles, que siempre hay algo <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/Ca9g2B82zpM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/llamadas-bajo-coste-asterisk-movil/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/llamadas-bajo-coste-asterisk-movil/</feedburner:origLink></item>
		<item>
		<title>Reconocmiento de voz en asterisk con Lumenvox</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/e5FPIYhYmKw/</link>
		<comments>http://www.julianmenendez.es/reconocimiento-voz-asterisk-lumenvox/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 13:48:14 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[jiaxclient]]></category>

		<category><![CDATA[lumenvox]]></category>

		<category><![CDATA[reconocimiento]]></category>

		<category><![CDATA[voz]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/reconocimiento-voz-asterisk-lumenvox/</guid>
		<description><![CDATA[Hoy toca ración de reconocimiento de voz :). Hace tiempo compré una licencia de evaluación (50$) para hacer pruebillas e impresionar al personal. En su día solo tenían el modelo de voz Inglés Americano, y para reconocer palabras en español tenías que hablar como un expresidente del gobierno ;). Pero han estado trabajando en ello, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy toca ración de reconocimiento de voz :). Hace tiempo compré una licencia de evaluación (50$) para hacer pruebillas e impresionar al personal. En su día solo tenían el modelo de voz Inglés Americano, y para reconocer palabras en español tenías que hablar como un expresidente del gobierno ;). Pero han estado trabajando en ello, y ya tienen modelos específicos para español de Mejico y de Colombia.</p>
<p>Os voy a poner una ejemplo muy simple: el dialplan, la gramática, y un softphone web para que lo probéis de viva voz.</p>
<h2>Paso 1: Instalar Lumenvox</h2>
<p>Como he comentado antes, es un programa de pago,a sí que tendréis que adquirir al menos el <a href="http://www.digium.com/en/products/software/lumenvox.php">Speech Starter Kit</a>. La instalación y validación es algo cansina, pero que se le va a hacer. Seguid al pie de la letra las instrucciones que os llegarán por email. Básicamente se reduce a:</p>
<ol>
<li>Descargar e instalar el License Server.</li>
<li>Generar el fichero de instalación (Info.bts), enviarlo a Lumenvox mediante el formulario web, y descargar el fichero con la licencia (License.bts). Estará asociado a la MAC de la tarjeta de red.</li>
<li>Descargar e instalar el SRE (Speech Recognition Engine)</li>
<li>Instalar el &#8220;Asterisk Connector Bridge&#8221;, que enlaza los servicios de voz de asterisk con el SRE de lumenvox.</li>
</ol>
<h2>Paso 2: Gramática</h2>
<p>El sistema tiene que saber las frases que queremos detectar. Ejemplo:</p>
<p><code>root $frase<br />
$sujeto = Pedro | Juan<br />
$verbo = programa | estudia | sueña<br />
$predicado = [ en ] C | PHP | AEL<br />
$frase = $sujeto $verbo $predicado</code></p>
<p>Esta gramática reconocería frases como &#8220;Juan sueña en PHP&#8221;, &#8220;Pedro estudia C&#8221;, etc</p>
<p>Aquí es donde gana importancia el modelo de voz. Si usasemos el model Inglés, en vez de Pedro, habría que pronunciar algo como &#8220;Pedrou&#8221; ;), para que el sistema lo reconociese mejor.</p>
<p>Las gramáticas pueden ser muy complejas. Hay un ejemplo en la web de Lumenvox que simula la atención al cliente de una Pizzería, donde puedes realizar un pedido hablándole a la máquina (que miedo), aunque para el ejemplo que voy a mostraros, simplemente reconocerá una serie de nombres.</p>
<h2>Paso 3: El Dialplan</h2>
<p>Asterisk 1.4 ya incorpora funciones de reconocmiento de voz. Solo necesita de un motor que haga el reconocimiento y devuelva la información. Ejemplo:</p>
<p><code>exten =&gt; s,1,Answer<br />
exten =&gt; s,n,Wait(1)<br />
exten =&gt; s,n,SpeechCreate<br />
exten =&gt; s,n,SpeechActivateGrammar(migramatica)<br />
exten =&gt; s,n,SpeechStart<br />
exten =&gt; s,n(otravez),SpeechBackground(beep)<br />
exten =&gt; s,n,NoOp(${SPEECH_TEXT(0)})<br />
exten =&gt; s,n,Goto(otravez)</code></p>
<h2>Paso 4: El Ejemplo</h2>
<p>Será un directorio de blogs con temática voip ;). El sistema reconocerá una serie de nombres, y contestará con la dirección del blog/página web. Para finalizar, se podrá decir &#8220;hasta luego&#8221; o &#8220;ya es suficiente&#8221;. Después de cada reconocimiento, se escuchará la calidad del resultado (de 0 a 1000).</p>
<p>No se por qué, pero he tenido que utilizar fonemas para que me reconociese bien todos los nombres. Debería bastar con el nombre directamente, pero bueno. Con frases más largas funciona mejor.</p>
<p>Descarga la gramática <a href="http://www.julianmenendez.es/projects/jiaxclient/asteriskes.gram.txt">asteriskes.gram</a></p>
<p>Prueba el sistema en vivo y en directo: <a href="http://www.julianmenendez.es/projects/jiaxclient/" target="_blank">Abrir jiaxclient</a> (a ver si no se satura la ADSL)</p>
<p>También podeis llamar desde asterisk:</p>
<p><code>exten =&gt; 123,1,Dial(IAX2/jiaxclient@voip.julianmenendez.es/demo)</code></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/e5FPIYhYmKw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/reconocimiento-voz-asterisk-lumenvox/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/reconocimiento-voz-asterisk-lumenvox/</feedburner:origLink></item>
		<item>
		<title>Bug en manejo de eventos rfc2833 en asterisk</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/F2c4GnF3-mA/</link>
		<comments>http://www.julianmenendez.es/bug-eventos-rfc2833-asterisk/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 21:57:29 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[dtmf]]></category>

		<category><![CDATA[fix]]></category>

		<category><![CDATA[Parche]]></category>

		<category><![CDATA[rfc2833]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/bug-eventos-rfc2388-asterisk/</guid>
		<description><![CDATA[Desde que migré a Asterisk 1.4 no he podido usar mi cuenta de Azulcom para hacer llamadas salientes. No ha sido hasta hoy, después de confirmar que el problema era Asterisk 1.4, que he encontrado la causa del problema.
Todo viene por el tratamiento de eventos RFC2833. Cuando tenemos dtmfmode=rfc2833, cuando asterisk recibe uno de estos [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que migré a Asterisk 1.4 no he podido usar mi cuenta de <a href="http://www.azulcom.com/inicio.html">Azulcom</a> para hacer llamadas salientes. No ha sido hasta hoy, después de confirmar que el problema era Asterisk 1.4, que he encontrado la causa del problema.</p>
<p>Todo viene por el tratamiento de eventos <a href="http://www.rfc-editor.org/rfc/rfc2833.txt">RFC2833</a>. Cuando tenemos dtmfmode=rfc2833, cuando asterisk recibe uno de estos paquetes RTP, lo &#8220;decodifica&#8221;, y se lo reenvía a la otra parte.  Es en este momento cuando asterisk interpreta que todo lo que sea RFC2833 debe ser un dígito multifrecuencia (0123456789*#ABCDX,  la X es un hook flash), cuando  la realidad es que hay muchísimos más eventos que estos 16, y no deben ser interpretados como DTMF.</p>
<p>En el caso concreto que comento, llegaba un evento 0&#215;8f (143), que según el RFC, corresponde a &#8220;MF S3&#8243;. No sé para qué sirve, pero esta claro que no puede dejarme sin comunicación.</p>
<p>He notificado el bug (<a href="http://bugs.digium.com/view.php?id=10877">#10877</a>) , donde está el parche para descargar, por si alguno está en la misma situación.</p>
<p>Mola el Software Libre, o no? <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Actualización 4-10-2007</strong>: Ya está arreglado en el trunk, y en la rama 1.4.</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/F2c4GnF3-mA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/bug-eventos-rfc2833-asterisk/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/bug-eventos-rfc2833-asterisk/</feedburner:origLink></item>
		<item>
		<title>Click2Dial automático en Firefox</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/yKU_VpRvVZA/</link>
		<comments>http://www.julianmenendez.es/click2dial-automatico-en-firefox-greasemonkey/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 19:22:49 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Click2Dial]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/click2dial-automatico-en-firefox-greasemonkey/</guid>
		<description><![CDATA[Actualizado 24-09-2007: Nueva versión. Mejoras en la deteccion de numeros. Añadidos todos los prefijos de paises. Mi idea es poder adaptar la detección a números locales de cada país. En la actualidad funciona con números en formato internacional, y números españoles.
Actualizado 24-09-2007: Sí, otra actualización :). Mejorada la presentación, al no permitir el salto de [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Actualizado 24-09-2007:</strong> Nueva versión. Mejoras en la deteccion de numeros. Añadidos todos los prefijos de paises. Mi idea es poder adaptar la detección a números locales de cada país. En la actualidad funciona con números en formato internacional, y números españoles.</p>
<p><strong>Actualizado 24-09-2007:</strong> Sí, otra actualización :). Mejorada la presentación, al no permitir el salto de línea. A veces se quedaba la bandera en una línea y el número en otra. También se ha añadido el nombre completo del país. Se puede ver dejando el ratón unos segundos encima del icono de llamada .</p>
<p>A raíz de <a href="http://groups.google.com/group/asterisk-es/browse_thread/thread/6db5dca9be94a42d">un mensaje</a> en la lista de correo de asterisk-es, intenté encontrar un sistema similar, pero que no dependiese de Skype o similares. La idea era que se detectasen los números de teléfono que hubiese en una página web, y automáticamente convertirlos en un enlace a un servicio click2dial.</p>
<p><a href="https://addons.mozilla.org/es-ES/firefox/addon/748">Greasemonkey</a> es una extensión para Firefox, que permite ejecutar codigo javascript en la página que está cargando. Estos scripts permiten analizar y modificar la página web, y como son persistentes, se ejecutan cada vez que se carga.</p>
<p>Existe ya un script, <a href="http://userscripts.org/scripts/show/10990">Skype Linkify</a>,  que sustituye los números que encuentra por un enlace a &#8220;<em>skype:elnumero?call</em>&#8220;. Lo he tomado como base, para hacerle unas mejoras:</p>
<ul>
<li>Soporte de números en formato internacional +34 928000000, 00 34 928000000, 011 34 928000000.</li>
<li>Soporte para números españoles: [6-9]xxxxxxxx.ww</li>
<li>Se añade una banderita con el país al que pertenece el número de teléfono, que queda muy mono <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<h2>Instalación</h2>
<ol>
<li>Instalar la extensión Greasemonkey</li>
<li>Descargar e instalar el script <a href="http://www.julianmenendez.es/projects/phonelink/phonelink.user.js">PhoneLink</a> (original, eh?)</li>
<li>En Greasemonkey, editar el script, y modificar las variables &#8220;myExt&#8221; y &#8220;url&#8221;. La primera corresponde a tu extensión. Si pones 201, el canal utilizado será SIP/201. La segunda corresponde al script (en php por ejemplo) que se llamará cuando pulséis en un teléfono.  %DEST% se sustituye por el número de teléfono solicitado.</li>
<li>Abrir una página que tenga números de teléfono.</li>
</ol>
<p>Por supuesto, tendréis que tener alojado un php o similar que inicie la llamada en asterisk. El que he usado para pruebas (<strong>cuidado con dejarlo accesible, que no es seguro</strong>) es este: <a href="http://www.julianmenendez.es/projects/phonelink/webcall.phps" title="webcall.php">webcall.php</a></p>
<p>Ejemplos de patrones que se detectan bien:</p>
<ul>
<li>+34 928 00 00 00</li>
<li>0034 928000000</li>
<li>+1 212-000-1234</li>
<li>928000000</li>
<li>91-800-00-00</li>
<li>928.00.00.00</li>
</ul>
<p>Seguro que falla con otros, y que da falsos positivos en determinados casos. La expresión regular tiene bastante margen de mejora.</p>
<h2>Screenshots <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </h2>
<p>Antes:</p>
<p><a href="http://www.julianmenendez.es/wp-content/uploads/2007/09/phonelink-antes.png" title="Página original"><img src="http://www.julianmenendez.es/wp-content/uploads/2007/09/phonelink-antes.miniatura.png" alt="Página original" /></a></p>
<p>Después:</p>
<p><a href="http://www.julianmenendez.es/wp-content/uploads/2007/09/phonelink-despues.png" title="Página después de ser procesada por PhoneLink"><img src="http://www.julianmenendez.es/wp-content/uploads/2007/09/phonelink-despues.miniatura.png" alt="Página después de ser procesada por PhoneLink" /></a></p>
<p>PopUp:</p>
<p><a href="http://www.julianmenendez.es/wp-content/uploads/2007/09/popup.png" title="Popup de información"><img src="http://www.julianmenendez.es/wp-content/uploads/2007/09/popup.miniatura.png" alt="Popup de información" /></a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/yKU_VpRvVZA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/click2dial-automatico-en-firefox-greasemonkey/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/click2dial-automatico-en-firefox-greasemonkey/</feedburner:origLink></item>
		<item>
		<title>Montar una VPN full-mesh con tinc</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/0_2gDWy3saU/</link>
		<comments>http://www.julianmenendez.es/vpn-full-mesh-tinc/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 12:38:47 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[full mesh]]></category>

		<category><![CDATA[tinc]]></category>

		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/vpn-full-mesh-tinc/</guid>
		<description><![CDATA[Una Red Privada Virtual (VPN en inglés) permite conectar varias redes entre sí, utilizando un medio público (potencialmente inseguro) como puede ser Internet. Las ventajas son multiples. Todos los equipos de cada red se pueden &#8220;ver&#8221; entre sí, utilizando direcciones de red privadas, que de otra forma no serían enrutables a través de Internet. Nos [...]]]></description>
			<content:encoded><![CDATA[<p>Una Red Privada Virtual (VPN en inglés) permite conectar varias redes entre sí, utilizando un medio público (potencialmente inseguro) como puede ser Internet. Las ventajas son multiples. Todos los equipos de cada red se pueden &#8220;ver&#8221; entre sí, utilizando direcciones de red privadas, que de otra forma no serían enrutables a través de Internet. Nos olvidamos del NAT, de la redirección de puertos, etc.</p>
<p>Hasta hace poco, solo había trabajado con <a href="http://www.openvpn.org" title="OpenVPN">OpenVPN</a>. Es facil de configurar, y en la versión 2 habían incorporado el modo cliente-servidor, de forma que podíamos tener 1 servidor que interconectase a n clientes, con sus correspondientes redes.</p>
<p>Hasta aquí bien, aunque más de uno se dará cuenta del problema, y es que como te falle el servidor, la VPN se cae. Además, y esto también es importante en términos de latencia y ancho de banda, las comunicaciones entre clientes las enruta el servidor. No hay canreinvite en OpenVPN <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>La solución que se viene a la cabeza, es que todos los nodos sean servidores. Correcto. Pero el problema entonces viene por la escasa escalabilidad de la solución. Por cada nodo adicional que añadas a la VPN, tienes que configurar n+1 nodos (los n que ya había más el nuevo). Con 3 o 4 nodos se lleva bien, pero a partir de ahi olvídate.</p>
<h2>Full-Mesh VPN</h2>
<p>Y un día, buscando cómo hacía otra gente las VPN full-mesh (todos los nodos conectados directamente entre sí), descubrí <a href="http://www.tinc-vpn.org/" title="Tinc VPN">tinc</a>. Entre sus características:</p>
<ol>
<li>Encryption, authentication and compression. Nada nuevo, encriptación para que nuestra información viaje segura por el medio inseguro (Internet). Autenticación, para que nodos desconocidos no puedan inyectar tráfico en nuestra red. Compresión, que nos permite sacar un poco más de partido a nuestra ADSL, comprimiendo los paquetes, antes de enviarlos.</li>
<li><strong>Automatic full mesh routing.</strong> Aquí empieza lo bueno. Cada nodo en tinc se intercambia información de enrutamiento con el resto de nodos, de forma que cada uno se hace responsable de su subred (nodoa 192.168.0.0/24, nodob 192.168.1.0/24, etc). Cuando queremos acceder a una red en concreto, tinc contacta si puede con el nodo responsable de esa subred. Si no, utiliza un nodo intermedio para ello.</li>
<li>Easily expand your VPN. Para añadir un nuevo nodo, solo tenemos que configurar 2 nodos. El nuevo y uno de los que ya esté funcionando. Como la información de rutado se propagará por el resto de nodos automáticamente, esta es la configuración mínima que tendremos que hacer. Por supuesto, si configuramos dos o tres nodos, la VPN ganara en fiabilidad y robustez.</li>
</ol>
<h2>Escenario</h2>
<p>Tenemos 3 sedes, cada una con su red privada y un acceso a internet:</p>
<ul>
<li>Sede A: 192.168.1.0/24. IP pública en Internet: 1.2.3.4</li>
<li>Sede B: 192.168.2.0/24. IP pública en Internet: 2.3.4.5</li>
<li>Sede C: 192.168.3.0/24. IP pública en Internet: 3.4.5.6</li>
</ul>
<p>La máquina linux que corre tinc está siempre en la IP acabada en .1: 192.168.1.1, 192.168.2.1, 192.168.3.1.</p>
<p>En este ejemplo, por ser la configuración más común, la IP pública está asignada a un router ADSL. En este router, tendremos que configurar una nueva ruta, de forma que todo lo que llegue con destino a las otras sedes, se enrute por nuestro tinc. Algo como &#8220;route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1&#8243;. También abriremos el puerto 655 (TCP y UDP) redirigiéndolo a nuestra máquina con tinc.</p>
<h2>Configuración</h2>
<p>Creamos los directorios de configuración:</p>
<p><code># mkdir /etc/tinc<br />
# mkdir /etc/tinc/hosts<br />
</code></p>
<p>Creamos el fichero /etc/tinc/tinc.conf</p>
<p><code>Name = SedeA<br />
Device = /dev/net/tun<br />
ConnectTo = SedeB<br />
ConnectTo = SedeC<br />
</code></p>
<p>Creamos el fichero /etc/tinc/hosts/SedeA</p>
<p><code>Subnet = 192.168.1.0/24<br />
Address = 1.2.3.4<br />
Compression = 10<br />
</code></p>
<p>Generamos el par de claves para este nodo:</p>
<p><code># tincd -K<br />
Generating 1024 bits keys:<br />
..............++++++ p<br />
..............++++++ q<br />
Done.<br />
Please enter a file to save private RSA key to [/etc/tinc/rsa_key.priv]:<br />
Please enter a file to save public RSA key to [/etc/tinc/hosts/SedeA]:<br />
Appending key to existing contents.<br />
Make sure only one key is stored in the file.<br />
</code></p>
<p>Ahora configuramos el interfaz tun0. Tinc llamará al script &#8220;/etc/tinc/tinc-up&#8221; al arrancar:</p>
<p><code>#!/bin/sh<br />
ifconfig $INTERFACE 192.168.1.1 netmask 255.255.0.0<br />
</code></p>
<p>Marcamos el fichero como ejecutable:</p>
<p><code># chmod +x /etc/tinc/tinc-up<br />
</code></p>
<p>Repetimos el proceso con las otras dos sedes, y como paso final, intercambiamos los ficheros SedeA, SedeB y SedeC entre todos los nodos, para que todos ellos se conozcan entre sí.</p>
<p>Finalmente, ejecutamos el demonio:</p>
<p><code>tincd<br />
</code></p>
<p>O si queremos depurar algun problema, lo ejecutamos con depuración y sin desconectarse de la consola:</p>
<p><code>tincd -d5 -D<br />
</code></p>
<p>Si todo va bien, desde cualquier equipo de la red podremos hacer ping a cualquier otro, aunque sea de otra sede:</p>
<p>Suerte.</p>
<p>Julián J. Menéndez</p>
<p><strong>Actualización 08-09-2007</strong>: La versión de tinc en el respositorio ipkg de openwrt es la 1.0.4. La versión a día de hoy es la 1.0.8. Podéis encontrar el paquete para esta versión aquí: <a href="http://augsburg.freifunk.net/ipkg/">http://augsburg.freifunk.net/ipkg/</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/0_2gDWy3saU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/vpn-full-mesh-tinc/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/vpn-full-mesh-tinc/</feedburner:origLink></item>
		<item>
		<title>Tráfico RTP directo entre dispositivos con NAT (y parche)</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/4rxZWHmcYBI/</link>
		<comments>http://www.julianmenendez.es/trafico-rtp-directo-nat-parche/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 17:44:23 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[canreinvite]]></category>

		<category><![CDATA[NAT]]></category>

		<category><![CDATA[Parche]]></category>

		<category><![CDATA[RTP]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/trafico-rtp-directo-nat-parche/</guid>
		<description><![CDATA[En asterisk, el parámetro &#8220;canreinvite=yes&#8221; en sip.conf a la hora de definir un dispositivo SIP, indica la disponibilidad de dicho dispositivo a aceptar tráfico RTP directamente desde el otro dispositivo involucrado en la llamada, sin que asterisk tenga que estar en medio de la comunicación, reenviando la información de uno a otro.
En una red local, [...]]]></description>
			<content:encoded><![CDATA[<p>En asterisk, el parámetro &#8220;<em>canreinvite=yes</em>&#8221; en sip.conf a la hora de definir un dispositivo <a href="http://www.voip-info.org/wiki-SIP">SIP</a>, indica la disponibilidad de dicho dispositivo a aceptar tráfico <a href="http://www.voip-info.org/wiki-RTP">RTP</a> directamente desde el otro dispositivo involucrado en la llamada, sin que asterisk tenga que estar en medio de la comunicación, reenviando la información de uno a otro.</p>
<p>En una red local, no hay gran problema&#8230; cualquier red que se precie usa cable CAT5 y switches 10/100&#8230; más que de sobra como para que afecte ese extra de paquetes circulando. Sin embargo, cuando tenemos un asterisk en una sede, y varios teléfonos SIP en otra sede distinta (conectados mediante ADSL, por ejemplo), la cosa cambia.</p>
<p>El ancho de banda de una ADSL es asimétrico, y aunque tengamos 3 &#8220;megas&#8221; de bajada, la subida no suele pasar de unos míseros 320kbs (bits, no bytes). De ahi que sea un recurso muy valioso, como para malgastarlo cuando no es realmente necesario. Con este ancho de banda, podemos mantener unas 10 conversaciones con el <a href="http://www.voip-info.org/wiki-codecs">códec</a> G729, y unas 3 con G711. (Usando esta <a href="http://www.voip-calculator.com/calculator/lipb/">calculadora de ancho de banda</a>)</p>
<h2>Un caso típico</h2>
<p>Imaginemos el siguiente escenario:</p>
<ul>
<li>Un servidor asterisk en la sede central</li>
<li>Teléfonos SIP en la sede A (A1,A2,A3..An). Todos ellos configurados con nat=yes.</li>
<li>Otros tantos en la sede B (B1..Bn).También con nat=yes.</li>
<li>En ninguna de las dos sedes se abren puertos hacia los diferentes teléfonos.</li>
</ul>
<p style="text-align: center"><img src="http://www.julianmenendez.es/wp-content/uploads/2007/08/diagrama.PNG" alt="diagrama.PNG" /></p>
<p>Si impedimos el tráfico de paquetes de voz (RTP) directo entre teléfonos (canreinvite=no), al hacer una llamada interna, desde A1 a A2, habría dos flujos de paquetes:</p>
<ol>
<li>Desde A1 hasta el servidor asterisk, y desde aquí de vuelta a A2</li>
<li>Justo el camino contrario, ya que la comunicación es full-duplex.</li>
</ol>
<p>Fíjemonos que para una simple conversación entre extensiones, estamos utilizando nuestra conexión ADSL por partida doble. Estamos utilizando 2 de las llamadas simultáneas disponibles con nuestra humilde conexión a internet.</p>
<p>En una llamada desde A1 a B1 pasaría lo mismo, salvo que en este caso es lo que esperamos. A1 y B1 están en sedes distintas, y no hay forma de que se pueda establecer una comunicación directa entre ambos dispositivos. Lo que queremos es que asterisk haga de enlace entre ambos. Cada sede estará gastando un canal de los que tenga disponible.</p>
<p>Queremos evitar este consumo innecesario de ancho de banda cuando los dos teléfonos pueden establecer una comunicación RTP directa. Para ello, activaremos &#8220;canreinvite=yes&#8221; en la configuración de todos los dispositivos. Repetimos el experimento.</p>
<p>Llamamos desde A1 a A2. Asterisk, que hace de intermediario, indica a A1 que envíe su tráfico RTP a la dirección de A2, y hace lo propio con A2. Las direcciones IP utilizadas son las IP&#8217;s locales de cada teléfono (192.168.0.x, por ejemplo), y no la IP pública de la ADSL de la sede.</p>
<p>El beneficio es palpable, mientras asterisk se encarga de la señalización (indicando cuando un teléfono cuelga, cuando se hace una transferencia, etc), el tráfico RTP de voz va directamente de un teléfono a otro, sin salir a Internet en ningún momento, y sin gastar ningún canal.</p>
<p>Pero todo tiene un &#8220;pero&#8221;. Al hacer una llamada desde A1 a B1, asterisk también indicará a los dispositivos que se envíen el tráfico RTP directamente entre ellos. El problema está en que, al utilizar las IP&#8217;s privadas y ser dos redes distintas, separadas, que podrían incluso compartir la misma dirección de red, la llamada se establecerá pero no habrá audio en ningún sentido. Mal asunto.</p>
<p>¿Por qué? En la actualidad, cuando ambos dispositivos están configurados con &#8220;canreinvite=yes&#8221;, asterisk obedece y siempre que puede intenta que se envíen el tráfico RTP entre ellos directamente. Lamentablemente, cuando están en redes distintas, es imposible. La solución estaría en comprobar, cuando los dispositivos están detrás de routers haciendo NAT, si la dirección IP pública de ambos coincide. Si fuese el caso, podremos estar seguros de que están en la misma red, y podrán encontrarse. Si la IP pública es diferente, asterisk simplemente debe quedarse en medio.</p>
<p>Las llamadas dentro de cada sede funcionarán bien, sin malgastar ancho de banda de la ADSL, mientras que las llamadas entre sedes pasaran a través de asterisk.</p>
<h2>Una solución</h2>
<p>Y después de esta soberana paliza (que no se cuántos habréis aguantado), os dejo aquí el parche para la revisión r79171 del svn de asterisk/branches/1.4.</p>
<p>Descargar <a href="http://www.julianmenendez.es/wp-content/uploads/2007/08/asterisk_nat_rtp_recv_patch_v3diff.txt" title="asterisk_nat_rtp_recv_patch_v3.diff">asterisk_nat_rtp_recv_patch_v3.diff</a></p>
<p>Para aplicar</p>
<pre>$ cd /usr/src/asterisk
$ patch -p0 &lt; /ruta/a/asterisk_nat_rtp_recv_patch_v3.diff
$ make
$ make install</pre>
<p>Añadimos <em>natonlyreinvitesameip=yes</em> a la sección [general] de nuestro sip.conf.</p>
<p>No he podido testear a fondo este parche, así que si alguien puede reproducir este escenario, agradecería comentarios sobre si funciona o si es una soberana estupidez <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/4rxZWHmcYBI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/trafico-rtp-directo-nat-parche/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/trafico-rtp-directo-nat-parche/</feedburner:origLink></item>
		<item>
		<title>Integración CRM. Monitorizar extensiones. Generar PopUps</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/B4I6w2oiSbg/</link>
		<comments>http://www.julianmenendez.es/integracion-crm-monitorizar-extensiones-generar-popups/#comments</comments>
		<pubDate>Thu, 05 Jul 2007 14:12:17 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[call center]]></category>

		<category><![CDATA[CRM]]></category>

		<category><![CDATA[FOP]]></category>

		<category><![CDATA[Popups]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/integracion-crm-monitorizar-extensiones-generar-popups/</guid>
		<description><![CDATA[Es fundamental en los call centers, que cuando suena el teléfono del agente, se le abra un popup con la información del cliente que está llamando en ese instante. Hay varias formas de lograrlo, pero una de las más interesantes por su sencillez es utilizar el FOP (Flash Operator Panel), de Nicolás Gudiño.
De hecho, en [...]]]></description>
			<content:encoded><![CDATA[<p>Es fundamental en los call centers, que cuando suena el teléfono del agente, se le abra un popup con la información del cliente que está llamando en ese instante. Hay varias formas de lograrlo, pero una de las más interesantes por su sencillez es utilizar el <a href="http://www.asternic.org/">FOP</a> (Flash Operator Panel), de Nicolás Gudiño.</p>
<p>De hecho, en la versión 0.27, ha incluido un nuevo control flash (comunicator.swf), que elimina la parte gráfica, y se convierte en un simple interfaz entre nuestro asterisk y el código javascript de nuestra página. Este control es ideal para integrar en aplicaciones CRM (Customer Relationship Management), como puede ser <a href="http://www.sugarcrm.com">SugarCRM</a>.</p>
<p>Lo que voy a mostrar en este post son los requisitos mínimos para que esto funcione. Voy a eliminar todo lo superfluo, de modo que sea más fácil de integrar con cualquier aplicación ya existente, que es lo que de verdad nos dará la utilidad a este sistema.</p>
<h2>Instalar/Actualizar FOP a la versión 0.27</h2>
<p>La última versión de FreePBX ya incorpora esta versión. Si no está instalada, tendremos que descargarnosla de http://www.asternic.org/, y reemplazar los siguientes ficheros:</p>
<ul>
<li> op_server.pl</li>
<li>operator_panel.swf</li>
<li>op_lang*</li>
</ul>
<p>Tendremos que añadir unas líneas a op_buttons.cfg:</p>
<pre>
[AUTO/SIP/.*]
Context =${CONTEXT}
Extension=${CHANNEL}
Label =${CHANNEL}
Icon =1
Starting_Position=1
Server=1
Panel_Context=popup</pre>
<p>Con esto crearemos un nuevo contexto (popup) para nuestro monitor de extensiones.<br />
También añadiremos las siguientes líneas a op_server.cfg</p>
<pre>
[popup]
flash_dir=/var/www/html/popuptest/</pre>
<p>De forma que nos guarde en ese directorio un fichero (variablesPOPUP.txt) con la información sobre nuestras extensiones.</p>
<h2>Instalar los scripts</h2>
<p>Creamos el directorio /var/www/html/popuptest y descomprimimos en él el siguiente fichero: <a href="http://www.julianmenendez.es/wp-content/uploads/2007/07/popup-sample-v1.tgz" title="popup-sample-v1.tgz">popup-sample-v1.tgz</a></p>
<pre>
mkdir /var/www/html/popuptest
cd /var/www/html/popuptest
tar -zxvf /ruta/al/fichero/popup-sample-v1.tgz</pre>
<p>Abrimos el navegador, y nos vamos a <em>http://1.2.3.4/popuptest</em> (sustituir 1.2.3.4 por la IP de vuestra máquina). Nos pide la extensión a monitorizar. En la siguiente página, si hacemos o recibimos llamadas en esa extensión, debería actualizarse en tiempo real su estado.</p>
<p>Si, además, queremos que en las llamadas entrantes se nos abra un popup a otra página, que nos haga por ejemplo una búsqueda en una base de datos, editamos el fichero <em>monitor.php</em> y definimos la variable <em>popupurl</em>:</p>
<pre>
var popupurl=null; //Si esta null, no haremos popup
popupurl="http://192.168.0.1/buscarnumero/find.php?q=";</pre>
<p>Recargamos la página, y probamos a recibir una llamada. Si todo ha ido bien, y el navegador permite el popup, debería abrirnos la dirección <em>http://192.168.0.1/buscarnumero/find.php?q=XXXXX</em>, siendo XXXXX el número de teléfono que nos llama.</p>
<h2>Conclusion</h2>
<p>He intentado reducir el ejemplo a su mínima expresión, para que sea más sencillo adaptarlo a una aplicación real. La versión completa está en los fuentes del FOP. Revisad el fichero js/operator.js, porque ahí está el meollo de la cuestión <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Saludos<br />
Julián J. Menéndez</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/B4I6w2oiSbg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/integracion-crm-monitorizar-extensiones-generar-popups/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/integracion-crm-monitorizar-extensiones-generar-popups/</feedburner:origLink></item>
		<item>
		<title>Mejoras en la detección de inversiones de polaridad</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/YyoZyCyr3TE/</link>
		<comments>http://www.julianmenendez.es/mejoras-en-la-deteccion-de-inversiones-de-polaridad/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 15:44:25 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Parche]]></category>

		<category><![CDATA[Polaridad]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/mejoras-en-la-deteccion-de-inversiones-de-polaridad/</guid>
		<description><![CDATA[Como muchos habéis comprobado, cuando hacemos un reload desde la consola de asterisk, perdemos los parámetros answeronpolarityswitch, hanguponpolarityswitch y polarityonanswerdelay. Es decir, volvían a sus valores por defecto y ya no detectabamos los cuelgues remotos. Había además un problema con las llamadas entrantes en las que si nos colgaban rápidamente (antes de haber detectado completamente [...]]]></description>
			<content:encoded><![CDATA[<p>Como muchos habéis comprobado, cuando hacemos un <em>reload</em> desde la consola de asterisk, perdemos los parámetros <em>answeronpolarityswitch, hanguponpolarityswitch</em> y <em>polarityonanswerdelay</em>. Es decir, volvían a sus valores por defecto y ya no detectabamos los cuelgues remotos. Había además un problema con las llamadas entrantes en las que si nos colgaban rápidamente (antes de haber detectado completamente el callerid), asterisk ignoraba esa inversión y nos dejaba el canal activo (Gracias a SuD por el parche).</p>
<p>En un intento de no despistar a los que vienen desde los buscadores (que sois unos cuantos), el parche actualizado estará disponible en el post anterior, <a href="http://www.julianmenendez.es/nuevo-parche-polaridad-asterisk-1-4-deteccion-colgado/" tip="Nuevo parche polaridad para Asterisk 1.4">Nuevo parche polaridad para Asterisk 1.4</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/YyoZyCyr3TE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/mejoras-en-la-deteccion-de-inversiones-de-polaridad/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/mejoras-en-la-deteccion-de-inversiones-de-polaridad/</feedburner:origLink></item>
		<item>
		<title>Nuevo parche polaridad para Asterisk 1.4</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/dIeg8VYN3l0/</link>
		<comments>http://www.julianmenendez.es/nuevo-parche-polaridad-asterisk-1-4-deteccion-colgado/#comments</comments>
		<pubDate>Wed, 09 May 2007 15:59:10 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Parche]]></category>

		<category><![CDATA[Polaridad]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/nuevo-parche-polaridad-asterisk-1-4-deteccion-colgado/</guid>
		<description><![CDATA[Actualización final (19-dic-2007): A punto para las navidades, han incluido finalmente el parche tanto en la rama 1.4 como el el trunk. La versión 1.4.16 ya lo trae incluido. Gracias a fidojones por el aviso en los comentarios ;) 
Volvemos a la carga. Desde que actualizar a la 1.4.x he notado que en ocasiones las llamadas [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#800000"><strong>Actualización final (19-dic-2007)</strong>: A punto para las navidades, han incluido finalmente el parche tanto en la rama 1.4 como el el trunk. La versión 1.4.16 ya lo trae incluido. Gracias a fidojones por el aviso en los comentarios ;) </font></p>
<p>Volvemos a la carga. Desde que actualizar a la 1.4.x he notado que en ocasiones las llamadas entrantes que colgaban mientras estaban en cola, llegaban a sonar en los teléfonos. Pasaba pocas veces, quizás recibo pocas llamadas ;),  pero después de recibir correos apuntando en la misma dirección, me dispuse a revisar el amado y odiado <a href="http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_zap.c?rev=62689&amp;view=log" title="chan_zap.c">chan_zap.c</a>. (Por cierto, en openpbx^H^H^H^H^H <a href="http://www.callweaver.org/blog" title="Callweaver">callweaver</a> lo están reescribiendo desde 0)Resulta que se revirtieron algunos cambios necesarios para que funcione bien en las líneas de Telefónica de España. Las llamadas entrantes, una vez que se descuelgan con Answer(), no detectan el cuelgue remoto. No ocurría lo mismo con las llamadas que no se han contestado aún.</p>
<p>En cualquier caso, aquí os dejo el parche. Si va bien, lo intentaremos meter de nuevo en el svn ;)Parche chan_zap.c rama 1.4 version4</p>
<p>Descargar <a href="http://www.julianmenendez.es/wp-content/uploads/2007/07/chan_zapc-14-polarity-v5diff.txt" title="chan_zap.c-1.4-polarity-v5.diff">chan_zap.c-1.4-polarity-v5.diff</a></p>
<p>Para aplicarlo:</p>
<pre>$ cd /usr/src/asterisk$ patch -p0 &lt; /ruta/al/chan_zap.c-1.4-polarity-v5.diff</pre>
<p>A continuación, recompilar, reinstalar y reiniciar asterisk, probar si funciona, y dejar un comentario <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Versiones anteriores:</p>
<ul>
<li><a href="http://www.julianmenendez.es/wp-content/uploads/2007/05/chan_zapc-14-polarity-v1diff.txt" title="Parche chan_zap.c rama 1.4 version1">chan_zap.c-1.4-polarity-v1.diff</a></li>
<li><a href="http://www.julianmenendez.es/wp-content/uploads/2007/05/chan_zapc-14-polarity-v2diff.txt" title="Parche chan_zap.c rama 1.4 version2">chan_zap.c-1.4-polarity-v2.diff</a></li>
<li><a href="http://www.julianmenendez.es/wp-content/uploads/2007/06/chan_zapc-14-polarity-v3diff.txt" title="Parche chan_zap.c rama 1.4 version3">chan_zap.c-1.4-polarity-v3.diff </a></li>
<li><a href="http://www.julianmenendez.es/wp-content/uploads/2007/07/chan_zapc-14-polarity-v4diff.txt" title="Parche chan_zap.c rama 1.4 version4">chan_zap.c-1.4-polarity-v4.diff </a></li>
</ul>
<p><strong>Actualizado </strong>(5 horas después de la publicación)<strong> <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong>: Como casi siempre, las primeras versiones nunca fueron buenas&#8230; Al corregir este fallo, introduje otro con las llamadas salientes&#8230; Corregido en la versión 2 del parche.</p>
<p><strong>Actualización (12 de mayo)</strong>: Según confirme Jose L. Villalon en los comentarios, el parche también funciona con asterisk 1.2.18. Habrá que ver a partir de qué versión de asterisk es necesario parchear.</p>
<p><strong>Actualización (25 de junio)</strong>: Gracias a SuD, que nos comenta acerca de un parámetro, <em>polarityonanswerdelay</em>, que tiene un valor por defecto demasiado alto, y que podría traer problemas al ignorarse ciertos cambios de polaridad. Para resultados óptimos, añadir <strong>polarityonanswerdelay=1</strong> a vuestro zapata.conf (antes de la línea channel=&gt; correspondiente).</p>
<p><strong>Actualización (29 de junio)</strong>: Adaptado a asterisk svn r72609. No se pierden los valores de <em>answeronpolarityswitch</em>, <em>hanguponpolarityswitch </em>ni <em>polarityonanswerdelay </em>al hacer un reload. Se contenmpla la detección de colgado dentro de la rutina de detección de callerid, según parche proporcionado por <a href="http://www.latinsud.com/">SuD</a>.</p>
<p><strong>Actualización (19 de julio)</strong>: Adaptado a asterisk svn r75893.</p>
<p><strong>Actualización (20 de julio):</strong> He abierto el bug <a href="http://bugs.digium.com/view.php?id=10238">#10238</a> en bugs.digium.com, para intentar que incluyan este parche en el código de asterisk y no tener que parchear cada nueva versión. Si estás interesado, deja allí tu experiencia con el parche.</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/dIeg8VYN3l0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/nuevo-parche-polaridad-asterisk-1-4-deteccion-colgado/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/nuevo-parche-polaridad-asterisk-1-4-deteccion-colgado/</feedburner:origLink></item>
		<item>
		<title>¿Publicidad engañosa de movistar?</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/j_gmcrVGXeY/</link>
		<comments>http://www.julianmenendez.es/publicidad-enganosa-movistar/#comments</comments>
		<pubDate>Sun, 22 Apr 2007 19:15:17 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/%c2%bfpublicidad-enganosa-de-movistar/</guid>
		<description><![CDATA[Sé que este post se sale un poco de la temática de este blog, pero me cabrea ver como intentan timar a la gente, y más si el timado soy yo.
Hace ya mucho tiempo que soy un escéptico en cuestiones de telefonía, y siempre desconfío&#8230; siempre hay trampa.  Ayer &#8220;escuchando&#8221; la tele, oigo que [...]]]></description>
			<content:encoded><![CDATA[<p>Sé que este post se sale un poco de la temática de este blog, pero me cabrea ver como intentan timar a la gente, y más si el timado soy yo.</p>
<p>Hace ya mucho tiempo que soy un escéptico en cuestiones de telefonía, y siempre desconfío&#8230; siempre hay trampa.  Ayer &#8220;escuchando&#8221; la tele, oigo que movistar saca un nuevo plan de datos, al estilo <a href="http://www.yoigo.es" title="Yoigo">Yoigo</a>, en el que solo pagas 1€ al día, y sólo si te conectas. La verdad es que en el momento me hizo ilusión, poder tener una conexión de banda ancha cuando estoy fuera de casa (Yoigo es solo GPRS en Fuerteventura). Así que me dispongo a llamar a atención al cliente, y después de sonsacar a la operadora, que parece que no quería darme cifras concretas, me dice que la tarifa es 1€ por cada 10Mb, con un máximo de 10€ diarios.</p>
<p>Coño, de 1€ a 10€ diarios, hay una diferencia importante&#8230; tanta como que pasamos de 30€ a 300€ mensuales, si le damos un uso importante.</p>
<p>Y sí, en la web de movistar, después de profundizar un poco, te dan las condiciones reales, pero viendo <a href="http://www.movistar.es/staticFiles/cda/movistar_des-tarifa-plana508.jpg" title="Publicidad Movistar">esto</a>, ¿qué pensaríais? Por si quitan ese anuncio, esto es lo que dice, literalmente:</p>
<blockquote><p>Nueva tarifa diaria Internet Móvil</p>
<p>Conéctate donde quieras por 1€ al día.<br />
Y si no te conectas, no pagas.</p></blockquote>
<p>Vodafone, Orange, Yoigo&#8230; no sé cuál, pero la portabilidad está cerca.</p>
<p>Actualizacion 5 de junio de 2007: Parece que <a href="http://www.internautas.org/html/4310.html">no soy el único</a> que piensa igual <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/j_gmcrVGXeY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/publicidad-enganosa-movistar/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/publicidad-enganosa-movistar/</feedburner:origLink></item>
		<item>
		<title>Elucubraciones sobre el eco en RDSI</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/BYc-g37gFlo/</link>
		<comments>http://www.julianmenendez.es/elucubraciones-eco-en-rdsi/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 22:12:10 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Eco]]></category>

		<category><![CDATA[RDSI]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/elucubraciones-eco-en-rdsi/</guid>
		<description><![CDATA[Lo que en principio iba a ser una simple puntualización en la lista de correo asterisk-es, se me convirtió en una parrafada inmensa, que paso a publicar en este humilde blog X-D
Una llamada en RDSI es una comunicación de datos 64kbps full duplex, es decir, 8Kb/s en cada sentido, e independientes, utilizando el codec G711a. [...]]]></description>
			<content:encoded><![CDATA[<p><em>Lo que en principio iba a ser una simple puntualización en la lista de correo asterisk-es, se me convirtió en una parrafada inmensa, que paso a publicar en este humilde blog X-D</em></p>
<p>Una llamada en RDSI es una comunicación de datos 64kbps full duplex, es decir, 8Kb/s en cada sentido, e independientes, utilizando el codec G711a.  O funciona, o no funciona, pero no produce eco por que se mezcle el canal de ida con el de vuelta. Así que realmente da lo mismo qué tarjeta RDSI utilices, si funcionan las llamadas de voz, tendrás exactamente el mismo tipo de eco, tengas una HFC de 1 puerto, o una OctoBRI. Ojo, que no hablo de tarjetas activas, con su DSP y demás florituras, sino de Billions y AVM Fritz! y similares. Continúa:</p>
<p> <a href="http://www.julianmenendez.es/elucubraciones-eco-en-rdsi/#more-41" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/BYc-g37gFlo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/elucubraciones-eco-en-rdsi/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/elucubraciones-eco-en-rdsi/</feedburner:origLink></item>
		<item>
		<title>Usando FXOTune para reducir el eco</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/JAJrzOJ8BdY/</link>
		<comments>http://www.julianmenendez.es/usando-fxotune-para-reducir-el-eco/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 15:48:39 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Eco]]></category>

		<category><![CDATA[fxotune]]></category>

		<category><![CDATA[hibrido]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/usando-fxotune-para-reducir-el-eco/</guid>
		<description><![CDATA[Cuando me cambié de piso, allá por noviembre, empecé a tener problemas de eco en las llamadas a través de la TDM. Nada había cambiado de puertas para adentro, así que supuse que este cambio se debía a que estaba a una distancia mayor de la central, o que el par de cobre no estaba [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando me cambié de piso, allá por noviembre, empecé a tener problemas de eco en las llamadas a través de la TDM. Nada había cambiado de puertas para adentro, así que supuse que este cambio se debía a que estaba a una distancia mayor de la central, o que el par de cobre no estaba en el mejor estado.</p>
<p>De cualquier modo, no era una situación sostenible, ya que era bastante molesto. Buscando un poquillo en google y voip-info.org (para variar), me encontré con esta página sobre fxotune <a href="http://www.voip-info.org/wiki/view/Asterisk+fxotune" title="fxotune">http://www.voip-info.org/wiki/view/Asterisk+fxotune</a>. Copio y pego:</p>
<blockquote><p>fxotune optimizes the line characteristics of a TDM device to minimize the *source* of echo. This is generally referred to as &#8216;balancing the hybrid&#8217; and is quite important in echo cancellation. Once the hybrid is properly balanced, software echo cancellers will work very nicely.</p></blockquote>
<p>No soy teleco, pero ese balanceo del híbrido, viene a ser ajustar la impedancia (resistencia) del puerto FXO, para que coincida con la de la línea, y evitar que se refleje lo menor posible la señal enviada o recibida. Si estoy metiendo la pata hasta el fondo, hacédmelo saber jeje. También ajusta los coeficientes de eco, aunque aquí sí que estoy totalmente perdido.</p>
<p>Por cierto, las clónicas vienen configuradas con una impedancia fija (no configurable) de 600 ohmnios, que está bien para las líneas americanas, no así para las españolas y gran parte de Europa. Si tienes una clónica, no te molestes.<br />
 <a href="http://www.julianmenendez.es/usando-fxotune-para-reducir-el-eco/#more-36" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/JAJrzOJ8BdY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/usando-fxotune-para-reducir-el-eco/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/usando-fxotune-para-reducir-el-eco/</feedburner:origLink></item>
		<item>
		<title>Analizar tráfico VoIP (Arp Spoofing)</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/mE3h19joowc/</link>
		<comments>http://www.julianmenendez.es/analizar_trafico_voip_arp_spoofing/#comments</comments>
		<pubDate>Wed, 10 Jan 2007 00:12:33 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[arp spoofing]]></category>

		<category><![CDATA[ettercap]]></category>

		<category><![CDATA[trafico]]></category>

		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/analizar_trafico_voip_arp_spoofing/</guid>
		<description><![CDATA[Muchas veces necesitamos &#8220;ver&#8221; el tráfico entre dos dispositivos SIP. Con un HUB es muy sencillo, ya que solo hay que usar que poner la tarjeta de red en modo promiscuo, pero cuando estamos conectados a un switch, se complica (pero no mucho).
Escenario:

Teléfono IP en 192.168.0.201, registrado directamente en un ITSP (Peoplecall, Azulcom, Telsome, etc, [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces necesitamos &#8220;ver&#8221; el tráfico entre dos dispositivos SIP. Con un HUB es muy sencillo, ya que solo hay que usar que poner la tarjeta de red en modo promiscuo, pero cuando estamos conectados a un switch, se complica (pero no mucho).</p>
<p>Escenario:</p>
<ul>
<li>Teléfono IP en 192.168.0.201, registrado directamente en un ITSP (Peoplecall, Azulcom, Telsome, etc, etc)</li>
<li>Router (Gateway) en 192.168.0.254</li>
<li>Máqina (linux) desde la que queremos analizar el tráfico: 192.168.0.1
<p>Necesitaremos tener instalados Ethereal (ahora <a href="http://www.wireshark.org/">Wireshark</a>), y <a href="http://ettercap.sourceforge.net/">Ettercap</a></li>
</ul>
<p>Si estos 3 dispositivos estuviesen conectados a un HUB, solo tendríamos que ejecutar:</p>
<pre>
tshark -i eth0 -w captura.log ip host 192.168.0.201</pre>
<p>Luego, ya con calma y desde otra máquina incluso, analizaríamos ese fichero de captura.</p>
<p>En cambio, si estamos en un switch, el tráfico entre el teléfono SIP y el router no &#8220;llega&#8221; a la máquina línux. En estos casos, una buena solución es el <a href="http://en.wikipedia.org/wiki/ARP_spoofing">Arp Spoofing</a> (<a href="http://es.wikipedia.org/wiki/Spoofing">en español</a>), que consiste en engañar a ambos dispositivos, haciendoles creer que somos el otro, y luego reenviando los paquetes.</p>
<p>Es muy sencillo de implementar, con <a href="http://ettercap.sourceforge.net/">Ettercap</a>. Ejecutamos el siguiente comando en un terminal:</p>
<pre>
echo 1 &gt; /proc/sys/net/ipv4/ip_forward
ettercap -o -T -P repoison_arp -M arp:remote /192.168.0.254/ /192.168.0.201/</pre>
<p>Es importante activar el ip_forward, ya que de otro modo, los paquetes no se reenviarían a su destino original. Mientras se ejecutar el ettercap, todo el tráfico que exista entre esos dos dispositivos, pasará por nuestra máquina, y podremos capturarlo y analizarlo, con el comando que vimos antes (tshark -i eth0&#8230;.)</p>
<p><strong>Actualización 11-enero-2007</strong>: Hay que activar el ip_forward en nuestra máquina, para que nuestro equipo reenvíe los paquetes a su destinatario real.</p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/mE3h19joowc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/analizar_trafico_voip_arp_spoofing/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/analizar_trafico_voip_arp_spoofing/</feedburner:origLink></item>
		<item>
		<title>Pasarela email2fax con hylafax y postfix</title>
		<link>http://feedproxy.google.com/~r/julianjm/~3/4Six5NzzwIc/</link>
		<comments>http://www.julianmenendez.es/pasarela_email2fax_hylafax_postfix/#comments</comments>
		<pubDate>Sun, 07 Jan 2007 18:38:56 +0000</pubDate>
		<dc:creator>julianjm</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[email2fax]]></category>

		<category><![CDATA[Fax]]></category>

		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.julianmenendez.es/pasarela_email2fax_hylafax_postfix/</guid>
		<description><![CDATA[Una pasarela email a fax (mail2fax) permite enviar faxes a través del correo electrónico. Por ejemplo, envías un email a 92800000@fax.tudominio.com, con un adjunto en formato PDF. La pasarela leerá ese PDF, y te lo enviará al número de fax 9280000. También te llegará por email la notificación de estado (enviado, reintentando, etc).
Algunas pasarelas mail2fax:

email2fax: [...]]]></description>
			<content:encoded><![CDATA[<p>Una pasarela email a fax (mail2fax) permite enviar faxes a través del correo electrónico. Por ejemplo, envías un email a 92800000@fax.tudominio.com, con un adjunto en formato PDF. La pasarela leerá ese PDF, y te lo enviará al número de fax 9280000. También te llegará por email la notificación de estado (enviado, reintentando, etc).</p>
<p>Algunas pasarelas mail2fax:</p>
<ul>
<li><a href="http://wpkg.org/email2fax/index.php/Main_Page">email2fax</a>: Programado en bash. Muy simple. Este fue mi punto de partida.</li>
<li><a href="http://asterfax.sourceforge.net/">AsterFax</a>: Parece muy completo, está escrito en Java. No me gusta el licenciamiento que utilizan. Usan software GPL, pero luego te <a href="http://asterfax.sourceforge.net/Licensing%20AsterFax.html">limitan a una sola línea de fax simultánea</a>&#8230; Muy oscuro <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<h2>Requisitos</h2>
<ul>
<li>Un subdominio (fax.dominio.com)</li>
<li>Un servidor Postfix (Se agradecerán las instrucciones para sendmail)</li>
<li>Hylafax ya instalado y funcionando. Podéis echar un vistazo a <a href="/asterisk-hylafax-iaxmodem">esta página</a> para integrarlo con Asterisk</li>
<li>Paciencia <img src='http://www.julianmenendez.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p> <a href="http://www.julianmenendez.es/pasarela_email2fax_hylafax_postfix/#more-26" class="more-link">(more&#8230;)</a></p>
<img src="http://feeds.feedburner.com/~r/julianjm/~4/4Six5NzzwIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.julianmenendez.es/pasarela_email2fax_hylafax_postfix/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.julianmenendez.es/pasarela_email2fax_hylafax_postfix/</feedburner:origLink></item>
	</channel>
</rss>

