Archive

Posts Tagged ‘realtime’

asterisk 1.2 with realtime ldap driver

December 28, 2008 13 comments

I have created an auto install script based on http://www.cahilig.org/install-asterisk-12-auto-install-script-centos-4-and-centos-5 to install Asterisk 1.2 with ldap realtime driver support (modified original script to enable realtime ldap support).

This script should work almost with any(Redhat, Centos, Mandrake, Debian, Slackware) Linux distro

Before running this script you must install following packages.

For Centos, Redhat:

yum install openldap-devel gcc kernel-devel bison openssl-devel libtermcap-devel ncurses-devel

For Debian, Ubuntu:

apt-get install libldap2-dev build-essential linux-headers-`uname -r` libncurses5-dev libssl-dev

You can download the script from here, simply run the script to start installation process.

download Asterisk schema for OpenLdap here

Installer and installation process is not tested, if you find any problem please let me know.

#!/bin/sh
#Asterisk Download page
ZAPTEL="http://downloads.digium.com/pub/zaptel/releases/zaptel-1.2.9.tar.gz"
ASTERISK="http://downloads.digium.com/pub/asterisk/releases/asterisk-1.2.30.tar.gz"
ASTERISKADDONS="http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.2.9.tar.gz"
RTLDAP="http://free.oxymium.net/Asterisk/res_config_ldap.tgz"
RTLDAPPATCH="http://mustafa.pk.googlepages.com/res_config_ldap.c.patch"
CONFIGPATCH="http://mustafa.pk.googlepages.com/config.c.patch"
MAKEFILEPATCH="http://mustafa.pk.googlepages.com/resmkfile.patch"
#Asterisk Package
ZAPPACKAGE="zaptel-1.2.9.tar.gz"
ASTPACKAGE="asterisk-1.2.30.tar.gz"
ASTADDONSPACKAGE="asterisk-addons-1.2.9.tar.gz"
#Asterisk Folder
ZAPFOLDER="zaptel-1.2.9"
ASTFOLDER="asterisk-1.2.30"
ASTADDONSFOLDER="asterisk-addons-1.2.9"
REALTIMEDIRVER="res_config_ldap.tgz"
if [ -f /etc/redhat-release ] ; then
DISTRO="redhat"
elif [ -f /etc/debian_version ] ; then
DISTRO="debian"
elif [ -f /etc/SUSE-release ] ; then
DISTRO="redhat"
elif [ -f /etc/mandrake-release ] ; then
DISTRO="mandrake"
elif [ -f /etc/slackware-release ] ; then
DISTRO="slackware"
elif [ -f /etc/gentoo-release ] ; then
DISTRO="gentoo"
fi

echo "Downloading and extracting zaptel and asterisk source"
cd /usr/local/src/
if [ ! -e $ZAPPACKAGE ]; then
  wget $ZAPTEL
fi
if [ ! -e $ASTPACKAGE ]; then
  wget $ASTERISK
fi
if [ ! -e $ASTADDONSPACKAGE ]; then
  wget $ASTERISKADDONS
fi
tar -zvxf $ZAPPACKAGE
tar -zvxf $ASTPACKAGE
tar -zvxf $ASTADDONSPACKAGE 

echo "Installing zaptel"
cd $ZAPFOLDER
make clean
make
make install
cd ..

echo "Installing asterisk"
cd $ASTFOLDER
echo "Downloading patches"
wget $CONFIGPATCH
wget $MAKEFILEPATCH
patch -p0<resmkfile.patch
patch -p0<config.c.patch
echo "Downloading Realtime Ldap driver"
cd res
wget $RTLDAP
tar -zxvf $REALTIMEDIRVER
wget $RTLDAPPATCH
patch -p0<res_config_ldap.c.patch
cd ../configs
wget http://mustafa.pk.googlepages.com/extconfig.conf.sample
wget http://mustafa.pk.googlepages.com/res_ldap.conf.sample
cd ..
make clean
make
make install
make samples
cp contrib/init.d/rc.$DISTRO.asterisk /etc/init.d/asterisk
cd ..

echo "Installing asterisk-addons"
cd $ASTADDONSFOLDER
make clean
make
make install

echo "Loading ztdummy driver"
modprobe zaptel
modprobe ztdummy

echo "adding rules to /etc/rc.local"

echo "modprobe zaptel
modprobe ztdummy
" >> /etc/rc.local

echo "Downloading open source g729 codec"
cd /usr/lib/asterisk/modules/
wget http://asterisk.hosting.lv/bin12/codec_g729-ast12-gcc4-glibc-pentium4.so

echo "Running Asterisk"
/etc/init.d/asterisk start

echo "***********************************************************************"
echo "*             INSTALLATION SUCCESSFUL                                 *"
echo "***********************************************************************"
echo "* You can test if Asterisk installed successfully using               *"
echo "* asterisk -ncrvvv and start configuring your dial plan               *"
echo "***********************************************************************"
exit

Advertisements

asterisk realtime with ldap — got it working :)

November 28, 2008 4 comments

When we decided to write an asterisk module for Zivios, we went in several debates either we should keep asterisk’s configurations in plain config files or get benefit of asterisk realtime ldap driver.

if you don’t know much about Zivios’s architecture, check out Zivios Architecture page. In short Zivios keeps all of its configurations(Users/Groups/Config files) in OpenLdap as far as there is a possibility to use Ldap as config back-end.

Finally we decided to test asterisk realtime ldap driver, in first attempt everything worked fine, I was able to retrieve sip/iax peers from ldap tree,store registry updates in ldap, also created few dialplan extensions in ldap and it worked as expected. then all the hell broke loose when i added a pattern (say _5XX) in ldap and asterisk couldn’t find it in ldap, I tried to debug the realtime ldap driver, but nothing helped. lastly I decided to look into the realtime ldap driver’s C code(my C knowledge is worst), put several debug messages all over the file, recompiled and came out with the conclusion that there is something wrong with a function called *realtime_multi_ldap, posted bug report to digium with my logs (Faraz Khan posted a bounty as well, check it out), but all in vain, it felt like digium and nobody else doesn’t give a damn about realtime ldap driver, i decided to forget the realtime thing and keep configuration in plain text file, wrote some handy(helper) perl scripts to add/edit and delete configurations(users/routes/queues/ivrs). Zivios’s web interface communicates with these scripts using a special XML-RPC agent (called emsmagent) running on asterisk box. emsmagent executes these perl scripts and returns output to Zivios.

Last month browsing through digium’s bug tracker I found this *realtime_multi_ldap patch, I decided to give it a try, was not expecting it would work, but interestingly it worked and now I can use patterns in ldap exten entry and it really works :).

I have written a custom ldap schema for realtime ldap, You can also check original schema posted and contributed by suretec (guy who fixed the ldap driver) here. I will soon post a how-to on “setting up asterisk realtime ldap”. I am also going to port Zivios Asterisk module from plain text files to openldap backend soon (much busy in some other interesting projects these days :D)

let me know if you need any help in asterisk and realtime ldap driver setup.