Lunes, 22 de Diciembre, 2008 | Etiquetas: , , , ,

Bueno, estoy ahora trabajando en la automatización de mi servidor Asterisk para que trabaje en conjunto con un sistema que utiliza PostgreSQL, por ello no quiero utilizar los típicos ficheros de configuración que utiliza Asterisk, así que cambiaremos todo a una plataforma PostgreSQL, tanto CDR como configuraciones en RealTime.

Primero que nada asumiré que tienen instalado un Debian Etch 4.0 limpio y actualizado. El primero paso para optimizar el funcionamiento de nuestro Asterisk, es cambiar algunos parametros en nuestro Kernel, por lo cual lo recompilaremos, este paso es OPCIONAL.

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
cd /usr/src
 
#Descarga un source del kernel
#Yo personalmente utilice el siguiente:
 
apt-get install linux-source-2.6.24
tar xjfv linux-2.6.24
ln -s /usr/src/linux-source-2.6.24 /usr/src/linux
cd /usr/src/linux
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
make menuconfig

Ahora en la configuración seleccionaremos lo siguiente, si es que esta disponible en su versión del kernel.

Processor type and features >> [*]IRQ balancing
Processor type and features >> Timer frequency = 1000 Hz.
Processor type and features >> [*]High Resolution Timer Option
Processor type and features >> [*]HPET Timer Support
Device Drivers >> Character Devices >> [*]Enchanced Real Time Clock Support
Library Routines >> [*]CONFIG_CRC_CCITT

Compilamos y empaquetamos el kernel, para luego instalarlo.

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
dpkg -i linux-image-2.6.24-custom_2.6.24-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.24-custom_2.6.24-custom-10.00.Custom_i386.deb
reboot -t now!

Con eso ya tenemos nuestro kernel optimizado, podemos ratificar que sea el que estamos utilizando con un simple uname -a. Ahora vamos a preparar la maquina para compilar Asterisk y todas sus posibles dependencias.

apt-get install build-essential libcurl3-dev libvorbis-dev libspeex-dev unixodbc unixodbc-dev libiksemel-dev
apt-get install flex xsltproc odbc-postgresql libusb-dev libnewt-dev libxml2-dev bison
apt-get install linux-headers-`uname -r` g++ libncurses5-dev libnewt-dev libusb-dev subversion git-core
apt-get install postgresql-8.3 postgresql-contrib-8.3 postgresql-client-8.3 postgresql-server-dev-8.3

Preparamos los sources para Asterisk, como trabajaremos con la ultima versión de 1.6 bajaremos todo por SVN, no utilizaremos Zaptel, en su lugar la nueva y renombrada version DAHDI y tambien agregaremos mISDN para troncales ISDN

cd /usr/src
mkdir asterisk
cd asterisk
svn co http://svn.digium.com/svn/asterisk/trunk asterisk
svn co http://svn.digium.com/svn/asterisk-addons/trunk asterisk-addons
svn co http://svn.digium.com/svn/dahdi/linux/trunk dahdi-linux
svn co http://svn.digium.com/svn/dahdi/tools/trunk dahdi-tools
svn co http://svn.digium.com/svn/libpri/branches/1.4 libpri
git-clone git://git.misdn.org/git/mISDN.git/
git-clone git://git.misdn.org/git/mISDNuser.git/

Ahora partimos por compilar el modulo de DAHDI que es quien controlara los dispositivos Digium y similares.

cd /usr/src/asterisk/dahdi-linux
make
make install
 
#Y ahora los DAHDI-Tools
 
cd /usr/src/asterisk/dahdi-tools
./configure
make menuselect #Aqui seleccionamos todos los modulos precentes.
make
make install
make config

Ahora para optimizar el tiempo de boot y los modulos que se cargan, vamos a ir a /etc/dahdi/modules y comentaremos todos los modulos a exepcion del utilizado para el modelo de nuestra tarjeta, yo tengo una TDM400P, así que solo dejare des comentado el modulo wctdm

Ahora vamos por la libpri.

cd /usr/src/asterisk/libpri
make && make install

Ahora solo para quienes lo necesitan mISDN es para lineas troncales en tarjetas ISDN, si no utilizas estas tarjetas puedes omitir este paso.

cd /usr/src/asterisk/mISDN
make
make install
cd /usr/src/asterisk/mISDNuser
make && make install
mISDN scan     #Escaneamos en busca de dispositivos
mISDN config   #Configuramos
mISDN start    #Iniciamos el demonio
misdnportinfo  #Para revisar de que todo esta OK
/usr/sbin/update-rc.d mISDN defaults 15 30

Y ahora si compilamos e Instalamos Asterisk.

cd /usr/src/asterisk/asterisk
./configure
make menuconfig     #Aqui seleccionamos los paquetes de Audio que queremos utilizar.
make
make install
make samples
make config
asterisk -vvvc
#Ctrl+C para salir

Hasta ahí ya tenemos un asterisk 1.6 comun y corriente funcionando sin problemas, ahora viene la parte interesante, configurarlo para que tome todas sus configuraciones desde una base de datos PostgreSQL en tiempo real, y además almacene ahí los VoiceMail y los CDR.

Primero que nada tienen que descargar la base de datos que utilizaremos, ya que la que viene incluida en asterisk le faltan algunas tablas y no funciona bien, aquí les dejo la misma pero con las tablas faltantes “Base de Datos“, asi que la descargamos en /usr/src/asterisk y ahora si vamos manos a la obra.

su - postgres
createuser -s -D -R -l -P -e asterisk
createdb -O asterisk -e asteriskDB
psql -U asterisk -h localhost -d asteriskDB < /usr/src/realtime_pgsql.sql

Ahora preparamos la coneccion, editando el fichero de conecciones de postgres

echo "local     asteriskDB     asterisk     md5" >> /etc/postgresql/8.3/main/pg_hba.conf

Y preparamos los ficheros de configuracion de Asterisk para conectarse a la base de datos, son 2 los que nos interesan, uno de la configuracion de tiempo real y el otro del CDR; asi que vamos por el CDR

nano /etc/asterisk/cdr_pgsql.conf

Y lo dejamos asi:

[global]

hostname=localhost
port=5432
dbname=asteriskDB
password=password
user=asterisk
table=cdr

Y ahora la configuracion en tiempo real:

nano /etc/asterisk/extconfig.conf

Y lo dejamos asi:

[settings]

extensions => pgsql,asteriskDB,extensions_conf
sipuser => pgsql,asteriskDB,sip_conf
sippeers => pgsql,asteriskDB,sip_conf
sipregs => pgsql,asteriskDB,sip_conf
voicemail => pgsql,asteriskDB,voicemail_users
queues => pgsql,asteriskDB,queue_table
queue_members => pgsql,asteriskDB,queue_member_table

nano /etc/asterisk/res_pgsql.conf

Y lo dejamos asi:

[general]
dbhost=127.0.0.1
dbport=5432
dbname=asteriskDB
dbuser=asterisk
dbpass=password
requirements=warn

Y listo, ahora reiniciamos Asterisk con un simple

/etc/init.d/asterisk restart

Y luego nos conectamos a nuestro asterisk para revisar que todo este OK

asterisk -r

Y Felicitaciones, ya tienes tu Asterisk trabajando con PostgreSQL

1 comentario (321 visitas)
Miércoles, 27 de Agosto, 2008 | Etiquetas: , , ,

Para los que no lo conocen, Vyatta es una suit utilizada generalmente en forma de appliance… En terminos simples es un Debian modificado para hacer todas las tareas de un router profecional. No solo trabajando con protocolos enrutados como es usual ver un mini-router casero, si no tambien con soporte para protocolos de enrutamiento, VPN, QoS, Firewall, etc… En fin, bastante interesante pero proyecto bastante manoceado por muchos… lo que si me llamo la atencion fue cuando quise revisar el codigo y ver como funcionaba esta maravilla, me lleve una muy grata sorpresa. Corre con Live-Helpers! mi proyecto Debian preferido… asi que bueno, ahora manos a la obra, hay mucho q’ picar para ver como funciona este sistemita, y a penas tenga noticias al respecto les voy contando. Aqui tambien por lo demas, les dejo el manual Paso a Paso (Copy&Paste Mode ON ):

VC4 (Glendale) ISO Build Procedures

This document describes how to build a Vyatta VC4 (Glendale) ISO image. The most recent version of this document is the top-level README file of the “glendale” branch of the “build-iso” source tree.

Prerequisites

The Vyatta ISO build uses the “live-helper” tool that is available in several distributions. However, we recommend build hosts based on either Debian “lenny” or Ubuntu “hardy”. The “build-iso” source is maintained as a GIT super-module that references several submodules that each build one or more self named Debian packages. The submodule feature was added to GIT v1.5.2.

Build Host Setup

To set up a build environment (e.g., system or VM), we recommend installing Debian “lenny” (i.e. “testing”) with either business-card or net-install image,


http://cdimage.debian.org/cdimage/daily-builds/
daily/arch-latest/i386/is...
http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/is...

The respective installation prompts for distribution mirror. To include Vyatta’s Debian miror, add this to /etc/apt/sources.list,


deb http://packages.vyatta.com/debian/ lenny main
deb http://packages.vyatta.com/debian-security/
lenny/updates main

You also need to add the Vyatta buildtools repository to sources.list,

deb http://packages.vyatta.com/vyatta-dev/ buildtools main

To install the Vyatta repository GPG key,

$ wget -O vyatta-pubkey.gpg
http://packages.vyatta.com/vyatta-dev/vyatta-pubkey.gpg
$ sudo apt-key add vyatta-pubkey.gpg

To build an ISO with all pre-built, binary packages, we’ll need to install some tools on the build host. Before doing that, however, we’ll have to tell apt-get to use older versions of some tools because the latest versions are incompatible with the current livecd build system. Add the following lines to the build host’s /etc/apt/preferences file:

Package: fakechroot
Pin: version 2.5*
Pin-Priority: 1001


Package: live-helper
Pin: version 1.0~a37-2
Pin-Priority: 1001

Next, install these tools on the build host using apt-get:

automake autoconf bzip2 curl debhelper devscripts dpatch fakeroot fakechroot genisoimage git-core sysv-rc-conf live-helper lsb-release rsync sudo

To build submodules, each package should list all build dependencies. However, to save some iteration, install these packages using apt-get:

bison flex docbook-utils gcc g++ git-buildpackage groff gs
gs-gpl imagemagick libncurses5-dev libpam0g-dev
libpcap0.8-dev libreadline-dev libsablot0-dev libtool lintian
manpages-dev tetex-bin texi2html texinfo transfig xmlto
zlib1g-dev libatm1-dev libdb-dev linuxdoc-tools git2cl
kernel-package lynx libcap-dev

Getting Source

The Vyatta ISO builder consists of scripts and config files maintained as a GIT super-module named, “build-iso” that references several submodules within its “pkgs/” sub-directory. To clone the super-module,

$ git-clone http://git.vyatta.com/build-iso.git

To create and checkout a working glendale branch,

$ cd build-iso
build-iso$ git branch --track glendale origin/glendale
build-iso$ git checkout glendale

If you don’t want to build any submodules and just want to build an ISO with all pre-built packages, you can skip the following submodule instructions and go to the next section “Configuration”.

To register the submodules in the cloned repository config,

build-iso$ git-submodule init

It’s most efficient to selectively clone only the submodules needing for review or modifcation. The ISO build downloads the Vyatta pre-built, binary packages of any non-cloned sub-module. To clone a specific sub-module,

build-iso$ git-submodule update pkgs/SUBMODULE

This command clones the SUBMODULE repository in the “pkgs/SUBMODULE” directory, and you need to create and checkout a glendale tracking branch,

build-iso$ cd pkgs/SUBMODULE
build-iso/pkgs/SUBMODULE$ git branch --track glendale origin/glendale
build-iso/pkgs/SUBMODULE$ git checkout glendale

To clone all sub-modules for full verification build,

build-iso$ git-submodule update

Remember to create and checkout a glendale tracking branch for each updated submodule.

Configuration

The Vyatta ISO builder has GNU autotool configuration,

build-iso$ autoreconf -i
build-iso$ ./configure

To see all configure options,

build-iso$ ./configure --help

Build ISO

To build an ISO,

build-iso$ PATH=/sbin:/usr/sbin:$PATH
build-iso$ make

The end results is the following livecd,

livecd/binary.iso

Clean

The Vyatta ISO builder has these standard automake targets to
clean files generated:

mostlyclean during ISO build (excludes package built files) clean during package builds along with ISO files distclean by autoreconf and configure plus all of the above

For example, to clean the ISO build files,

build-iso$ make mostlyclean

Build submodules

When you do a “make”, the build system will build the binary packages for all cloned submodules and include them in the ISO. If you want to work with specific submodules, you can use the commands listed below.

To build binary packages for cloned submodule(s),

build-iso$ tools/submod-mk { --all | SUBMODULE... }

To build binary and source packages for submodule(s),

build-iso$ tools/submod-mk --source { --all | SUBMODULE... }

To build signed binary and source packages for submodule(s),

build-iso$ tools/submod-mk --signed-source { --all | SUBMODULE... }

To clean files generated during submodule build,

build-iso$ tools/submod-clean SUBMODULE...

To clean files generated during all submodule builds,

build-iso# tools/submod-clean

To also clean the submodule build stage(s),

build-iso# tools/submod-clean -d [ SUBMODULE... ]

To clean the source tree of submodules to skip subsequent builds,

build-iso# tools/submod-clean -g [ SUBMODULE... ]

This retains the local bare git repository for quicker updates.

Changes

After making, testing, and commiting your changes to your local repos, publish them to the shared repos with,

build-iso/pkgs/SUBMODULE$ git-push suva.vyatta.com:/git/SUBMODULE.git

Then update and publish the super-module index to include the submodule(s) changes,

build-iso/pkgs/SUBMODULE$ cd ../..
build-iso$ git-update-index pkgs/SUBMODULE
build-iso$ git-commit -m 'update sub-module SUBMODULE'
build-iso$ git-push suva:/git/build-iso.git

Updates

Update the super-module with,

build-iso$ git-pull
or for the paranoid,
build-iso$ git-fetch origin
build-iso$ git-whatchanged HEAD..origin/glendale
build-iso$ git-merge origin/glendale

If new submodules were added, include these in the config,

build-iso$ git-submodule init

To see which checked-out submodules have upstream modifications,

build-iso$ git-status # search for changes in pkgs/

Get the “from” and “to” SHAs with,

build-iso$ git-diff pkgs/SUBMODULE

This will produce output something like,

diff --git a/pkgs/vyatta-cfg-quagga b/pkgs/vyatta-cfg-quagga
index 78124a9..fca1739 160000
--- a/pkgs/vyatta-cfg-quagga
+++ b/pkgs/vyatta-cfg-quagga
@@ -1 +1 @@
-Subproject commit 78124a9754efe0bda1d9c827c593c5e0635fec3c
+Subproject commit fca1739f1985c2ba8d6316b1882365f5e26245cd

To review what changed between these SHAs,

build-iso$ git --git-dir=pkgs/SUBMODULE/.git fetch
build-iso$ git --git-dir=pkgs/SUBMODULE/.git whatchanged FROM_SHA TO_SHA

To merge these submodule changes,

build-iso$ cd pkgs/SUBMODULE
build-iso/pkgs/SUBMODULE$ git checkout glendale
build-iso/pkgs/SUBMODULE$ git merge origin/glendale
build-iso/pkgs/SUBMODULE$ debuild -i -b -us -uc
build-iso/pkgs/SUBMODULE$ cd ../..

The “git-status” for pkgs/SUBMODULE should now be clean. Iterate through the other updated submodules, then rebuild the iso.

0 comentarios (222 visitas)
Viernes, 25 de Julio, 2008 | Etiquetas: , ,

Un sysadmin saca el nuevo servidor para el sitio web de su caja, instala sistema operativo, realiza parches de seguridad, revisa que la electricidad y el aire acondicionado funcionen perfectamente en la sala de servidores, monitorea la maquina para verificar su estabilidad, configura el software, realiza backup’s por si algo llega a salir mal, todo para servir este sitio web.

Un sysadmin instala los routers, tira el cableado estructurado, configura la red, prepara los firewalls y guía el trafico de la red por cada uno de los saltos, atravesando cobre, fibra e incluso el aire para llevar internet a tu computador, todo para estar seguros de que esta pagina web sea visible por tu computador.

Un sysadmin se asegura que tu conexión de red es segura, abierta y funcionando, Un sysadmin se asegura que tu computador funcione de una sana manera en una red segura, Un sysadmin toma respaldos de toda la información para cuando rompas algo, no pierdas nada, se asegura de que las gateways estén seguras para evitar la intromisión de crackers y otro tipo de plasta informática, y sin importar cuantos miles de copias se envíen a la impresora desde el departamento de contabilidad, esta sigue imprimiendo sin problemas.

Un sysadmin se preocupa del spam, virus, spyware y codigos dañinos, pero tambien de los cores de luz, de los incendios y de las inundaciones.

Cuando el servidor de correos se cae a las 2 AM del domingo, Tu sysadmin mas cercano se levantara e ira a trabajar!

Un sysadmin es un profesional, quien planea, se preocupa, hackea, repara, parcha, soluciona, protege y crea exelentes redes de computadores, todo para llevar la data a ti y ayudarte a cumplir tu trabajo – para llevar el potencial de los computadores aun mas seca de la realidad.

Así que si puedes leer esto, GRACIAS SYSADMIN — y siempre ten en cuenta que el o ella hacen posible de que el trabajo llegue a nuestras casillas de correo desde el otro lado del mundo, de que tengamos mensajería instantánea, de las llamadas telefónicas gratuitas a nuestros amigos en Australia, DE ESTA PAGINA WEB!

Demuestrales tu Aprecio

Viernes, 25 de Julio del 2008 ( o el Ultimo Viernes de Julio ), System Adminitrator Apprecioation Day. En este dia internacional tan especia, dale a tu Administrador de sistemas algo que le demuestre cuanto realmente lo aprecias por su duro trabajo y dedicacion.

Porque enfrentemos lo, los Administradores de Sistema no tienen respeto por los 365 días del año. Este es el día donde todos los Administradores de Sistemas alrededor del mundo, serán mimados con Lujosos autos deportivos, montañas de dinero ( en efectivo por favor ), en demostración de todo lo que apreciamos su diligente labor y trabajo duro. Ahora en serio, solo pedimos un pequeño simbólico regalo o un simple agradecimiento publico, sabemos que puedes hacerlo.

P.D.: Feliz Dia para MI, Feliz dia jill-9!  Y feliz Dia a todos los Administradores de Sistema! :D

0 comentarios (85 visitas)
Jueves, 3 de Julio, 2008 | Etiquetas: , , ,

Y termino, luego de largas horas sobre un BUS termina la ExpoTalca 2008, proyecto que ideo la escuela de Informatica de la Universidad Santo Tomas de Talca. Un aplauso para ello, en la organizacion realmente se pasaron.. un 7, y evidentemente un especial agradecimiento a debianmandoneao por invitarnos…

0 comentarios (144 visitas)
Martes, 11 de Marzo, 2008 | Etiquetas: , ,

Resulta que ultimamente varias personas me alegan que el tutorial que esta por ahi para configurar broadcom no funciona… Bueno, resulta que hay actualizaciones del chip BCM, y evidentemente un cambio en el firmware, por ende logran poner los drivers, compilar y montar el modulo sin problemas, pero a la hora de levantar la interfaz no pasa nada. :S

Me puse a buscar por ahi, y encontre la pagina del BCM43xx Project ahi pueden encontrar mucha info con respecto a los diversos rev. de los chip’s aqui de pasaita les dejo la tabla de versiones de los chips segun modelo de laptop.

Chip ID Bus Type Status
4303 PCI/Cardbus Supported
4306 PCI/Cardbus Supported
4309 PCI/Cardbus Unstable (802.11a unsupported, work in progress)
4311 PCI-E Supported for kernel 2.6.20.6 and later
4312 PCI-E 802.11b/g supported for kernel 2.6.20 and later (802.11a unsupported, work in progress)
4318 PCI/Cardbus Unstable (transmission power issues, work in progress)
4319 PCI/Cardbus Unstable (transmission power issues, 802.11a unsupported,work in progress)
43XG PCI/Cardbus Supported
Unknown USB Unsupported (work in progress)
Unknown CompactFlash Unsupported (work in progress)
Vendor Product Chip ID Product ID Subsystem Vendor ID Subsystem Product ID
Dell TrueMobile 1180 Mini-PCI Card 4303 0×4301 0×1028 0×0407
HP Compaq NX9110 802.11b Mini-PCI card 0×103c 0×12f3
Asus WL-103b PC Card 0×1043 0×0120
Linksys WMP11 rev2.7 0×1737 0×4301
Dell TrueMobile 1370 Mini-PCI Card 4318 0×4318 0×1028 0×0005
Compaq Compaq Presario V2417LA Notebook PC 4156 4950
Compaq v2000z Mini-PCI Card 0×103c 0×1355
HP Compaq nx6110 PY511EA laptop 0×1356
nx6125 laptop
Presario R4225CA Laptop ? ?
Asus Z9200K Laptop
A6Q00K Laptop
0×1043 0×120f
Apple Airport Extreme 2 Card 0×106b 0×4318
AMBITG T60H906.00 0×1468 0×0311
Acer Aspire 3002LCi LaptopAspire 3003LCi LaptopAspire 3003WLMi LaptopAspire 3023WLMi LaptopAspire 3613WLMi LaptopFerrari 3400 laptopFerrari 4000 laptop 0×0312
Aspire 5021WLMi Laptop 0×0311
U.S.Robotics Wireless MAXg PC Card 0×16ec 0×0119
Belkin F5D7000 PCI Card 0×1799 0×7000
HP Pavilion zv6000 0×103c 0×1355
Fujitsu-Siemens Amilo A1650 LaptopAmilo A1655 Laptop 0×17f9 0×0006
Siemens Gigaset PC Card 4306 0×4320 0×02fa 0×3010
Dell TrueMobile 1300 Mini-PCI Card 0×1028 0×0001
TrueMobile 1300 PCMCIA Card 0×0002
TrueMobile 1350 Mini-PCI Card 0×0003
HP nx9105 Laptop 0×103c 0×12f4
zd7000
zd8000 Laptop 0×12f8
Compaq Presario R3xxx PCI on board 0×12fa
Asus WL-100G PC Card 0×1043 0×100f
M6R, A2S on board 0×120f
Motorola WN825G PC Card 0×1057 0×7025
Apple Airport Extreme Mini-PCI Card 0×106b 0×004e
Fujitsu-Siemens Lifebook N3010 Laptop 0×10cf 0×1204
Buffalo WLI-PCI-G54 0×1154 0×0325
Askey Computer Corp. 54g MaxPerformance 802.11g (Rev 03) Mini-PCI Card 0×144f 0×7050
TRENDnet TEW-401PC 0×14e4 0×0417
Linksys WMP54G PCI Card 0×0013
0×185f 0×1220
WMP54GS PC Card 0×1737 0×0015
WMP54G PC Card 0×4320
WPC54G (ver.1.2) PC Card
Belkin F5D7001 PCI Card 0×1799 0×7001
F5D7010 PC Card 0×7010
F5D7011 PC Card 0×7011
Gateway 7426GX Laptop 0×161f 0×2032
eMachines Notebook M5313 0×144f 0×7050
Notebook M5405 0×17f9 0×0002
Notebook M6811 (likely identical for all M68xx) 0×14e4 0×0418
Dell TrueMobile 1400 Mini-PCI Card 4309 0×4324 0×1028 0×0001
Wireless 1450 (802.11a/b/g) Dual-Band WLAN miniPCI Card 0×0003
Microsoft MN-720 PC Card 43XG 0×4325 0×1414 0×0003
MN-730 PCI Card 0×0004
Dell Dell Wireless 1390 WLAN Mini-PCI Card (rev 01) 4311 0×4311 0×14e4 0×4311
HP ze4805us Broadcom Corporation BCM4306 802.11b/g 4306 0×4320 0e11 00e7
0 comentarios (173 visitas)
Pagina 1 de 212»