viernes, 27 de julio de 2012

CDR de Asterisk a MS SQL via ODBC

Este es un pequeño resumen para instalar y configurar el driver en Linux para poder registrar las llamadas de Asterisk en la base de datos de un MS SQL


Primero vamos a instalar el los drivers para la conexion al SQL de Windows

# yum install freetds unixODBC -y

Luego de instalar el driver freetds lo agregamos a unixODBC, para ello editamos el archivo odbcinst.ini de la siguiente manera

# vim /etc/odbcinst.ini
...
[FreeTDS]
Description    = FreeTDS ODBC driver for MSSQL
Driver         = /usr/lib/libtdsodbc.so.0
Setup          = /usr/lib/libtdsS.so.1
FileUsage      = 1
...

Luego de esto configuramos el ODBC para la conexion del Asterisk a la base datos del SQL

# vim /etc/odbc.ini
...
[ODBC Data Sources]
MSSQL = MSSQL Log-Server for Asterisk


[MSSQL-asterisk2]
description         = Asterisk ODBC for MSSQL
driver              = FreeTDS
server              = 172.16.0.42
port                = 1433
database            = Central
tds_version         = 8.0
language            = us_english
...


Donde:
driver -> Es el driver freetds que se configuro en odbcinst.ini
server -> Es la direccion IP del servidor SQL
database -> La base de datos donde se almacenara los registros de las llamadas

Hacemos una prueba de conexion, para ello ejecuatmos lo siguiente:

# isql -v MSSQL-asterisk2 sa 1234567
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+


Datos:
sa -> usuario administrador de la base de datos
1234567 -> clave de sa

Listo, ahora en el archivo cdr_odbc.conf     del Asterisk configuramos de la siguiente manera

# vim cdr_odbc.conf
...
[global]
dsn=MSSQL-asterisk2
username=sa
password=1234567
loguniqueid=yes
dispositionstring=yes
table=cdr              ;"cdr" is default table name
usegmtime=no
...


Ahora en el servidor SQL debemos crear la base de datos Central con la tabla cdr, la estructura de la tabla es la siguiente

CREATE TABLE cdr (
                        [calldate]      [datetime]              NOT NULL ,
                        [clid]          [varchar] (80)          NOT NULL ,
                        [src]           [varchar] (80)          NOT NULL ,
                        [dst]           [varchar] (80)          NOT NULL ,
                        [dcontext]      [varchar] (80)          NOT NULL ,
                        [channel]       [varchar] (80)          NOT NULL ,
                        [dstchannel]    [varchar] (80)          NOT NULL ,
                        [lastapp]       [varchar] (80)          NOT NULL ,
                        [lastdata]      [varchar] (80)          NOT NULL ,
                        [duration]      [int]                   NOT NULL ,
                        [billsec]       [int]                   NOT NULL ,
                        [disposition]   [varchar] (45)          NOT NULL ,
                        [amaflags]      [int]                   NOT NULL ,
                        [accountcode]   [varchar] (20)          NOT NULL ,
                        [uniqueid]      [varchar] (150)         NOT NULL ,
                        [userfield]     [varchar] (255)         NOT NULL
                )

Listo con esto ya tendremos registrados en el SQL las llamadas de nuestra central Asterisk

viernes, 13 de julio de 2012

Lightsquid sobre SuSE

Lightsquid es una herramienta que analiza los logs del Squid y nos muestra un reporte gráfico a través de una interfaz web.

En este caso vamos a instalar dicha herramienta en SLES 11.

Descargamos el archivo del siguiente enlace:
http://downloads.sourceforge.net/project/lightsquid/lightsquid/1.8/lightsquid-1.8.tgz

Luego de descargarlo hacemos lo siguiente:

# tar xzf lightsquid-1.8.tgz
# mv lightsquid-1.8 /srv/www/htdocs/lightsquid
# cd /srv/www/htdocs/lightsquid/

Cambiamos las rutas en el archivo lightsquid.cfg

# vim lightsquid.cfg
...

$cfgpath             ="/srv/www/htdocs/lightsquid";
$tplpath             ="/srv/www/htdocs/lightsquid/tpl";
$langpath            ="/srv/www/htdocs/lightsquid/lang";
$reportpath          ="/srv/www/htdocs/lightsquid/report";
$logpath             ="/var/log/squid";
$ip2namepath         ="/srv/www/htdocs/lightsquid/ip2name";
...

Podemos revisar si nos falta algún modulo de perl ejecutando lo siguiente:

# perl /srv/www/htdocs/lightsquid/check-setup.pl

Ahora editamos el archivo default-server.conf, para esto se sobrentiendo que tenemos instalado el apache2

# vim /etc/apache2/default-server.conf
...
<Directory "/srv/www/htdocs/lightsquid">
        AddHandler cgi-script .cgi
        Options None
        AllowOverride all
         Order allow,deny
        Allow from all
</Directory>
...

Listo, ahora reiniciamos el servicio del apache2

# rcapache2 restart

Ejecutamos 

#  /usr/bin/perl /srv/www/htdocs/lightsquid/lightparser.pl

Dejamos un cron para que se ejecute periodicamente ..

# crontab -e

*/50 * * * * /usr/bin/perl /srv/www/htdocs/lightsquid/lightparser.pl

Reiniciamos el servicio del cron

# rccron restart

Ahora podemos acceder via web y vere los reportes del squid ...

http://IPdelservidor/lightsquid/

martes, 5 de junio de 2012

Asterisk VoiceMail Smarthost Gmail

Los pasos descritos fueron realizados debido a la necesidad de un amigo de querer enviar los buzones de voz a varias cuentas por cada anexo .... hasta donde recuerdo no se puede poner directamente en el voicemail.conf  si se pudiera imagino que los que lean esto me lo harán saber .. en fin ...

En el archivo voicemail.conf dejo lo siguiente:

502 => 502,,doscuentas@dominiolocal,,attach=yes|saycid=no|envelope=no|delete=no

En este caso mi pata tenia Debian y Exim para los envíos de correo ... haciendo unos ajustes a su configuración deje lo siguiente:

#vim /etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='dominiolocal'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

No explicare el proceso de configuracion del Gmail ...eso no me pidio mi pata jeje ...

Dentro del archivo /etc/aliases hacemos lo siguiente:

# vim /etc/aliases
doscuentas: cuenta1@dominiodestino.com,cuenta2@dominiodestino.com

Ejecutamos

#newaliases

Listo, con esto ya tenemos listo lo solicitado ..!!




Plugin DAM Google Ghrome

Un tiempo instale el DAM en mi PC, y mi navegador predeterminado es Google Ghrome, cada ves que quería realizar una descarga lo hacia mediante el DAM y cuando desinstale dicho programa igual seguía buscando el DAM ....

Para esto en el mismo navegador puse:

chrome://plugins/

Ahi deshabilite el DAM ...

sábado, 2 de junio de 2012

Linksys SPA3102 con Asterisk

Debido a la necesidad de poner una linea analógica a la central Asterisk vamos a configurar una troncal SIP entre un SPA3102 y la Central, tal ves no sea la mejor forma de hacerlo pero hasta el momento me funciona bien.

Para esto ya tenemos instalado Asterisk con FreePBX.

Datos:

  • IP Asterisk : 192.168.1.5
  • IP SPA3102 : 192.168.1.240
  • Numero de linea analógica 485107 
En el FreePBX nos dirigimos a la sección Trunk, Add SIP Trunk y llenamos los siguientes datos ...






















Ahora accederemos al SPA3102 para esto ya tengo configurado con la IP 192.168.1.240, ambos (Asterisk y ATA) estan en la misma red ... pondré una secuencia de imágenes que se tendrá en cuenta para la configuración ...















El numero 485107 es el que enviara al Asterisk para poder enrutar la llamada ..





















Con esto ya tenemos listo la troncal, ahora para las llamadas entrantes por ejemplo ... dentro de FreePBX configuramos en Inbound Routes ... del siguiente modo









Lo demás se entiende que uno ya lo deriva al IVR o Anexo ...etc .. Para el caso de llamadas salientes, basta con poner el dialplan y seleccionar la troncal creada. Espero no haber omitido algún paso ...

martes, 29 de mayo de 2012

Servidor FTP con VSFTPD sobre CentOS

En esta pequeña guía se mostrara la instalación de un servidor FTP con usuarios virtuales.

La plataforma es CentOS 6.2

Datos:
IP del FTP : 172.16.0.84

El proceso sera sencillo, comenzamos instalando el programa

# yum install vsftpd -y

Editamos el archivo /etc/vsftpd/vsftpd.conf

# vi /etc/vsftpd/vsftpd.conf

background=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd-virtual
xferlog_file=/var/log/vsftpd.log
user_sub_token=$USER
local_root=/var/www/html/$USER
anon_root=/var/www/ftp
chroot_local_user=YES
hide_ids=YES
listen=YES
listen_port=21
ftp_data_port=20
pasv_min_port=65500
pasv_max_port=65535
connect_from_port_20=YES
local_umask=022
max_clients=20
max_per_ip=10
secure_chroot_dir=/usr/share/empty


Guardamos los cambios y listo ahora falta la creación de usuarios ....

Elabore un pequeño script para la creación de los usuarios ... lo llamaremos ftpadduser

# vi /usr/local/sbin/ftpadduser


#!/bin/bash
if [ -z "$1" ]; then
        echo "Ingrese el usuario ..."
        exit 1
fi
if [ -z "$2" ]; then
        echo "Ingrese la clave ..."
        exit 1
fi
echo "$1" >> /opt/virtual-users.txt
echo "$2" >> /opt/virtual-users.txt
db_load -T -t hash -f /opt/virtual-users.txt /etc/vsftpd/virtual-users.db
mkdir /var/www/html/$1
chown -R ftp:ftp /var/www/html/$1

Listo ejecutando ese script se podra crear las cuentas FTP

Ahora debemos ver el selinux, podriamos deshabilitarlo pero por temas de seguridad lo conservamos(Enforcing) y ejecutamos lo siguiente

setsebool allow_ftpd_full_access on
setsebool ftp_home_dir on

Ahora el servidor FTP ya esta operativo ... En nuestro Firewall(iptables) haremos el respectivo NAT

Dentro de nuestro script de iptables, cargaremos algunos módulos

#Definiendo variables
IPT="/sbin/iptables"
EXT_IP="IP Externa"
FTP="172.16.0.84"

# Cargando módulos 
...
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
...

#Realizando el NAT

$IPT -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to-destination $FTP
$IPT -A FORWARD -d $FTP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $FTP -p tcp --sport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Listo ... con esto ya debería estar operativo al 100% ... se entiende que falta el enmascaramiento en el script del firewall ...
 


Servidor de correo Zimbra sobre Centos 6

En mi trabajo por temas de licencia me pidieron instalar un servidor de correo bajo Linux, por temas de facilidad de administracion se escogio la version OpenSource de Zimbra.

Para esto en mi red, ya se contaba con un Active Directory y servidor DNS en el mismo equipo, escogi Cent0S 6.2 de 64 bits como plataforma para la instalacion de Zimbra, la version de Zimbra que use es 7.2

Datos:

  • IP del AD : 172.16.0.33
  • Dominio: mydominio.com
  • IP de Zimbra: 172.16.0.55
  • Hostname de Zimbra: mail.mydominio.com

Pasos iniciales:
  1. En el servidor DNS se creo el registro MX apuntando a mail.mydominio.com
  2. En el archivo hosts del Linux se puso lo siguiente:
cat /etc/hosts

127.0.0.1 localhost.localdomain localhost
172.16.0.55 mail.mydominio.com mail

Desactivamos el selinux

vi /etc/sysconfig/selinux
SELINUX=disabled

Comentamos la siguiente seccion dentro del archivo sudoers

vi /etc/sudoers
#Defaults    requiretty

Instalacion de dependencias:

yum install -y perl bind-utils sysstat nc file sudo

Luego de descomprimir el archivo tar.gz, ingresamos al directorio y ejecutamos lo siguiente:

[root@mail zcs-7.2.0_GA_2669.RHEL6_64.20120410002025]# ./install.sh --platform-override

De aqui solo queda responder las preguntas ...

Le damos Y a modificar la plataforma ...

En una seccion me sale la siguiente pregunta
Change domain name?[yes]

Esto debido a que detecta como dominio lo siguiente: mail.mydominio.com

Le respondo que si (Y) y pongo mi dominio

Change domain name?[yes] Y
mydominio.com

Listo .. el resto es terminar de responder algunas preguntas que hara .. de hecho habra que ponerle una clave para el acceso del admin ...

Luego de esto accedo:

https://mail.mydominio.com:7071/zimbraAdmin/


Cuando voy a la seccion de Mail Queues ... me sale algunos mensajes de error, las cuales las he resuelto gracias a este blog http://blog.spanger.org/?p=501

Por ahora estoy creando los usuarios tanto en el servidor de correo como en el Active Directory para la validacion. Para esto sigo los siguientes pasos:
  • Seleccionar el dominio, debajo de Domains
  • Ir a la seccion de Autenticacion
  • Configure Autenticacion
  • Escoger external active directory
  • Pongo la IP 172.16.0.33
  • En username pongo administrator@mydominio.com, ingreso la clave y ya esta ....
Luego de esto hago lo siguiente:
  • Server Settings 
  • MTA  
  • Dentro de MTA Trusted Network, dejo lo siguiente: 127.0.0.1/32 172.16.0.55/32
Por ahora lo he dejado asi ... ya estare haciendo mas ajustes y mas cosas que las ire publicando ....