Asterisk сборка chan_h323
Чтобы собрать chan_h323 (на примере redhat систем - CentOS, Fedora, дистрибутивы TrixBox, PBX-ini-a-Flash, etc) необходимо:
# yum install make gcc-c++ kernel-devel openssl-devel expat-devel gnutls-devel flex -y
Скачать Open H.323 v1.18.0, PWLib v1.10.0 в директорию /root
# wget http://www.voxgratia.org/releases/openh323-v1_18_0-src-tar.gz # wget http://www.voxgratia.org/releases/pwlib-v1_10_0-src-tar.gz
Изменить
# mv openh323-v1_18_0-src-tar.gz openh323-v1_18_0-src.tar.gz # mv pwlib-v1_10_0-src-tar.gz pwlib-v1_10_0-src.tar.gz
и распаковать там же -
# tar vfxz openh323-v1_18_0-src.tar.gz в директории /root/pwlib # tar vfxz pwlib-v1_10_0-src.tar.gz в директории /root/openh323
Далее - из инструкции README канала chan_h323:
# cd /root/pwlib # ./configure # make clean opt # cd /root/openh323 # ./configure # make clean opt
В некоторых версиях Linux отсутствуют необходимые заголовки компилятора, сборка openh323 останавливается с ошибкой
error: linux/compiler.h: No such file or directory Копируем /usr/src/kernel/2.6.18-128.1.10.el5-i686/includes/linux/compiler.h в /usr/include/linux и запускаем make clean opt снова.
Результат этих компиляций - динамические библиотеки /root/pwlib/lib/libpt_linux_x86_r.so.1.10.0 и /root/openh323/lib/libh323_linux_x86_r.so.1.18.0, которые лучше скопировать вместе с линками в директорию /lib
Скачать в директорию /usr/src соответствующие вашей текущей версии Asterisk источники, например -
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.22.2.tar.gz и распаковать там же # cd /usr/src/asterisk-1.4.22.2/ # export OPENH323DIR=/root/openh323/ # export PWLIBDIR=/root/pwlib/ # export OPENH323_LIBDIR=/lib # export PWLIB_LIBDIR=/lib # ./configure обратим внимание на строки - checking /root/openh323//../pwlib/version.h usability... yes checking /root/openh323//../pwlib/version.h presence... yes checking for /root/openh323//../pwlib/version.h... yes checking if PWLib version 1.10.0 is compatible with chan_h323... yes checking PWLib installation validity... yes checking /root/openh323//version.h usability... yes checking /root/openh323//version.h presence... yes checking for /root/openh323//version.h... yes checking if OpenH323 version 1.18.0 is compatible with chan_h323... yes checking OpenH323 build option... opt checking OpenH323 installation validity... yes # make menuselect
тут может выпрыгнуть уведомление, что у вас отсутствует пакет ncurses, поэтому menuselect не запускается. Нужно скачать:
wget ftp://ftp.pbone.net/mirror/yum.trixbox.org/centos/5/RPMS-2.6.0.7/ncurses-devel-5.6-7.20070612.i386.rpm
и установить:
rpm -ivh ncurses-devel-5.6-7.20070612.i386.rpm
затем указать на библиотеку явным образом:
nano menuselect/makeopts : NCURSES_LIB=/lib/libncurses.so.5.6
В меню можно не полениться, и выбрать в секции channels только нужный нам канал chan_h323 и убрать все остальные. То же проделать и в остальных секциях, так как нам не нужны для этой цели все остальные модули. Ну и
make Не пугайтесь, если увидите в процессе компиляции:
make[2]: Leaving directory `/usr/src/asterisk-1.4.22.2/channels/h323' *************************************************************** ********** Re-run 'make' to pick up H.323 parameters ********** *************************************************************** make[1]: *** [h323/libchanh323.a] Error 1 make[1]: Leaving directory `/usr/src/asterisk-1.4.22.2/channels' make: *** [channels] Error 2
Всё идёт как надо, просто делаем make ещё раз.
В текущей директории /usr/src/asterisk-1.4.22.2 таким образом будет собран весь Астериск, из которого нам нужно скопировать
# cp /usr/src/asterisk-1.4.22.2/channels/chan_h323.so /usr/lib/asterisk/modules/ и установить права на него # chown asterisk:asterisk /usr/lib/asterisk/modules/chan_h323.so # chmod 640 /usr/lib/asterisk/modules/chan_h323.so
и
# cp /usr/src/asterisk-1.4.22.2/main/asterisk /usr/sbin Overwrite (y/n)? yes
теперь можно подправить конфигурацию, не забыть указать права
# chown asterisk:asterisk /etc/asterisk/h323.conf
и запустить модуль
CLI>module load chan_h323.so
Увидим -
== Creating H.323 Endpoint == H.323 listener started Проверяем *CLI> show channeltypes Type Description Devicestate Indications Transfer ---------- ----------- ----------- ----------- -------- H323 The NuFone Network's Open H.323 Channel no yes no Zap Zapata Telephony Driver w/PRI no yes no Agent Call Agent Proxy Channel yes yes no Phone Standard Linux Telephony API Driver no yes no MGCP Media Gateway Control Protocol (MGCP) yes yes no Gtalk Gtalk Channel Driver no yes no Local Local Proxy Channel Driver yes yes no IAX2 Inter Asterisk eXchange Driver (Ver 2) yes yes yes SIP Session Initiation Protocol (SIP) yes yes yes