PDA

View Full Version : مقاله: کامپایل asterisk به همراه openh323



raravaice
سه شنبه 10 فروردین 1389, 16:07 عصر
موضوع : کامپایل asterisk به همراه openh323

مقدمه : برای استفاده از پروتکل H323 در asterisk به دو روش میتوان عمل کرد. روش اول نصب ooh323 که میتوانید آن را از طریق نصب add-one مربوط به نسخه asterisk نصب کنید و روش دوم نصب openh323 .
روش اول دارای معایب و باگهای زیادی است که حتی خود نرم افزار asterisk به شما اعلام میکند که این نسخه stable نیست ولی در روش دوم میتوانید از صحت عملکرد این پروتکل اطمینان حاصل کنید.
از آنجا که نصب openh323 به همراه asterisk دارای ریزه کاری هایی میباشد برآن شدم که این داکیومنت را جمع آوری کنم تا دوستان فارسی زبان به صورت کامل،راحت و بدون مشکل بتوانند از آن بهره ببرند.


پیش نیازها :
1.در صورتی که در حال حاضر asterisk بر روی سیستم نصب میباشد ابتدا آن را remove کنید.
2.نصب پکیجهای مورد نیاز برای کامپایل سورس


مرحله اول - نصب پکیج pwlib مورد نیاز برای کامپایل openh323 :

ابتدا بسته مورد نیاز را Download میکنیم.



mkdir /usr/src/openh323
cd /usr/src/openh323
wget http://downloads.sourceforge.net/openh323/pwlib-v1_10_3-src-tar.gz
2.حال بسته را از حالت فشرده خارج و اقدام به کامپایل آن میکنیم.



tar zxvf pwlib-v1_10_3-src-tar.gz
cd pwlib_v1_10_3/
./configure
make
3. مسیر فایلهای کامپایل شده را export میکنیم.دقت کنید که انجام این مرحله برای نصب openh323 در مرحله بعدی مورد نیاز است.



export PWLIBDIR=/usr/src/openh323/pwlib_v1_10_3
4. حال shared library ایجاد شده را به folder مربوط انتقال میدهیم.
برای سیستمهای 32 بیتی


cp $PWLIBDIR/lib/libpt_linux_x86_r.so.1.10.3 /usr/lib
برای سیستمهای 64 بیتی



cp $PWLIBDIR/lib/libpt_linux_x86_64_r.so.1.10.3 /usr/lib64
مرحله دوم - نصب پکیج openh323 :

ابتدا بسته مورد نیاز را دانلود میکنیم.


cd /usr/src/openh323
wget http://downloads.sourceforge.net/openh323/openh323-v1_18_0-src-tar.gz
2.حال آن را از حالت فشرده خارج و اقدام به کامپایل میکنیم.



tar zxvf openh323-v1_18_0-src-tar.gz
cd openh323_v1_18_0/
./configure
make opt
نکته : بعد از اجرای دستور make opt در صورت مواجه شدن با پیام error درباره compiler.h دوباره اقدام به config کردن کنید به صورت زیر :



make clean
./configure --disable-ixj
make opt
توضیح : compiler.h معمولا به همراه kernel header نصب خواهد شد و در فولدر linux وجود دارد ولی openh323 به خوبی آن را detect نمیکند و برای درایور کارت آنالوگ IXJ به کار میرود که پیش نیاز openh323 نیست ،پس آن را غیر فعال میکنیم.

3. اقدام به export کردن مسیر پوشه openh323 میکنیم و shared library ایجاد شده را در مسیر مربوط کپی میکنیم.



export OPENH323DIR=/usr/src/openh323/openh323_v1_18_0

32 بیتی
cp $OPENH323DIR/lib/libh323_linux_x86_r.so.1.18.0 /usr/lib

64 بیتی
cp $OPENH323DIR/lib/libh323_linux_x86_64_r.so.1.18.0 /usr/lib64

دقت کنید که export کردن مسیر فوق برای detect کردن openh323 در هنگام کامپایل asterisk الزامی میباشد.

حال اقدام به نصب asterisk میکنیم و برای اطمینان بیشتر در هنگام نصب asterisk و با اجرای make menuselect در قسمت channel ها از نصب chan_h323 اطمینان حاصل کنید که غیر فعال نباشد و در حالت انتخاب شده قرار گرفته باشد.

مرحله سوم - نمونه ای از config h323 در asterisk :



/etc/asterisk/h323.conf

[general]
port = 1720
bindaddr = 192.168.58.227
disallow=all
allow=alaw
dtmfmode=inband
gatekeeper = DISABLE
context=default
progress_setup = 8
progress_alert = 8
h245tunneling=yes

[USA]
type=friend
context=default
host=192.168.58.216
port=1720
disallow=all
allow=alaw,g729,gsm,slinear

[GERMANY]
type=friend
context=default
host=192.168.58.221
port=1720
disallow=all
allow=alaw,g729,gsm,slinear

/etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no


[default]

exten => _1XXXXXXXXXX,1,Dial(H323/${EXTEN}@USA)
exten => _49XXXXXXXXXX,1,Dial(H323/${EXTEN}@GERMANY)

پ.و : تمام مراحل فوق بر روی توزیع CentOS و نسخه های 1.4,1.6.0,1.6.1 برنامه asterisk به مرحله اجرا رسیده است.

"کلیه حقوق مادی و معنوی این مقاله آموزشی متعلق به سایت barnamenevis.org میباشد و درج آن تنها با ذکر منبع مجاز است. "

با احترام
محمد جاهدمنش

Saeed_m_Farid
چهارشنبه 15 اردیبهشت 1389, 19:32 عصر
سلام
جناب جاهدمنش، خیلی مطلب جالبی بود و از زحمتی که کشیدین به نوبه خودم استفاده کردم و تشکر می کنم. اگه فضولی نباشه چند تا موضوع بود که میخواستم مطرح کنم :


...
1.در صورتی که در حال حاضر asterisk بر روی سیستم نصب میباشد ابتدا آن را remove کنید.
.
..
...
حال اقدام به نصب asterisk میکنیم و برای اطمینان بیشتر در هنگام نصب asterisk و با اجرای make menuselect در قسمت channel ها از نصب chan_h323 اطمینان حاصل کنید که غیر فعال نباشد و در حالت انتخاب شده قرار گرفته باشد.

حالا که اینقدر detail مراحل نصب و پیکربندی OpenH323 رو مطرح کردید، فکر نمی کنید که یکم در مورد Asterisk تندتر رفتید؟ بنظر من با توجه به اینکه OpenH323 و Asterisk دو تا پروژه کاملاً مستقل از هم هستند (حتی لایسنس هاشون هم فرق میکنه MPL (http://en.wikipedia.org/wiki/Mozilla_Public_License)و GPL (http://en.wikipedia.org/wiki/GPL)) بنظرم باید یه پست مستقل در مورد مراحل مرتبط با استریسک، پیکربندی OpenH323 (http://www.gnugk.org/gnugk-manual.html) و ایجاد واسط بین OpenH323 و استریسک قرار میدادین.

راستش خوب " ابتدا آن را remove کنید"رو میشه مثلاً با دستورات زیر یه کاریش کرد :



killall -9 safe_asterisk
killall -9 asterisk
...
modprobe -r wcfxo
modprobe -r wctdm
..repeat for all zaptel submodules....
modprobe -r zaptel
...
rm -rf /etc/asterisk
rm -f /etc/zaptel.conf
rm -rf /var/log/asterisk
rm -rf /var/lib/asterisk
rm -rf /var/spool/asterisk
rm -rf /usr/lib/asterisk
که بهتر بود اصلاً یه نسخه fresh از CentOS مثلاً 5.3 رو نصب می کردیم (با gcc, glib , ...)
ولی "حال اقدام به نصب asterisk میکنیم" و بعد ارتباط با OpenH323 از دید من خیلی کلی شد!
به نظر شما این مراحل درسته ؟


اول باید repository های Asterisk رو تو فایل "centos-asterisk.repo" در مسیر "/etc/yum.repos.d" بصورت زیر وارد کنیم :


[asterisk-tested]
name=CentOS-$releasever - Asterisk - Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

[asterisk-current]
name=CentOS-$releasever - Asterisk - Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
دقیقاً همین مراحل رو اما ایندفعه برای digium در یه فایل بنام انجام میدیم :


[digium-tested]
name=CentOS-$releasever - Digium - Tested
baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

[digium-current]
name=CentOS-$releasever - Digium - Current
baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

بعد حتماً به اینترنت وصل شده و کافیه یک خط کد زیر رو نوشته و اینتر :

# yum install asterisk16 asterisk16-configs asterisk16-voicemail dahdi-linux dahdi
در نهایت برای اطمینان از درست نصب شدن استریسک دستور زیر رو میزنیم :

# asterisk -vvvgci

* موضوع دیگه اینه که شما اصلاً از کانفیگ OpenH323 صحبتی نکردید، واقعیتش اینکه بیایم یه IP-PBX دیگه و دستورات Command line و فایلهای کانفیگ و ... اون رو از اول یاد بگیریم فقط برای استفاده از H.323 یه مقدار آدم رو چی میگن؟ میترسونه یا "موکول میشه به یه وقت دیگه"! از طرف دیگه این همه دردسر و مشکل تراشی دوستان انحصاری VoIP کارمون در ... باعث میشه آدم هرچی رو داره بچسبه مبادا همینی هم که داریم زحمت متلاشی شدنش کشیده بشه!

* در ضمن با توجه به استقبالی که از مطلب شما شد! فکر نمی کنم افراد زیادی در این حجم با VoIP Gateway ها کار کنند که نیاز به Gatekeeper در سطح OpenH323 داشته باشند، این موضوع مثل اینه که یکی نیاز به خطوط SDP (مثلاً STM1) برای VoIP داشته باشه که مطمئناً یکی از آخرین گزینه ها سیستم open-source هست! چون معمولاً یا یه ارگان دولتی هست (که امنیت 110 درصد! و بریز بپاش و رابطه و ... حرف اول رو میزنه) یا یکی از 3 تا شرکت انحصاری معلوم الحال! پس فکر میکنم برای امثال ما ها همون ooh323 کافی باشه که نهایت اش 2-3 تا E1 فقط incoming کفایت مون میکنه و تنها نیاز به یه اینترفیس برای protocol converting از H.323 به SIP خواهیم داشت که با باگ های معدود ولی کم دردسرش هم می سازیم!

موفق باشید.