Instalar VMware Player paso a paso en Ubuntu

 

VMware Player es un programa que puedes obtener de forma gratuita y que te permite ejecutar máquinas virtuales creadas con VMware Workstation, VMware GSX Server o VMware ESX Server, e incluso máquinas virtuales en formatos Microsoft y archivos generados con Symantec LiveState Recovery.

Aunque se instala de forma automática al instalar versiones de evaluación de otros productos como VMware Workstation, también podemos instalarlo de forma independiente.

Una de las mayores limitaciones que presenta es la de no poder crear nuevas máquinas virtuales, ya que está pensado para poder utilizar las que hayamos generado con alguno de los productos con los que es compatible. Sin embargo, aquí veremos que hay alternativas que nos permiten soslayar esta limitación.

VMware Player no es software de código abierto, pero es gratuito. Incluso se puede redistribuir, siempre que se atiendan una serie de directrices.

Descarga

Para comenzar, debes dirigirte al sitio de descarga de VMare Player, que se encuentra en la dirección http://www.vmware.com/download/player/:

Cuando hagas clic sobre el enlace de descarga, accederás a un formulario de registro donde deberás escribir algunos datos:

La siguiente etapa consiste en elegir el sistema operativo en el que piensas instalar el programa. Para Linux disponemos de varias opciones. Si dispones de Ubuntu para procesadores de 32 bits, debes elegir VMware Player 2.5.2 for Linux (.bundle), al menos en el momento que escribo este artículo. Puede que más adelante cambie el número de versión.

Lo siguiente será leer atentamente el texto de la licencia y hacer clic en el botón Accept al final de la página.

Finalmente, accedemos a una página donde disponemos de un botón titulado Download Now y, haciendo clic sobre él, iniciamos la descarga.

Instalación

Una vez concluida la descarga, debes abrir una consola (Aplicaciones > Accesorios > Terminal) y desplazarte hasta el lugar donde se ha guardado el archivo descargado. En mi caso, se encuentra en el escritorio de la cuenta de usuario con la que estoy trabajando (que precisamente se llama usuario). Por consiguiente, escribiré la siguiente orden:

cd /home/usuario/Escritorio/

Después, para iniciar la instalación, debes escribir lo siguiente:

sudo sh VMware-Player-2.5.2-156735.i386.bundle

Esto inicia el proceso de instalación de VMware Player que, al contrario de lo que cabría esperar, es completamente gráfico. En la ventana que se abre sólo hay que hacer clic sobre el botón Install.

Lo siguiente que verás, será una barra de proceso que te indica el avance de la tarea de copia y configuración de los archivos que forman el programa

Cuando la barra llega a su fin, es sustituida por un mensaje que informa de que la instalación ha concluido. Sólo queda hacer clic en el botón Close.

… Y en la consola, verás que también ha terminado el proceso. Ahora ya puedes cerrar también esta ventana.

Espero les resulte útil.

Primeros pasos en AJAX

Desde hace tiempo la palabra AJAX se ha convertido en uno de los términos mas usados en el mundo de desarrollo de aplicaciones web.

El termino AJAX fue acuñado por Jesse Garret en su artículo “AJAX: a new approach to web applications” – en el cual el autor hace referencia a la posibilidad de tener aplicaciones web que tengan un desempeño muy similar al de las aplicaciones de escritorio minimizando así la brecha entre las mismas.

En términos prácticos AJAX (Asynchrounous javascript and XML) es una técnica de desarrollo web que genera aplicaciones web interactivas combinando:

  • XHTML y CSS para la presentación de información
  • XML, XSLT para intercambiar y manipular datos
  • XMLHttpRequest para recuperar datos asíncronamente
  • Javascript como nexo de unión de todas estas tecnologías

Sin embargo la combinación de las mismas y su uso práctico puede llegara a ser doloroso, si no se tienen fundamentos de cómo explotar estas técnicas de desarrollo.

Así que me di a la tarea de escribir un manual práctico con los primeros pasos necesarios para iniciarse en AJAX.

Primeros pasos en AJAX

Adobe flash-plugin error en Ubuntu

Para todos los  que solemos usar el plug in de flash en mas de un navegador (Mozilla, Opera, etc.), sabemos que lo mas sencillo es descargar desde la web oficial de Adobe el plugin en .deb del flash player, pero jamas contamos que al actualizar la versión de Ubuntu este dejaba de dar soporte a estos paquetes instalados «a mano» y  los retira del sistema generando un conflicto interminable con el gestor de paquetes aptitude (apt).

Así que aquí les dejo como resolví este problema con el plug in de flash.

1 – cd /var/lib/dpkg/info   –> directorio donde se encuentra las depencies del apt
2 – rm adobe-flashplugin*.* –> borramos los cuatro archivos en ése directorio que están creando el problema

3 – dpkg –remove –force-remove-reinstreq adobe-flashplugin –> borramos definitivamente el paquete y se soluciona el atasco de apt-get

Por ultimo reinstalamos el paquete desde el repositorio oficial de Ubuntu

4 – apt-get install flashplugin-nonfree

Cómo importar el correo de Outlook (.pst) en Evolution

Recién me encontré en la ardua tarea de pasar todos mis correos de Outlook a Evolution por el cambio definitivo de sistema operativo en mi equipo principal. Leyendo varios post’s y manuales encontré que existen distintas maneras y puedo comentarles que intente varias, durante varios días. Al final me gustaria dejarles la mejor y mas rapida que encontre y la verdad me funciono de maravilla pasando de Oulook 2003 a Evolution 2.26.1 en Ubuntu 9.04.

En mi caso particular deje el disco con sistema Windows intacto y realice la instalación de Ubuntu en una unidad de disco distinta. Esto me permitio utilizar el disco de Windows como disco adicional (o esclavo) desde el cual tome la carpeta de pst a importar a Evolution.

Como dato importante les dejo la ruta en Windows que contiene este pst «C:/Documents and Settings/TU USUARIO DE SISTEMA/Configuración local/Datos de programa/Microsoft/Outlook»

Así que sin mas entrenemos en tema.

Outlook utiliza para almacenar el correo un par de archivos (además de los archivos .pst personales que te puedas haber creado):

  • Outlook.pst, que contiene los mensajes de correo actuales (los que en ese momento te aparecen en el programa)
  • Almacen.pst, que contiene los mensajes “autoarchivados” por outlook

La solución para importar los mensajes en Evolution está en la utilidad readpst (NOTA: en algún sistema puede tener el nombre de “ol2mbox”).

Para las distribuciones en las que estén contenidas estas utilidades en sus repositorios, como es el caso de Ubuntu, sólo es necesario descargarlas.

Para las distribuciones que no la incluyan, será necesario descargar los fuentes del proyecto, descomprimirlo y hacer un make para obtener el binario. Luego habrá que mover el binario a alguna ruta contenida en el path (como /usr/bin), o bien a la carpeta donde vayamos a trabajar.

A continuación, copiamos el fichero .pst en la carpeta “de trabajo”, y dentro de ésta creamos otra llamada “correos”. Ahora ejecutamos:

$ readpst -o correos -r Outlook.pst

Para más información consulta las páginas del manual.

Readpst crea un archivo con cada una de las carpetas de correo que existiesen en outlook, y una más para los contactos.


Una vez que readpst haya acabado, para importar los correos a Evolution:

  • Entrar en “Archivar” –> “Importar…”, en el “Asistente de importación de Evolution” seleccionar “Importar un único archivo”, seleccionar el archivo y dejar que Evolution determine el tipo -Buzón Berkeley (mbox)-, elegir el destino, pulsar importar y listo.
  • Repetir lo mismo con el fichero de contactos que será detectado como fichero vCard.

Espero les sea de utilidad a mi me funciona de maravilla y le dejo un agradecimiento a el blog de rubensa por su colaboración en esta ardua tarea.

¿Qué es un ataque de inyección iframe?

Hace algunos días me contacto un amigo que administra un sitio web para pedirme ayuda por que al entrar a su pagina principal el navegador le mostraba un mensaje de que entrar a su sitio podria dañar su equipo. El no entendía por que o como podía ocurrir esto ya que su servidor tenia sistema operativo Linux y el es el unico que tiene acceso al servidor por FTP. Así que se puso en contacto con su proveedor de hosting buscando respuestas y sobretodo ayuda pero poco fue lo que el soporte técnico del hosting pudo hacer por el, ya que no conocían este tipo de ataque.

Investigando al respecto logre ayudarle a solucionar el problema y en mi recorrido por los foros y sitios de antivirus y herramientas de malware encontré que esta situación es muy frecuente y en algunos servidores hasta recurrente. Así que me gustaría compartir los resultados que obtuve y como logre resolverlo.

Regularmente este ataque agrega una etiqueta  iframe dentro del body de nuestros archivos con nombre index, main, login y home. Esta etiqueta de iframe abre una pagina dentro de nuestra pagina que descarga codigo malicioso en la maquina de nuestros visitantes.

Un iframe también se puede usar para ataques CSRF (Cross-site request forgery) .

Un iframe de 1×1 no es visible pero cargado muchas veces puede causar una denegación de servicios.

Este tipo de ataques ocurre por que en el equipo o equipos desde donde accesamos por FTP a nuestro servidor web, se encuentra infectado con algún tipo de malware que toma los passwords guardados por el cliente de ftp y otras aplicaciones y los envía a los creadores del malware en algún servidor que se encarga de conectarse a nuestro servidor, buscar los archivos comunes (index, main, etc.) y agregar la etiqueta de iframe.

Existen algunas variaciones del mismo tipo de ataque.

En mi batalla personal encontré archivos con etiquetas de iframe con la dirección del atacante embebida dentro del código html (dentro de la etiqueta body), también encontre algunos tipos de ataque mas severos, en los que los archivos no conservaban nada del codigo original, en su lugar solo podemos ver una cadena sin sentido, que ejecuta codigo ofuscado con el mismo fin ejecutar el iframe. El problema de este ultimo es que el código ofuscado es una encripción del código original en base24 por lo que si bajamos el archivo para eliminar la cadena con el código ofuscado ninguna pc convencional podrá leerlo, de hecho ni siquiera se los mostrara dentro del editor.

La recomendación es:

1.- Revisar el ó los equipos que tienen acceso por FTP (incluso de los desarrolladores o programadores subcontratados) a este servidor con alguna herramienta anti malware, anti spyware y anti virus.

2.- Ya con nuestros equipos limpios pedir a nuestro proveedor de hosting eliminar la cuenta de hosting y crearla de nuevo. Para lo cual necesitaremos un respaldo reciente de nuestras paginas y de nuestras bases de datos. Si esto no es posible cambien el password de acceso a su FTP y borren todos los archivos anteriores del sitio.

3.- Subir el respaldo y cambiar los permisos de nuestros archivos y carpetas en el web server a solo lectura (444), de esta manera evitamos que algún código interno pueda escribir en los archivos, eso si cada que necesitemos realizar algun un cambio sobre los mismos tendremos que modificar las propiedades.

Por ultimo a petición de ustedes y sin afán de hacer comerciales les comento las herramientas que me funcionaron para detectar el malware:

Google Chrome como navegador web, si el sitio esta infectado evita la ejecución de la pagina y envía alertas visuales.

Ad Aware como complemento al antivirus para la detección del código malicioso.

Malwarebytes’ Anti-Malware nunca esta demás darle una doble revisada a los discos duros de nuestros equipos.

Y recuerden no guardar mas las contraseñas de sus sitios FTP en su maquina, sin importar que cliente de FTP usen.

El futuro de MySql

Como comentaba en el post anterior, la compra de Sun por parte de Oracle ha levantado alarmas sobre el futuro de MySQL, una de las bases de datos más utilizadas (si no la-más-utilizada) en el mundo del desarrollo web, fundamentalmente por su carácter de software libre — sin ir más lejos, cientos de CMS como WordPress, Joomla o Drupal la utilizan de forma preferente o exclusiva, por lo que la posibilidad de que Oracle decidiera detener su desarrollo para favorecer sus propios sistemas de bases de datos (propietarios y de pago) se presenta para algunos como una amenaza real al futuro de sus aplicaciones.

Pero… ¿existen verdaderamente razones para estas preocupaciones? Creo que no, y es más, creo que temer por el futuro de MySQL es no entender las ventajas del software libre, o peor aún, pensar que “software libre = software gratis”… Habría que agregar también que es en puntos como este donde se aprecia la diferencia práctica entre el código abierto y el software libre: a pesar de las diferentes concepciones que podríamos encontrar al respecto (por ejemplo, la definición “oficial” de código abierto, de la Open Source Initiative se parece más bien a una definición de software libre), podríamos reducir didáctica e ilustrativamente su diferencia al hecho de que en su sentido más básico, “código abierto” hace referencia al simple hecho de que es posible ver el código fuente de un programa. En este sentido, cualquier programa escrito en un lenguaje interpretado (PHP, Perl, Python, Ruby [on Rails]) distribuido públicamente caería en la definición de “código abierto” (a menos que por alguna razón “especial” su autor decidiera ofuscar el código).

Un ejemplo de lo anterior podría ser Movable Type, que en lo fundamental siempre ha sido de “código abierto”: el programa es puro código fuente interpretado, pero hasta hace poco no existía la libertad de distribuir una versión modificada, la que existe sólo a partir de su licenciamiento con la GPL. Es entonces cuando las cuatro libertades para usuarios de software cobran sentido: no se trata de una razones puramente filosóficas o políticas (aunque también lo es) ni de una posición utópica o radical (como si ello fuera algo malo)… software libre no es lo mismo que código abierto.

¿Y qué tiene que ver esto con MySQL? Que justamente, su carácter de software libre asegura un futuro protegido: si Oracle decide detener su desarrollo, cualquier grupo de desarrollo podrá tomar la última versión publicada bajo la GPL y continuar el desarrollo, creando un fork… con otro nombre (si Oracle decide proteger su marca), con nuevas metas, con otras personas participando; agregando nuevas características o simplemente mejorando su seguridad y rendimiento o con cualquier otro plan de desarrollo.

No es una posibilidad utópica: ha pasado un montón de veces y seguirá pasando. Ubuntu es un fork de Debian, WordPress es un fork de b2, Webkit es un fork de KHTML e incluso el sistema operativo de Apple, Mac OS X es un fork de Nextstep, que a su vez es un fork de BSD (que es una variante de UNIX).

¿Y si Oracle no detiene el desarrollo de MySQL sino que lo transforma en un producto de software libre de pago? Está dentro de sus libertades, mientras siga publicando su código fuente. Y esto tampoco sería el peor de los escenarios: del mismo modo, cualquier grupo podría dedicarse a distribuir ejecutables compilados a partir del código fuente, y en este caso también hay referentes —CentOS es una distribución de GNU/Linux compilada a partir del código fuente liberado por Red Hat, una distribución comercial de Linux (y una de las de mayor tradición).

De cualquier modo, los primeros pasos para asegurar el futuro de MySQL ya se han dado: uno de los creadores de esta base de datos ha anunciado la creación de la Open Database Alliance para coordinar el desarrollo colaborativo en torno a MySQL.

Y los más paranoicos se alegrarán de saber que ya existen un par de fork’s totalmente compatibles con MySQL y que fácilmente podría convertirse en su sucesor: MariaDB, una rama de MySQL desarrollada en comunidad que mantendrá la compatibilidad con los nuevos lanzamientos de MySQL, y Drizzle, un fork modular basado en MySQL 6.0 y desarrollado por los propios ingenieros de MySQL (ahora SUN) … y quién sabe, si Oracle decide finalmente jubilar a MySQL, quizás podríamos tener un sucesor que no sea solamente una copia sino una nueva y mejor base de datos.

Oracle compra Sun

El anuncio se realizo el día de hoy. De acuerdo a los comunicados de prensa de SUN y de Oracle (en inglés) anunciando el movimiento.

Después de que las conversaciones de adquisición con IBM no se concretaron, Oracle, en una movida sorpresa, llegó a un acuerdo para comprar Sun por 7.400 millones de dólares.

Según su comunicados el motivo más importante recae en dos de las propiedades más valiosas de Sun: Java y Solaris.

La Junta Directiva de Sun aprobó la compra de forma unánime, se hará efectiva en verano después de que los accionistas y el gobierno estadounidense den su aprobación.

Recordemos también que Sun compró MySQL hace un poco más de un año, lo cual significa que ahora pasa a ser controlado por Oracle.

Lo realmente procupante de esta operación es el futuro de MySQL como el manejador de bases de datos estandard de aplicaciones web y hasta hace poco de ERPS y aplicaciones de misión critica. Es por muchos conocido que muchas empresas empezaron a migrar sus aplicaciones de misión critica y core bussines a MySQL. Esto obedecía principalmente a la situación económica, a el hecho de que MySQL tenia ahora el motor transaccional innodb que le permitía cumplir con los estandares de ACID (ACID compliant) y por supuesto a que en manos de SUN podrías obtener un buen contrato de soporte 24 x 7 365 y en tu idioma. Muchos pensamos que estos factores mostraban a MySQL como un producto bien madurado y por evolución natural lo colocaría en una posición de líder indiscutible en la industria de los RDBMS.

Sin embargo en mi muy particular punto de vista, es una movida muy conveniente para Oracle, ya que la mayoría de las aplicaciones de Oracle están desarrolladas en Java. Por lo que ahora sera capaz de ofrecer soluciones completas (Hardware, Software y Tupperware), usando sus recién adquiridos; los míticos servidores T con procesadores Sparc, el sistema operativo Solaris, BEA Web logic como application server y por supuesto Oracle 10g como RDBMS, lo que dejaría a MySQL y a Glassfish fuera del esquema principal de negocio y por supuesto, muy probablemente dejaran de recibir soporte en algún tiempo.

Y pensando en que Oracle no ha figurado por ser una empresa cercana al open source, al menos a la comunidad que lo conforma, entonces nos queda pensar que el impacto para los productos (al menos los que compiten con su catalogo actual), seria negativo

Si esto sucede seria una verdadera lastima y el impacto para la red puede ser muy fuerte ya que MySql esta instalado en la gran mayoría de los web servers en el mundo y por supuesto el hecho de que el acuñado termino LAMPP perderia la «M». Me han contactado ya muchos miembros de la comunidad open source y algunos tienen ya la idea muy clara de que debemos empezar a buscar un reemplazo digno. Algunos ya están probando Firebird, otros de hecho están pensando en formar ya un nuevo proyecto en que se incluya código de Postgresql y Firebird y hacer un nuevo RBDMS incluyendo alguno de los motores opensource ya existentes que tenga soporte de ACID .

Afortunada o desafortunadamente no sabemos que rumbo vaya a tomar Oracle al respecto pero para algunos es ya un hecho que se acerca la muerte de MySQL como standard de la comunidad Open Source, algunos incluso lo piensan de ese modo – según sus palabras «No trabajaría con el de nuevo si pertenece a ORACLE.»

LAMPP Training – Curso MYSQL

Tenemos dos fechas tentativas para iniciar el curso, el 9 ó 16 de Mayo de 2009 depende del número de interesados. Mínimo 5 personas.

Revisa la encuesta en la parte inferior de la barra lateral para saber que fecha prefieres de inicio del curso.

La idea es impartir todo el training LAMP (Linux, Apache, MySQL y PHP) continuando el impulso al Open Source.

El temario propuesto para MySQL es:

I.- Introducción

  • Historia MySQL.
  • Acerca de GNU/GPL
  • Definición de SQL.
  • Principales características.
  • Herramientas Gráficas.

II.- Trabajando con MySQL

  • Introducción.
  • Conectándose y desconectándose al servidor MySQL.
  • Privilegios de usuarios.
  • Ejecutando algunas consultas.
  • Creando y usando una base de datos.
  • Creando una tabla.
  • Cargando datos en una tabla.
  • Recuperando información de una tabla.
  • Ordenando registros.
  • Cálculos con fechas.
  • Trabajando con valores nulos.
  • Coincidencia de patrones.
  • Conteo de filas.
  • Usando más de una tabla.
  • Usando mysql en modo batch.

III.- MySQL CLI

  • Acceso a un servidor MySQL y administración de la base de datos por línea de comandos.
  • Conectar con el servidor MySQL.
  • Dentro de la consola de MySQL.
  • Otras Sentencias SQL.
  • Para salir de la línea de comandos de MySQL.
  • Información acerca de las bases de datos y las tablas.
  • Tipos de conexiones.

Duración:

6 sesiones, sábados de 09:00 a 13:00 hrs.

Ubicación:

Atizapán de Zaragoza, Estado de México. Se envía croquis por correo electrónico al recibir la confirmación.

El costo por persona es de $ 2,000.

50% en la primera sesión y 50% en la penúltima.

Para cualquier duda o aclaración escribe un comentario en este post.

ASTERISK y la E1 MFC/R2 en México (R2 Modificada de Telmex)

Estuve peleándome un buen rato con las E1 de Telmex, que aqui en Mexico les dicen E1 R2 Modificada, pero en el resto del mundo les llaman MFC/R2. Todos los posts en internet decian que en México eran super difíciles de configurar en las Tarjetas Digium.

Escribí este post para evitar que otros caigan en los mismos errores y evitar dolores de cabeza. Sigue leyendo y veras como activar un E1 R2 Modificada (MFC/R2) en México usando lineas de Telmex.

Algo de señalización primero

No soy un experto, pero lo que leí me dejó lo siguiente. El protocolo MFC/R2 es un protocolo _peer to peer_, es decir, no hay cliente y servidor, los dos dispositivos se comunican con simple señalizacion de 4 bits CAS (Channel Associated Signaling), los bits suelen llamarseles ABCD. Estos bits representan el estado de la linea, de una manera similar a la telefonía analoga. Cada bit significa algo, pero los bits C y D son raramente usados (solo en algunos paises asiáticos), el valor mas comun para ellos es 01. La tabla de estados de los bits ABCD es la siguiente:

--------------+-------+---------+- Estado Enviar Regresar --------------+-------+---------+- Idle/Released: 1001 1001 Seized 0001 1001 Seize Ack 0001 1101 Answered 0001 0101 ClearBack 0001 1101 ClearFwd 1001 0101 ClearFwd 1001 1101 Blocked 1001 1101

Lo que debe pasar es que la tarjeta debe regresar el modo blocked en todos lo canales siempre que no se este usando, es decir, si Asterisk esta apagado. Pero cuando Asterisk enciende debe desbloquear y poner en Idle los canales para esperar llamadas. Ambos extremos del enlace deben estar desbloqueados para que se puedan comunicar.

En caso de que Telmex no tenga activa tu conexión veras mensajes de Far end Blocked en los logs de inicio de Asterisk. Eso es porque Asterisk desbloqueó tu lado del enlace pero el otro lado esta aún bloqueado.

Algunas personas confunden la señalizacion MFC/R2 con la señalización que se hace entre aparatos telefónicos como el de tu casa y PBX, esto es incorrecto. La señalización MFC/R2 se da entre switches, que son los lados de un enlace E1. Para nuestros fines, esta señalización se da entre Asterisk y el lado remoto de la E1, que es distinta a la señalización que se da entre un Asterisk con tarjetas FXS y un aparato telefónico.

Tu Oficina | | Telmex | | [telefono]----[Asterisk]===MFC/R2===[switch] / | | [telefono]+ | |

Cuando se va a realizar una llamada ambos lados del enlace deben estar Idle o no se puede lograr un enlace.

Unicall

La cadena de comunicaciones de Zaptel usualmente funciona asi:

PSTN - zaptel card - zaptel driver - libpri - chan-zap - asterisk

pero con MFC/R2 usa una nueva libreria de abstracción llamada libunicall, que provee de una nueva interfaz unificada de manejo de llamadas (unified call handling interface, unicall). Y funciona de una manera ligeramente distinta.

PSTN - zaptel card - zaptel driver - libmfcr2 - libunicall - chan-unicall - asterisk

Zaptel para una E1 MFC/R2 (R2 Modificada)

Instala los drivers de zaptel, que se instalan igual que siempre, si lo bajamos del CVS usamos:

# cd /usr/src # export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot # cvs login - the password is anoncvs. # cvs checkout -r v1-0 zaptel libpri asterisk

Luego compilamos zaptel y libpri:

# cd zaptel # make clean; make install # cd ../libpri # make clean; make install

Configuramos /etc/zaptel.conf para MFC/R2 para que ponga los canales en el modo apropiado, es decir, ponemos los bits ABCD del CAS en modo blocked

# MFC/R2 normalmente no usa CRC4 span=1,1,0,cas,hdb3 cas=1-15:1101 dchan=16 cas=17-31:1101 loadzone=us defaultzone=us

Si lees mas arriba la tabla de valores, 1101 es “Regresar: Blocked”, es decir, cuando Telmex le intenta conmunicarse con tus canales, la tarjeta le devuelve “Blocked”, y Telmex se da cuenta de que la tarjeta no esta en uso por Asterisk. Simplemente la tarjeta esta conectada pero no esta en disposicion de recibir llamadas.

Antes de proseguir checa que si ejecutas ztcfg -vv veras:

bash# ztcfg -v Zaptel Configuration ====================== SPAN 1: CAS/HDB3 Build-out: 0 db (CSU)/0-133 feet (DSX-1) 31 channels configured.

Instalando las librerias

Necesitas instalar las librerias spandsp, libsupertone, libmfcr2 y libunicall de ftp.soft-switch.org, pero resulta que ese sitio esta el 50% del tiempo prendido y el 50% apagado, si no puedes acceder a ese sitio tengo un mirror aqui. Bajas spandsp, libsupertone, libmfcr2 y libunicall, descomprimes y compilas.

SpanDSP,

# tar -zxvf spandsp-0.0.2pre18.tar.gz # cd spandsp-0.0.2/ # ./configure # make # make install

por defecto instala las librerias en /usr/local/lib, checa que tu /etc/ld.so.conf tenga este directorio en la lista. Si no lo tiene agregalo y ejecuta _ldconfig_

Se hace lo mismo para libsupertone, libunicall y libmfcr2 (descomprime, ./configure, make y make install). La cosa es que libmfcr2 ademas instala modulos en /usr/local/lib/unicall/protocols que se cargan dinamicamente por libunicall. Libunicall siempre busca sus modulos ahi.

Si quieres probar tu E1 MFC/R2 puedes checar Voip-Info.org en la seccion Testing your MFC/R2 signalling installation, en realidad no es necesario y es una lata. Mejor vamos directo a Asterisk.

Asterisk y los canales Unicall en MFC/R2

Baja chan_unicall.c, unicall.conf.sample y channels_makefile.patch de ftp.soft-switch.org (Recuerda que tengo un mirror aqui)

Luego copiamos al lugar donde bajamos el source del Asterisk, dentro del subdirectorio channels el chan_unicall.c y el channels_makefile.patch.

# cp chan_unicall.c channels_makefile.patch /usr/src/asterisk/channels

y parchas,

#cd /usr/src/asterisk/channels
#patch < channels_makefile.patch

luego compilas el Asterisk.

# cd /usr/src/asterisk/ # ./configure # make # make install # make samples # make config < ---- para clones Redhat

si checas dentro de /usr/src/asterisk/channels veras un archivo chan_unicall.so, si no aparece entonces algo salio mal. No te preocupes a mi me toco editar el makefile de la siguiente manera, te muestro los numeros de linea:

23 CHANNEL_LIBS=chan_modem.so chan_sip.so 24 chan_modem_aopen.so 25 chan_modem_bestdata.so chan_modem_i4l.so 26 chan_agent.so chan_mgcp.so chan_iax2.so 27 chan_local.so chan_skinny.so chan_unicall.so 28

En la linea 27 agregue: chan_unicall.so. Recompilé asterisk, lo instalé, y quedo todo bien.

Luego copia unicall.conf.sample a /etc/asterisk, lo renombras a unicall.conf y lo editas para que este acorde a tu configuracion. Por ejemplo, el mio es:

[channels] usecallerid=yes hidecallerid=no callwaitingcallerid=yes threewaycalling=yes transfer=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes echotraining=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 immediate=no musiconhold=default protocolclass=mfcr2 protocolvariant=mx,10,1 protocolend=cpe group = 1 context= e1-incoming channel => 1-10 ;channel => 17-31 ;skip time slot 16

Como dije antes, MFC/R2 es peer-to-peer asi que la linea _protocolend=cpe_ es ignorada. Tengo asignadas 10 lineas de telmex solamente. La linea _protocolvariant_ es importante para esto. Su sintaxis es:

protocolvariant=pais,digitos-ANI,digitos-DNI

El pais es alguno de los siguientes:

Argentina "ar" Bahrain "bh" Bolivia "bo" Brazil "br" Chile "cl" China "cn" Colombia landlines "co-land" Colombia cellular "co-cell" Czech "cz" Honduras "hn" India "in" Indonesia "id" Korea "kr" Malaysia "my" Mexico "mx" Panama "pa" Philipinnes "ph" Singapore "sg" Thailand "th"

Los Digitos ANI y DNI aun no los comprendo bien, en unos dias le preguntaré a un experto en telefonía convencional a ver que me dice y lo pego aqui. Pero lo que actualmente tengo es 10 digitos marcados para marcar mi numero y 1 digito que varía al final, es decir. Mis lineas son 443305257x, x es alguno de {0,1,2,3,4,5,6,8,9}. O sea que tengo lineas desde 4433052570 al 79.

Probando Asterisk con E1 MFC/R2 (R2 Modificada) de Telmex

Arrancamos Asterisk y entramos a la consola:

# asterisk -vvvvvvvvvvvvvvv& # asterisk -R

Al arrancar debe darte muchos mensajes

Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Far end unblocked -- Unicall/1 far unblocked Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Local end unblocked -- Unicall/1 local unblocked Aug 10 03:13:28 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/2 event Far end unblocked -- Unicall/2 far unblocked

uno para cada linea que tengas, nota el Local end unblocked y el Far end unblocked. Si no aparece nada algo o si aparece Far end blocked o algo similar checa que Telmex te haya desbloqueado la linea, llámales y gritales hasta que te arreglen la conexion :-P.

Otra forma de probar es llamarte a ti mismo, usa tu celular y llama a una linea de la E1. Deben aparecer mensajes del tipo:

Aug 10 03:18:48 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Detected Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Offered Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2920 handle_uc_event: CRN 32769 - Offered on channel 0 (ANI: , DNIS: 0) Aug 10 03:18:49 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Accepted (...) Aug 10 03:18:54 WARNING[2564]: chan_unicall.c:1347 unicall_hangup: Hangup: channel: 1 index = 0, normal = 24, callwait = -1, thirdcall = -1 Aug 10 03:18:54 WARNING[2564]: chan_unicall.c:962 update_conf: Updated conferencing on 1, with 0 conference users Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Drop call Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:3246 handle_uc_event: CRN 32769 - Doing a Release Call -- Hungup 'UniCall/1-1' Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:2865 handle_uc_event: Unicall/1 event Release call Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:3260 handle_uc_event: CRN 32769 - Call released -- Unicall/1 released Aug 10 03:18:54 WARNING[2419]: chan_unicall.c:1042 unicall_disable_ec: disabled echo cancellation on channel 1

Antes de continuar checa que tengas esos mensajes en el log y que Telmex tenga activa tu conexion E1.

¿Aun no funciona?

Si Telmex te dice que tiene activa tu linea y tienes todo configurado bien, como dice arriba, te recomiendo reiniciar tu maquina, eso me paso a mi y creeme que es un dolor de cabeza. Reinicia e intenta de nuevo. Es algo extraño pero a mi me funciono.

Puedes checar el estado de las lineas usando _UC show channels_ a mi me aparece:

Asterisk*CLI> UC show channels Channel Extension Context Status Language MusicOnHold 1 0 e1-incoming Idle default 2 e1-incoming Idle default 3 e1-incoming Idle default 4 e1-incoming Idle default 5 e1-incoming Idle default 6 e1-incoming Idle default 7 e1-incoming Idle default 8 e1-incoming Idle default 9 e1-incoming Idle default 10 e1-incoming Idle default

Si notas los canales estan en _Idle_, eso es lo correcto. Si no puedes usar el comando _UC_ significa que tu modulo chan_unicall no se ha cargado, regresa, compilalo y verifica que este en el lugar adecuado, normalmente esta en /usr/lib/asterisk/modules/chan_unicall.so.

Configurando las extensiones

Ya que tienes la tarjeta con sus canales funcionando es hora de configurar las extensiones. Como se ve en _UC show channels_ en unicall.conf configuramos para que las llamadas entrantes _caigan_ en el contexto _e1-incoming_. Es cosa de editar extensions.conf y colocar la definicion de ese contexto con algun manejador apropiado. En el mio esta asi:

[e1-incoming] exten => _.,1,Ringing exten => _.,2,Answer exten => _.,3,VoicemailMain exten => _.,4,Hangup

Y cuando marco alguna de las extensiones me manda al Voicemail, entonces escucho el clasico mensaje “Comedian mail, login”. Felicitaciones ya puedes recibir llamadas en tu E1 MFC/R2 (R2 Modificada). Configurar extensiones y demás esta fuera del alcance de este articulo, pero es muy fácil.

Ahora para hacer llamadas es igual que usar Dial(Zap/g1….) pero usas Dial(Unicall/g1…).