Buenos días por la mañana. Ayer me encontre con una aplicación muy útil que todos nos creemos que Asterisk la trae “de serie” pero no es asi. Se trata de ejecutar un script y guardar el resultado en una variable para ser usada en el dialplan. Recordemos que tenemos la aplicacion system, para ejecutar comandos/scripts en el servidor, pero a veces se nos queda corta. Veamos como se utiliza el Backticks.
Julio 29, 2008
Mayo 20, 2008
Estresando la Fonera con Asterisk
¿Y pa que quiero yo meter Asterisk en la Fonera? Seguramente para nada, pero hoy veremos cuantas llamadas simultaneas puede manejar una Fonera. Recordemos que la Fonera tiene un hardware superchungo con un micro con asquitectura MIPS a 200MHz ¡¡SE ADMITEN APUESTAS!!
Mayo 15, 2008
Juankeando la Fonera
omo muchos sabreis, existe una cosa llamada “comunidad fon” que consiste basicamente en “comparte tu ADSL y conectate al ADSL de los demás” una gran comunidad Wifi. Para pertener a ella te hace falta La Fonera. Hoy veremos como hackear la Fonera, para usarla libremente, instalarle un interfaz web de administracion, aircrack y Asterisk 1.4 (más…)
Noviembre 29, 2007
Recibir un fax desde Asterisk … sin tener un fax
Hoy veremos como recibir un fax en nuestro correo electrónico, sin tener un fax físico y usando nuestro querido Asterisk. Hay otras webs que explican como hacerlo, pero estas instrucciones son para los muy “cortitos”
Usaremos un par de herramientas nuevas y todas en software libre.
Primero instalamos los siguientes paquetes:
aptitude install Hylafax IAXModem postfix
Editamos /etc/asterisk/iax.conf y configuramos la extension IAX que recibirá los faxes:
[300]
username=300
type=friend
secret=300
qualify=yes
notransfer=yes
host=dynamic
context=from-internal
callerid=”Fax” <300>
disallow=all
allow=slinear
En /etc/asterisk/zapata.conf descomentamos la línea:
faxdetect=incoming
Metemos la siguiente entrada en el dialplan /etc/asterisk/extensions.conf:
exten => 300,1,Answer()
exten => 300,n,Dial(IAX2/300)
Cremos el archivo /etc/iaxmodem/ttyIAX y lo configuramos con:
device /dev/ttyIAX
port 45699
refresh 300
server localhost
peername 300
secret 300
cidname Fax
cidnumber 300
codec slinear
Probamos que se conecta con:
iaxmodem ttyIAX
y en la consola de asterisk:
CLI> iax2 show peers
Si todo chuta lo añadimos en /etc/inittab para que el modem este disponible todo el tiempo:
iax:2345:respawn:/usr/bin/iaxmodem ttyIAX &> /var/log/asterisk/iaxmodem-ttyIAX
Y ejecutamos:
init q
Copiamos:
cp /usr/share/doc/iaxmodem/examples/config.ttyIAX /var/spool/hylafax/etc
Editamos /var/spool/hylafax/etc/config.ttyIAX :
ountryCode: 593
AreaCode: 5
FAXNumber: +593-5-262-2621
LongDistancePrefix: 0
InternationalPrefix: 00
DialStringRules: etc/dialrules
ServerTracing: 0xFFF
SessionTracing: 0xFFF
RecvFileMode: 0664
LogFileMode: 0664
DeviceMode: 0666
RingsBeforeAnswer: 1
SpeakerVolume: off
GettyArgs: “-h %l dx_%s”
LocalIdentifier: “MI EMPRESA”
TagLineFont: etc/lutRS18.pcf
TagLineFormat: “De %%l|%c|Pag %%P de %%T”
MaxRecvPages: 150
Nuevamente para que se ejecute al inicio, en /etc/inittab :
fax:2345:respawn:/usr/sbin/faxgetty ttyIAX
Y otra ves:
init q
Añadimos en /var/spool/hylafax/etc/FaxDispatch :
SENDTO=FaxMaster;
FILETYPE=pdf;
case “$DEVICE” in
ttyIAX) SENDTO=usuario@midominio.com;;
esac
Para evitar problemas:
touch /etc/hylafax/*
y reiniciamos:
/etc/init.d/hylafax restart
Y ya está, cuando la extension 300 reciba un fax, este llegará a la cuenta de correo que hemos configurado en /var/spool/hylafax/etc/FaxDispatch
En el próximo documento explicaré como enviar un fax … sin tener un fax.
Puto Psicopata
Noviembre 20, 2007
Trunks en Asterisk (SIP e IAX2)
Y para qué quiero yo un Asterisk en mi casa? Puede haber miles de respuestas posibles. Hay quien usa su Asterisk y cacharritos X11 para domotizar su casa, pero el caso que nos ocupa es más simple “quiero llamar lo más barato posible”.
Imaginemos el siguiente caso:
1- Hemos conocido a una chavala en un chat, que resulta ser de EEUU y como allí son muy modernos, usa un proveedor SIP. Las llamadas dentro de ese proveedor SIP son gratuitas además de las llamadas locales, supongamos Utah.
2- Tenemos a un colega que esta de Erasmus y tiene una extension IAX2.
3- En el curro somos muy modernos y tenemos cada uno una extension SIP. Suponemos además que los administradores de red son coleguitas y no nos ponen muchos problemas.
4- Quiero llamar a mis familiares y amigos por la red convencional (PSTN) y ya tengo perfectamente configurada mi tarjeta FXS/FXO.
Lo que resumidamente he tratado de plasmar en el siguiente esquema:

Lo primero será registrarnos en el proveedor de VoIP SIP de Utah y en el IAX2 del colega de Erasmus. Configuramos primero el trunk SIP:
Editamos /etc/asterisk/sip.conf
[sip.utah]
type=friend
context=outgoing
disallow=all
allow=alaw
dtmfmode=rfc2833
host=sip.utah.com ; aqui el servidor de Utah
insecure=very
username=12345 ; la extension/usuario que nos han dado
secret=12345 ; la clave
canreinvite=no
“Entiendo” que las extensiones del servidor de Utah son de 5 cifras y las de la PSTN de Utah son de 9 cifras comenzando por 556, asi que en /etc/asterisk/extension.conf
[outgoing]
…
exten => _XXXXX,1,Dial(SIP/sip.utah/${EXTEN})
exten => _556XXXXXX,1,Dial(SIP/sip.utah/${EXTEN})
Asi de facil. Ahora vamos a /etc/asterisk/iax.conf
[iax.trunk]
host => iax.proxy.com ; el proxy IAX
type=friend
context=outgoing
user=123456 ; extension/usuario IAX
secret=123456 ; clave
host=dynamic
auth=plaintext
“Entiendo” que las extensiones son de 6 cifras, asi que en /etc/asterisk/extensions.conf
[outgoing]
…
exten => _XXXXXX,1,Dial(IAX2/iax.trunk/${EXTEN})
No puede ser mas fácil. “Entiendo” que la extension del curro es SIP de 4 cifras y queremos llamar a extensiones internas y a clientes, jefes, responsables de área, responsables de ejecución, jefe de departamentos, responsables coordinadores de departamentos, coordinador de departamento, responsables de documentacion de coordinadores de departamentos o cualquier otro que tenga teléfono de empresa. La configuración de /etc/asterisk/sip.conf será similar a la anterior y en /etc/asterisk/extension.conf
[outgoing]
…
exten => _XXXX,1,Dial(SIP/curro.trunk/${EXTEN})
exten => _0XXXXXXXXX,1,Dial(SIP/curro.trunk/${EXTEN:1})
Ahora configuramos nuestra salida analógica. En /etc/asterisk/extension.conf
[outgoing]
…
exten => _.,1,Dial(ZAP/g1/${EXTEN})
Y ya está. Asi que para llamar a:
- La amiguita de Utah: marcamos su extensión (5 cifras)
- El colega de Erasmus: marcamos su extensión (6 cifras)
- Al responsable de área: marmamos su extensión (4 cifras)
- Al tito Juan (llamada local): marmamos su número (9 cifras)
- Al móvil de “la otra amiguita”: marcamos su número (9 cifras)
- Al móvil de empresa de un responsable de ejecución: 0 + su número.
- A la iglesia mormona de Utah para preguntar si nos podemos casar con “amiguita”: 556 …
Fácil, fácil, fácil. Se podría complicar un poco la cosa, si el número de cifras coincide en alguno de los casos, pero lo solucionamos rápidamente poniendo un prefijo, como en el caso 6
La gracia del tema es que, normalmente los proveedores de telefonía IP dejan que las llamadas locales y a las extensiones de ese proveedor, sean gratuitas. En España esto no esta muy extendido, pero si en el resto del mundo civilizado. Con un poco de paciencia podriamos darnos de alta en proveedores de VoIP a cascoporro y así llamar gratis a casi todas partes del mundo.
Puto Psicópata
Octubre 5, 2007
Instalación de Asterisk con interfaz web
Muy buenos días,
me estreno en el blog publicando un “how to” de lo más sencillito para la instalación de la última version de Asterisk y el interfaz web de Digium, para que os monteis vuestro propio servidor en casita. Si quereis integrarlo con vuestra linea telefónica, necesitareis una tarjeta o un adaptador FXS.
“Entendemos” (jejeje) que ya tenemos instalado el sistema base (debian) en nuestro equipo. Si disponemos de una tarjeta PC-FXS es el momento de pincharla.
Empezamos instalando algunos paquetes necesarios:
aptitude install vim less ssh bison zlibc flex libncurses5-dev zlib1g-dev libssl-dev libnewt-dev libiksemel1-dev make gcc g++ libstdc++6 subversion
y por supuesto las fuentes de nuestro kernel, que las buscaremos con:
aptitude search `uname -r` | grep headers
Si tenemos una tarjeta pinchada nos aseguramos de que el sistema la reconoce, usando:
lspci (del paquete pciutils)
Empezamos descargando las fuentes necesarias:
mkdir /usr/src/asterisk
cd /usr/src/asterisk
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
Descomprimimos e instalamos cada paquete:
tar -xvzf libpri-1.4.1.tar.gz
cd libpri-1.4.1
make
make install
cd ..
tar -xvzf zaptel-1.4.5.1.tar.gz
cd zaptel-1.4.5.1
- editamos zconfig.h y buscamos la linea:
#define DEFAULT_TONE_ZONE 0
la cambiamos a (porque estamo en España):
#define DEFAULT_TONE_ZONE 6
make
make
make isntall
make config
cd ..
tar -xvzf asterisk-1.4.12.tar.gz
cd asterisk-1.4.12
./configure
make
make install
make samples
make config
cd ..
tar -xvzf asterisk-addons-1.4.3.tar.gz
cd asterisk-addons-1.4.3.tar.gz
make
make
make install
make samples
Con esto ya tenemos el asterisk instalado y configurado para que se arranque con el sistema. Ahora instalamos el interfaz web:
Modificamos los siguientes parametros:
- /etc/asterisk/http.conf
enabled = yes
enabledstatic = yes
bindaddr = 0.0.0.0 - /etc/asterisk/manager.conf
enabled = yes
webenabled = yes
[admin]
secret = mypass
read = system,call,log,verbose,command,agent,config
write = system,call,log,verbose,command,agent,config
svn checkout http://svn.digium.com/svn/asterisk-gui/trunk asterisk-gui
cd asterisk-gui
./configure
make
make install
make samples
Comprobamos con:
make checkconfig
Si todo esta OK! ejecutamos asterisk:
/etc/init.d/asterisk start
Y ya esta!! Así de facil. Ahora abrimos un navegador y vamos a:
http://ip_del_servidor:8088/asterisk/static/config/setup/install.html
La clave que pide es la que metemos en el /etc/asterisk/manager.conf
En proximas actualizaciones, veremos como se integra con un TTS (tetx to speech), configurar extensiones chungas y más cosas chungas chungas.
Puto Psicopata