Interesante información sobre los requerimientos detallados a considerar durante la instalación en producción de un sistema de telefonía basado en Asterisk.
Considerando desde tarjetas, cpus, motherboars, redes, cableado, electricidad, etc.,
Hace unas semanas intenté acceder al blog para subir algunos post pero al intentar dar mi login y password en el admin de este blog simplemente no pude acceder, por lo que pensé que igual se me había olvidado la contraseña, así que entré vía SSH al servidor, me validé en la base de datos y cambié el password usando md5 en la tabla de usuarios e intenté otra vez acceder al administrador del blog pero igual no me validaba.
Lo que pude ver es que si introducía un login o password erróneo si me lo indicaba, pero si daba los datos correctos, entonces tardaba unos segundos como intentando hacer algo pero regresaba a la página de validación, como si hubiera un error en la sessión.
Revisé que alguien no hubiera alterado el código del jaws, así como vi los logs para ver si algo raro ocurría con el servidor web o si estaba comprometido, pero nada, por lo que como tenía cosas que hacer lo dejé por semanas, hasta hoy en la madrugada que me dije hoy si quiero bloguear aunque tenga que cambiar la versión de jaws.
Por lo que respaldé la base de datos, pero al hacer el dumping, vi que me marcaba error en las tablas de ipvisitor, session y captcha, por lo que solo reparé las tablas con el siguiente comando:
Asterisk es una plataforma de Telefonía IP, la cuál en los últimos años está teniendo un avance tremendo en el mundo de las comunicaciones, tan es así que se han desarrollado múltiples aplicaciones alrededor de esta plataforma, tales como sistemas de videoconferencia, crm's, webphones, calendarios, reporteadores, interfaces gráficas, hardware, etc.
De ahí este post para comentar sobre un sitio que recopilo las mejores aplicaciones libres que se han desarrollado para interactuar con esta fantástica plataforma de telefonía IP, algunas de ellas ya las tenemos integradas en CloudVoox. http://www.venturevoip.com/news.php?rssid=2184
Al momento de hacer una relación m:m en vTiger con 2 módulos personalizados e intentar seleccionar los registros de un módulo detalle desde un módulo maestro vTiger me generaba el siguiente error:
vTiger Warning: Invalid argument supplied for foreach() in /var/www/vtigercrm/include/utils/ListViewUtils.php on line 1418
Este error se generaba en esta porción del código de vTiger
Al parecer esto ya que al definir las variables en la clase MiModulo.php estas las definía en minúsculas, por lo que vTiger buscaba en el arreglo un nombre de campo con la primer letra mayúscula, por lo que si todo estaba en minúscula no encontraba el registro y por ende mandaba el error, por ello solo entre a la clase del módulo y definí el nombre de los campos con la primer letra mayúscula, con esto se resolvió el problema.
Hace unos días empecé a experimentar problemas con mi servidor web el cuál tendía a mandar errores de conexión de MySQL pero por falta de tiempo no me había metido a investigar porqué, solo reiniciaba MySQL y listo.
Pero debido que esto me pasaba 1 o 2 veces por días, entré al log para ver que pasaba y ahí pude ver algo como lo siguiente:
mysqldump: Got error: 145: Table './MYSQLDB/TABLA' is marked as crashed and should be repaired when using LOCK TABLES
Al parecer algunas tablas, 3 para ser exactos tenían un error por lo cuál recurrentemente a MySQL lo "crasheaban", por lo cuál me metí a investigar cuál fue el detalle y la solución fue entrar al directorio de la base de datos de MySQL y correr un chequeo de MySQL, en este caso suponiendo que la base de datos se llame MySQLDB y la tabla TABLA, tendríamos que hacer lo siguiente:
cd/var/lib/mysql/MySQLDB
myisamchk -r TABLA
Repetir lo anterior con cada una de las tablas dañadas.
Hace unos días en OaxRom nos contactó un cliente el cuál me comentó que tenía un servidor Asterisk que se lo habían implementado pero que últimamente tenía algunos problemas en su funcionamiento, esto ya que al parecer por unas fallas de energía había afectado su operación.
Por lo que la propuesta fue implementarle un servidor Asterisk reutilizando sus teléfonos IP y Tarjetas E1 ya que tiene una troncal digital de 30 canales con Axtel con señalización R2, en este caso dispone de una tarjeta OpenVox D115E.
El detalle es que esta tarjeta no está del todo soportada por el driver de Dahdi, por lo que hay que descargar unos drivers adicionales de OpenVox, instalarlos y parchar DAHDI para que se integre dentro de la plataforma de DAHDI & Asterisk, para esto lo primero que se descargó fueron los drivers de la siguiente página:
Aquí se omiten algunos pasos de instalación de Asterisk y solo se enfoca a la parte de OpenVox, en este blog ya tengo algunos tutoriales de como instalar Asterisk form Scratch en Debian & Ubuntu Server y se pueden complementar con este How to.
Instalar OSLEC como cancelador de eco por software, si no se tiene una tarjeta con módulo de eco por hardware se recomienda OSLEC, previamente hay que compilar OSLEC.
#OpenVOX D115 sudotar-xzvf ~/asterisk/openvox_dahdi-linux-complete-2.4.0+2.4.0.tar.gz sudorm-rf/usr/src/dahdi sudoln-s/usr/src/asterisk/dahdi-linux-complete-2.4.0+2.4.0/linux//usr/src/dahdi #Instalación de OpenVox-Dahdi y Dahdi Tools. cd/usr/src/asterisk/dahdi-linux-complete-2.4.0+2.4.0 sudomake clean && sudomake&& sudomakeinstall&& sudomake config #copia del módulo de OpenVox-Dahdi para la versión del kernel de Linux que estemos utilizando cd .. mkdir-p/lib/modules/`uname -r`/dahdi/opvxd115 sudocp/usr/src/asterisk/dahdi-linux-complete-2.4.0+2.4.0/linux/drivers/dahdi/opvxd115/opvxd115.ko /lib/modules/`uname -r`/dahdi/opvxd115/ #Descarga del firmware de OpenVox cd ~/asterisk wget http://downloads.openvox.cn/pub/firmwares/opvx-dahdi-fw-oct6114-032-1.07.01.tar.gz #Instalación del firmware de OpenVox para Dahdi cd/usr/src/asterisk sudotar-xzvf ~/asterisk/opvx-dahdi-fw-oct6114-032-1.07.01.tar.gz sudocp dahdi-fw-oct6114-032.bin /lib/firmware/ sudomkdir-p/usr/lib/hotplug/firmware/ sudomv dahdi-fw-oct6114-032.bin /usr/lib/hotplug/firmware/ #instalación de OpenR2 para E1 Modificado cd ~/asterisk/ sudowget http://openr2.googlecode.com/files/openr2-1.3.1.tar.gz cd/usr/src sudotar zxvf ~/asterisk/openr2-*tar.gz cd openr2-* sudo ./configure &&sudomake&&sudomakeinstall # compilacion de Asterisk sin MFC R2, la versión de Asterisk 1.6.2 ya incluye soporte para R2 cd/usr/src/asterisk/asterisk-1.6.*&& #sudo patch -p0 < ~/asterisk/openr2-asterisk-1.4.32-p1.patch && #sudo ./bootstrap.sh && sudomake clean && sudo ./configure --prefix=/usr && #Desactivar módulos que no se utilizarán (mgcp, skinny, codec_dahdi) activar(ilbc) sudomake menuconfig && sudomake all &&sudomakeinstall&& #Ejecuta si es la primera vez que instalas asterisk en el servidor, de lo contrario reescribirá tus archivos de configuración sudomake samples &&sudomake progdocs
Con lo anterior ya podemos instalar la tarjeta y tenerlo soportado en DAHDI, así como instalar Asterisk y tener soporte de R2.
Para la parte de la configuración del E1 es el mismo procedimiento que con una Tarjeta Sangoma A102 o una Digium.
Por ejemplo para un R2 de 30 canales quedaría así /etc/dahdi/system.conf
Cómo comenté al inicio en este tutorial se omiten detalles sobre la instalación y configuración de Asterisk, pues solo nos enfocamos a la parte de OpenVox que para algún usuario con un poco de experiencia sabrá cómo organizar la información que aquí incluímos.
Espero alguien le sirva este tutorial y cualquier duda pueden postearla para irlas resolviendo.
Actualmente Asterisk se está convirtiendo en el Software Líder de SoftSwitch, siendo el favorito desde pequeñas empresas hasta grandes corporativos, por lo que su amplio uso e implementación en diversos países del mundo lo ha hecho un blanco importante para los "hackers" que desean obtener acceso a estos servidores y poder conseguir llamadas gratuitas.
Instalar un Asterisk es cosa sencilla con múltiples proyectos "All in One" como lo es Elastix por ejemplo, la distro más famosa que ya incluye diversas aplicaciones alrededor de la platforma de Asterisk, por lo que para muchos usuarios nóveles les es muy fácil implementar PBX bajo esta plataforma pero sin conocimientos avanzados que los ayude a proteger sus servidores al estar expuestos en internet, esto ya que muchos les es fácil ponerlos en DMZ para tener un acceso remoto.
Actualmente existen varias herramientas de auditoría SIP que permite detectar vulnerabilidades en servidores Asterisk, herramientas que también son usadas por los crackers para detectar cuentas SIP y explotarlas. Una de estas herramientas es SIP Vicious la cuál permite escanear un sevidor SIP y detectar que cuentas SIP están disponibles, cuáles requieren passwords y cuáles no, así como también pueden llegar a obtener el passwords de cuentas SIP cuánto estos no son complejos.
Una de las formas más rápidas de dar el primer portazo a escaners SIP es mediante una opción que se coloca en SIP.CONF o sip_custom.conf para los usuarios de FreePBX y Elastix.
Esa opción es:
alwaysauthreject=yes
Esta debe ser la primer opción en el proceso de asegurar un Asterisk, posteriormente estaré posteando sobre un Detector de Intrusos para SIP.
Uno de los clásicos problemas al tener una IP Pública Dinámica con telmex o algún otro provedor, es que los correos electrónicos no salen como por ejemplo cuándo envías un mail desde una aplicación PHP, este es rechazado por el servidor destino ya que no estamos autentificados para enviar correos.
Una solución es instalar postfix como un smarthost(relay host) no como Internet Site, esto hará que postfix no envíe el correo al dominio destino, si no más bien use un servidor de correos externo como puente y así los servidores destinos acepten el correo.
En este caso pongo la liga de un tutorial bastante práctico el cuál me sirvió para resolver este detalle en unos minutos y así quitarme el problema que me había acosado por bastante rato.
En la mañana configurando una aplicación web en la cuál en base al horario del sistema tenía que controlar cierto flujo de información, lo curioso del caso es que la hora del servidor Linux era la correcta, pero la hora que mostraba la aplicación web usando date("H i s") me daba una hora adelantada, por lo que revisando los logs pude ver que apache-php estaba configurando la zona horaria a América/Chicago, algo curioso ya que en el servidor había ajustado el timezone a América/Mexico_City.
El detalle de esto es que en la configuración de php también hay que indicar la zona horaria en el archivo /etc/php/apache2/php.ini.
date.timezone =America/Mexico_City
Con lo anterior solo basta guardar el archivo de configuración y luego reiniciar el servicio de Apache,.
Hace unos días le instalé un Marcador Predictivo a un cliente basado en ViciDial, todo esto funcionando sobre la plataforma de Telefonía IP Asterisk, todo funcionó bien Colas, Marcador Predictivo, Llamadas Grabadas, Reportes, Agentes, CRM, Call Notification, etc., Solo faltaba la cereza en el pastel,
¿ Como descargar el archivo de las llamadas grabadas desde el CDR de FreePBX ?
Para esto me metí a revisar el archivo call-log.php, que es el reporteador del CDR de FreePBX. Este archivo se encuentra debajo de la ruta de instalación de FreePBX en admin/cdr/call-log.php, para mi sistema CloudVoox PBX lo tenemos en /var/www/cloudvoox/admin/cdr/call-log.php.
En esta parte debajo de /* --AMP Begin-- */ agregamos la siguiente línea
En lo anterior agregamos un campo dentro de la configuración, y este campo contiene "cdr/audio.php?id=", lo que al momento de que el CDR de FreePBX despliegue la información esto nos generará una URL en ese registro pasándole como parámetro el uniqueid de la llamada para porcesarla en el archivo audio.php.
También modificamos la consulta y quedó de la siguiente forma:
En este mismo archivo hicimos una modificación en el despliegue de la información del registro, este cambio se hizo despues de la siguiente línea (~685):
Con lo anterior en el reporte veríamos el UNIQUEID de la llamada y desde ahí nos permitiría descargar el archivo de AUDIO de la llamada grabada.
Ahora solo faltaría poner el archivo audio.php dentro del mismo directorio dónde está call-log.php, el archivo audio.php tendría el siguiente código:
<?php $uniqueid=$_GET["id"]; $directorio="/var/spool/asterisk/monitor/"; $error=""; if(is_numeric($uniqueid)){ $busqueda="find $directorio -iname \"*$uniqueid.*\""; $audio=exec($busqueda,$_info); if(file_exists($audio)){ $filename=basename($audio); $_extension=split("\.",$filename); $extension=$_extension[count($_extension)-1]; //echo "$audio::$filename::$extension";
getAudio($audio,$filename,$extension); }else{ $error="<b>Error 404</b> Archivo no existe para descarga"; } }else{ $error="<b>Error 403</b> Error en Tipo de Archivo"; } echo$error; function getAudio($audio,$filename,$filetype){ header('Content-Type: application/'.$filetype); header('Content-Disposition: attachment; filename="'.$filename); header('Content-Length: '.filesize($audio)); echofile_get_contents($audio,false); } ?>
En lo anterior solo habría que modificar el directorio dónde FreePBX guarda las llamadas, por default Asterisk coloca las llamadas grabadas en /var/spool/asterisk/monitor.
Espero lo anterior sirva de algo, si tienes alguna duda puedes enviarme un correo en fileinleon del correo de google.
Comentarios Recientes